1 | Index: bncgetthread.cpp
|
---|
2 | ===================================================================
|
---|
3 | --- bncgetthread.cpp (revision 8910)
|
---|
4 | +++ bncgetthread.cpp (working copy)
|
---|
5 | @@ -722,6 +722,9 @@
|
---|
6 | _query->startRequest(_mountPoint, _manualNMEAString);
|
---|
7 | _lastManualNMEA = QDateTime::currentDateTime();
|
---|
8 | } else if (_serialNMEA == AUTO_NMEA) {
|
---|
9 | + // Reset here as GGA might fail at restart
|
---|
10 | + _ggatime.restart();
|
---|
11 | + _validgga = false;
|
---|
12 | if (_serialPort) {
|
---|
13 | int nb = _serialPort->bytesAvailable();
|
---|
14 | if (nb > 0) {
|
---|
15 | @@ -985,7 +988,18 @@
|
---|
16 | int i2 = data.indexOf("*", i1);
|
---|
17 | if (i2 != -1 && data.size() > i2 + 1) {
|
---|
18 | QByteArray gga = data.mid(i1, i2 - i1 + 3);
|
---|
19 | - _query->sendNMEA(gga);
|
---|
20 | + // 1 Min interval if valid GGA with lon/lat
|
---|
21 | + if (!_validgga || _ggatime.elapsed() > 1000 * 60* 1) {
|
---|
22 | + _ggatime.restart();
|
---|
23 | + // Simple lengthcheck for lon/lat
|
---|
24 | + if (std::string(gga.data()).size() > 49) {
|
---|
25 | + _validgga = true;
|
---|
26 | + _query->sendNMEA(gga);
|
---|
27 | + }
|
---|
28 | + else {
|
---|
29 | + _validgga = false;
|
---|
30 | + }
|
---|
31 | + }
|
---|
32 | }
|
---|
33 | }
|
---|
34 | }
|
---|
35 | Index: bncgetthread.h
|
---|
36 | ===================================================================
|
---|
37 | --- bncgetthread.h (revision 8910)
|
---|
38 | +++ bncgetthread.h (working copy)
|
---|
39 | @@ -143,6 +143,8 @@
|
---|
40 | QList<QTcpSocket*>* _nmeaSockets;
|
---|
41 | QMap<QByteArray, int> _nmeaPortsMap;
|
---|
42 | QTcpServer* _nmeaServer;
|
---|
43 | + QTime _ggatime;
|
---|
44 | + bool _validgga;
|
---|
45 | };
|
---|
46 |
|
---|
47 | #endif
|
---|