summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2002-09-01 16:56:31 (UTC)
committer mickeyl <mickeyl>2002-09-01 16:56:31 (UTC)
commitfcb9667f80888b254c193872ab168010e273b8a4 (patch) (unidiff)
treeff384b30ca9f91ca3090a4fa4b424844bd2eb021
parent7b7125dfdf328d905287d22581c24b1af0d9f837 (diff)
downloadopie-fcb9667f80888b254c193872ab168010e273b8a4.zip
opie-fcb9667f80888b254c193872ab168010e273b8a4.tar.gz
opie-fcb9667f80888b254c193872ab168010e273b8a4.tar.bz2
Learned a lesson about the C preprocessor *ugh*.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/applets/wirelessapplet/networkinfo.cpp3
-rw-r--r--noncore/applets/wirelessapplet/wireless.cpp8
2 files changed, 6 insertions, 5 deletions
diff --git a/noncore/applets/wirelessapplet/networkinfo.cpp b/noncore/applets/wirelessapplet/networkinfo.cpp
index 8531fd5..2274d99 100644
--- a/noncore/applets/wirelessapplet/networkinfo.cpp
+++ b/noncore/applets/wirelessapplet/networkinfo.cpp
@@ -6,97 +6,98 @@
6** Copyright (C) 2002, Michael Lauer 6** Copyright (C) 2002, Michael Lauer
7** mickey@tm.informatik.uni-frankfurt.de 7** mickey@tm.informatik.uni-frankfurt.de
8** http://www.Vanille.de 8** http://www.Vanille.de
9** 9**
10** Based on portions of the Wireless Extensions 10** Based on portions of the Wireless Extensions
11** Copyright (c) 1997-2002 Jean Tourrilhes <jt@hpl.hp.com> 11** Copyright (c) 1997-2002 Jean Tourrilhes <jt@hpl.hp.com>
12** 12**
13** This file may be distributed and/or modified under the terms of the 13** This file may be distributed and/or modified under the terms of the
14** GNU General Public License version 2 as published by the Free Software 14** GNU General Public License version 2 as published by the Free Software
15** Foundation and appearing in the file LICENSE.GPL included in the 15** Foundation and appearing in the file LICENSE.GPL included in the
16** packaging of this file. 16** packaging of this file.
17** 17**
18** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 18** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
19** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 19** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
20** 20**
21**********************************************************************/ 21**********************************************************************/
22 22
23#include "networkinfo.h" 23#include "networkinfo.h"
24 24
25#include <arpa/inet.h> 25#include <arpa/inet.h>
26#include <sys/socket.h> 26#include <sys/socket.h>
27#include <linux/if_ether.h> 27#include <linux/if_ether.h>
28#include <netinet/ip.h> 28#include <netinet/ip.h>
29#include <sys/ioctl.h> 29#include <sys/ioctl.h>
30#include <linux/wireless.h> 30#include <linux/wireless.h>
31 31
32#include <unistd.h> 32#include <unistd.h>
33#include <math.h> 33#include <math.h>
34#include <errno.h> 34#include <errno.h>
35#include <string.h> 35#include <string.h>
36 36
37#include <stdlib.h> 37#include <stdlib.h>
38 38
39#include <qstring.h> 39#include <qstring.h>
40#include <qfile.h> 40#include <qfile.h>
41#include <qtextstream.h> 41#include <qtextstream.h>
42 42
43/* estimated wireless signal strength and noise level values 43/* estimated wireless signal strength and noise level values
44 based on experimentation with Orinoco and Prism2 cards. 44 based on experimentation with Orinoco and Prism2 cards.
45 Seem to be correct, but please inform me, if you got values 45 Seem to be correct, but please inform me, if you got values
46 outside these boundaries. :Mickey: */ 46 outside these boundaries. :Mickey: */
47 47
48#define IW_UPPER 220 48#define IW_UPPER 220
49#define IW_LOWER 140 49#define IW_LOWER 140
50 50
51#define PROCNETDEV "/proc/net/dev" 51#define PROCNETDEV "/proc/net/dev"
52#define PROCNETWIRELESS "/proc/net/wireless" 52#define PROCNETWIRELESS "/proc/net/wireless"
53 53
54#define MDEBUG 0 54//#define MDEBUG 0
55#undef MDEBUG
55 56
56//--------------------------------------------------------------------------- 57//---------------------------------------------------------------------------
57// class MNetworkInterface 58// class MNetworkInterface
58// 59//
59 60
60MNetworkInterface::MNetworkInterface( const char* name ) 61MNetworkInterface::MNetworkInterface( const char* name )
61 :name( name ) 62 :name( name )
62{ 63{
63 struct ifreq ifr; 64 struct ifreq ifr;
64 struct sockaddr_in *sin = (struct sockaddr_in *) &ifr.ifr_addr; 65 struct sockaddr_in *sin = (struct sockaddr_in *) &ifr.ifr_addr;
65 fd = socket( AF_INET, SOCK_DGRAM, 0 ); 66 fd = socket( AF_INET, SOCK_DGRAM, 0 );
66} 67}
67 68
68MNetworkInterface::~MNetworkInterface() 69MNetworkInterface::~MNetworkInterface()
69{ 70{
70 if ( fd != -1 ) 71 if ( fd != -1 )
71 close( fd ); 72 close( fd );
72} 73}
73 74
74bool MNetworkInterface::updateStatistics() 75bool MNetworkInterface::updateStatistics()
75{ 76{
76 return true; 77 return true;
77} 78}
78 79
79//--------------------------------------------------------------------------- 80//---------------------------------------------------------------------------
80// class MWirelessNetworkInterface 81// class MWirelessNetworkInterface
81// 82//
82 83
83MWirelessNetworkInterface::MWirelessNetworkInterface( const char* n ) 84MWirelessNetworkInterface::MWirelessNetworkInterface( const char* n )
84 :MNetworkInterface( n ) 85 :MNetworkInterface( n )
85{ 86{
86 signal = 0; 87 signal = 0;
87 noise = 0; 88 noise = 0;
88 quality = 0; 89 quality = 0;
89} 90}
90 91
91MWirelessNetworkInterface::~MWirelessNetworkInterface() 92MWirelessNetworkInterface::~MWirelessNetworkInterface()
92{ 93{
93} 94}
94 95
95int MWirelessNetworkInterface::qualityPercent() 96int MWirelessNetworkInterface::qualityPercent()
96{ 97{
97 return ( quality*100 ) / 92; 98 return ( quality*100 ) / 92;
98} 99}
99 100
100int MWirelessNetworkInterface::signalPercent() 101int MWirelessNetworkInterface::signalPercent()
101{ 102{
102 return ( ( signal-IW_LOWER ) * 100 ) / IW_UPPER; 103 return ( ( signal-IW_LOWER ) * 100 ) / IW_UPPER;
diff --git a/noncore/applets/wirelessapplet/wireless.cpp b/noncore/applets/wirelessapplet/wireless.cpp
index a5aabb0..649cf20 100644
--- a/noncore/applets/wirelessapplet/wireless.cpp
+++ b/noncore/applets/wirelessapplet/wireless.cpp
@@ -7,97 +7,98 @@
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14**********************************************************************/ 14**********************************************************************/
15 15
16#include "wireless.h" 16#include "wireless.h"
17 17
18#include <qapplication.h> 18#include <qapplication.h>
19#include <qpe/qpeapplication.h> 19#include <qpe/qpeapplication.h>
20#include <qpe/config.h> 20#include <qpe/config.h>
21 21
22#include <qpoint.h> 22#include <qpoint.h>
23#include <qradiobutton.h> 23#include <qradiobutton.h>
24#include <qpushbutton.h> 24#include <qpushbutton.h>
25#include <qpainter.h> 25#include <qpainter.h>
26#include <qlabel.h> 26#include <qlabel.h>
27#include <qslider.h> 27#include <qslider.h>
28#include <qbuttongroup.h> 28#include <qbuttongroup.h>
29#include <qlayout.h> 29#include <qlayout.h>
30#include <qframe.h> 30#include <qframe.h>
31#include <qpixmap.h> 31#include <qpixmap.h>
32#include <qstring.h> 32#include <qstring.h>
33#include <qfile.h> 33#include <qfile.h>
34#include <qtextstream.h> 34#include <qtextstream.h>
35 35
36#include <sys/types.h> 36#include <sys/types.h>
37#include <signal.h> 37#include <signal.h>
38 38
39#include "networkinfo.h" 39#include "networkinfo.h"
40#include "mgraph.h" 40#include "mgraph.h"
41 41
42#include "advancedconfig.h" 42#include "advancedconfig.h"
43 43
44#include "connect0.xpm" 44#include "connect0.xpm"
45#include "connect1.xpm" 45#include "connect1.xpm"
46#include "connect2.xpm" 46#include "connect2.xpm"
47#include "connect3.xpm" 47#include "connect3.xpm"
48#include "connect4.xpm" 48#include "connect4.xpm"
49#include "connect5.xpm" 49#include "connect5.xpm"
50#include "nowireless.xpm" 50#include "nowireless.xpm"
51 51
52#define STYLE_BARS 0 52#define STYLE_BARS 0
53#define STYLE_ANTENNA 1 53#define STYLE_ANTENNA 1
54 54
55#define MDEBUG 0 55//#define MDEBUG 0
56#undef MDEBUG
56 57
57WirelessControl::WirelessControl( WirelessApplet *applet, QWidget *parent, const char *name ) 58WirelessControl::WirelessControl( WirelessApplet *applet, QWidget *parent, const char *name )
58 : QFrame( parent, name, WStyle_StaysOnTop | WType_Popup ), applet( applet ) 59 : QFrame( parent, name, WStyle_StaysOnTop | WType_Popup ), applet( applet )
59{ 60{
60 61
61 readConfig(); 62 readConfig();
62 writeConfigEntry( "UpdateFrequency", updateFrequency ); 63 writeConfigEntry( "UpdateFrequency", updateFrequency );
63 writeConfigEntry( "DisplayStyle", displayStyle ); 64 writeConfigEntry( "DisplayStyle", displayStyle );
64 65
65 setFrameStyle( QFrame::PopupPanel | QFrame::Raised ); 66 setFrameStyle( QFrame::PopupPanel | QFrame::Raised );
66 QGridLayout *grid = new QGridLayout( this, 3, 2, 6, 2, "top layout" ); 67 QGridLayout *grid = new QGridLayout( this, 3, 2, 6, 2, "top layout" );
67 68
68 /* status label */ 69 /* status label */
69 70
70 statusLabel = new QLabel( this, "statuslabel" ); 71 statusLabel = new QLabel( this, "statuslabel" );
71 QString text( "Wireless Status:<br>" 72 QString text( "Wireless Status:<br>"
72 "*** Unknown ***<br>" 73 "*** Unknown ***<br>"
73 "Card not inserted ?<br>" 74 "Card not inserted ?<br>"
74 "Or Sharp ROM ?<br>" 75 "Or Sharp ROM ?<br>"
75 "CELL: 00:00:00:00:00:00" ); 76 "CELL: 00:00:00:00:00:00" );
76/* QString text( "Station: Unknown<br>" 77/* QString text( "Station: Unknown<br>"
77 "ESSID: Unknown<br>" 78 "ESSID: Unknown<br>"
78 "MODE: Unknown<br>" 79 "MODE: Unknown<br>"
79 "FREQ: Unknown<br>" 80 "FREQ: Unknown<br>"
80 "CELL: AA:BB:CC:DD:EE:FF" ); */ 81 "CELL: AA:BB:CC:DD:EE:FF" ); */
81 statusLabel->setText( text ); 82 statusLabel->setText( text );
82 statusLabel->setFixedSize( statusLabel->sizeHint() ); 83 statusLabel->setFixedSize( statusLabel->sizeHint() );
83 grid->addWidget( statusLabel, 0, 0 ); 84 grid->addWidget( statusLabel, 0, 0 );
84 85
85 /* visualization group box */ 86 /* visualization group box */
86 87
87 QButtonGroup* group = new QButtonGroup( 1, Qt::Horizontal, "Visualization", this ); 88 QButtonGroup* group = new QButtonGroup( 1, Qt::Horizontal, "Visualization", this );
88 QRadioButton* r1 = new QRadioButton( "Color Bars", group ); 89 QRadioButton* r1 = new QRadioButton( "Color Bars", group );
89 QRadioButton* r2 = new QRadioButton( "Antenna", group ); 90 QRadioButton* r2 = new QRadioButton( "Antenna", group );
90 r1->setFocusPolicy( QWidget::NoFocus ); 91 r1->setFocusPolicy( QWidget::NoFocus );
91 r2->setFocusPolicy( QWidget::NoFocus ); 92 r2->setFocusPolicy( QWidget::NoFocus );
92 group->setFocusPolicy( QWidget::NoFocus ); 93 group->setFocusPolicy( QWidget::NoFocus );
93 group->setButton( displayStyle ); 94 group->setButton( displayStyle );
94 grid->addWidget( group, 0, 1 ); 95 grid->addWidget( group, 0, 1 );
95 96
96 /* quality graph */ 97 /* quality graph */
97 98
98 mgraph = new MGraph( this ); 99 mgraph = new MGraph( this );
99 mgraph->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 100 mgraph->setFrameStyle( QFrame::Panel | QFrame::Sunken );
100 mgraph->setMin( 0 ); 101 mgraph->setMin( 0 );
101 mgraph->setMax( 92 ); 102 mgraph->setMax( 92 );
102 grid->addWidget( mgraph, 1, 0 ); 103 grid->addWidget( mgraph, 1, 0 );
103 mgraph->setFocusPolicy( QWidget::NoFocus ); 104 mgraph->setFocusPolicy( QWidget::NoFocus );
@@ -178,106 +179,105 @@ void WirelessControl::show ( bool )
178 int x = curPos.x() - ( w / 2 ); 179 int x = curPos.x() - ( w / 2 );
179 180
180 if ( ( x + w ) > QPEApplication::desktop()->width() ) 181 if ( ( x + w ) > QPEApplication::desktop()->width() )
181 x = QPEApplication::desktop ( )-> width ( ) - w; 182 x = QPEApplication::desktop ( )-> width ( ) - w;
182 183
183 move( x, curPos.y () - sizeHint().height () ); 184 move( x, curPos.y () - sizeHint().height () );
184 QFrame::show(); 185 QFrame::show();
185} 186}
186 187
187void WirelessControl::readConfig() 188void WirelessControl::readConfig()
188{ 189{
189 Config cfg( "qpe" ); 190 Config cfg( "qpe" );
190 cfg.setGroup( "Wireless" ); 191 cfg.setGroup( "Wireless" );
191 192
192 updateFrequency = cfg.readNumEntry( "UpdateFrequency", 2 ); 193 updateFrequency = cfg.readNumEntry( "UpdateFrequency", 2 );
193 displayStyle = cfg.readNumEntry( "DisplayStyle", STYLE_ANTENNA ); 194 displayStyle = cfg.readNumEntry( "DisplayStyle", STYLE_ANTENNA );
194 rocESSID = cfg.readBoolEntry( "renew_dhcp_on_essid_change", false ); 195 rocESSID = cfg.readBoolEntry( "renew_dhcp_on_essid_change", false );
195 rocFREQ = cfg.readBoolEntry( "renew_dhcp_on_freq_change", false ); 196 rocFREQ = cfg.readBoolEntry( "renew_dhcp_on_freq_change", false );
196 rocAP = cfg.readBoolEntry( "renew_dhcp_on_ap_change", false ); 197 rocAP = cfg.readBoolEntry( "renew_dhcp_on_ap_change", false );
197 rocMODE = cfg.readBoolEntry( "renew_dhcp_on_mode_change", false ); 198 rocMODE = cfg.readBoolEntry( "renew_dhcp_on_mode_change", false );
198} 199}
199 200
200void WirelessControl::writeConfigEntry( const char *entry, int val ) 201void WirelessControl::writeConfigEntry( const char *entry, int val )
201{ 202{
202 Config cfg( "qpe" ); 203 Config cfg( "qpe" );
203 cfg.setGroup( "Wireless" ); 204 cfg.setGroup( "Wireless" );
204 cfg.writeEntry( entry, val ); 205 cfg.writeEntry( entry, val );
205} 206}
206 207
207//=========================================================================== 208//===========================================================================
208 209
209WirelessApplet::WirelessApplet( QWidget *parent, const char *name ) 210WirelessApplet::WirelessApplet( QWidget *parent, const char *name )
210 : QWidget( parent, name ), visualStyle( STYLE_ANTENNA ), 211 : QWidget( parent, name ), visualStyle( STYLE_ANTENNA ),
211 timer( 0 ), interface( 0 ), 212 timer( 0 ), interface( 0 ),
212 rocESSID( false ), rocFREQ( false ), rocAP( false ), rocMODE( false ) 213 rocESSID( false ), rocFREQ( false ), rocAP( false ), rocMODE( false )
213{ 214{
214 setFixedHeight( 18 ); 215 setFixedHeight( 18 );
215 setFixedWidth( 14 ); 216 setFixedWidth( 14 );
216 network = new MWirelessNetwork(); 217 network = new MWirelessNetwork();
217 status = new WirelessControl( this, 0, "wireless status" ); 218 status = new WirelessControl( this, 0, "wireless status" );
218} 219}
219 220
220void WirelessApplet::checkInterface() 221void WirelessApplet::checkInterface()
221{ 222{
222 interface = network->getFirstInterface(); 223 interface = network->getFirstInterface();
223 if ( interface ) 224 if ( interface )
224 { 225 {
225#ifdef MDEBUG 226#ifdef MDEBUG
226 qDebug( "WIFIAPPLET: using interface '%s'", (const char*) 227 qDebug( "WIFIAPPLET: using interface '%s'", (const char*) interface->getName() );
227#endif 228#endif
228 interface->getName() );
229 } 229 }
230 else 230 else
231 { 231 {
232#ifdef MDEBUG 232#ifdef MDEBUG
233 qDebug( "WIFIAPPLET: D'oh! No Wireless interface present... :(" ); 233 qDebug( "WIFIAPPLET: D'oh! No Wireless interface present... :(" );
234 hide();
235#endif 234#endif
235 hide();
236 } 236 }
237} 237}
238 238
239void WirelessApplet::renewDHCP() 239void WirelessApplet::renewDHCP()
240{ 240{
241#ifdef MDEBUG 241#ifdef MDEBUG
242 qDebug( "WIFIAPPLET: Going to request a DHCP configuration renew." ); 242 qDebug( "WIFIAPPLET: Going to request a DHCP configuration renew." );
243#endif 243#endif
244 244
245 QString pidfile; 245 QString pidfile;
246 if ( !interface ) 246 if ( !interface )
247 return; 247 return;
248 QString ifacename( interface->getName() ); 248 QString ifacename( interface->getName() );
249 pidfile.sprintf( "/var/run/dhcpcd-%s.pid", (const char* ) ifacename ); 249 pidfile.sprintf( "/var/run/dhcpcd-%s.pid", (const char* ) ifacename );
250#ifdef MDEBUG 250#ifdef MDEBUG
251 qDebug( "WIFIAPPLET: pidfile is '%s'", (const char*) pidfile ); 251 qDebug( "WIFIAPPLET: pidfile is '%s'", (const char*) pidfile );
252#endif 252#endif
253 int pid; 253 int pid;
254 QFile pfile( pidfile ); 254 QFile pfile( pidfile );
255 bool hasFile = pfile.open( IO_ReadOnly ); 255 bool hasFile = pfile.open( IO_ReadOnly );
256 QTextStream s( &pfile ); 256 QTextStream s( &pfile );
257 if ( hasFile ) 257 if ( hasFile )
258 s >> pid; 258 s >> pid;
259#ifdef MDEBUG 259#ifdef MDEBUG
260 qDebug( "WIFIAPPLET: sent -14 to pid %d", pid ); 260 qDebug( "WIFIAPPLET: sent -14 to pid %d", pid );
261#endif 261#endif
262 kill( pid, -14 ); 262 kill( pid, -14 );
263 263
264} 264}
265 265
266void WirelessApplet::updateDHCPConfig( bool ESSID, bool FREQ, bool AP, bool MODE ) 266void WirelessApplet::updateDHCPConfig( bool ESSID, bool FREQ, bool AP, bool MODE )
267{ 267{
268 rocESSID = ESSID; 268 rocESSID = ESSID;
269 rocFREQ = FREQ; 269 rocFREQ = FREQ;
270 rocAP = AP; 270 rocAP = AP;
271 rocMODE = MODE; 271 rocMODE = MODE;
272} 272}
273 273
274void WirelessApplet::updateDelayChange( int delay ) 274void WirelessApplet::updateDelayChange( int delay )
275{ 275{
276 if ( timer ) 276 if ( timer )
277 killTimer( timer ); 277 killTimer( timer );
278 delay *= 1000; 278 delay *= 1000;
279 if ( delay == 0 ) 279 if ( delay == 0 )
280 delay = 50; 280 delay = 50;
281 timer = startTimer( delay ); 281 timer = startTimer( delay );
282} 282}
283 283