summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2005-06-25 15:29:59 (UTC)
committer mickeyl <mickeyl>2005-06-25 15:29:59 (UTC)
commit790aeb8898d635468c2b9e24fd16a70aab64b1dd (patch) (side-by-side diff)
tree72139f02106b88325efbb39fc11f5ccd79ce29fb
parent3d434ac35915afe7f7035468ca18656264a91c52 (diff)
downloadopie-790aeb8898d635468c2b9e24fd16a70aab64b1dd.zip
opie-790aeb8898d635468c2b9e24fd16a70aab64b1dd.tar.gz
opie-790aeb8898d635468c2b9e24fd16a70aab64b1dd.tar.bz2
- fix logic in isEmpty() and isSuspended()
- add convenience API productIdentityVendor()
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/linux/opcmciasystem.cpp13
-rw-r--r--libopie2/opiecore/linux/opcmciasystem.h8
2 files changed, 16 insertions, 5 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
@@ -272,16 +272,17 @@ QString OPcmciaSocket::identity() const
const OPcmciaSocket::OPcmciaSocketCardStatus OPcmciaSocket::status() const
{
cs_status_t cs_status;
cs_status.Function = 0;
int result = ::ioctl( _fd, DS_GET_STATUS, &cs_status );
if ( result != 0 )
{
qWarning( "OPcmciaSocket::status() - DS_GET_STATUS failed (%s)", strerror( errno ) );
+ // return ( errno == -ENODEV ) ? Empty : Unknown;
return Unknown;
}
else
{
qDebug( " card status = 0x%08x", cs_status.CardState );
qDebug( " socket status = 0x%08x", cs_status.SocketState );
return (OPcmciaSocket::OPcmciaSocketCardStatus) (cs_status.CardState + cs_status.SocketState);
}
@@ -291,23 +292,23 @@ const OPcmciaSocket::OPcmciaSocketCardStatus OPcmciaSocket::status() const
bool OPcmciaSocket::isUnsupported() const
{
return ( strcmp( name(), "unsupported card" ) == 0 );
}
bool OPcmciaSocket::isEmpty() const
{
- return ! status() && ( Occupied || OccupiedCardBus );
+ return !(status() & ( Occupied | OccupiedCardBus ));
}
bool OPcmciaSocket::isSuspended() const
{
- return status() && Suspended;
+ return status() & Suspended;
}
bool OPcmciaSocket::eject()
{
return ::ioctl( _fd, DS_EJECT_CARD ) != -1;
}
@@ -331,17 +332,17 @@ bool OPcmciaSocket::resume()
bool OPcmciaSocket::reset()
{
return ::ioctl( _fd, DS_RESET_CARD ) != -1;
}
-QStringList OPcmciaSocket::productIdentity() const
+QStringList OPcmciaSocket::productIdentityVector() const
{
QStringList list;
cistpl_vers_1_t *vers = &_ioctlarg.tuple_parse.parse.version_1;
vers->ns = 0; // number of strings
if ( getTuple( CISTPL_VERS_1 ) )
{
qDebug( " NUMBER_OF_PRODIDs = %d", vers->ns );
for ( int i = 0; i < QMIN( CISTPL_VERS_1_MAX_PROD_STRINGS, vers->ns ); ++i )
@@ -353,16 +354,22 @@ QStringList OPcmciaSocket::productIdentity() const
else
{
list += "<unknown>";
}
return list;
}
+QString OPcmciaSocket::productIdentity() const
+{
+ return productIdentityVector().join( " " ).stripWhiteSpace();
+}
+
+
QString OPcmciaSocket::manufacturerIdentity() const
{
cistpl_manfid_t *manfid = &_ioctlarg.tuple_parse.parse.manfid;
if ( getTuple( CISTPL_MANFID ) )
{
return QString().sprintf( "0x%04x, 0x%04x", manfid->manf, manfid->card );
}
else
diff --git a/libopie2/opiecore/linux/opcmciasystem.h b/libopie2/opiecore/linux/opcmciasystem.h
index 0fd43cf..23d8c41 100644
--- a/libopie2/opiecore/linux/opcmciasystem.h
+++ b/libopie2/opiecore/linux/opcmciasystem.h
@@ -183,19 +183,23 @@ class OPcmciaSocket : public QObject
*/
bool resume();
/**
* Reset card. @returns true, if operation succeeded
* @note: This operation needs root privileges
*/
bool reset();
/**
- * @returns a list of product IDs
+ * @returns the product ID vector
+ */
+ QStringList productIdentityVector() const;
+ /**
+ * @returns the product ID string
*/
- QStringList productIdentity() const;
+ QString productIdentity() const;
/**
* @returns the manufacturer ID string
*/
QString manufacturerIdentity() const;
/**
* @returns the function string
*/
QString function() const;