summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/gui/manufacturers.cpp4
-rw-r--r--noncore/net/wellenreiter/gui/manufacturers.h2
-rw-r--r--noncore/net/wellenreiter/gui/scanlist.cpp36
-rw-r--r--noncore/net/wellenreiter/gui/scanlist.h7
-rw-r--r--noncore/net/wellenreiter/gui/scanlistitem.cpp19
-rw-r--r--noncore/net/wellenreiter/gui/scanlistitem.h8
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.cpp27
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.h19
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiterbase.cpp18
-rw-r--r--noncore/net/wellenreiter/libwellenreiter/libwellenreiter.pro2
10 files changed, 109 insertions, 33 deletions
diff --git a/noncore/net/wellenreiter/gui/manufacturers.cpp b/noncore/net/wellenreiter/gui/manufacturers.cpp
index d235989..dad2753 100644
--- a/noncore/net/wellenreiter/gui/manufacturers.cpp
+++ b/noncore/net/wellenreiter/gui/manufacturers.cpp
@@ -39,9 +39,11 @@ ManufacturerDB::ManufacturerDB( const QString& filename )
{
s >> addr;
s.skipWhiteSpace();
manu = s.readLine();
+ #ifdef DEBUG
qDebug( "ManufacturerDB: read pair %s, %s", (const char*) addr, (const char*) manu );
+ #endif
manufacturers.insert( addr, manu );
}
}
@@ -51,8 +53,8 @@ ManufacturerDB::ManufacturerDB( const QString& filename )
ManufacturerDB::~ManufacturerDB()
{
}
-QString ManufacturerDB::lookup( const QString& macaddr )
+const QString& ManufacturerDB::lookup( const QString& macaddr ) const
{
return manufacturers[macaddr.upper().left(8)];
}
diff --git a/noncore/net/wellenreiter/gui/manufacturers.h b/noncore/net/wellenreiter/gui/manufacturers.h
index d69977a..67afe21 100644
--- a/noncore/net/wellenreiter/gui/manufacturers.h
+++ b/noncore/net/wellenreiter/gui/manufacturers.h
@@ -24,9 +24,9 @@ class ManufacturerDB
public:
ManufacturerDB( const QString& filename );
virtual ~ManufacturerDB();
- QString lookup( const QString& macaddr );
+ const QString& lookup( const QString& macaddr ) const;
private:
QMap<QString, QString> manufacturers;
diff --git a/noncore/net/wellenreiter/gui/scanlist.cpp b/noncore/net/wellenreiter/gui/scanlist.cpp
index 6d032aa..ab19701 100644
--- a/noncore/net/wellenreiter/gui/scanlist.cpp
+++ b/noncore/net/wellenreiter/gui/scanlist.cpp
@@ -17,17 +17,44 @@
#include "scanlistitem.h"
#include <assert.h>
+#include "manufacturers.h"
+
MScanListView::MScanListView( QWidget* parent, const char* name )
- :QListView( parent, name )
+ :QListView( parent, name ), _manufacturerdb( 0 )
{
+
+ setFrameShape( QListView::StyledPanel );
+ setFrameShadow( QListView::Sunken );
+
+ addColumn( tr( "Net/Station" ) );
+ setColumnAlignment( 0, AlignLeft || AlignVCenter );
+ addColumn( tr( "B" ) );
+ setColumnAlignment( 1, AlignCenter );
+ addColumn( tr( "AP" ) );
+ setColumnAlignment( 2, AlignCenter );
+ addColumn( tr( "Chn" ) );
+ setColumnAlignment( 3, AlignCenter );
+ addColumn( tr( "W" ) );
+ setColumnAlignment( 4, AlignCenter );
+ addColumn( tr( "T" ) );
+ setColumnAlignment( 5, AlignCenter );
+ addColumn( tr( "Manufacturer" ) );
+ setColumnAlignment( 6, AlignCenter );
+ setRootIsDecorated( true );
+ setAllColumnsShowFocus( true );
};
MScanListView::~MScanListView()
{
};
+void MScanListView::setManufacturerDB( ManufacturerDB* manufacturerdb )
+{
+ _manufacturerdb = manufacturerdb;
+}
+
void MScanListView::addNewItem( QString type, QString essid, QString macaddr, bool wep, int channel, int signal )
{
// FIXME: scanlistitem needs a proper encapsulation and not such a damn dealing with text(...)
@@ -83,9 +110,12 @@ void MScanListView::addNewItem( QString type, QString essid, QString macaddr, bo
if ( item )
{
// we have already seen this item, it's a dupe
+ #ifdef DEBUG
qDebug( "%s is a dupe - ignoring...", (const char*) macaddr );
+ #endif
+ item->receivedBeacon();
return;
}
}
else
@@ -101,9 +131,11 @@ void MScanListView::addNewItem( QString type, QString essid, QString macaddr, bo
// no essid to reduce clutter, maybe later we have a nick or stationname to display!?
qDebug( "inserting new station %s", (const char*) macaddr );
- new MScanListItem( network, type, "", macaddr, wep, channel, signal );
+ MScanListItem* station = new MScanListItem( network, type, "", macaddr, wep, channel, signal );
+ if ( _manufacturerdb )
+ station->setManufacturer( _manufacturerdb->lookup( macaddr ) );
if ( type == "managed" )
{
s.sprintf( "(i) new AP in '%s' [%d]", (const char*) essid, channel );
diff --git a/noncore/net/wellenreiter/gui/scanlist.h b/noncore/net/wellenreiter/gui/scanlist.h
index 6fe6930..9a35a82 100644
--- a/noncore/net/wellenreiter/gui/scanlist.h
+++ b/noncore/net/wellenreiter/gui/scanlist.h
@@ -19,18 +19,25 @@
#include <qlistview.h>
class QString;
+class ManufacturerDB;
+
class MScanListView: public QListView
{
Q_OBJECT
public:
MScanListView( QWidget* parent = 0, const char* name = 0 );
virtual ~MScanListView();
+ void setManufacturerDB( ManufacturerDB* manufacturerdb );
+
public slots:
void addNewItem( QString type, QString essid, QString macaddr, bool wep, int channel, int signal );
+
+ private:
+ ManufacturerDB* _manufacturerdb;
};
#endif
diff --git a/noncore/net/wellenreiter/gui/scanlistitem.cpp b/noncore/net/wellenreiter/gui/scanlistitem.cpp
index f4b43a6..15aef0c 100644
--- a/noncore/net/wellenreiter/gui/scanlistitem.cpp
+++ b/noncore/net/wellenreiter/gui/scanlistitem.cpp
@@ -29,12 +29,15 @@ const int col_sig = 1;
const int col_ap = 2;
const int col_channel = 3;
const int col_wep = 4;
const int col_traffic = 5;
+const int col_manuf = 6;
MScanListItem::MScanListItem( QListView* parent, QString type, QString essid, QString macaddr,
bool wep, int channel, int signal )
- :QListViewItem( parent, essid, QString::null, macaddr, QString::null, QString::null )
+ :QListViewItem( parent, essid, QString::null, macaddr, QString::null, QString::null ),
+ _type( type ), _essid( essid ), _macaddr( macaddr ), _wep( wep ),
+ _channel( channel ), _signal( signal ), _beacons( 0 )
{
qDebug( "creating scanlist item" );
decorateItem( type, essid, macaddr, wep, channel, signal );
}
@@ -76,4 +79,18 @@ void MScanListItem::decorateItem( QString type, QString essid, QString macaddr,
this->type = type;
}
+void MScanListItem::setManufacturer( const QString& manufacturer )
+{
+ setText( col_manuf, manufacturer );
+}
+
+void MScanListItem::receivedBeacon()
+{
+ _beacons++;
+ #ifdef DEBUG
+ qDebug( "MScanListItem %s: received beacon #%d", (const char*) _macaddr, _beacons );
+ #endif
+ setText( col_sig, QString::number( _beacons ) );
+}
+
diff --git a/noncore/net/wellenreiter/gui/scanlistitem.h b/noncore/net/wellenreiter/gui/scanlistitem.h
index 47a5a4e..c3c6255 100644
--- a/noncore/net/wellenreiter/gui/scanlistitem.h
+++ b/noncore/net/wellenreiter/gui/scanlistitem.h
@@ -56,21 +56,23 @@ class MScanListItem: public QListViewItem
const QString& macaddr() { return _macaddr; };
bool wep() { return _wep; };
int channel() { return _channel; };
int signal() { return _signal; };
- int received() { return _received; };
+ int beacons() { return _beacons; };
void setSignal( int signal ) { /* TODO */ };
- void incReceived() { _received++; };
+ void receivedBeacon();
+
+ void setManufacturer( const QString& manufacturer );
private:
QString _type;
QString _essid;
QString _macaddr;
bool _wep;
int _channel;
int _signal;
- int _received;
+ int _beacons;
};
#endif
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp
index 9068e3a..b22c5cc 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.cpp
+++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp
@@ -23,8 +23,9 @@
// Qtopia
#ifdef QWS
+#include <qpe/qpeapplication.h>
#include <qpe/global.h>
#endif
// Opie
@@ -54,23 +55,24 @@ using namespace Opie;
#include "configwindow.h"
#include "manufacturers.h"
+#include <daemon/source/config.hh>
+#include <libwellenreiter/source/wl_types.hh>
#include <libwellenreiter/source/wl_sock.hh>
#include <libwellenreiter/source/wl_proto.hh>
-#include <daemon/source/config.hh>
Wellenreiter::Wellenreiter( QWidget* parent, const char* name, WFlags fl )
- : WellenreiterBase( parent, name, fl ), daemonRunning( false )
+ : WellenreiterBase( parent, name, fl ), daemonRunning( false ), manufacturerdb( 0 )
{
//
// construct manufacturer database
//
QString manufile;
#ifdef QWS
- manufile.sprintf( "%s/share/wellenreiter/manufacturers.dat", (const char*) qApp.qpeDir() );
+ manufile.sprintf( "%s/share/wellenreiter/manufacturers.dat", (const char*) QPEApplication::qpeDir() );
#else
manufile.sprintf( "/home/mickey/work/opie/share/wellenreiter/manufacturers.dat" );
#endif
manufacturerdb = new ManufacturerDB( manufile );
@@ -91,9 +93,10 @@ Wellenreiter::Wellenreiter( QWidget* parent, const char* name, WFlags fl )
//
// setup socket for daemon communication, register socket notifier
//
- daemon_fd = wl_setupsock( GUIADDR, GUIPORT );
+ // struct sockaddr_in sockaddr;
+ daemon_fd = wl_setupsock( GUIADDR, GUIPORT, sockaddr );
if ( daemon_fd == -1 )
{
logwindow->log( "(E) Couldn't get file descriptor for commsocket." );
}
@@ -110,8 +113,11 @@ Wellenreiter::Wellenreiter( QWidget* parent, const char* name, WFlags fl )
connect( button, SIGNAL( clicked() ), this, SLOT( buttonClicked() ) );
button->setEnabled( false );
netview->setColumnWidthMode( 1, QListView::Manual );
+
+ if ( manufacturerdb )
+ netview->setManufacturerDB( manufacturerdb );
}
Wellenreiter::~Wellenreiter()
@@ -126,19 +132,26 @@ void Wellenreiter::handleMessage()
// FIXME: receive message and handle it
qDebug( "received message from daemon." );
- char buffer[10000];
- memset( &buffer, 0, sizeof( buffer ) );
+ /*char buffer[10000];
+ memset( &buffer, 0, sizeof( buffer ) );*/
+
+ char buffer[WL_SOCKBUF];
// int result = #wl_recv( &daemon_fd, (char*) &buffer, sizeof(buffer) );
+ /*
+
struct sockaddr from;
socklen_t len;
int result = recvfrom( daemon_fd, &buffer, 8192, MSG_WAITALL, &from, &len );
-
qDebug( "received %d from recv [%d bytes]", result, len );
+
+ */
+
+ int result = wl_recv( &daemon_fd, sockaddr, (char*) &buffer, WL_SOCKBUF );
if ( result == -1 )
{
qDebug( "Warning: %s", strerror( errno ) );
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.h b/noncore/net/wellenreiter/gui/wellenreiter.h
index 9715983..0ddc72c 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.h
+++ b/noncore/net/wellenreiter/gui/wellenreiter.h
@@ -22,8 +22,24 @@
#include <opie/odevice.h>
using namespace Opie;
#endif
+// ugly... not here!
+
+#include <assert.h>
+#include <errno.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <daemon/source/config.hh>
+#include <libwellenreiter/source/wl_types.hh>
+#include <libwellenreiter/source/wl_sock.hh>
+#include <libwellenreiter/source/wl_proto.hh>
+
+
class QTimerEvent;
class QPixmap;
class ManufacturerDB;
@@ -50,10 +66,13 @@ private:
#endif
void handleMessage();
ManufacturerDB* manufacturerdb;
+ struct sockaddr_in sockaddr;
//void readConfig();
//void writeConfig();
};
+
+
#endif
diff --git a/noncore/net/wellenreiter/gui/wellenreiterbase.cpp b/noncore/net/wellenreiter/gui/wellenreiterbase.cpp
index d6b9891..a93c684 100644
--- a/noncore/net/wellenreiter/gui/wellenreiterbase.cpp
+++ b/noncore/net/wellenreiter/gui/wellenreiterbase.cpp
@@ -71,25 +71,9 @@ WellenreiterBase::WellenreiterBase( QWidget* parent, const char* name, WFlags f
apLayout->setMargin( 2 );
//--------- NETVIEW TAB --------------
- netview = new MScanListView( ap );
- netview->addColumn( tr( "SSID" ) );
- netview->setColumnAlignment( 0, AlignLeft || AlignVCenter );
- netview->addColumn( tr( "Sig" ) );
- netview->setColumnAlignment( 1, AlignCenter );
- netview->addColumn( tr( "AP" ) );
- netview->setColumnAlignment( 2, AlignCenter );
- netview->addColumn( tr( "Chn" ) );
- netview->setColumnAlignment( 3, AlignCenter );
- netview->addColumn( tr( "W" ) );
- netview->setColumnAlignment( 4, AlignCenter );
- netview->addColumn( tr( "T" ) );
- netview->setColumnAlignment( 5, AlignCenter );
-
- netview->setFrameShape( QListView::StyledPanel );
- netview->setFrameShadow( QListView::Sunken );
- netview->setRootIsDecorated( TRUE );
+ netview = new MScanListView( ap );
apLayout->addWidget( netview );
//--------- LOG TAB --------------
diff --git a/noncore/net/wellenreiter/libwellenreiter/libwellenreiter.pro b/noncore/net/wellenreiter/libwellenreiter/libwellenreiter.pro
index 9cf717e..8a6ed36 100644
--- a/noncore/net/wellenreiter/libwellenreiter/libwellenreiter.pro
+++ b/noncore/net/wellenreiter/libwellenreiter/libwellenreiter.pro
@@ -1,8 +1,8 @@
TEMPLATE = lib
CONFIG = warn_on debug
VERSION = 0.2
-HEADERS = source/cardmode.hh source/wl_log.hh source/wl_proto.hh source/sniff.hh source/wl_sock.hh
+HEADERS = source/cardmode.hh source/wl_log.hh source/wl_proto.hh source/sniff.hh source/wl_sock.hh source/wl_types.hh
SOURCES = source/cardmode.cc source/wl_log.cc source/wl_proto.cc source/sniff.cc source/wl_sock.cc
LIBS =
TMAKE_CFLAGS += -D__UNIX__