summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/applets/wirelessapplet/networkinfo.cpp284
-rw-r--r--noncore/applets/wirelessapplet/networkinfo.h126
-rw-r--r--noncore/applets/wirelessapplet/wireless.cpp55
-rw-r--r--noncore/applets/wirelessapplet/wirelessapplet.pro4
4 files changed, 26 insertions, 443 deletions
diff --git a/noncore/applets/wirelessapplet/networkinfo.cpp b/noncore/applets/wirelessapplet/networkinfo.cpp
deleted file mode 100644
index e0c487b..0000000
--- a/noncore/applets/wirelessapplet/networkinfo.cpp
+++ b/dev/null
@@ -1,284 +0,0 @@
-/**********************************************************************
-** MNetwork* classes
-**
-** Encapsulate network information
-**
-** Copyright (C) 2002, Michael Lauer
-** mickey@tm.informatik.uni-frankfurt.de
-** http://www.Vanille.de
-**
-** Based on portions of the Wireless Extensions
-** Copyright (c) 1997-2002 Jean Tourrilhes <jt@hpl.hp.com>
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-**********************************************************************/
-
-#include "networkinfo.h"
-
-#include <arpa/inet.h>
-#include <sys/socket.h>
-#include <linux/if_ether.h>
-#include <netinet/ip.h>
-#include <sys/ioctl.h>
-#include <linux/wireless.h>
-
-#include <unistd.h>
-#include <math.h>
-#include <errno.h>
-#include <string.h>
-
-#include <stdlib.h>
-
-#include <qstring.h>
-#include <qfile.h>
-#include <qtextstream.h>
-
-/* 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
-#undef MDEBUG
-
-//---------------------------------------------------------------------------
-// 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 );
-}
-
-bool MNetworkInterface::updateStatistics()
-{
- return true;
-}
-
-//---------------------------------------------------------------------------
-// class MWirelessNetworkInterface
-//
-
-MWirelessNetworkInterface::MWirelessNetworkInterface( const char* n )
- :MNetworkInterface( n )
-{
- signal = 0;
- noise = 0;
- quality = 0;
-}
-
-MWirelessNetworkInterface::~MWirelessNetworkInterface()
-{
-}
-
-int MWirelessNetworkInterface::qualityPercent()
-{
- return ( quality*100 ) / 92;
-}
-
-int MWirelessNetworkInterface::signalPercent()
-{
- return ( ( signal-IW_LOWER ) * 100 ) / IW_UPPER;
-}
-
-int MWirelessNetworkInterface::noisePercent()
-{
- return ( ( noise-IW_LOWER ) * 100 ) / IW_UPPER;
-}
-
-bool MWirelessNetworkInterface::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
- // (see IEEE 802.11 for more information)
-
- strcpy( iwr.ifr_ifrn.ifrn_name, (const char*) name );
- int result = ioctl( fd, SIOCGIWESSID, &iwr );
- if ( result == 0 )
- {
- hasWirelessExtensions = true;
- iwr.u.essid.pointer[(unsigned int) iwr.u.essid.length-1] = '\0';
- essid = iwr.u.essid.pointer;
- }
- else essid = "*** Unknown ***";
-
- // Address of associated access-point
-
- result = ioctl( fd, SIOCGIWAP, &iwr );
- if ( result == 0 )
- {
- APAddr.sprintf( "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X",
- iwr.u.ap_addr.sa_data[0]&0xff,
- iwr.u.ap_addr.sa_data[1]&0xff,
- iwr.u.ap_addr.sa_data[2]&0xff,
- iwr.u.ap_addr.sa_data[3]&0xff,
- iwr.u.ap_addr.sa_data[4]&0xff,
- iwr.u.ap_addr.sa_data[5]&0xff );
- } else APAddr = "*** Unknown ***";
-
- iwr.u.data.pointer = (caddr_t) buffer;
- iwr.u.data.length = IW_ESSID_MAX_SIZE;
- iwr.u.data.flags = 0;
-
- result = ioctl( fd, SIOCGIWNICKN, &iwr );
- if ( result == 0 )
- {
- iwr.u.data.pointer[(unsigned int) iwr.u.data.length-1] = '\0';
- nick = iwr.u.data.pointer;
- } else nick = "*** Unknown ***";
-
- result = ioctl( fd, SIOCGIWMODE, &iwr );
- if ( result == 0 )
- mode = ( iwr.u.mode == IW_MODE_ADHOC ) ? "Ad-Hoc" : "Managed";
- else mode = "*** Unknown ***";
-
- result = ioctl( fd, SIOCGIWFREQ, &iwr );
- if ( result == 0 )
- freq = double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000;
- else freq = 0;
-
- // gather link quality from /proc/net/wireless
-
- char c;
- 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 false;
- }
-
- wstream >> name >> status >> quality >> c >> signal >> c >> noise;
-
-#ifdef MDEBUG
- if ( quality > 92 )
- qDebug( "WIFIAPPLET: D'oh! Quality %d > estimated max!\n", quality );
-
- if ( ( signal > IW_UPPER ) || ( signal < IW_LOWER ) )
- qDebug( "WIFIAPPLET: Doh! Strength %d > estimated max!\n", signal );
-
- if ( ( noise > IW_UPPER ) || ( noise < IW_LOWER ) )
- qDebug( "WIFIAPPLET: Doh! Noise %d > estimated max!\n", noise );
-#endif
-
- return true;
-
-}
-
-//---------------------------------------------------------------------------
-// class Network
-//
-
-MNetwork::MNetwork()
-{
- procfile = PROCNETDEV;
-}
-
-MNetwork::~MNetwork()
-{
-}
-
-//---------------------------------------------------------------------------
-// class WirelessNetwork
-//
-
-MWirelessNetwork::MWirelessNetwork()
-{
- procfile = PROCNETWIRELESS;
-}
-
-MWirelessNetwork::~MWirelessNetwork()
-{
-}
-
-MNetworkInterface* MWirelessNetwork::createInterface( const char* n ) const
-{
- return new MWirelessNetworkInterface( n );
-}
-
-//---------------------------------------------------------------------------
-// class NetworkInterface
-//
-
-MNetworkInterface* MNetwork::getFirstInterface()
-{
- enumerateInterfaces();
- InterfaceMapIterator it( interfaces );
- return ( it.count() > 0 ) ? it.toFirst() : 0;
-}
-
-void MNetwork::enumerateInterfaces()
-{
- interfaces.clear();
- 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 );
-}
diff --git a/noncore/applets/wirelessapplet/networkinfo.h b/noncore/applets/wirelessapplet/networkinfo.h
deleted file mode 100644
index 7e50bc4..0000000
--- a/noncore/applets/wirelessapplet/networkinfo.h
+++ b/dev/null
@@ -1,126 +0,0 @@
-/**********************************************************************
-** MNetwork* classes
-**
-** Encapsulates network information
-**
-** Copyright (C) 2002, Michael Lauer
-** mickey@tm.informatik.uni-frankfurt.de
-** http://www.Vanille.de
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-**********************************************************************/
-
-#ifndef NETWORKINFO_H
-#define NETWORKINFO_H
-
-#include <qstring.h>
-#include <qdict.h>
-
-//---------------------------------------------------------------------------
-// class MNetworkInterface
-//
-
-class MNetworkInterface
-{
-public:
-
- MNetworkInterface( const char* name = "eth0" );
- virtual ~MNetworkInterface();
-
- bool isLoopback() { return isLoopbackInterface; };
- const QString& getName() { return name; };
-
- virtual bool updateStatistics();
-
-protected:
-
- int fd;
- const QString name;
- bool isLoopbackInterface;
- bool isIrda;
- bool isTunnel;
-};
-
-//---------------------------------------------------------------------------
-// class MWirelessNetworkInterface
-//
-
-class MWirelessNetworkInterface : public MNetworkInterface
-{
-public:
- MWirelessNetworkInterface( const char* name = "wlan0" );
- virtual ~MWirelessNetworkInterface();
-
- int noisePercent();
- int qualityPercent();
- int signalPercent();
-
- QString APAddr;
- QString essid;
- QString mode;
- QString nick;
- QString rate;
- double freq;
- int channel;
-
- virtual bool updateStatistics();
-
-private:
- int quality;
- int signal;
- int noise;
-
- bool hasWirelessExtensions;
-};
-
-//---------------------------------------------------------------------------
-// class MNetwork
-//
-
-class MNetwork
-{
-public:
- MNetwork();
- virtual ~MNetwork();
-
- typedef QDict<MNetworkInterface> InterfaceMap;
- typedef QDictIterator<MNetworkInterface> InterfaceMapIterator;
-
- bool hasInterfaces() const { return interfaces.isEmpty(); };
- int numInterfaces() const { return interfaces.count(); };
-
- MNetworkInterface* getFirstInterface();
-
-protected:
- QString procfile;
- InterfaceMap interfaces;
-
- virtual MNetworkInterface* createInterface( const char* name ) const;
-
-private:
- void enumerateInterfaces();
-};
-
-//---------------------------------------------------------------------------
-// class MWirelessNetwork
-//
-
-class MWirelessNetwork : public MNetwork
-{
-public:
- MWirelessNetwork();
- virtual ~MWirelessNetwork();
-
-protected:
- virtual MNetworkInterface* createInterface( const char* name )
- const;
-};
-
-#endif
diff --git a/noncore/applets/wirelessapplet/wireless.cpp b/noncore/applets/wirelessapplet/wireless.cpp
index dc9742a..72ac380 100644
--- a/noncore/applets/wirelessapplet/wireless.cpp
+++ b/noncore/applets/wirelessapplet/wireless.cpp
@@ -1,31 +1,30 @@
/**********************************************************************
** Copyright (C) 2002-2004 Michael 'Mickey' Lauer <mickey@vanille.de>
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
**********************************************************************/
#include "wireless.h"
-#include "networkinfo.h"
#include "mgraph.h"
#include "advancedconfig.h"
#include "connect0.xpm"
#include "connect1.xpm"
#include "connect2.xpm"
#include "connect3.xpm"
#include "connect4.xpm"
#include "connect5.xpm"
#include "nowireless.xpm"
/* OPIE */
#include <opie2/onetwork.h>
#include <opie2/otaskbarapplet.h>
#include <qpe/qpeapplication.h>
#include <qpe/config.h>
@@ -38,34 +37,34 @@
#include <qslider.h>
#include <qbuttongroup.h>
#include <qlayout.h>
#include <qframe.h>
#include <qpixmap.h>
#include <qstring.h>
#include <qfile.h>
#include <qtextstream.h>
/* STD */
#include <sys/types.h>
#include <signal.h>
#define STYLE_BARS 0
#define STYLE_ANTENNA 1
-//#define MDEBUG
-#undef MDEBUG
+#define MDEBUG
+//#undef MDEBUG
WirelessControl::WirelessControl( WirelessApplet *applet, QWidget *parent, const char *name )
: QFrame( parent, name, WStyle_StaysOnTop | WType_Popup ), applet( applet )
{
readConfig();
writeConfigEntry( "UpdateFrequency", updateFrequency );
writeConfigEntry( "DisplayStyle", displayStyle );
setFrameStyle( QFrame::PopupPanel | QFrame::Raised );
QGridLayout *grid = new QGridLayout( this, 3, 2, 6, 2, "top layout" );
/* status label */
statusLabel = new QLabel( this, "statuslabel" );
QString text( "Wireless Status:<br>"
@@ -312,58 +311,52 @@ void WirelessApplet::updateDelayChange( int delay )
if ( delay == 0 )
delay = 50;
timer = startTimer( delay );
}
void WirelessApplet::displayStyleChange( int style )
{
visualStyle = style;
repaint();
}
WirelessApplet::~WirelessApplet()
{}
void WirelessApplet::timerEvent( QTimerEvent* )
{
- /*
-
+ qDebug( "WirelessApplet::timerEvent" );
OWirelessNetworkInterface* iface = interface;
if ( iface )
{
- bool statResult = iface->updateStatistics();
- if ( !statResult )
- {
- interface = 0;
- mustRepaint();
- return ;
- }
- else
if ( mustRepaint() )
{
- //qDebug( "WIFIAPPLET: A value has changed -> repainting." );
+ qDebug( "WIFIAPPLET: A value has changed -> repainting." );
repaint();
}
if ( status->isVisible() )
+ {
updatePopupWindow();
}
- else checkInterface();
-
- */
+ }
+ else
+ {
+ checkInterface();
+ }
}
void WirelessApplet::mousePressEvent( QMouseEvent * )
{
if ( status->isVisible() )
status->hide();
else
status->show( true );
}
bool WirelessApplet::mustRepaint()
{
OWirelessNetworkInterface* iface = interface;
// check if there are enough changes to justify a (flickering) repaint
@@ -437,86 +430,86 @@ bool WirelessApplet::mustRepaint()
#ifdef MDEBUG
qDebug( "WIFIAPPLET: MODE has changed." );
#endif
renewDHCP();
}
oldESSID = iface->SSID();
oldMODE = iface->mode();
oldFREQ = iface->frequency();
oldAP = iface->associatedAP().toString();
return false;
}
void WirelessApplet::updatePopupWindow()
{
- MWirelessNetworkInterface * iface = ( MWirelessNetworkInterface* ) interface;
- int qualityH = iface->qualityPercent();
+ OWirelessNetworkInterface* iface = interface;
+ int qualityH = iface->signalStrength();
if ( status->mgraph )
status->mgraph->addValue( qualityH, false );
QString freqString;
- QString cell = ( iface->mode == "Managed" ) ? "AP: " : "Cell: ";
- freqString.sprintf( "%.3f GHz", iface->freq );
- status->statusLabel->setText( "Station: " + iface->nick + "<br>" +
- "ESSID: " + iface->essid + "<br>" +
- "MODE: " + iface->mode + "<br>" +
+ QString cell = ( iface->mode() == "Managed" ) ? "AP: " : "Cell: ";
+ freqString.sprintf( "%.3f GHz", iface->frequency() );
+ status->statusLabel->setText( "Station: " + iface->nickName() + "<br>" +
+ "ESSID: " + iface->SSID() + "<br>" +
+ "MODE: " + iface->mode() + "<br>" +
"FREQ: " + freqString + "<br>" +
- cell + " " + iface->APAddr );
+ cell + " " + iface->associatedAP().toString() );
}
const char** WirelessApplet::getQualityPixmap()
{
- MWirelessNetworkInterface * iface = ( MWirelessNetworkInterface* ) interface;
+ OWirelessNetworkInterface* iface = interface;
if ( !iface ) return ( const char** ) nowireless_xpm;
- int qualityH = iface->qualityPercent();
+ int qualityH = iface->signalStrength();
if ( qualityH < 0 ) return ( const char** ) nowireless_xpm;
if ( visualStyle == STYLE_ANTENNA )
{
if ( qualityH < 1 ) return ( const char** ) connect0_xpm;
if ( qualityH < 17 ) return ( const char** ) connect1_xpm;
if ( qualityH < 34 ) return ( const char** ) connect2_xpm;
if ( qualityH < 50 ) return ( const char** ) connect3_xpm;
if ( qualityH < 65 ) return ( const char** ) connect4_xpm;
return ( const char** ) connect5_xpm;
}
return 0; // please draw your bars
}
void WirelessApplet::paintEvent( QPaintEvent* )
{
- MWirelessNetworkInterface * iface = ( MWirelessNetworkInterface* ) interface;
+ OWirelessNetworkInterface* iface = interface;
QPainter p( this );
QColor color;
const char** pixmap = getQualityPixmap();
if ( pixmap )
p.drawPixmap( 0, 1, pixmap );
else
{
- int noiseH = iface->noisePercent() * ( height() - 3 ) / 100;
- int signalH = iface->signalPercent() * ( height() - 3 ) / 100;
- int qualityH = iface->qualityPercent() * ( height() - 3 ) / 100;
+ int noiseH = 30; // iface->noisePercent() * ( height() - 3 ) / 100;
+ int signalH = 50; // iface->signalPercent() * ( height() - 3 ) / 100;
+ int qualityH = iface->signalStrength(); // iface->qualityPercent() * ( height() - 3 ) / 100;
double intensity;
int pixelHeight;
int pixelWidth = 2;
int Hue;
int barSpace = 3;
int leftoffset = 0;
int bottomoffset = 2;
// draw noise indicator
pixelHeight = noiseH;
Hue = 50;
for ( int i = 0; i < pixelHeight; ++i )
{
intensity = 50 + ( ( double ) i / ( double ) pixelHeight ) * 205;
color.setHsv( Hue, 255, intensity );
diff --git a/noncore/applets/wirelessapplet/wirelessapplet.pro b/noncore/applets/wirelessapplet/wirelessapplet.pro
index 7bd7380..636b2d3 100644
--- a/noncore/applets/wirelessapplet/wirelessapplet.pro
+++ b/noncore/applets/wirelessapplet/wirelessapplet.pro
@@ -1,13 +1,13 @@
TEMPLATE = lib
CONFIG += qt plugin warn_on release
-HEADERS = wireless.h networkinfo.h mgraph.h advancedconfig.h
-SOURCES = wireless.cpp networkinfo.cpp mgraph.cpp advancedconfig.cpp
+HEADERS = wireless.h mgraph.h advancedconfig.h
+SOURCES = wireless.cpp mgraph.cpp advancedconfig.cpp
INTERFACES = advancedconfigbase.ui
TARGET = wirelessapplet
DESTDIR = $(OPIEDIR)/plugins/applets
INCLUDEPATH += $(OPIEDIR)/include
DEPENDPATH += $(OPIEDIR)/include
LIBS += -lqpe -lopiecore2 -lopienet2
VERSION = 0.1.1
include ( $(OPIEDIR)/include.pro )