author | mickeyl <mickeyl> | 2005-05-19 11:59:32 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2005-05-19 11:59:32 (UTC) |
commit | ed7ba8b228d3d0ffae9c9b68900b7f723d7ade4a (patch) (side-by-side diff) | |
tree | 83b59755f58747cdb7e543a4c237e9e217b03fbd /libopie2/opiecore/linux/opcmciasystem.cpp | |
parent | cb243f00d12c5fc40de02e7f9f20009b52303a66 (diff) | |
download | opie-ed7ba8b228d3d0ffae9c9b68900b7f723d7ade4a.zip opie-ed7ba8b228d3d0ffae9c9b68900b7f723d7ade4a.tar.gz opie-ed7ba8b228d3d0ffae9c9b68900b7f723d7ade4a.tar.bz2 |
- add linux pcmcia subsystem wrapper: OPcmciaSystem and OPcmciaCard
- move linux-only subsystems in subdirectory linux
- minor header cleanups
Diffstat (limited to 'libopie2/opiecore/linux/opcmciasystem.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libopie2/opiecore/linux/opcmciasystem.cpp | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/libopie2/opiecore/linux/opcmciasystem.cpp b/libopie2/opiecore/linux/opcmciasystem.cpp new file mode 100644 index 0000000..a924696 --- a/dev/null +++ b/libopie2/opiecore/linux/opcmciasystem.cpp @@ -0,0 +1,142 @@ +/* + This file is part of the Opie Project + =. (C) 2005 Michael 'Mickey' Lauer <mickey@Vanille.de> + .=l. + .>+-= + _;:, .> :=|. This program is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU Library General Public +.="- .-=="i, .._ License as published by the Free Software + - . .-<_> .<> Foundation; version 2 of the License. + ._= =} : + .%`+i> _;_. + .i_,=:_. -<s. This program is distributed in the hope that + + . -:. = it will be useful, but WITHOUT ANY WARRANTY; + : .. .:, . . . without even the implied warranty of + =_ + =;=|` MERCHANTABILITY or FITNESS FOR A + _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU +..}^=.= = ; Library General Public License for more +++= -. .` .: details. + : = ...= . :.=- + -. .:....=;==+<; You should have received a copy of the GNU + -_. . . )=. = Library General Public License along with + -- :-=` this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + +#include "opcmciasystem.h" +using namespace Opie::Core; + +/* OPIE */ +#include <opie2/odebug.h> + +/* QT */ +#include <qfile.h> +#include <qtextstream.h> + +/* STD */ +#include <errno.h> +#include <fcntl.h> +#include <string.h> +#include <sys/ioctl.h> +#include <sys/types.h> +#include <sys/stat.h> + +/*====================================================================================== + * OPcmciaSystem + *======================================================================================*/ + +OPcmciaSystem* OPcmciaSystem::_instance = 0; + +OPcmciaSystem::OPcmciaSystem() +{ + qDebug( "OPcmciaSystem::OPcmciaSystem()" ); + synchronize(); +} + +void OPcmciaSystem::synchronize() +{ + qDebug( "OPcmciaSystem::synchronize()" ); + _interfaces.clear(); + + //FIXME: Use cardmgr subsystem ioctls + + QString fileName; + if ( QFile::exists( "/var/run/stab" ) ) { fileName = "/var/run/stab"; } + else if ( QFile::exists( "/var/state/pcmcia/stab" ) ) { fileName = "/var/state/pcmcia/stab"; } + else { fileName = "/var/lib/pcmcia/stab"; } + QFile cardinfofile( fileName ); + if ( !cardinfofile.exists() || !cardinfofile.open( IO_ReadOnly ) ) + { + qWarning( "pcmcia info file not found or unaccessible" ); + return; + } + QTextStream cardinfo( &cardinfofile ); + while ( !cardinfo.atEnd() ) + { + QString line = cardinfo.readLine(); + if ( line.startsWith( "Socket" ) ) + { + int mid = line.find( ':' ); + QString name = line.right( line.length() - mid - 1 ); + QString id = line.right( line.length() - mid + 1 ); + if ( mid ) _interfaces.insert( name, new OPcmciaCard( this, (const char*) id ) ); + } + else + { + continue; + } + } +} + + +int OPcmciaSystem::count() const +{ + return _interfaces.count(); +} + + +OPcmciaCard* OPcmciaSystem::card( const QString& iface ) const +{ + return _interfaces[iface]; +} + + +OPcmciaSystem* OPcmciaSystem::instance() +{ + if ( !_instance ) _instance = new OPcmciaSystem(); + return _instance; +} + + +OPcmciaSystem::CardIterator OPcmciaSystem::iterator() const +{ + return OPcmciaSystem::CardIterator( _interfaces ); +} + + +/*====================================================================================== + * OPcmciaCard + *======================================================================================*/ + +OPcmciaCard::OPcmciaCard( QObject* parent, const char* name ) + :QObject( parent, name ) +{ + odebug << "OPcmciaCard::OPcmciaCard()" << oendl; + init(); +} + + +OPcmciaCard::~OPcmciaCard() +{ +} + + +void OPcmciaCard::init() +{ +} + + |