summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/gui/protolistview.cpp12
-rw-r--r--noncore/net/wellenreiter/gui/protolistview.h2
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.cpp75
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.h3
4 files changed, 77 insertions, 15 deletions
diff --git a/noncore/net/wellenreiter/gui/protolistview.cpp b/noncore/net/wellenreiter/gui/protolistview.cpp
index 05ff5e7..d4b0dfe 100644
--- a/noncore/net/wellenreiter/gui/protolistview.cpp
+++ b/noncore/net/wellenreiter/gui/protolistview.cpp
@@ -98,14 +98,20 @@ void ProtocolListView::addProtocol( const QString& name )
bool ProtocolListView::isProtocolChecked( const QString& name )
{
QCheckBox* box = (QCheckBox*) child( (const char*) name );
return ( box && box->isOn() );
}
-QString ProtocolListView::protocolAction( const QString& name ) const
+QString ProtocolListView::protocolAction( const QString& name )
{
- //FIXME
+ //QObject * child ( const char * objName, const char * inheritsClass = 0,
+ // bool recursiveSearch = TRUE )
+
+ QComboBox* combo = (QComboBox*) child( (const char*) name, "QComboBox" );
+ if ( combo )
+ return combo->currentText();
+ else
+ return "<unknown>";
}
-
diff --git a/noncore/net/wellenreiter/gui/protolistview.h b/noncore/net/wellenreiter/gui/protolistview.h
index 723e8cd..166b648 100644
--- a/noncore/net/wellenreiter/gui/protolistview.h
+++ b/noncore/net/wellenreiter/gui/protolistview.h
@@ -27,17 +27,17 @@ class QVBox;
class ProtocolListView : public QScrollView
{
public:
ProtocolListView( QWidget* parent = 0, const char* name = 0, WFlags f = 0 );
virtual ~ProtocolListView();
bool isProtocolChecked( const QString& name );
- QString protocolAction( const QString& name ) const;
+ QString protocolAction( const QString& name );
protected:
virtual void addProtocol( const QString& name );
private:
QVBox* vbox;
bool actions;
};
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp
index 2f3d093..edf7dcf 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.cpp
+++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp
@@ -8,16 +8,28 @@
** 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.
**
***********************************************************************/
+// Local
+
+#include "wellenreiter.h"
+#include "scanlist.h"
+#include "logwindow.h"
+#include "hexwindow.h"
+#include "configwindow.h"
+#include "statwindow.h"
+#include "graphwindow.h"
+#include "manufacturers.h"
+#include "protolistview.h"
+
// Opie
#ifdef QWS
#include <opie/odevice.h>
using namespace Opie;
#endif
#ifdef QWS
@@ -31,41 +43,31 @@ using namespace Opie;
// Qt
#include <qcheckbox.h>
#include <qcombobox.h>
#include <qdatetime.h>
#include <qpushbutton.h>
#include <qlineedit.h>
#include <qmessagebox.h>
+#include <qobjectlist.h>
#include <qregexp.h>
#include <qspinbox.h>
#include <qtoolbutton.h>
#include <qmainwindow.h>
// Standard
#include <assert.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <stdlib.h>
-// Local
-
-#include "wellenreiter.h"
-#include "scanlist.h"
-#include "logwindow.h"
-#include "hexwindow.h"
-#include "configwindow.h"
-#include "statwindow.h"
-#include "graphwindow.h"
-#include "manufacturers.h"
-
Wellenreiter::Wellenreiter( QWidget* parent )
: WellenreiterBase( parent, 0, 0 ),
sniffing( false ), iface( 0 ), manufacturerdb( 0 ), configwindow( 0 )
{
//
// construct manufacturer database
//
@@ -132,16 +134,40 @@ void Wellenreiter::channelHopped(int c)
}
title.append( "]" );
//title.append( QString().sprintf( " %02d", c ) );
assert( parent() );
( (QMainWindow*) parent() )->setCaption( title );
}
+void Wellenreiter::handleNotification( OPacket* p )
+{
+ QObjectList* l = p->queryList();
+ QObjectListIt it( *l );
+ QObject* o;
+
+ while ( (o = it.current()) != 0 )
+ {
+ QString name = it.current()->name();
+ if ( configwindow->parsePackets->isProtocolChecked( name ) )
+ {
+ QString action = configwindow->parsePackets->protocolAction( name );
+ qDebug( "action for '%s' seems to be '%s'", (const char*) name, (const char*) action );
+ doAction( action, name, p );
+ }
+ else
+ {
+ qDebug( "protocol '%s' not checked.", (const char*) name );
+ }
+ ++it;
+ }
+}
+
+
void Wellenreiter::handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon )
{
QString type;
if ( beacon->canIBSS() )
{
type = "adhoc";
}
else if ( beacon->canESS() )
@@ -240,20 +266,28 @@ void Wellenreiter::handleData( OPacket* p, OWaveLanDataPacket* data )
OIPPacket* ip = (OIPPacket*) p->child( "IP" );
if ( ip )
{
qDebug( "Received IP packet." );
}
}
+QObject* childIfToParse( OPacket* p, const QString& protocol )
+{
+ //FIXME: Implement
+}
+
+
void Wellenreiter::receivePacket( OPacket* p )
{
hexWindow()->log( p->dump( 8 ) );
+ handleNotification( p );
+
// check if we received a beacon frame
OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( p->child( "802.11 Management" ) );
if ( beacon && beacon->managementType() == "Beacon" )
{
handleBeacon( p, beacon );
return;
}
@@ -426,8 +460,27 @@ void Wellenreiter::timerEvent( QTimerEvent* )
}
else
{
receivePacket( p );
delete p;
}
}
+
+void Wellenreiter::doAction( const QString& action, const QString& protocol, OPacket* p )
+{
+ if ( action == "TouchSound" )
+ ODevice::inst()->touchSound();
+ else if ( action == "AlarmSound" )
+ ODevice::inst()->alarmSound();
+ else if ( action == "KeySound" )
+ ODevice::inst()->keySound();
+ else if ( action == "LedOn" )
+ ODevice::inst()->setLedState( Led_Mail, Led_On );
+ else if ( action == "LedOff" )
+ ODevice::inst()->setLedState( Led_Mail, Led_Off );
+ else if ( action == "LogMessage" )
+ logwindow->log( QString().sprintf( "Got packet with protocol '%s'", (const char*) protocol ) );
+ else if ( action == "MessageBox" )
+ QMessageBox::information ( this, "Notification!",
+ QString().sprintf( "Got packet with protocol '%s'", (const char*) protocol ) );
+}
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.h b/noncore/net/wellenreiter/gui/wellenreiter.h
index ea8a692..e227a24 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.h
+++ b/noncore/net/wellenreiter/gui/wellenreiter.h
@@ -61,16 +61,19 @@ class Wellenreiter : public WellenreiterBase {
signals:
void startedSniffing();
void stoppedSniffing();
private:
void handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon );
void handleData( OPacket* p, OWaveLanDataPacket* data );
+ void handleNotification( OPacket* p );
+ void doAction( const QString& action, const QString& protocol, OPacket* p );
+ QObject* childIfToParse( OPacket* p, const QString& protocol );
private:
#ifdef QWS
OSystem _system; // Opie Operating System identifier
#endif
OWirelessNetworkInterface* iface;
OPacketCapturer* pcap;