Skip to content

Commit 8ab6ecb

Browse files
committed
GPS - Update PBs
1 parent 43abe81 commit 8ab6ecb

File tree

3 files changed

+40
-69
lines changed

3 files changed

+40
-69
lines changed

src/components/gps/controller.cpp

Lines changed: 6 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -189,58 +189,32 @@ void GPSController::update() {
189189
drv->SetPrvKat(millis());
190190
} */
191191

192-
// TODO: Did the polling periods get set? Let's print and check them
193-
WS_DEBUG_PRINT("[gps] Poll period: ");
194-
WS_DEBUG_PRINT(drv->GetPollPeriod());
195-
WS_DEBUG_PRINT(", Previous poll period: ");
196-
WS_DEBUG_PRINTLN(drv->GetPollPeriodPrv());
197-
198192
// Did read period elapse?
199193
ulong cur_time = millis();
200194
if (cur_time - drv->GetPollPeriodPrv() < drv->GetPollPeriod())
201195
continue; // Not yet elapsed, skip this driver
202196

203197
// Discard the GPS buffer before we attempt to do a fresh read
204-
WS_DEBUG_PRINTLN("[gps] Discarding GPS buffer...");
205-
WS_DEBUG_PRINT("iface type: ");
206-
WS_DEBUG_PRINTLN(drv->GetIfaceType());
207-
208198
if (drv->GetIfaceType() == GPS_IFACE_UART_HW) {
209199
// TODO: Refactor this into a function within hardware.cpp
210200
size_t bytes_avail = ada_gps->available();
211201
if (bytes_avail > 0) {
212202
for (size_t i = 0; i < bytes_avail; i++) {
213-
WS_DEBUG_PRINT("[gps] Reading byte: ");
214-
WS_DEBUG_PRINT(i);
215203
ada_gps->read();
216-
WS_DEBUG_PRINTLN("...OK!");
217204
}
218205
}
219206
} else if (drv->GetIfaceType() == GPS_IFACE_I2C) {
220-
// For I2C, request and discard any stale data from the device
221-
WS_DEBUG_PRINTLN("[gps] Discarding stale I2C data...");
222207
drv->I2cReadDiscard();
223208
}
224209

225-
// if (drv->GetIfaceType() == GPS_IFACE_UART_HW) {
226-
227210
// Unset the RX flag
228-
WS_DEBUG_PRINT("[gps] Unsetting RX flag...");
229211
if (ada_gps->newNMEAreceived()) {
230212
ada_gps->lastNMEA();
231213
}
232-
WS_DEBUG_PRINT("ok");
233214

234-
// Let's attempt to get a sentence from the GPS module
235215
// Read from the GPS module for update_rate milliseconds
236-
WS_DEBUG_PRINT("[gps] GetNmeaUpdateRate...");
237216
ulong update_rate = 1000 / drv->GetNmeaUpdateRate();
238217
ulong start_time = millis();
239-
WS_DEBUG_PRINT("ok");
240-
241-
WS_DEBUG_PRINT("[gps] Reading GPS data for ");
242-
WS_DEBUG_PRINT(update_rate);
243-
WS_DEBUG_PRINTLN(" ms...");
244218
while (millis() - start_time < update_rate) {
245219
char c = ada_gps->read();
246220
// Check if we have a new NMEA sentence
@@ -252,30 +226,31 @@ void GPSController::update() {
252226
}
253227

254228
// Parse each NMEA sentence in the buffer
229+
_gps_model->CreateGPSEvent();
255230
char nmea_sentence[MAX_LEN_NMEA_SENTENCE];
256231
bool has_gps_event = false;
257232
while (NmeaBufPop(nmea_sentence) != -1) {
258233
// Parse the NMEA sentence
259234
WS_DEBUG_PRINT("[gps] Parsing NMEA sentence: ");
260235
WS_DEBUG_PRINTLN(nmea_sentence);
261236
if (!ada_gps->parse(nmea_sentence)) {
237+
WS_DEBUG_PRINTLN("[gps] Failed to parse NMEA sentence!"); // TODO: Remove in Prod!
262238
continue; // Skip parsing this sentence if parsing failed
263-
} else {
264-
_gps_model->CreateGPSEvent();
265-
has_gps_event = true;
266239
}
267-
268-
// Build the GPSEvent message from the sentence
240+
has_gps_event = true;
241+
// Build a GPSEvent message from the sentence
269242
wippersnapper_gps_GPSDateTime datetime = _gps_model->CreateGpsDatetime(
270243
ada_gps->hour, ada_gps->minute, ada_gps->seconds,
271244
ada_gps->milliseconds, ada_gps->day, ada_gps->month, ada_gps->year);
272245
if (strncmp(nmea_sentence, "$GPRMC", 6) == 0 ||
273246
strncmp(nmea_sentence, "$GNRMC", 6) == 0) {
247+
WS_DEBUG_PRINTLN("[gps] Processing RMC sentence"); // TODO: Remove in Prod!
274248
_gps_model->AddGpsEventRMC(
275249
datetime, ada_gps->fix, ada_gps->latitude, &ada_gps->lat,
276250
ada_gps->longitude, &ada_gps->lon, ada_gps->speed, ada_gps->angle);
277251
} else if (strncmp(nmea_sentence, "$GPGGA", 6) == 0 ||
278252
strncmp(nmea_sentence, "$GNGGA", 6) == 0) {
253+
WS_DEBUG_PRINTLN("[gps] Processing GGA sentence"); // TODO: Remove in Prod!
279254
_gps_model->AddGpsEventGGA(
280255
datetime, ada_gps->fix, ada_gps->latitude, &ada_gps->lat,
281256
ada_gps->longitude, &ada_gps->lon, ada_gps->satellites,

src/components/gps/model.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -119,14 +119,12 @@ bool GPSModel::AddGpsEventRMC(wippersnapper_gps_GPSDateTime datetime,
119119
float lon, char *lon_dir, float speed,
120120
float angle) {
121121
// Check if we've reached the maximum number of RMC responses
122-
if (_msg_gps_event.rmc_responses_count >= MAX_COUNT_RMC_GGA) {
122+
if (_msg_gps_event.rmc_responses_count >= MAX_COUNT_RMC_GGA)
123123
return false;
124-
}
125124

126125
// Validate pointers have been provided correctly
127-
if (!lat_dir || !lon_dir) {
126+
if (!lat_dir || !lon_dir)
128127
return false;
129-
}
130128

131129
wippersnapper_gps_GPSRMCResponse rmc_response;
132130
rmc_response = wippersnapper_gps_GPSRMCResponse_init_zero;
@@ -166,14 +164,12 @@ bool GPSModel::AddGpsEventGGA(wippersnapper_gps_GPSDateTime datetime,
166164
float hdop, float alt, float geoid_height) {
167165

168166
// Check if we've reached the maximum number of RMC responses
169-
if (_msg_gps_event.gga_responses_count >= MAX_COUNT_RMC_GGA) {
167+
if (_msg_gps_event.gga_responses_count >= MAX_COUNT_RMC_GGA)
170168
return false;
171-
}
172169

173170
// Validate pointers have been provided correctly
174-
if (!lat_dir || !lon_dir) {
171+
if (!lat_dir || !lon_dir)
175172
return false;
176-
}
177173

178174
wippersnapper_gps_GPGGAResponse gga_response;
179175
gga_response = wippersnapper_gps_GPGGAResponse_init_zero;

src/protos/gps.pb.h

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -97,22 +97,22 @@ extern "C" {
9797
#define wippersnapper_gps_GPSDateTime_year_tag 7
9898
#define wippersnapper_gps_GPSRMCResponse_datetime_tag 1
9999
#define wippersnapper_gps_GPSRMCResponse_fix_status_tag 2
100-
#define wippersnapper_gps_GPSRMCResponse_lat_tag 4
101-
#define wippersnapper_gps_GPSRMCResponse_lat_dir_tag 5
102-
#define wippersnapper_gps_GPSRMCResponse_lon_tag 6
103-
#define wippersnapper_gps_GPSRMCResponse_lon_dir_tag 7
104-
#define wippersnapper_gps_GPSRMCResponse_speed_tag 8
105-
#define wippersnapper_gps_GPSRMCResponse_angle_tag 9
100+
#define wippersnapper_gps_GPSRMCResponse_lat_tag 3
101+
#define wippersnapper_gps_GPSRMCResponse_lat_dir_tag 4
102+
#define wippersnapper_gps_GPSRMCResponse_lon_tag 5
103+
#define wippersnapper_gps_GPSRMCResponse_lon_dir_tag 6
104+
#define wippersnapper_gps_GPSRMCResponse_speed_tag 7
105+
#define wippersnapper_gps_GPSRMCResponse_angle_tag 8
106106
#define wippersnapper_gps_GPGGAResponse_datetime_tag 1
107-
#define wippersnapper_gps_GPGGAResponse_lat_tag 4
108-
#define wippersnapper_gps_GPGGAResponse_lat_dir_tag 5
109-
#define wippersnapper_gps_GPGGAResponse_lon_tag 6
110-
#define wippersnapper_gps_GPGGAResponse_lon_dir_tag 7
111-
#define wippersnapper_gps_GPGGAResponse_fix_quality_tag 8
112-
#define wippersnapper_gps_GPGGAResponse_num_satellites_tag 9
113-
#define wippersnapper_gps_GPGGAResponse_hdop_tag 10
114-
#define wippersnapper_gps_GPGGAResponse_altitude_tag 11
115-
#define wippersnapper_gps_GPGGAResponse_geoid_height_tag 12
107+
#define wippersnapper_gps_GPGGAResponse_lat_tag 2
108+
#define wippersnapper_gps_GPGGAResponse_lat_dir_tag 3
109+
#define wippersnapper_gps_GPGGAResponse_lon_tag 4
110+
#define wippersnapper_gps_GPGGAResponse_lon_dir_tag 5
111+
#define wippersnapper_gps_GPGGAResponse_fix_quality_tag 6
112+
#define wippersnapper_gps_GPGGAResponse_num_satellites_tag 7
113+
#define wippersnapper_gps_GPGGAResponse_hdop_tag 8
114+
#define wippersnapper_gps_GPGGAResponse_altitude_tag 9
115+
#define wippersnapper_gps_GPGGAResponse_geoid_height_tag 10
116116
#define wippersnapper_gps_GPSEvent_rmc_responses_tag 1
117117
#define wippersnapper_gps_GPSEvent_gga_responses_tag 2
118118

@@ -137,27 +137,27 @@ X(a, STATIC, SINGULAR, INT32, year, 7)
137137
#define wippersnapper_gps_GPSRMCResponse_FIELDLIST(X, a) \
138138
X(a, STATIC, OPTIONAL, MESSAGE, datetime, 1) \
139139
X(a, STATIC, SINGULAR, STRING, fix_status, 2) \
140-
X(a, STATIC, SINGULAR, STRING, lat, 4) \
141-
X(a, STATIC, SINGULAR, STRING, lat_dir, 5) \
142-
X(a, STATIC, SINGULAR, STRING, lon, 6) \
143-
X(a, STATIC, SINGULAR, STRING, lon_dir, 7) \
144-
X(a, STATIC, SINGULAR, STRING, speed, 8) \
145-
X(a, STATIC, SINGULAR, STRING, angle, 9)
140+
X(a, STATIC, SINGULAR, STRING, lat, 3) \
141+
X(a, STATIC, SINGULAR, STRING, lat_dir, 4) \
142+
X(a, STATIC, SINGULAR, STRING, lon, 5) \
143+
X(a, STATIC, SINGULAR, STRING, lon_dir, 6) \
144+
X(a, STATIC, SINGULAR, STRING, speed, 7) \
145+
X(a, STATIC, SINGULAR, STRING, angle, 8)
146146
#define wippersnapper_gps_GPSRMCResponse_CALLBACK NULL
147147
#define wippersnapper_gps_GPSRMCResponse_DEFAULT NULL
148148
#define wippersnapper_gps_GPSRMCResponse_datetime_MSGTYPE wippersnapper_gps_GPSDateTime
149149

150150
#define wippersnapper_gps_GPGGAResponse_FIELDLIST(X, a) \
151151
X(a, STATIC, OPTIONAL, MESSAGE, datetime, 1) \
152-
X(a, STATIC, SINGULAR, STRING, lat, 4) \
153-
X(a, STATIC, SINGULAR, STRING, lat_dir, 5) \
154-
X(a, STATIC, SINGULAR, STRING, lon, 6) \
155-
X(a, STATIC, SINGULAR, STRING, lon_dir, 7) \
156-
X(a, STATIC, SINGULAR, INT32, fix_quality, 8) \
157-
X(a, STATIC, SINGULAR, INT32, num_satellites, 9) \
158-
X(a, STATIC, SINGULAR, STRING, hdop, 10) \
159-
X(a, STATIC, SINGULAR, STRING, altitude, 11) \
160-
X(a, STATIC, SINGULAR, STRING, geoid_height, 12)
152+
X(a, STATIC, SINGULAR, STRING, lat, 2) \
153+
X(a, STATIC, SINGULAR, STRING, lat_dir, 3) \
154+
X(a, STATIC, SINGULAR, STRING, lon, 4) \
155+
X(a, STATIC, SINGULAR, STRING, lon_dir, 5) \
156+
X(a, STATIC, SINGULAR, INT32, fix_quality, 6) \
157+
X(a, STATIC, SINGULAR, INT32, num_satellites, 7) \
158+
X(a, STATIC, SINGULAR, STRING, hdop, 8) \
159+
X(a, STATIC, SINGULAR, STRING, altitude, 9) \
160+
X(a, STATIC, SINGULAR, STRING, geoid_height, 10)
161161
#define wippersnapper_gps_GPGGAResponse_CALLBACK NULL
162162
#define wippersnapper_gps_GPGGAResponse_DEFAULT NULL
163163
#define wippersnapper_gps_GPGGAResponse_datetime_MSGTYPE wippersnapper_gps_GPSDateTime

0 commit comments

Comments
 (0)