summaryrefslogtreecommitdiff
path: root/noncore/applets/wirelessapplet/networkinfo.cpp
Side-by-side diff
Diffstat (limited to 'noncore/applets/wirelessapplet/networkinfo.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/applets/wirelessapplet/networkinfo.cpp30
1 files changed, 22 insertions, 8 deletions
diff --git a/noncore/applets/wirelessapplet/networkinfo.cpp b/noncore/applets/wirelessapplet/networkinfo.cpp
index 22d7d83..8531fd5 100644
--- a/noncore/applets/wirelessapplet/networkinfo.cpp
+++ b/noncore/applets/wirelessapplet/networkinfo.cpp
@@ -42,44 +42,47 @@
/* estimated wireless signal strength and noise level values
based on experimentation with Orinoco and Prism2 cards.
Seem to be correct, but please inform me, if you got values
outside these boundaries. :Mickey: */
#define IW_UPPER 220
#define IW_LOWER 140
#define PROCNETDEV "/proc/net/dev"
#define PROCNETWIRELESS "/proc/net/wireless"
+#define MDEBUG 0
+
//---------------------------------------------------------------------------
// class MNetworkInterface
//
MNetworkInterface::MNetworkInterface( const char* name )
:name( name )
{
struct ifreq ifr;
struct sockaddr_in *sin = (struct sockaddr_in *) &ifr.ifr_addr;
fd = socket( AF_INET, SOCK_DGRAM, 0 );
}
MNetworkInterface::~MNetworkInterface()
{
if ( fd != -1 )
close( fd );
}
-void MNetworkInterface::updateStatistics()
+bool MNetworkInterface::updateStatistics()
{
+ return true;
}
//---------------------------------------------------------------------------
// class MWirelessNetworkInterface
//
MWirelessNetworkInterface::MWirelessNetworkInterface( const char* n )
:MNetworkInterface( n )
{
signal = 0;
noise = 0;
quality = 0;
@@ -95,27 +98,29 @@ int MWirelessNetworkInterface::qualityPercent()
}
int MWirelessNetworkInterface::signalPercent()
{
return ( ( signal-IW_LOWER ) * 100 ) / IW_UPPER;
}
int MWirelessNetworkInterface::noisePercent()
{
return ( ( noise-IW_LOWER ) * 100 ) / IW_UPPER;
}
-void MWirelessNetworkInterface::updateStatistics()
+bool MWirelessNetworkInterface::updateStatistics()
{
- MNetworkInterface::updateStatistics();
+ bool base = MNetworkInterface::updateStatistics();
+ if ( !base )
+ return false;
const char* buffer[200];
struct iwreq iwr;
memset( &iwr, 0, sizeof( iwr ) );
iwr.u.essid.pointer = (caddr_t) buffer;
iwr.u.essid.length = IW_ESSID_MAX_SIZE;
iwr.u.essid.flags = 0;
// check if it is an IEEE 802.11 standard conform
// wireless device by sending SIOCGIWESSID
// which also gives back the Extended Service Set ID
@@ -172,69 +177,76 @@ void MWirelessNetworkInterface::updateStatistics()
QString status;
QString name;
QFile wfile( PROCNETWIRELESS );
bool hasFile = wfile.open( IO_ReadOnly );
QTextStream wstream( &wfile );
if ( hasFile )
{
wstream.readLine(); // skip the first two lines
wstream.readLine(); // because they only contain headers
}
if ( ( !hasFile ) || ( wstream.atEnd() ) )
{
+#ifdef MDEBUG
qDebug( "WIFIAPPLET: D'oh! Someone removed the card..." );
+#endif
quality = -1;
signal = IW_LOWER;
noise = IW_LOWER;
- return;
+ return false;
}
wstream >> name >> status >> quality >> c >> signal >> c >> noise;
if ( quality > 92 )
+#ifdef MDEBUG
qDebug( "WIFIAPPLET: D'oh! Quality %d > estimated max!\n", quality );
+#endif
if ( ( signal > IW_UPPER ) || ( signal < IW_LOWER ) )
+#ifdef MDEBUG
qDebug( "WIFIAPPLET: Doh! Strength %d > estimated max!\n", signal );
+#endif
if ( ( noise > IW_UPPER ) || ( noise < IW_LOWER ) )
+#ifdef MDEBUG
qDebug( "WIFIAPPLET: Doh! Noise %d > estimated max!\n", noise );
+#endif
+
+ return true;
+
}
//---------------------------------------------------------------------------
// class Network
//
MNetwork::MNetwork()
{
- //qDebug( "MNetwork::MNetwork()" );
procfile = PROCNETDEV;
}
MNetwork::~MNetwork()
{
- //qDebug( "MNetwork::~MNetwork()" );
}
//---------------------------------------------------------------------------
// class WirelessNetwork
//
MWirelessNetwork::MWirelessNetwork()
{
- //qDebug( "MWirelessNetwork::MWirelessNetwork()" );
procfile = PROCNETWIRELESS;
}
MWirelessNetwork::~MWirelessNetwork()
{
- //qDebug( "MWirelessNetwork::~MWirelessNetwork()" );
}
MNetworkInterface* MWirelessNetwork::createInterface( const char* n ) const
{
return new MWirelessNetworkInterface( n );
}
//---------------------------------------------------------------------------
// class NetworkInterface
//
MNetworkInterface* MNetwork::getFirstInterface()
@@ -250,22 +262,24 @@ void MNetwork::enumerateInterfaces()
QString str;
QFile f( procfile );
bool hasFile = f.open( IO_ReadOnly );
if ( !hasFile )
return;
QTextStream s( &f );
s.readLine();
s.readLine();
while ( !s.atEnd() )
{
s >> str;
str.truncate( str.find( ':' ) );
+#ifdef MDEBUG
qDebug( "WIFIAPPLET: found interface '%s'", (const char*) str );
+#endif
interfaces.insert( str, createInterface( str ) );
s.readLine();
}
}
MNetworkInterface* MNetwork::createInterface( const char* n ) const
{
return new MNetworkInterface( n );
}