summaryrefslogtreecommitdiff
path: root/noncore/net/wellenreiter/gui/gps.cpp
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 /noncore/net/wellenreiter/gui/gps.cpp
parent3d50523ac7782e08795fabb071c8678d79a71b13 (diff)
downloadopie-4f5703de93628ec6920957ef18d6cd5c87a69ba1.zip
opie-4f5703de93628ec6920957ef18d6cd5c87a69ba1.tar.gz
opie-4f5703de93628ec6920957ef18d6cd5c87a69ba1.tar.bz2
*** empty log message ***
Diffstat (limited to 'noncore/net/wellenreiter/gui/gps.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/gui/gps.cpp34
1 files changed, 15 insertions, 19 deletions
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
@@ -47,2 +47,4 @@ GpsLocation GPS::position() const
char buf[256];
+ double lat = -111.0;
+ double lon = -111.0;
@@ -55,15 +57,15 @@ GpsLocation GPS::position() const
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
-
- return GpsLocation( lat, lon );
+ {
+ 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 );
+ }
}
@@ -125,7 +127 @@ QString GpsLocation::dmsPosition() const
}
-
-
-
-
-
-