summaryrefslogtreecommitdiff
path: root/libopie2/opiecore/linux/opcmciasystem.cpp
authormickeyl <mickeyl>2005-06-25 15:29:59 (UTC)
committer mickeyl <mickeyl>2005-06-25 15:29:59 (UTC)
commit790aeb8898d635468c2b9e24fd16a70aab64b1dd (patch) (unidiff)
tree72139f02106b88325efbb39fc11f5ccd79ce29fb /libopie2/opiecore/linux/opcmciasystem.cpp
parent3d434ac35915afe7f7035468ca18656264a91c52 (diff)
downloadopie-790aeb8898d635468c2b9e24fd16a70aab64b1dd.zip
opie-790aeb8898d635468c2b9e24fd16a70aab64b1dd.tar.gz
opie-790aeb8898d635468c2b9e24fd16a70aab64b1dd.tar.bz2
- fix logic in isEmpty() and isSuspended()
- add convenience API productIdentityVendor()
Diffstat (limited to 'libopie2/opiecore/linux/opcmciasystem.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/linux/opcmciasystem.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/libopie2/opiecore/linux/opcmciasystem.cpp b/libopie2/opiecore/linux/opcmciasystem.cpp
index a5725f1..21c5a84 100644
--- a/libopie2/opiecore/linux/opcmciasystem.cpp
+++ b/libopie2/opiecore/linux/opcmciasystem.cpp
@@ -268,50 +268,51 @@ QString OPcmciaSocket::identity() const
268 return ( strcmp( name(), "empty" ) == 0 ) ? "<Empty Socket>" : name(); 268 return ( strcmp( name(), "empty" ) == 0 ) ? "<Empty Socket>" : name();
269} 269}
270 270
271 271
272const OPcmciaSocket::OPcmciaSocketCardStatus OPcmciaSocket::status() const 272const OPcmciaSocket::OPcmciaSocketCardStatus OPcmciaSocket::status() const
273{ 273{
274 cs_status_t cs_status; 274 cs_status_t cs_status;
275 cs_status.Function = 0; 275 cs_status.Function = 0;
276 int result = ::ioctl( _fd, DS_GET_STATUS, &cs_status ); 276 int result = ::ioctl( _fd, DS_GET_STATUS, &cs_status );
277 if ( result != 0 ) 277 if ( result != 0 )
278 { 278 {
279 qWarning( "OPcmciaSocket::status() - DS_GET_STATUS failed (%s)", strerror( errno ) ); 279 qWarning( "OPcmciaSocket::status() - DS_GET_STATUS failed (%s)", strerror( errno ) );
280 // return ( errno == -ENODEV ) ? Empty : Unknown;
280 return Unknown; 281 return Unknown;
281 } 282 }
282 else 283 else
283 { 284 {
284 qDebug( " card status = 0x%08x", cs_status.CardState ); 285 qDebug( " card status = 0x%08x", cs_status.CardState );
285 qDebug( " socket status = 0x%08x", cs_status.SocketState ); 286 qDebug( " socket status = 0x%08x", cs_status.SocketState );
286 return (OPcmciaSocket::OPcmciaSocketCardStatus) (cs_status.CardState + cs_status.SocketState); 287 return (OPcmciaSocket::OPcmciaSocketCardStatus) (cs_status.CardState + cs_status.SocketState);
287 } 288 }
288} 289}
289 290
290 291
291bool OPcmciaSocket::isUnsupported() const 292bool OPcmciaSocket::isUnsupported() const
292{ 293{
293 return ( strcmp( name(), "unsupported card" ) == 0 ); 294 return ( strcmp( name(), "unsupported card" ) == 0 );
294} 295}
295 296
296 297
297bool OPcmciaSocket::isEmpty() const 298bool OPcmciaSocket::isEmpty() const
298{ 299{
299 return ! status() && ( Occupied || OccupiedCardBus ); 300 return !(status() & ( Occupied | OccupiedCardBus ));
300} 301}
301 302
302 303
303bool OPcmciaSocket::isSuspended() const 304bool OPcmciaSocket::isSuspended() const
304{ 305{
305 return status() && Suspended; 306 return status() & Suspended;
306} 307}
307 308
308 309
309bool OPcmciaSocket::eject() 310bool OPcmciaSocket::eject()
310{ 311{
311 return ::ioctl( _fd, DS_EJECT_CARD ) != -1; 312 return ::ioctl( _fd, DS_EJECT_CARD ) != -1;
312} 313}
313 314
314 315
315bool OPcmciaSocket::insert() 316bool OPcmciaSocket::insert()
316{ 317{
317 return ::ioctl( _fd, DS_INSERT_CARD ) != -1; 318 return ::ioctl( _fd, DS_INSERT_CARD ) != -1;
@@ -327,46 +328,52 @@ bool OPcmciaSocket::suspend()
327bool OPcmciaSocket::resume() 328bool OPcmciaSocket::resume()
328{ 329{
329 return ::ioctl( _fd, DS_RESUME_CARD ) != -1; 330 return ::ioctl( _fd, DS_RESUME_CARD ) != -1;
330} 331}
331 332
332 333
333bool OPcmciaSocket::reset() 334bool OPcmciaSocket::reset()
334{ 335{
335 return ::ioctl( _fd, DS_RESET_CARD ) != -1; 336 return ::ioctl( _fd, DS_RESET_CARD ) != -1;
336} 337}
337 338
338 339
339QStringList OPcmciaSocket::productIdentity() const 340QStringList OPcmciaSocket::productIdentityVector() const
340{ 341{
341 QStringList list; 342 QStringList list;
342 cistpl_vers_1_t *vers = &_ioctlarg.tuple_parse.parse.version_1; 343 cistpl_vers_1_t *vers = &_ioctlarg.tuple_parse.parse.version_1;
343 vers->ns = 0; // number of strings 344 vers->ns = 0; // number of strings
344 if ( getTuple( CISTPL_VERS_1 ) ) 345 if ( getTuple( CISTPL_VERS_1 ) )
345 { 346 {
346 qDebug( " NUMBER_OF_PRODIDs = %d", vers->ns ); 347 qDebug( " NUMBER_OF_PRODIDs = %d", vers->ns );
347 for ( int i = 0; i < QMIN( CISTPL_VERS_1_MAX_PROD_STRINGS, vers->ns ); ++i ) 348 for ( int i = 0; i < QMIN( CISTPL_VERS_1_MAX_PROD_STRINGS, vers->ns ); ++i )
348 { 349 {
349 qDebug( " PRODID = '%s'", vers->str+vers->ofs[i] ); 350 qDebug( " PRODID = '%s'", vers->str+vers->ofs[i] );
350 list += vers->str+vers->ofs[i]; 351 list += vers->str+vers->ofs[i];
351 } 352 }
352 } 353 }
353 else 354 else
354 { 355 {
355 list += "<unknown>"; 356 list += "<unknown>";
356 } 357 }
357 return list; 358 return list;
358} 359}
359 360
360 361
362QString OPcmciaSocket::productIdentity() const
363{
364 return productIdentityVector().join( " " ).stripWhiteSpace();
365}
366
367
361QString OPcmciaSocket::manufacturerIdentity() const 368QString OPcmciaSocket::manufacturerIdentity() const
362{ 369{
363 cistpl_manfid_t *manfid = &_ioctlarg.tuple_parse.parse.manfid; 370 cistpl_manfid_t *manfid = &_ioctlarg.tuple_parse.parse.manfid;
364 if ( getTuple( CISTPL_MANFID ) ) 371 if ( getTuple( CISTPL_MANFID ) )
365 { 372 {
366 return QString().sprintf( "0x%04x, 0x%04x", manfid->manf, manfid->card ); 373 return QString().sprintf( "0x%04x, 0x%04x", manfid->manf, manfid->card );
367 } 374 }
368 else 375 else
369 return "<unknown>"; 376 return "<unknown>";
370} 377}
371 378
372 379