summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2004-02-15 15:28:27 (UTC)
committer mickeyl <mickeyl>2004-02-15 15:28:27 (UTC)
commit4f5703de93628ec6920957ef18d6cd5c87a69ba1 (patch) (side-by-side diff)
tree674e0d5eeb30ccf52dd5f0491522e651c2383116
parent3d50523ac7782e08795fabb071c8678d79a71b13 (diff)
downloadopie-4f5703de93628ec6920957ef18d6cd5c87a69ba1.zip
opie-4f5703de93628ec6920957ef18d6cd5c87a69ba1.tar.gz
opie-4f5703de93628ec6920957ef18d6cd5c87a69ba1.tar.bz2
*** empty log message ***
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/wellenreiter/TODO2
-rw-r--r--noncore/net/wellenreiter/gui/gps.cpp28
-rw-r--r--noncore/net/wellenreiter/gui/mainwindow.cpp15
-rw-r--r--noncore/net/wellenreiter/gui/mainwindow.h1
4 files changed, 29 insertions, 17 deletions
diff --git a/noncore/net/wellenreiter/TODO b/noncore/net/wellenreiter/TODO
index fd70fc7..b6ec617 100644
--- a/noncore/net/wellenreiter/TODO
+++ b/noncore/net/wellenreiter/TODO
@@ -17,32 +17,34 @@ ENGINE
- infrared
- bluetooth
- usb?
- define packet structure in a metalanguage and generate
the actual parsing code (hmmm)
- pester the ethereal folks to settle for an application independant
packet dissection framework... (unlikely)
- adaptive hopping scheme !
- gather interface capabilities
- enable sniffing in wired networks
+- fix autodetection (interface name)
+
---------
UI
---------
- display interface capabilities (or rewrite networksettings?)
- distinguish wireless bridges (WDS traffic)
- expand/collapse all
- add configuration for scrollback buffer in hex window and log window
- revamp hex window, make it more sophisticated than just a QMultiLineEdit
- tree view
- beep over headphone / customizable
diff --git a/noncore/net/wellenreiter/gui/gps.cpp b/noncore/net/wellenreiter/gui/gps.cpp
index b814427..5b1b4a4 100644
--- a/noncore/net/wellenreiter/gui/gps.cpp
+++ b/noncore/net/wellenreiter/gui/gps.cpp
@@ -32,55 +32,57 @@ GPS::GPS( QObject* parent, const char * name )
GPS::~GPS()
{
qDebug( "GPS::~GPS()" );
}
bool GPS::open( const QString& host, int port )
{
_socket->connectToHost( host, port );
}
GpsLocation GPS::position() const
{
char buf[256];
+ double lat = -111.0;
+ double lon = -111.0;
int result = _socket->writeBlock( "p\r\n", 3 );
_socket->flush();
if ( result )
{
int numAvail = _socket->bytesAvailable();
qDebug( "GPS write succeeded, %d bytes available for reading...", numAvail );
if ( numAvail )
{
- QTextStream stream( _socket );
-
- QString str;
- stream.readRawBytes( &buf[0], 7 );
- float lat = -111;
- stream >> lat;
- stream.skipWhiteSpace();
- float lon = -111;
- stream >> lon;
- stream.readRawBytes( &buf[0], 200 ); // read and discard the stuff until EOF
+ int numRead = _socket->readBlock( &buf[0], sizeof buf );
+ int numScan = sscanf( &buf[0], "GPSD,P=%lg %lg", &lat, &lon);
+ if ( numRead < 7 || numScan != 2 )
+ {
+ qDebug( "GPS read %d bytes succeeded, invalid response: '%s'", numRead, &buf[0] );
+ return GpsLocation( -111, -111 );
+ }
+ else
+ {
return GpsLocation( lat, lon );
}
}
+ }
return GpsLocation( -111, -111 );
}
QString GpsLocation::dmsPosition() const
{
if ( _latitude == -111 || _longitude == -111 )
return "N/A";
if ( _latitude == 0.0 && _longitude == 0.0 )
return "NULL";
/* compute latitude */
QString dms = "N";
if ( _latitude >= 0 ) dms.append( "+" );
@@ -110,22 +112,16 @@ QString GpsLocation::dmsPosition() const
minf = rest * 60;
minutes = int( minf );
rest = minf - minutes;
seconds = int( rest * 60 );
dms.append( QString::number( trunc ) );
dms.append( "° " );
dms.append( QString::number( ::abs( minutes ) ) );
dms.append( "' " );
dms.append( QString::number( ::abs( seconds ) ) );
dms.append( "'' " );
return dms;
}
-
-
-
-
-
-
diff --git a/noncore/net/wellenreiter/gui/mainwindow.cpp b/noncore/net/wellenreiter/gui/mainwindow.cpp
index 05a8913..b462afd 100644
--- a/noncore/net/wellenreiter/gui/mainwindow.cpp
+++ b/noncore/net/wellenreiter/gui/mainwindow.cpp
@@ -21,32 +21,33 @@
#include "wellenreiter.h"
#include "scanlist.h"
#include <qcombobox.h>
#include <qdatastream.h>
#include <qfile.h>
#include <qfileinfo.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qiconset.h>
#include <qmenubar.h>
#include <qmessagebox.h>
#include <qpopupmenu.h>
#include <qpushbutton.h>
#include <qstatusbar.h>
+#include <qspinbox.h>
#include <qtextstream.h>
#include <qtoolbutton.h>
#ifdef QWS
#include <qpe/resource.h>
#include <opie2/ofiledialog.h>
using namespace Opie;
#else
#include "resource.h"
#include <qapplication.h>
#include <qfiledialog.h>
#endif
WellenreiterMainWindow::WellenreiterMainWindow( QWidget * parent, const char * name, WFlags f )
:QMainWindow( parent, name, f )
{
@@ -120,32 +121,33 @@ WellenreiterMainWindow::WellenreiterMainWindow( QWidget * parent, const char * n
file->insertSeparator();
file->insertItem( tr( "&Exit" ), qApp, SLOT( quit() ) );
QPopupMenu* view = new QPopupMenu( mb );
view->insertItem( tr( "&Configure..." ) );
QPopupMenu* sniffer = new QPopupMenu( mb );
sniffer->insertItem( tr( "&Configure..." ), this, SLOT( showConfigure() ) );
sniffer->insertSeparator();
startID = sniffer->insertItem( tr( "&Start" ), mw, SLOT( startClicked() ) );
sniffer->setItemEnabled( startID, false );
stopID = sniffer->insertItem( tr( "Sto&p" ), mw, SLOT( stopClicked() ) );
sniffer->setItemEnabled( stopID, false );
QPopupMenu* demo = new QPopupMenu( mb );
demo->insertItem( tr( "&Add something" ), this, SLOT( demoAddStations() ) );
+ demo->insertItem( tr( "&Read from GPSd" ), this, SLOT( demoReadFromGps() ) );
id = mb->insertItem( tr( "&File" ), file );
//id = mb->insertItem( tr( "&View" ), view );
//mb->setItemEnabled( id, false );
id = mb->insertItem( tr( "&Sniffer" ), sniffer );
id = mb->insertItem( tr( "&Demo" ), demo );
mb->setItemEnabled( id, true );
mb->setItemEnabled( uploadID, false );
#ifdef QWS
mb->insertItem( startButton );
mb->insertItem( stopButton );
mb->insertItem( uploadButton );
mb->insertItem( d );
#else // Qt3 changed the insertion order. It's now totally random :(
@@ -210,42 +212,53 @@ void WellenreiterMainWindow::changedSniffingState()
if ( !mw->sniffing )
{
menuBar()->setItemEnabled( uploadID, true );
uploadButton->setEnabled( true );
}
}
WellenreiterMainWindow::~WellenreiterMainWindow()
{
qDebug( "Wellenreiter:: bye." );
};
void WellenreiterMainWindow::demoAddStations()
{
- //mw = 0; // test SIGSGV handling
+ //mw = 0; // test SIGSEGV handling
mw->netView()->addNewItem( "managed", "Vanille", OMacAddress::fromString("00:00:20:EF:A6:43"), true, 6, 80, GpsLocation( 39.8794, -94.0936) );
mw->netView()->addNewItem( "managed", "Vanille", OMacAddress::fromString("00:30:6D:EF:A6:23"), true, 11, 10, GpsLocation( 0.0, 0.0 ) );
mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:03:F8:E7:16:22"), false, 3, 10, GpsLocation( 5.5, 2.3 ) );
mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:04:01:E7:56:62"), false, 3, 15, GpsLocation( 2.3, 5.5 ) );
mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:05:8E:E7:56:E2"), false, 3, 20, GpsLocation( -10.0, -20.5 ) );
}
+void WellenreiterMainWindow::demoReadFromGps()
+{
+ WellenreiterConfigWindow* configwindow = WellenreiterConfigWindow::instance();
+ GPS* gps = new GPS( this );
+ gps->open( configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() );
+ GpsLocation loc = gps->position();
+
+ QMessageBox::information( this, "Wellenreiter/Opie", tr( "GPS said:\n$1" ).arg( loc.dmsPosition() ) );
+}
+
+
QString WellenreiterMainWindow::getFileName( bool save )
{
QMap<QString, QStringList> map;
map.insert( tr("All"), QStringList() );
QStringList text;
text << "text/*";
map.insert( tr("Text"), text );
text << "*";
map.insert( tr("All"), text );
QString str;
if ( save )
{
#ifdef QWS
str = OFileDialog::getSaveFileName( 2, "/", QString::null, map );
#else
diff --git a/noncore/net/wellenreiter/gui/mainwindow.h b/noncore/net/wellenreiter/gui/mainwindow.h
index 8d4e768..a5cb7a5 100644
--- a/noncore/net/wellenreiter/gui/mainwindow.h
+++ b/noncore/net/wellenreiter/gui/mainwindow.h
@@ -37,26 +37,27 @@ class WellenreiterMainWindow: public QMainWindow
WellenreiterConfigWindow* cw;
QToolButton* startButton;
QToolButton* stopButton;
QToolButton* uploadButton;
int startID;
int stopID;
int uploadID;
protected:
virtual void closeEvent( QCloseEvent* );
void updateToolButtonState();
public slots:
void showConfigure();
void demoAddStations();
+ void demoReadFromGps();
void fileSaveLog();
void fileSaveHex();
void fileSaveSession();
void fileLoadSession();
void fileNew();
void uploadSession();
void changedSniffingState();
};
#endif