Ticket #122: svndiff.txt

File svndiff.txt, 1.6 KB (added by mikko.seppala@…, 4 years ago)

Quick hack for reducing GGA rate with rudamentary check for valid lon/lat in the said GGA sentence

Line 
1Index: 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 }
35Index: 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