author | mickeyl <mickeyl> | 2005-05-21 20:23:05 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2005-05-21 20:23:05 (UTC) |
commit | db6b46788db3653812f07c3018abc5bfaaa821c3 (patch) (side-by-side diff) | |
tree | e159683e96eed09bbc9a886c39c6fd7776fe5f42 | |
parent | afb929e7fd04ecdfec2799a5cf9cf298d1af77c6 (diff) | |
download | opie-db6b46788db3653812f07c3018abc5bfaaa821c3.zip opie-db6b46788db3653812f07c3018abc5bfaaa821c3.tar.gz opie-db6b46788db3653812f07c3018abc5bfaaa821c3.tar.bz2 |
add more methods to OPcmciaSocket
-rw-r--r-- | libopie2/opiecore/linux/opcmciasystem.cpp | 13 | ||||
-rw-r--r-- | libopie2/opiecore/linux/opcmciasystem.h | 9 |
2 files changed, 22 insertions, 0 deletions
diff --git a/libopie2/opiecore/linux/opcmciasystem.cpp b/libopie2/opiecore/linux/opcmciasystem.cpp index c4b5316..c310b85 100644 --- a/libopie2/opiecore/linux/opcmciasystem.cpp +++ b/libopie2/opiecore/linux/opcmciasystem.cpp @@ -81,125 +81,138 @@ void OPcmciaSystem::synchronize() QString strSocket; int numSocket; char colon; QString cardName; cardinfo >> strSocket >> numSocket >> colon; cardName = cardinfo.readLine().stripWhiteSpace(); qDebug( "strSocket = '%s', numSocket = '%d', colon = '%c', cardName = '%s'", (const char*) strSocket, numSocket, colon, ( const char*) cardName ); if ( strSocket == "Socket" && colon == ':' ) { _interfaces.append( new OPcmciaSocket( numSocket, this, (const char*) cardName ) ); } else { continue; } } } int OPcmciaSystem::count() const { return _interfaces.count(); } int OPcmciaSystem::cardCount() const { int nonEmpty = 0; OPcmciaSystem::CardIterator it = iterator(); while ( it.current() ) { if ( !it.current()->isEmpty() ) nonEmpty++; ++it; } return nonEmpty; } OPcmciaSocket* OPcmciaSystem::socket( unsigned int number ) { return _interfaces.at( number ); } OPcmciaSystem* OPcmciaSystem::instance() { if ( !_instance ) _instance = new OPcmciaSystem(); return _instance; } OPcmciaSystem::CardIterator OPcmciaSystem::iterator() const { return OPcmciaSystem::CardIterator( _interfaces ); } /*====================================================================================== * OPcmciaSocket *======================================================================================*/ OPcmciaSocket::OPcmciaSocket( int socket, QObject* parent, const char* name ) :QObject( parent, name ), _socket( socket ) { odebug << "OPcmciaSocket::OPcmciaSocket()" << oendl; init(); } OPcmciaSocket::~OPcmciaSocket() { } /* internal */ void OPcmciaSocket::init() { } /* internal */ bool OPcmciaSocket::command( const QString& cmd ) { QString cmdline = QString().sprintf( "cardctl %s %d &", (const char*) cmd, _socket ); ::system( (const char*) cmdline ); } int OPcmciaSocket::number() const { return _socket; } QString OPcmciaSocket::identity() const { return ( strcmp( name(), "empty" ) == 0 ) ? "<Empty Socket>" : name(); } +bool OPcmciaSocket::isUnsupported() const +{ + return ( strcmp( name(), "unsupported card" ) == 0 ); +} + + bool OPcmciaSocket::isEmpty() const { return ( strcmp( name(), "empty" ) == 0 ); } bool OPcmciaSocket::isSuspended() const { + //FIXME + return false; } bool OPcmciaSocket::eject() { return command( "eject" ); } bool OPcmciaSocket::insert() { return command( "insert" ); } bool OPcmciaSocket::suspend() { return command( "suspend" ); } bool OPcmciaSocket::resume() { return command( "resume "); } + +bool OPcmciaSocket::reset() +{ + return command( "reset"); +} diff --git a/libopie2/opiecore/linux/opcmciasystem.h b/libopie2/opiecore/linux/opcmciasystem.h index 4b445aa..630a434 100644 --- a/libopie2/opiecore/linux/opcmciasystem.h +++ b/libopie2/opiecore/linux/opcmciasystem.h @@ -31,141 +31,150 @@ #define OPCMCIASYSTEM_H #include <qobject.h> #include <qlist.h> namespace Opie { namespace Core { class OPcmciaSocket; /*====================================================================================== * OPcmciaSystem *======================================================================================*/ /** * @brief A container class for the linux pcmcia subsystem * * This class provides access to all available pcmcia/cf cards on your device. * * @author Michael 'Mickey' Lauer <mickey@Vanille.de> */ class OPcmciaSystem : public QObject { Q_OBJECT public: typedef QList<OPcmciaSocket> CardList; typedef QListIterator<OPcmciaSocket> CardIterator; public: /** * @returns the number of available sockets */ int count() const; /** * @returns the number of populated sockets */ int cardCount() const; /** * @returns a pointer to the (one and only) @ref OSystem instance. */ static OPcmciaSystem* instance(); /** * @returns an iterator usable for iterating through all sound cards. */ CardIterator iterator() const; /** * @returns a pointer to the @ref OPcmciaSocket object correspinding to socket number n, or 0, if not found * @see OPcmciaSocket */ OPcmciaSocket* socket( unsigned int number ); /** * @internal Rebuild the internal database * @note Sometimes it might be useful to call this from client code, * e.g. after issuing a cardctl insert */ void synchronize(); protected: OPcmciaSystem(); private: static OPcmciaSystem* _instance; CardList _interfaces; class Private; Private *d; }; /*====================================================================================== * OPcmciaSocket *======================================================================================*/ class OPcmciaSocket : public QObject { Q_OBJECT public: /** * Constructor. Normally you don't create @ref OPcmciaSocket objects yourself, * but access them via @ref OPcmciaSystem::card(). */ OPcmciaSocket( int socket, QObject* parent, const char* name ); /** * Destructor. */ virtual ~OPcmciaSocket(); /** * @returns the corresponding socket number */ int number() const; /** * @returns the identification string of the card in this socket, or "<Empty Socket>" */ QString identity() const; /** + * @returns true, if the card is unsupported by the cardmgr + */ + bool isUnsupported() const; + /** * @returns true, if the socket is empty */ bool isEmpty() const; /** * @returns true, if the socket is suspended */ bool isSuspended() const; /** * Eject card. @returns true, if operation succeeded * @note: This operation needs root privileges */ bool eject(); /** * Insert card. @returns true, if operation succeeded * @note: This operation needs root privileges */ bool insert(); /** * Suspend card. @returns true, if operation succeeded * @note: This operation needs root privileges */ 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(); protected: private: void init(); bool command( const QString& cmd ); int _socket; private: class Private; Private *d; }; } } #endif // OPCMCIASYSTEM_H |