summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2002-12-28 18:57:11 (UTC)
committer mickeyl <mickeyl>2002-12-28 18:57:11 (UTC)
commitf70916f3ab05917a3d0dda64beb8db5ac16448ab (patch) (unidiff)
treebd138c1a901de7ea49b012b32e48d3f4b8b073f8
parent1362726346f1ab497ad5822db1a9b284f5bdaa1a (diff)
downloadopie-f70916f3ab05917a3d0dda64beb8db5ac16448ab.zip
opie-f70916f3ab05917a3d0dda64beb8db5ac16448ab.tar.gz
opie-f70916f3ab05917a3d0dda64beb8db5ac16448ab.tar.bz2
- refactored a number of classes
- removed dumb polling ==> QSocketNotifier rocks - switched to parsing the daemon stuff in the gui, since libwellenreiter still has problems.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/gui/cardconfig.cpp29
-rw-r--r--noncore/net/wellenreiter/gui/cardconfig.h58
-rw-r--r--noncore/net/wellenreiter/gui/configbase.ui10
-rw-r--r--noncore/net/wellenreiter/gui/gui-x11.pro6
-rw-r--r--noncore/net/wellenreiter/gui/gui.pro6
-rw-r--r--noncore/net/wellenreiter/gui/scanlist.cpp100
-rw-r--r--noncore/net/wellenreiter/gui/scanlist.h11
-rw-r--r--noncore/net/wellenreiter/gui/scanlistitem.cpp1
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.cpp213
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.h18
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiterbase.cpp8
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiterbase.h13
-rw-r--r--noncore/net/wellenreiter/gui/wlan.cpp57
-rw-r--r--noncore/net/wellenreiter/gui/wlan.h38
14 files changed, 403 insertions, 165 deletions
diff --git a/noncore/net/wellenreiter/gui/cardconfig.cpp b/noncore/net/wellenreiter/gui/cardconfig.cpp
new file mode 100644
index 0000000..1ca1d27
--- a/dev/null
+++ b/noncore/net/wellenreiter/gui/cardconfig.cpp
@@ -0,0 +1,29 @@
1/**********************************************************************
2** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
3**
4** This file is part of Opie Environment.
5**
6** This file may be distributed and/or modified under the terms of the
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
9** packaging of this file.
10**
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.
13**
14**********************************************************************/
15
16#include "cardconfig.h"
17
18#include <qstring.h>
19
20CardConfig::CardConfig( const QString& interface, Type type, int hopinterval )
21 :_interface( interface ), _type( type ), _hopinterval( hopinterval )
22{
23
24}
25
26CardConfig::~CardConfig()
27{
28}
29
diff --git a/noncore/net/wellenreiter/gui/cardconfig.h b/noncore/net/wellenreiter/gui/cardconfig.h
new file mode 100644
index 0000000..f54ebac
--- a/dev/null
+++ b/noncore/net/wellenreiter/gui/cardconfig.h
@@ -0,0 +1,58 @@
1/**********************************************************************
2** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
3**
4** This file is part of Opie Environment.
5**
6** This file may be distributed and/or modified under the terms of the
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
9** packaging of this file.
10**
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.
13**
14**********************************************************************/
15
16#ifndef CARDCONFIG_H
17#define CARDCONFIG_H
18
19#include <qstring.h>
20
21#ifdef QWS
22#include <opie/odevice.h>
23using namespace Opie;
24#endif
25
26class CardConfig
27{
28 public:
29
30 typedef enum { Prism, Orinoco, HostAP, Manual } Type;
31
32 public:
33
34 CardConfig( const QString& interface, Type type = Manual, int hopinterval = 100 );
35 virtual ~CardConfig();
36
37 const QString& interface() { return _interface; };
38 int hopinterval() { return _hopinterval; };
39 Type type() { return _type; };
40
41 #ifdef QWS
42 OSystem system() { return _system; };
43 #endif
44
45 private:
46
47 QString _interface;
48 Type _type;
49 int _hopinterval;
50
51 #ifdef QWS
52 OSystem _system;
53 #endif
54
55};
56
57#endif
58
diff --git a/noncore/net/wellenreiter/gui/configbase.ui b/noncore/net/wellenreiter/gui/configbase.ui
index e2f734a..8dcf513 100644
--- a/noncore/net/wellenreiter/gui/configbase.ui
+++ b/noncore/net/wellenreiter/gui/configbase.ui
@@ -2,46 +2,46 @@
2<class>WellenreiterConfigBase</class> 2<class>WellenreiterConfigBase</class>
3<widget> 3<widget>
4 <class>QWidget</class> 4 <class>QWidget</class>
5 <property stdset="1"> 5 <property stdset="1">
6 <name>name</name> 6 <name>name</name>
7 <cstring>WellenreiterConfigBase</cstring> 7 <cstring>WellenreiterConfigBase</cstring>
8 </property> 8 </property>
9 <property stdset="1"> 9 <property stdset="1">
10 <name>geometry</name> 10 <name>geometry</name>
11 <rect> 11 <rect>
12 <x>0</x> 12 <x>0</x>
13 <y>0</y> 13 <y>0</y>
14 <width>232</width> 14 <width>228</width>
15 <height>267</height> 15 <height>267</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>caption</name> 19 <name>caption</name>
20 <string>Form1</string> 20 <string>Form1</string>
21 </property> 21 </property>
22 <property> 22 <property>
23 <name>layoutMargin</name> 23 <name>layoutMargin</name>
24 </property> 24 </property>
25 <property> 25 <property>
26 <name>layoutSpacing</name> 26 <name>layoutSpacing</name>
27 </property> 27 </property>
28 <vbox> 28 <vbox>
29 <property stdset="1"> 29 <property stdset="1">
30 <name>margin</name> 30 <name>margin</name>
31 <number>4</number> 31 <number>4</number>
32 </property> 32 </property>
33 <property stdset="1"> 33 <property stdset="1">
34 <name>spacing</name> 34 <name>spacing</name>
35 <number>0</number> 35 <number>1</number>
36 </property> 36 </property>
37 <widget> 37 <widget>
38 <class>QLayoutWidget</class> 38 <class>QLayoutWidget</class>
39 <property stdset="1"> 39 <property stdset="1">
40 <name>name</name> 40 <name>name</name>
41 <cstring>Layout5</cstring> 41 <cstring>Layout5</cstring>
42 </property> 42 </property>
43 <property> 43 <property>
44 <name>layoutSpacing</name> 44 <name>layoutSpacing</name>
45 </property> 45 </property>
46 <hbox> 46 <hbox>
47 <property stdset="1"> 47 <property stdset="1">
@@ -171,30 +171,24 @@
171 </widget> 171 </widget>
172 <widget row="1" column="0" > 172 <widget row="1" column="0" >
173 <class>QComboBox</class> 173 <class>QComboBox</class>
174 <item> 174 <item>
175 <property> 175 <property>
176 <name>text</name> 176 <name>text</name>
177 <string>&lt;select&gt;</string> 177 <string>&lt;select&gt;</string>
178 </property> 178 </property>
179 </item> 179 </item>
180 <item> 180 <item>
181 <property> 181 <property>
182 <name>text</name> 182 <name>text</name>
183 <string>cisco</string>
184 </property>
185 </item>
186 <item>
187 <property>
188 <name>text</name>
189 <string>orinoco</string> 183 <string>orinoco</string>
190 </property> 184 </property>
191 </item> 185 </item>
192 <item> 186 <item>
193 <property> 187 <property>
194 <name>text</name> 188 <name>text</name>
195 <string>prism</string> 189 <string>prism</string>
196 </property> 190 </property>
197 </item> 191 </item>
198 <item> 192 <item>
199 <property> 193 <property>
200 <name>text</name> 194 <name>text</name>
diff --git a/noncore/net/wellenreiter/gui/gui-x11.pro b/noncore/net/wellenreiter/gui/gui-x11.pro
index 6b4a7bf..523bf15 100644
--- a/noncore/net/wellenreiter/gui/gui-x11.pro
+++ b/noncore/net/wellenreiter/gui/gui-x11.pro
@@ -1,11 +1,11 @@
1DESTDIR = . 1DESTDIR = .
2TEMPLATE = app 2TEMPLATE = app
3CONFIG = qt warn_on debug 3CONFIG = qt warn_on debug
4#CONFIG = qt warn_on release 4#CONFIG = qt warn_on release
5HEADERS = wellenreiterbase.h wellenreiter.h scanlistitem.h scanlist.h logwindow.h hexwindow.h configwindow.h resource.h 5HEADERS = wellenreiterbase.h wellenreiter.h scanlistitem.h scanlist.h logwindow.h hexwindow.h configwindow.h resource.h wlan.h cardconfig.h
6SOURCES = main.cpp wellenreiterbase.cpp wellenreiter.cpp scanlistitem.cpp scanlist.cpp logwindow.cpp hexwindow.cpp configwindow.cpp resource.cpp 6SOURCES = main.cpp wellenreiterbase.cpp wellenreiter.cpp scanlistitem.cpp scanlist.cpp logwindow.cpp hexwindow.cpp configwindow.cpp resource.cpp wlan.cpp cardconfig.cpp
7INCLUDEPATH += ../ 7INCLUDEPATH += ../
8DEPENDPATH += ../ 8DEPENDPATH += ../
9LIBS += -lwellenreiter 9LIBS += -L. -lwellenreiter
10INTERFACES = configbase.ui 10INTERFACES = configbase.ui
11TARGET = wellenreiter 11TARGET = wellenreiter
diff --git a/noncore/net/wellenreiter/gui/gui.pro b/noncore/net/wellenreiter/gui/gui.pro
index b6e884d..ce1c387 100644
--- a/noncore/net/wellenreiter/gui/gui.pro
+++ b/noncore/net/wellenreiter/gui/gui.pro
@@ -1,11 +1,11 @@
1DESTDIR = $(OPIEDIR)/bin 1DESTDIR = $(OPIEDIR)/bin
2TEMPLATE = app 2TEMPLATE = app
3CONFIG = qt warn_on debug 3CONFIG = qt warn_on debug
4#CONFIG = qt warn_on release 4#CONFIG = qt warn_on release
5HEADERS = wellenreiterbase.h wellenreiter.h scanlistitem.h scanlist.h logwindow.h hexwindow.h configwindow.h 5HEADERS = wellenreiterbase.h wellenreiter.h scanlistitem.h scanlist.h logwindow.h hexwindow.h configwindow.h wlan.h cardconfig.h
6SOURCES = main.cpp wellenreiterbase.cpp wellenreiter.cpp scanlistitem.cpp scanlist.cpp logwindow.cpp hexwindow.cpp configwindow.cpp 6SOURCES = main.cpp wellenreiterbase.cpp wellenreiter.cpp scanlistitem.cpp scanlist.cpp logwindow.cpp hexwindow.cpp configwindow.cpp wlan.cpp cardconfig.cpp
7INCLUDEPATH += $(OPIEDIR)/include ../ 7INCLUDEPATH += $(OPIEDIR)/include ../
8DEPENDPATH += $(OPIEDIR)/include ../ 8DEPENDPATH += $(OPIEDIR)/include ../
9LIBS += -lqpe -lopie -lwellenreiter 9LIBS += -lqpe -lopie -L. -lwellenreiter
10INTERFACES = configbase.ui 10INTERFACES = configbase.ui
11TARGET = wellenreiter 11TARGET = wellenreiter
diff --git a/noncore/net/wellenreiter/gui/scanlist.cpp b/noncore/net/wellenreiter/gui/scanlist.cpp
index f907afc..6d032aa 100644
--- a/noncore/net/wellenreiter/gui/scanlist.cpp
+++ b/noncore/net/wellenreiter/gui/scanlist.cpp
@@ -5,13 +5,113 @@
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
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 "scanlist.h" 16#include "scanlist.h"
17#include "scanlistitem.h"
18
19#include <assert.h>
20
21MScanListView::MScanListView( QWidget* parent, const char* name )
22 :QListView( parent, name )
23{
24};
25
26MScanListView::~MScanListView()
27{
28};
29
30void MScanListView::addNewItem( QString type, QString essid, QString macaddr, bool wep, int channel, int signal )
31{
32 // FIXME: scanlistitem needs a proper encapsulation and not such a damn dealing with text(...)
33
34 qDebug( "MScanList::addNewItem( %s / %s / %s [%d]",
35 (const char*) type,
36 (const char*) essid,
37 (const char*) macaddr,
38 channel );
39
40 // search, if we already have seen this net
41
42 QString s;
43 MScanListItem* network;
44 MScanListItem* item = static_cast<MScanListItem*> ( firstChild() );
45
46 while ( item && ( item->text( 0 ) != essid ) )
47 {
48 qDebug( "itemtext: %s", (const char*) item->text( 0 ) );
49 item = static_cast<MScanListItem*> ( item->itemBelow() );
50 }
51 if ( item )
52 {
53 // animate the item
54
55 /*
56
57 const QPixmap* pixmap = item->pixmap( 0 );
58 const QPixmap* nextpixmap = ani2;
59 if ( pixmap == ani1 )
60 nextpixmap = ani2;
61 else if ( pixmap == ani2 )
62 nextpixmap = ani3;
63 else if ( pixmap == ani3 )
64 nextpixmap = ani4;
65 else if ( pixmap == ani4 )
66 nextpixmap = ani1;
67 item->setPixmap( 0, *nextpixmap ); */
68
69 //qDebug( "current pixmap %d, next %d", pixmap, nextpixmap );
70
71 // we have already seen this net, check all childs if MAC exists
72
73 network = item;
74
75 item = static_cast<MScanListItem*> ( item->firstChild() );
76 assert( item ); // this shouldn't fail
77
78 while ( item && ( item->text( 2 ) != macaddr ) )
79 {
80 qDebug( "subitemtext: %s", (const char*) item->text( 2 ) );
81 item = static_cast<MScanListItem*> ( item->itemBelow() );
82 }
83
84 if ( item )
85 {
86 // we have already seen this item, it's a dupe
87 qDebug( "%s is a dupe - ignoring...", (const char*) macaddr );
88 return;
89 }
90 }
91 else
92 {
93 s.sprintf( "(i) new network: '%s'", (const char*) essid );
94
95 network = new MScanListItem( this, "networks", essid, QString::null, 0, 0, 0 );
96 }
97
98
99 // insert new station as child from network
100
101 // no essid to reduce clutter, maybe later we have a nick or stationname to display!?
102
103 qDebug( "inserting new station %s", (const char*) macaddr );
104
105 new MScanListItem( network, type, "", macaddr, wep, channel, signal );
106
107 if ( type == "managed" )
108 {
109 s.sprintf( "(i) new AP in '%s' [%d]", (const char*) essid, channel );
110 }
111 else
112 {
113 s.sprintf( "(i) new adhoc station in '%s' [%d]", (const char*) essid, channel );
114 }
115
116}
17 117
diff --git a/noncore/net/wellenreiter/gui/scanlist.h b/noncore/net/wellenreiter/gui/scanlist.h
index 5cf3053..6fe6930 100644
--- a/noncore/net/wellenreiter/gui/scanlist.h
+++ b/noncore/net/wellenreiter/gui/scanlist.h
@@ -11,18 +11,27 @@
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#ifndef SCANLIST_H 16#ifndef SCANLIST_H
17#define SCANLIST_H 17#define SCANLIST_H
18 18
19#include <qlistview.h> 19#include <qlistview.h>
20 20
21class QString; 21class QString;
22 22
23class MScanList: public QListView 23class MScanListView: public QListView
24{ 24{
25 Q_OBJECT
26
27 public:
28 MScanListView( QWidget* parent = 0, const char* name = 0 );
29 virtual ~MScanListView();
30
31 public slots:
32 void addNewItem( QString type, QString essid, QString macaddr, bool wep, int channel, int signal );
33
25}; 34};
26 35
27#endif 36#endif
28 37
diff --git a/noncore/net/wellenreiter/gui/scanlistitem.cpp b/noncore/net/wellenreiter/gui/scanlistitem.cpp
index 1e2a52e..f4b43a6 100644
--- a/noncore/net/wellenreiter/gui/scanlistitem.cpp
+++ b/noncore/net/wellenreiter/gui/scanlistitem.cpp
@@ -67,12 +67,13 @@ void MScanListItem::decorateItem( QString type, QString essid, QString macaddr,
67 // set channel and signal text 67 // set channel and signal text
68 68
69 if ( signal != -1 ) 69 if ( signal != -1 )
70 setText( col_sig, QString::number( signal ) ); 70 setText( col_sig, QString::number( signal ) );
71 if ( channel != -1 ) 71 if ( channel != -1 )
72 setText( col_channel, QString::number( channel ) ); 72 setText( col_channel, QString::number( channel ) );
73 73
74 listView()->triggerUpdate(); 74 listView()->triggerUpdate();
75 75
76 this->type = type; 76 this->type = type;
77 77
78} 78}
79
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp
index 0fd929f..2d9bbee 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.cpp
+++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp
@@ -10,255 +10,203 @@
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// Qt 16// Qt
17 17
18#include <qpushbutton.h> 18#include <qpushbutton.h>
19#include <qmessagebox.h> 19#include <qmessagebox.h>
20#include <qcombobox.h> 20#include <qcombobox.h>
21#include <qspinbox.h> 21#include <qspinbox.h>
22#include <qsocketnotifier.h>
22 23
23// Qtopia 24// Qtopia
24 25
25#ifdef QWS 26#ifdef QWS
26#include <qpe/global.h> 27#include <qpe/global.h>
27#endif 28#endif
28 29
30// Opie
31
32#ifdef QWS
33#include <opie/odevice.h>
34using namespace Opie;
35#endif
36
29// Standard 37// Standard
30 38
31#include <assert.h> 39#include <assert.h>
32#include <errno.h> 40#include <errno.h>
33#include <unistd.h> 41#include <unistd.h>
34#include <string.h> 42#include <string.h>
35#include <sys/types.h> 43#include <sys/types.h>
44#include <sys/socket.h>
36#include <stdlib.h> 45#include <stdlib.h>
46#include <fcntl.h>
37 47
38// Local 48// Local
39 49
40#include "wellenreiter.h" 50#include "wellenreiter.h"
41#include "scanlistitem.h" 51#include "scanlist.h"
42#include "logwindow.h" 52#include "logwindow.h"
43#include "hexwindow.h" 53#include "hexwindow.h"
44#include "configwindow.h" 54#include "configwindow.h"
45 55
46#include <libwellenreiter/source/wl_sock.hh> 56#include <libwellenreiter/source/wl_sock.hh>
47#include <libwellenreiter/source/wl_proto.hh> 57#include <libwellenreiter/source/wl_proto.hh>
48#include <daemon/source/config.hh> 58#include <daemon/source/config.hh>
49 59
50Wellenreiter::Wellenreiter( QWidget* parent, const char* name, WFlags fl ) 60Wellenreiter::Wellenreiter( QWidget* parent, const char* name, WFlags fl )
51 : WellenreiterBase( parent, name, fl ), daemonRunning( false ) 61 : WellenreiterBase( parent, name, fl ), daemonRunning( false )
52{ 62{
53 63
54 logwindow->log( "(i) Wellenreiter has been started." ); 64 logwindow->log( "(i) Wellenreiter has been started." );
55 65
56 connect( button, SIGNAL( clicked() ), this, SLOT( buttonClicked() ) );
57 netview->setColumnWidthMode( 1, QListView::Manual );
58
59 // 66 //
60 // setup socket for daemon communication and start poller 67 // detect operating system
68 //
69
70 #ifdef QWS
71 QString sys;
72 sys.sprintf( "(i) Running on '%s'.", (const char*) ODevice::inst()->systemString() );
73 _system = ODevice::inst()->system();
74 logwindow->log( sys );
75 #endif
76
77 //
78 // setup socket for daemon communication, register socket notifier
61 // 79 //
62 80
63 daemon_fd = wl_setupsock( GUIADDR, GUIPORT ); 81 daemon_fd = wl_setupsock( GUIADDR, GUIPORT );
64 if ( daemon_fd == -1 ) 82 if ( daemon_fd == -1 )
65 { 83 {
66 logwindow->log( "(E) Couldn't get file descriptor for commsocket." ); 84 logwindow->log( "(E) Couldn't get file descriptor for commsocket." );
67 qDebug( "D'oh! Could not get file descriptor for daemon-->gui communication socket." );
68 } 85 }
69 else 86 else
70 startTimer( 700 ); 87 {
88 int flags;
89 flags = fcntl( daemon_fd, F_GETFL, 0 );
90 fcntl( daemon_fd, F_SETFL, flags | O_NONBLOCK );
91 QSocketNotifier *sn = new QSocketNotifier( daemon_fd, QSocketNotifier::Read, parent );
92 connect( sn, SIGNAL( activated( int ) ), this, SLOT( dataReceived() ) );
93 }
71 94
95 // setup GUI
96
97 connect( button, SIGNAL( clicked() ), this, SLOT( buttonClicked() ) );
98 button->setEnabled( false );
99 netview->setColumnWidthMode( 1, QListView::Manual );
100
72} 101}
73 102
74Wellenreiter::~Wellenreiter() 103Wellenreiter::~Wellenreiter()
75{ 104{
76 // no need to delete child widgets, Qt does it all for us 105 // no need to delete child widgets, Qt does it all for us
77} 106}
78 107
79void Wellenreiter::handleMessage() 108void Wellenreiter::handleMessage()
80{ 109{
81 // FIXME: receive message and handle it 110 // FIXME: receive message and handle it
82 111
83 qDebug( "received message from daemon." ); 112 qDebug( "received message from daemon." );
84 113
85 char buffer[128]; 114 char buffer[10000];
86 115 memset( &buffer, 0, sizeof( buffer ) );
87 int result = wl_recv( &daemon_fd, (char*) &buffer, sizeof(buffer) );
88 qDebug( "received %d from recvcomm", result );
89 116
117 // int result = #wl_recv( &daemon_fd, (char*) &buffer, sizeof(buffer) );
118
119 struct sockaddr from;
120 socklen_t len;
121
122 int result = recvfrom( daemon_fd, &buffer, 8192, MSG_WAITALL, &from, &len );
123
124 qDebug( "received %d from recv [%d bytes]", result, len );
125
126 if ( result == -1 )
127 {
128 qDebug( "Warning: %s", strerror( errno ) );
129 return;
130 }
131
132 int command = buffer[1] - 48;
133
90/* 134/*
91typedef struct { 135typedef struct {
92 int net_type; 1 = Accesspoint ; 2 = Ad-Hoc 136 int net_type; 1 = Accesspoint ; 2 = Ad-Hoc
93 int ssid_len; Length of SSID 137 int ssid_len; Length of SSID
94 int channel; Channel 138 int channel; Channel
95 int wep; 1 = WEP enabled ; 0 = disabled 139 int wep; 1 = WEP enabled ; 0 = disabled
96 char mac[64]; MAC address of Accesspoint 140 char mac[64]; MAC address of Accesspoint
97 char bssid[128]; BSSID of Accesspoint 141 char bssid[128]; BSSID of Accesspoint
98} wl_network_t; 142} wl_network_t;
99*/ 143*/
100 144
101 // qDebug( "Sniffer sent: '%s'", (const char*) buffer ); 145 qDebug( "Recv result: %d", ( result ) );
146 qDebug( "Sniffer sent: '%s'", (const char*) buffer );
102 hexwindow->log( (const char*) &buffer ); 147 hexwindow->log( (const char*) &buffer );
103 148
104 if ( result == NETFOUND ) /* new network found */ 149 if ( command == NETFOUND ) /* new network found */
105 { 150 {
106 qDebug( "Sniffer said: new network found." ); 151 qDebug( "Sniffer said: new network found." );
107 wl_network_t n; 152 wl_network_t n;
108 get_network_found( &n, (char*) &buffer ); 153 get_network_found( &n, (char*) &buffer );
109 154
110 qDebug( "Sniffer said: net_type is %d.", n.net_type ); 155 qDebug( "Sniffer said: net_type is %d.", n.net_type );
111 qDebug( "Sniffer said: MAC is %s", (const char*) &n.mac ); 156 qDebug( "Sniffer said: MAC is %s", (const char*) &n.mac );
112 157
113 //n.bssid[n.ssid_len] = "\0"; 158 //n.bssid[n.ssid_len] = "\0";
114 159
115 QString type; 160 QString type;
116 161
117 if ( n.net_type == 1 ) 162 if ( n.net_type == 1 )
118 type = "managed"; 163 type = "managed";
119 else 164 else
120 type = "adhoc"; 165 type = "adhoc";
121 166
122 addNewItem( type, n.bssid, QString( (const char*) &n.mac ), n.wep, n.channel, 0 ); 167 netview->addNewItem( type, n.bssid, QString( (const char*) &n.mac ), n.wep, n.channel, 0 );
123 168
124 } 169 }
125 170
126 else 171 else
127 172
128 { 173 {
129 qDebug( "unknown sniffer command." ); 174 qDebug( "unknown sniffer command." );
130 } 175 }
131 176
132} 177}
133 178
134 179void Wellenreiter::dataReceived()
135bool Wellenreiter::hasMessage()
136{ 180{
137 181 logwindow->log( "(d) Received data from daemon" );
138 // FIXME: do this in libwellenreiter, not here!!! 182 handleMessage();
139
140 fd_set rfds;
141 FD_ZERO( &rfds );
142 FD_SET( daemon_fd, &rfds );
143 struct timeval tv;
144 tv.tv_sec = 0;
145 tv.tv_usec = 10;
146 int result = select( daemon_fd+1, &rfds, NULL, NULL, &tv );
147
148 if ( result == 0 )
149 {
150 return false;
151 }
152 else if ( result == -1 )
153 {
154 qDebug( "selected returned: %s", strerror( errno ) );
155 return false;
156 }
157 else
158 return true; //FD_ISSET( daemon_fd, &rfds ); gibbet 'eh nur einen Deskriptor
159} 183}
160 184
161void Wellenreiter::timerEvent( QTimerEvent* e ) 185void Wellenreiter::buttonClicked()
162{
163 //qDebug( "checking for message..." );
164 if ( hasMessage() )
165 {
166 //qDebug( "got message from daemon" );
167 handleMessage();
168 }
169 else
170 {
171 //qDebug( "no message..." );
172 }
173}
174
175void Wellenreiter::addNewItem( QString type, QString essid, QString macaddr, bool wep, int channel, int signal )
176{ 186{
177 // FIXME: this code belongs in customized QListView, not into this class 187 /*
178 // FIXME: scanlistitem needs a proper encapsulation and not such a damn dealing with text(...) 188 // add some test stations, so that we can see if the GUI part works
179 189 addNewItem( "managed", "Vanille", "04:00:20:EF:A6:43", true, 6, 80 );
180 qDebug( "Wellenreiter::addNewItem( %s / %s / %s [%d]", 190 addNewItem( "managed", "Vanille", "04:00:20:EF:A6:23", true, 11, 10 );
181 (const char*) type, 191 addNewItem( "adhoc", "ELAN", "40:03:43:E7:16:22", false, 3, 10 );
182 (const char*) essid, 192 addNewItem( "adhoc", "ELAN", "40:03:53:E7:56:62", false, 3, 15 );
183 (const char*) macaddr, 193 addNewItem( "adhoc", "ELAN", "40:03:63:E7:56:E2", false, 3, 20 );
184 channel ); 194 */
185
186 // search, if we already have seen this net
187
188 QString s;
189 MScanListItem* network;
190 MScanListItem* item = static_cast<MScanListItem*> ( netview->firstChild() );
191
192 while ( item && ( item->text( 0 ) != essid ) )
193 {
194 qDebug( "itemtext: %s", (const char*) item->text( 0 ) );
195 item = static_cast<MScanListItem*> ( item->itemBelow() );
196 }
197 if ( item )
198 {
199 // we have already seen this net, check all childs if MAC exists
200
201 network = item;
202
203 item = static_cast<MScanListItem*> ( item->firstChild() );
204 assert( item ); // this shouldn't fail
205
206 while ( item && ( item->text( 2 ) != macaddr ) )
207 {
208 qDebug( "subitemtext: %s", (const char*) item->text( 2 ) );
209 item = static_cast<MScanListItem*> ( item->itemBelow() );
210 }
211
212 if ( item )
213 {
214 // we have already seen this item, it's a dupe
215 qDebug( "%s is a dupe - ignoring...", (const char*) macaddr );
216 return;
217 }
218 }
219 else
220 {
221 s.sprintf( "(i) new network: '%s'", (const char*) essid );
222 logwindow->log( s );
223
224 network = new MScanListItem( netview, "networks", essid, QString::null, 0, 0, 0 );
225 }
226
227
228 // insert new station as child from network
229
230 // no essid to reduce clutter, maybe later we have a nick or stationname to display!?
231
232 qDebug( "inserting new station %s", (const char*) macaddr );
233
234 new MScanListItem( network, type, "", macaddr, wep, channel, signal );
235
236 if ( type == "managed" )
237 {
238 s.sprintf( "(i) new AP in '%s' [%d]", (const char*) essid, channel );
239 }
240 else
241 {
242 s.sprintf( "(i) new adhoc station in '%s' [%d]", (const char*) essid, channel );
243 }
244
245 logwindow->log( s );
246 195
247}
248 196
249void Wellenreiter::buttonClicked()
250{
251 if ( daemonRunning ) 197 if ( daemonRunning )
252 { 198 {
199 daemonRunning = false;
200
253 logwindow->log( "(i) Daemon has been stopped." ); 201 logwindow->log( "(i) Daemon has been stopped." );
254 button->setText( "Start Scanning" ); 202 button->setText( "Start Scanning" );
255 203
256 // Stop daemon - ugly for now... later better 204 // Stop daemon - ugly for now... later better
257 205
258 system( "killall orinoco_hopper" ); 206 system( "killall orinoco_hopper" );
259 system( "killall wellenreiterd" ); 207 system( "killall wellenreiterd" );
260 208
261 // FIXME: reset the card trying to get into a usable state again 209 // FIXME: reset the card trying to get into a usable state again
262 210
263 // for now, just message the user 211 // for now, just message the user
264 212
@@ -307,29 +255,14 @@ void Wellenreiter::buttonClicked()
307 255
308 // start daemon 256 // start daemon
309 257
310 cmdline = "wellenreiterd "; 258 cmdline = "wellenreiterd ";
311 cmdline += interface; 259 cmdline += interface;
312 cmdline += " 3"; 260 cmdline += " 3";
313 cmdline += " &"; 261 cmdline += " &";
314 262
315 qDebug( "execute: %s", (const char*) cmdline ); 263 qDebug( "execute: %s", (const char*) cmdline );
316 system( cmdline ); 264 system( cmdline );
317 qDebug( "done" ); 265 qDebug( "done" );
318 266
319 /*
320
321 // add some test stations, so that we can see if the GUI part works
322
323 addNewItem( "managed", "Vanille", "04:00:20:EF:A6:43", true, 6, 80 );
324 addNewItem( "managed", "Vanille", "04:00:20:EF:A6:23", true, 11, 10 );
325 addNewItem( "adhoc", "ELAN", "40:03:43:E7:16:22", false, 3, 10 );
326 addNewItem( "adhoc", "ELAN", "40:03:53:E7:56:62", false, 3, 15 );
327 addNewItem( "adhoc", "ELAN", "40:03:63:E7:56:E2", false, 3, 20 );
328
329 QString command ("98");
330
331 //sendcomm( DAEMONADDR, DAEMONPORT, (const char*) command );
332
333 */
334 } 267 }
335} 268}
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.h b/noncore/net/wellenreiter/gui/wellenreiter.h
index 052a242..2296892 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.h
+++ b/noncore/net/wellenreiter/gui/wellenreiter.h
@@ -9,42 +9,48 @@
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#ifndef WELLENREITER_H 16#ifndef WELLENREITER_H
17#define WELLENREITER_H 17#define WELLENREITER_H
18 18
19#include "wellenreiterbase.h" 19#include "wellenreiterbase.h"
20 20
21#ifdef QWS
22#include <opie/odevice.h>
23using namespace Opie;
24#endif
25
21class QTimerEvent; 26class QTimerEvent;
27class QPixmap;
22 28
23class Wellenreiter : public WellenreiterBase { 29class Wellenreiter : public WellenreiterBase {
24 Q_OBJECT 30 Q_OBJECT
25 31
26public: 32public:
27 33
28 Wellenreiter( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); 34 Wellenreiter( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
29 ~Wellenreiter(); 35 ~Wellenreiter();
30 36
31protected: 37protected:
32 virtual void timerEvent( QTimerEvent* );
33 38
34 bool daemonRunning; 39 bool daemonRunning;
35 40
36public slots: 41public slots:
37 void buttonClicked(); 42 void buttonClicked();
38 void addNewItem( QString type, QString essid, QString ap, bool wep, int channel, int signal ); 43 void dataReceived();
39 44
40private: 45private:
41 int daemon_fd; // socket filedescriptor for udp communication socket 46 int daemon_fd; // socket filedescriptor for udp communication socket
42 47 #ifdef QWS
43 bool hasMessage(); 48 OSystem _system; // Opie Operating System identifier
49 #endif
44 void handleMessage(); 50 void handleMessage();
45 51
46 //void readConfig(); 52 //void readConfig();
47 //void writeConfig(); 53 //void writeConfig();
48}; 54};
49 55
50#endif 56#endif
diff --git a/noncore/net/wellenreiter/gui/wellenreiterbase.cpp b/noncore/net/wellenreiter/gui/wellenreiterbase.cpp
index 5017b08..d6b9891 100644
--- a/noncore/net/wellenreiter/gui/wellenreiterbase.cpp
+++ b/noncore/net/wellenreiter/gui/wellenreiterbase.cpp
@@ -21,61 +21,67 @@
21#include <qmultilineedit.h> 21#include <qmultilineedit.h>
22#include <qpushbutton.h> 22#include <qpushbutton.h>
23#include <qlayout.h> 23#include <qlayout.h>
24#include <qvariant.h> 24#include <qvariant.h>
25#include <qtooltip.h> 25#include <qtooltip.h>
26#include <qwhatsthis.h> 26#include <qwhatsthis.h>
27#include <qimage.h> 27#include <qimage.h>
28#include <qpixmap.h> 28#include <qpixmap.h>
29 29
30#include "logwindow.h" 30#include "logwindow.h"
31#include "hexwindow.h" 31#include "hexwindow.h"
32#include "configwindow.h" 32#include "configwindow.h"
33#include "scanlist.h"
33 34
34#ifdef QWS 35#ifdef QWS
35#include <qpe/resource.h> 36#include <qpe/resource.h>
36#include <opie/otabwidget.h> 37#include <opie/otabwidget.h>
37#else 38#else
38#include "resource.h" 39#include "resource.h"
39#include <qtabwidget.h> 40#include <qtabwidget.h>
40#endif 41#endif
41 42
42 43
43/* 44/*
44 * Constructs a WellenreiterBase which is a child of 'parent', with the 45 * Constructs a WellenreiterBase which is a child of 'parent', with the
45 * name 'name' and widget flags set to 'f' 46 * name 'name' and widget flags set to 'f'
46 */ 47 */
47WellenreiterBase::WellenreiterBase( QWidget* parent, const char* name, WFlags fl ) 48WellenreiterBase::WellenreiterBase( QWidget* parent, const char* name, WFlags fl )
48 : QWidget( parent, name, fl ) 49 : QWidget( parent, name, fl )
49{ 50{
51 ani1 = new QPixmap( Resource::loadPixmap( "wellenreiter/networks_rot0" ) );
52 ani2 = new QPixmap( Resource::loadPixmap( "wellenreiter/networks_rot90" ) );
53 ani3 = new QPixmap( Resource::loadPixmap( "wellenreiter/networks_rot180" ) );
54 ani4 = new QPixmap( Resource::loadPixmap( "wellenreiter/networks_rot270" ) );
55
50 if ( !name ) 56 if ( !name )
51 setName( "WellenreiterBase" ); 57 setName( "WellenreiterBase" );
52 resize( 191, 294 ); 58 resize( 191, 294 );
53 setCaption( tr( "Wellenreiter" ) ); 59 setCaption( tr( "Wellenreiter" ) );
54 WellenreiterBaseLayout = new QVBoxLayout( this ); 60 WellenreiterBaseLayout = new QVBoxLayout( this );
55 WellenreiterBaseLayout->setSpacing( 2 ); 61 WellenreiterBaseLayout->setSpacing( 2 );
56 WellenreiterBaseLayout->setMargin( 0 ); 62 WellenreiterBaseLayout->setMargin( 0 );
57#ifdef QWS 63#ifdef QWS
58 TabWidget = new OTabWidget( this, "TabWidget", OTabWidget::Global ); 64 TabWidget = new OTabWidget( this, "TabWidget", OTabWidget::Global );
59#else 65#else
60 TabWidget = new QTabWidget( this, "TabWidget" ); 66 TabWidget = new QTabWidget( this, "TabWidget" );
61#endif 67#endif
62 ap = new QWidget( TabWidget, "ap" ); 68 ap = new QWidget( TabWidget, "ap" );
63 apLayout = new QVBoxLayout( ap ); 69 apLayout = new QVBoxLayout( ap );
64 apLayout->setSpacing( 2 ); 70 apLayout->setSpacing( 2 );
65 apLayout->setMargin( 2 ); 71 apLayout->setMargin( 2 );
66 72
67 //--------- NETVIEW TAB -------------- 73 //--------- NETVIEW TAB --------------
68 74
69 netview = new QListView( ap, "netview" ); 75 netview = new MScanListView( ap );
70 netview->addColumn( tr( "SSID" ) ); 76 netview->addColumn( tr( "SSID" ) );
71 netview->setColumnAlignment( 0, AlignLeft || AlignVCenter ); 77 netview->setColumnAlignment( 0, AlignLeft || AlignVCenter );
72 netview->addColumn( tr( "Sig" ) ); 78 netview->addColumn( tr( "Sig" ) );
73 netview->setColumnAlignment( 1, AlignCenter ); 79 netview->setColumnAlignment( 1, AlignCenter );
74 netview->addColumn( tr( "AP" ) ); 80 netview->addColumn( tr( "AP" ) );
75 netview->setColumnAlignment( 2, AlignCenter ); 81 netview->setColumnAlignment( 2, AlignCenter );
76 netview->addColumn( tr( "Chn" ) ); 82 netview->addColumn( tr( "Chn" ) );
77 netview->setColumnAlignment( 3, AlignCenter ); 83 netview->setColumnAlignment( 3, AlignCenter );
78 netview->addColumn( tr( "W" ) ); 84 netview->addColumn( tr( "W" ) );
79 netview->setColumnAlignment( 4, AlignCenter ); 85 netview->setColumnAlignment( 4, AlignCenter );
80 netview->addColumn( tr( "T" ) ); 86 netview->addColumn( tr( "T" ) );
81 netview->setColumnAlignment( 5, AlignCenter ); 87 netview->setColumnAlignment( 5, AlignCenter );
diff --git a/noncore/net/wellenreiter/gui/wellenreiterbase.h b/noncore/net/wellenreiter/gui/wellenreiterbase.h
index fce25d1..edb2930 100644
--- a/noncore/net/wellenreiter/gui/wellenreiterbase.h
+++ b/noncore/net/wellenreiter/gui/wellenreiterbase.h
@@ -13,26 +13,26 @@
13** 13**
14**********************************************************************/ 14**********************************************************************/
15 15
16#ifndef WELLENREITERBASE_H 16#ifndef WELLENREITERBASE_H
17#define WELLENREITERBASE_H 17#define WELLENREITERBASE_H
18 18
19#include <qvariant.h> 19#include <qvariant.h>
20#include <qwidget.h> 20#include <qwidget.h>
21class QVBoxLayout; 21class QVBoxLayout;
22class QHBoxLayout; 22class QHBoxLayout;
23class QGridLayout; 23class QGridLayout;
24class QLabel; 24class QLabel;
25class QListView; 25class MScanListView;
26class QListViewItem; 26class MScanListItem;
27class QPushButton; 27class QPushButton;
28class MLogWindow; 28class MLogWindow;
29class MHexWindow; 29class MHexWindow;
30class WellenreiterConfigWindow; 30class WellenreiterConfigWindow;
31 31
32#ifdef QWS 32#ifdef QWS
33class OTabWidget; 33class OTabWidget;
34#else 34#else
35class QTabWidget; 35class QTabWidget;
36#endif 36#endif
37 37
38class WellenreiterBase : public QWidget 38class WellenreiterBase : public QWidget
@@ -40,29 +40,36 @@ class WellenreiterBase : public QWidget
40 Q_OBJECT 40 Q_OBJECT
41 41
42public: 42public:
43 WellenreiterBase( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); 43 WellenreiterBase( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
44 ~WellenreiterBase(); 44 ~WellenreiterBase();
45 45
46#ifdef QWS 46#ifdef QWS
47 OTabWidget* TabWidget; 47 OTabWidget* TabWidget;
48#else 48#else
49 QTabWidget* TabWidget; 49 QTabWidget* TabWidget;
50#endif 50#endif
51 QWidget* ap; 51 QWidget* ap;
52 QListView* netview; 52 MScanListView* netview;
53 MLogWindow* logwindow; 53 MLogWindow* logwindow;
54 MHexWindow* hexwindow; 54 MHexWindow* hexwindow;
55 WellenreiterConfigWindow* configwindow; 55 WellenreiterConfigWindow* configwindow;
56 QWidget* about; 56 QWidget* about;
57 QLabel* PixmapLabel1_3_2; 57 QLabel* PixmapLabel1_3_2;
58 QLabel* TextLabel1_4_2; 58 QLabel* TextLabel1_4_2;
59 QPushButton* button; 59 QPushButton* button;
60 60
61protected: 61protected:
62 QVBoxLayout* WellenreiterBaseLayout; 62 QVBoxLayout* WellenreiterBaseLayout;
63 QVBoxLayout* apLayout; 63 QVBoxLayout* apLayout;
64 QGridLayout* aboutLayout; 64 QGridLayout* aboutLayout;
65 bool event( QEvent* ); 65 bool event( QEvent* );
66
67 QPixmap* ani1;
68 QPixmap* ani2;
69 QPixmap* ani3;
70 QPixmap* ani4;
71
72
66}; 73};
67 74
68#endif // WELLENREITERBASE_H 75#endif // WELLENREITERBASE_H
diff --git a/noncore/net/wellenreiter/gui/wlan.cpp b/noncore/net/wellenreiter/gui/wlan.cpp
new file mode 100644
index 0000000..b046cc8
--- a/dev/null
+++ b/noncore/net/wellenreiter/gui/wlan.cpp
@@ -0,0 +1,57 @@
1/**********************************************************************
2** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
3**
4** This file is part of Opie Environment.
5**
6** This file may be distributed and/or modified under the terms of the
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
9** packaging of this file.
10**
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.
13**
14**********************************************************************/
15
16#include "wlan.h"
17#include "cardconfig.h"
18
19// Qt
20#include <qstring.h>
21
22// Qtopia
23#ifdef QWS
24#include <opie/odevice.h>
25using namespace Opie;
26#endif
27
28WLAN::WLAN( const QString& interface )
29{
30 _configuration = new CardConfig( interface );
31}
32
33WLAN::WLAN( const CardConfig* configuration )
34{
35 _configuration = configuration;
36
37}
38
39WLAN::~WLAN()
40{
41 delete _configuration;
42
43}
44
45void WLAN::setMonitorMode( bool enabled )
46{
47
48 /*
49
50 if ( _configuration->system() == System_OpenZaurus && _configuration->type() == CardConfig::Prism )
51 {
52 }
53
54 */
55
56}
57
diff --git a/noncore/net/wellenreiter/gui/wlan.h b/noncore/net/wellenreiter/gui/wlan.h
new file mode 100644
index 0000000..139e218
--- a/dev/null
+++ b/noncore/net/wellenreiter/gui/wlan.h
@@ -0,0 +1,38 @@
1/**********************************************************************
2** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
3**
4** This file is part of Opie Environment.
5**
6** This file may be distributed and/or modified under the terms of the
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
9** packaging of this file.
10**
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.
13**
14**********************************************************************/
15
16#ifndef WLAN_H
17#define WLAN_H
18
19class QString;
20class CardConfig;
21
22class WLAN
23{
24 public:
25
26 WLAN( const QString& interface );
27 WLAN( const CardConfig* );
28 virtual ~WLAN();
29 void setMonitorMode( bool enabled );
30
31 private:
32
33 const CardConfig* _configuration;
34
35};
36
37#endif
38