summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/gui/gps.cpp66
-rw-r--r--noncore/net/wellenreiter/gui/gps.h13
-rw-r--r--noncore/net/wellenreiter/gui/mainwindow.cpp8
-rw-r--r--noncore/net/wellenreiter/gui/scanlist.cpp9
-rw-r--r--noncore/net/wellenreiter/gui/scanlist.h2
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.cpp2
6 files changed, 82 insertions, 18 deletions
diff --git a/noncore/net/wellenreiter/gui/gps.cpp b/noncore/net/wellenreiter/gui/gps.cpp
index 288afee..31f95ce 100644
--- a/noncore/net/wellenreiter/gui/gps.cpp
+++ b/noncore/net/wellenreiter/gui/gps.cpp
@@ -9,20 +9,24 @@
** 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.
**
**********************************************************************/
#include "gps.h"
-#include <unistd.h>
+/* QT */
#include <qtextstream.h>
+/* STD */
+#include <stdlib.h>
+#include <unistd.h>
+
GPS::GPS( QObject* parent, const char * name )
:QObject( parent, name )
{
qDebug( "GPS::GPS()" );
_socket = new QSocket( this, "gpsd commsock" );
}
@@ -59,11 +63,69 @@ GpsLocation GPS::position() const
stream.skipWhiteSpace();
float lon = -111.111;
stream >> lon;
stream.readRawBytes( &buf[0], 200 ); // read and discard the stuff until EOF
return GpsLocation( lat, lon );
}
}
- return GpsLocation( -1.0, -1.0 );
+ return GpsLocation( -111.111, -111.111 );
}
+
+QString GpsLocation::dmsPosition() const
+{
+ if ( _latitude == -111.111 || _longitude == -111.11 )
+ return "N/A";
+ if ( _latitude == 0.0 && _longitude == 0.0 )
+ return "NULL";
+
+ /* compute latitude */
+
+ QString dms = "N";
+ if ( _latitude >= 0 ) dms.append( "+" );
+
+ int trunc = int( _latitude );
+ float rest = _latitude - trunc;
+
+ float minf = rest * 60;
+ int minutes = int( minf );
+
+ rest = minf - minutes;
+ int 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( "'' " );
+
+ /* compute longitude */
+
+ dms.append( " | W" );
+ if ( _longitude > 0 ) dms.append( "+" );
+
+ trunc = int( _longitude );
+ rest = _longitude - trunc;
+
+ 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/gps.h b/noncore/net/wellenreiter/gui/gps.h
index 8143fe4..cfe1cdb 100644
--- a/noncore/net/wellenreiter/gui/gps.h
+++ b/noncore/net/wellenreiter/gui/gps.h
@@ -14,22 +14,27 @@
**********************************************************************/
#ifndef GPS_H
#define GPS_H
#include <qobject.h>
#include <qsocket.h>
-struct GpsLocation
+class GpsLocation
{
- GpsLocation( const float& lat, const float& lon ) : latitude(lat), longitude(lon) {};
+ public:
+ GpsLocation( const float& lat, const float& lon ) : _latitude(lat), _longitude(lon) {};
~GpsLocation() {};
- float latitude;
- float longitude;
+ float latitude() const { return _latitude; };
+ float longitude() const { return _longitude; };
+ QString dmsPosition() const;
+ private:
+ float _latitude;
+ float _longitude;
};
class GPS : public QObject
{
Q_OBJECT
public:
diff --git a/noncore/net/wellenreiter/gui/mainwindow.cpp b/noncore/net/wellenreiter/gui/mainwindow.cpp
index ca9851c..d4e3279 100644
--- a/noncore/net/wellenreiter/gui/mainwindow.cpp
+++ b/noncore/net/wellenreiter/gui/mainwindow.cpp
@@ -219,21 +219,21 @@ WellenreiterMainWindow::~WellenreiterMainWindow()
qDebug( "Wellenreiter:: bye." );
};
void WellenreiterMainWindow::demoAddStations()
{
//mw = 0; // test SIGSGV handling
- mw->netView()->addNewItem( "managed", "Vanille", OMacAddress::fromString("00:00:20:EF:A6:43"), true, 6, 80, GpsLocation( 10.10, 20.20 ) );
+ 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:A0:F8:E7:16:22"), false, 3, 10, GpsLocation( 5.5, 2.3 ) );
- mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:AA:01:E7:56:62"), false, 3, 15, GpsLocation( 2.3, 5.5 ) );
- mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:B0:8E:E7:56:E2"), false, 3, 20, GpsLocation( -10.0, -20.5 ) );
+ 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 ) );
}
QString WellenreiterMainWindow::getFileName( bool save )
{
QMap<QString, QStringList> map;
map.insert( tr("All"), QStringList() );
QStringList text;
diff --git a/noncore/net/wellenreiter/gui/scanlist.cpp b/noncore/net/wellenreiter/gui/scanlist.cpp
index 1cca507..d89c71f 100644
--- a/noncore/net/wellenreiter/gui/scanlist.cpp
+++ b/noncore/net/wellenreiter/gui/scanlist.cpp
@@ -184,17 +184,17 @@ void MScanListView::addNewItem( const QString& type,
// no essid to reduce clutter, maybe later we have a nick or stationname to display!?
#ifdef DEBUG
qDebug( "inserting new station %s", (const char*) macaddr );
#endif
MScanListItem* station = new MScanListItem( network, type, "", macaddr, wep, channel, signal );
station->setManufacturer( mac.manufacturer() );
- station->setLocation( loc.latitude, loc.longitude );
+ station->setLocation( loc.dmsPosition() );
if ( type == "managed" )
{
s.sprintf( "(i) New Access Point in '%s' [%d]", (const char*) essid, channel );
}
else
{
s.sprintf( "(i) New AdHoc station in '%s' [%d]", (const char*) essid, channel );
@@ -528,22 +528,19 @@ void MScanListItem::decorateItem( QString type, QString essid, QString macaddr,
void MScanListItem::setManufacturer( const QString& manufacturer )
{
setText( col_manuf, manufacturer );
}
-void MScanListItem::setLocation( const float& latitude, const float& longitude )
+void MScanListItem::setLocation( const QString& location )
{
- if ( latitude == 0.0 || longitude == 0.0 )
- setText( col_location, "N/A" );
- else
- setText( col_location, QString().sprintf( "%.2f / %.2f", latitude, longitude ) );
+ setText( col_location, location );
}
void MScanListItem::playSound( const QString& sound ) const
{
#ifdef QWS
if ( sound == "Ignore" ) return;
else if ( sound == "Touch" ) ODevice::inst()->touchSound();
diff --git a/noncore/net/wellenreiter/gui/scanlist.h b/noncore/net/wellenreiter/gui/scanlist.h
index a9b74f1..6cd8fc0 100644
--- a/noncore/net/wellenreiter/gui/scanlist.h
+++ b/noncore/net/wellenreiter/gui/scanlist.h
@@ -98,17 +98,17 @@ class MScanListItem: public OListViewItem
int channel() { return _channel; };
int signal() { return _signal; };
int beacons() { return _beacons; };
void setSignal( int signal ) { /* TODO */ };
void receivedBeacon();
void setManufacturer( const QString& manufacturer );
- void setLocation( const float& latitude, const float& longitude );
+ void setLocation( const QString& location );
virtual OListViewItem* childFactory();
virtual void serializeTo( QDataStream& s ) const;
virtual void serializeFrom( QDataStream& s );
protected:
void playSound( const QString& ) const;
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp
index 9255a6d..5575d6e 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.cpp
+++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp
@@ -184,17 +184,17 @@ void Wellenreiter::handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon )
OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) );
GpsLocation loc( 0, 0 );
if ( configwindow->enableGPS->isChecked() )
{
// TODO: add check if GPS is working!?
qDebug( "Wellenreiter::gathering GPS data..." );
loc = gps->position();
- qDebug( "Wellenreiter::GPS data received is ( %f , %f )", loc.latitude, loc.longitude );
+ qDebug( "Wellenreiter::GPS data received is ( %f , %f ) - dms string = '%s'", loc.latitude(), loc.longitude(), loc.dmsPosition().latin1() );
}
netView()->addNewItem( type, essid, header->macAddress2(), beacon->canPrivacy(), channel, 0, loc );
// update graph window
if ( ds )
{
OPrismHeaderPacket* prism = static_cast<OPrismHeaderPacket*>( p->child( "Prism" ) );