summaryrefslogtreecommitdiff
Side-by-side diff
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
@@ -268,50 +268,51 @@ QString OPcmciaSocket::identity() const
return ( strcmp( name(), "empty" ) == 0 ) ? "<Empty Socket>" : name();
}
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);
}
}
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;
}
bool OPcmciaSocket::insert()
{
return ::ioctl( _fd, DS_INSERT_CARD ) != -1;
@@ -327,46 +328,52 @@ bool OPcmciaSocket::suspend()
bool OPcmciaSocket::resume()
{
return ::ioctl( _fd, DS_RESUME_CARD ) != -1;
}
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 )
{
qDebug( " PRODID = '%s'", vers->str+vers->ofs[i] );
list += vers->str+vers->ofs[i];
}
}
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
return "<unknown>";
}
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
@@ -179,27 +179,31 @@ class OPcmciaSocket : public QObject
bool suspend();
/**
* Resume card. @returns true, if operation succeeded
* @note: This operation needs root privileges
*/
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;
private:
void init();
void cleanup();