@@ -91,15 +91,15 @@ void SFE_UBLOX_GNSS::end(void)
91
91
delete[] packetUBXNAVTIMELS;
92
92
packetUBXNAVTIMELS = NULL ; // Redundant?
93
93
}
94
-
94
+
95
95
if (packetUBXNAVPOSECEF != NULL )
96
96
{
97
97
if (packetUBXNAVPOSECEF->callbackData != NULL )
98
98
{
99
99
delete[] packetUBXNAVPOSECEF->callbackData ;
100
100
}
101
101
delete[] packetUBXNAVPOSECEF;
102
- packetUBXNAVPOSECEF = NULL ; // Redundant?
102
+ packetUBXNAVPOSECEF = NULL ; // Redundant?
103
103
}
104
104
105
105
if (packetUBXNAVSTATUS != NULL )
@@ -109,7 +109,7 @@ void SFE_UBLOX_GNSS::end(void)
109
109
delete[] packetUBXNAVSTATUS->callbackData ;
110
110
}
111
111
delete[] packetUBXNAVSTATUS;
112
- packetUBXNAVSTATUS = NULL ; // Redundant?
112
+ packetUBXNAVSTATUS = NULL ; // Redundant?
113
113
}
114
114
115
115
if (packetUBXNAVDOP != NULL )
@@ -119,7 +119,7 @@ void SFE_UBLOX_GNSS::end(void)
119
119
delete[] packetUBXNAVDOP->callbackData ;
120
120
}
121
121
delete[] packetUBXNAVDOP;
122
- packetUBXNAVDOP = NULL ; // Redundant?
122
+ packetUBXNAVDOP = NULL ; // Redundant?
123
123
}
124
124
125
125
if (packetUBXNAVATT != NULL )
@@ -129,7 +129,7 @@ void SFE_UBLOX_GNSS::end(void)
129
129
delete[] packetUBXNAVATT->callbackData ;
130
130
}
131
131
delete[] packetUBXNAVATT;
132
- packetUBXNAVATT = NULL ; // Redundant?
132
+ packetUBXNAVATT = NULL ; // Redundant?
133
133
}
134
134
135
135
if (packetUBXNAVPVT != NULL )
@@ -143,7 +143,7 @@ void SFE_UBLOX_GNSS::end(void)
143
143
}
144
144
}
145
145
delete[] packetUBXNAVPVT;
146
- packetUBXNAVPVT = NULL ; // Redundant?
146
+ packetUBXNAVPVT = NULL ; // Redundant?
147
147
if (_printDebug == true )
148
148
{
149
149
_debugSerial->println (F (" end: packetUBXNAVPVT has been deleted" ));
@@ -157,7 +157,7 @@ void SFE_UBLOX_GNSS::end(void)
157
157
delete[] packetUBXNAVODO->callbackData ;
158
158
}
159
159
delete[] packetUBXNAVODO;
160
- packetUBXNAVODO = NULL ; // Redundant?
160
+ packetUBXNAVODO = NULL ; // Redundant?
161
161
}
162
162
163
163
if (packetUBXNAVVELECEF != NULL )
@@ -167,7 +167,7 @@ void SFE_UBLOX_GNSS::end(void)
167
167
delete[] packetUBXNAVVELECEF->callbackData ;
168
168
}
169
169
delete[] packetUBXNAVVELECEF;
170
- packetUBXNAVVELECEF = NULL ; // Redundant?
170
+ packetUBXNAVVELECEF = NULL ; // Redundant?
171
171
}
172
172
173
173
if (packetUBXNAVVELNED != NULL )
@@ -177,7 +177,7 @@ void SFE_UBLOX_GNSS::end(void)
177
177
delete[] packetUBXNAVVELNED->callbackData ;
178
178
}
179
179
delete[] packetUBXNAVVELNED;
180
- packetUBXNAVVELNED = NULL ; // Redundant?
180
+ packetUBXNAVVELNED = NULL ; // Redundant?
181
181
}
182
182
183
183
if (packetUBXNAVHPPOSECEF != NULL )
@@ -187,7 +187,7 @@ void SFE_UBLOX_GNSS::end(void)
187
187
delete[] packetUBXNAVHPPOSECEF->callbackData ;
188
188
}
189
189
delete[] packetUBXNAVHPPOSECEF;
190
- packetUBXNAVHPPOSECEF = NULL ; // Redundant?
190
+ packetUBXNAVHPPOSECEF = NULL ; // Redundant?
191
191
}
192
192
193
193
if (packetUBXNAVHPPOSLLH != NULL )
@@ -197,7 +197,7 @@ void SFE_UBLOX_GNSS::end(void)
197
197
delete[] packetUBXNAVHPPOSLLH->callbackData ;
198
198
}
199
199
delete[] packetUBXNAVHPPOSLLH;
200
- packetUBXNAVHPPOSLLH = NULL ; // Redundant?
200
+ packetUBXNAVHPPOSLLH = NULL ; // Redundant?
201
201
}
202
202
203
203
if (packetUBXNAVCLOCK != NULL )
@@ -207,7 +207,7 @@ void SFE_UBLOX_GNSS::end(void)
207
207
delete[] packetUBXNAVCLOCK->callbackData ;
208
208
}
209
209
delete[] packetUBXNAVCLOCK;
210
- packetUBXNAVCLOCK = NULL ; // Redundant?
210
+ packetUBXNAVCLOCK = NULL ; // Redundant?
211
211
}
212
212
213
213
if (packetUBXNAVSVIN != NULL )
@@ -217,7 +217,7 @@ void SFE_UBLOX_GNSS::end(void)
217
217
delete[] packetUBXNAVSVIN->callbackData ;
218
218
}
219
219
delete[] packetUBXNAVSVIN;
220
- packetUBXNAVSVIN = NULL ; // Redundant?
220
+ packetUBXNAVSVIN = NULL ; // Redundant?
221
221
}
222
222
223
223
if (packetUBXNAVRELPOSNED != NULL )
@@ -227,7 +227,7 @@ void SFE_UBLOX_GNSS::end(void)
227
227
delete[] packetUBXNAVRELPOSNED->callbackData ;
228
228
}
229
229
delete[] packetUBXNAVRELPOSNED;
230
- packetUBXNAVRELPOSNED = NULL ; // Redundant?
230
+ packetUBXNAVRELPOSNED = NULL ; // Redundant?
231
231
}
232
232
233
233
if (packetUBXRXMSFRBX != NULL )
@@ -237,7 +237,7 @@ void SFE_UBLOX_GNSS::end(void)
237
237
delete[] packetUBXRXMSFRBX->callbackData ;
238
238
}
239
239
delete[] packetUBXRXMSFRBX;
240
- packetUBXRXMSFRBX = NULL ; // Redundant?
240
+ packetUBXRXMSFRBX = NULL ; // Redundant?
241
241
}
242
242
243
243
if (packetUBXRXMRAWX != NULL )
@@ -247,7 +247,7 @@ void SFE_UBLOX_GNSS::end(void)
247
247
delete[] packetUBXRXMRAWX->callbackData ;
248
248
}
249
249
delete[] packetUBXRXMRAWX;
250
- packetUBXRXMRAWX = NULL ; // Redundant?
250
+ packetUBXRXMRAWX = NULL ; // Redundant?
251
251
}
252
252
253
253
if (packetUBXCFGRATE != NULL )
@@ -257,7 +257,7 @@ void SFE_UBLOX_GNSS::end(void)
257
257
delete[] packetUBXCFGRATE->callbackData ;
258
258
}
259
259
delete[] packetUBXCFGRATE;
260
- packetUBXCFGRATE = NULL ; // Redundant?
260
+ packetUBXCFGRATE = NULL ; // Redundant?
261
261
}
262
262
263
263
if (packetUBXTIMTM2 != NULL )
@@ -267,7 +267,7 @@ void SFE_UBLOX_GNSS::end(void)
267
267
delete[] packetUBXTIMTM2->callbackData ;
268
268
}
269
269
delete[] packetUBXTIMTM2;
270
- packetUBXTIMTM2 = NULL ; // Redundant?
270
+ packetUBXTIMTM2 = NULL ; // Redundant?
271
271
}
272
272
273
273
if (packetUBXESFALG != NULL )
@@ -277,7 +277,7 @@ void SFE_UBLOX_GNSS::end(void)
277
277
delete[] packetUBXESFALG->callbackData ;
278
278
}
279
279
delete[] packetUBXESFALG;
280
- packetUBXESFALG = NULL ; // Redundant?
280
+ packetUBXESFALG = NULL ; // Redundant?
281
281
}
282
282
283
283
if (packetUBXESFSTATUS != NULL )
@@ -287,7 +287,7 @@ void SFE_UBLOX_GNSS::end(void)
287
287
delete[] packetUBXESFSTATUS->callbackData ;
288
288
}
289
289
delete[] packetUBXESFSTATUS;
290
- packetUBXESFSTATUS = NULL ; // Redundant?
290
+ packetUBXESFSTATUS = NULL ; // Redundant?
291
291
}
292
292
293
293
if (packetUBXESFINS != NULL )
@@ -297,7 +297,7 @@ void SFE_UBLOX_GNSS::end(void)
297
297
delete[] packetUBXESFINS->callbackData ;
298
298
}
299
299
delete[] packetUBXESFINS;
300
- packetUBXESFINS = NULL ; // Redundant?
300
+ packetUBXESFINS = NULL ; // Redundant?
301
301
}
302
302
303
303
if (packetUBXESFMEAS != NULL )
@@ -307,7 +307,7 @@ void SFE_UBLOX_GNSS::end(void)
307
307
delete[] packetUBXESFMEAS->callbackData ;
308
308
}
309
309
delete[] packetUBXESFMEAS;
310
- packetUBXESFMEAS = NULL ; // Redundant?
310
+ packetUBXESFMEAS = NULL ; // Redundant?
311
311
}
312
312
313
313
if (packetUBXESFRAW != NULL )
@@ -317,7 +317,7 @@ void SFE_UBLOX_GNSS::end(void)
317
317
delete[] packetUBXESFRAW->callbackData ;
318
318
}
319
319
delete[] packetUBXESFRAW;
320
- packetUBXESFRAW = NULL ; // Redundant?
320
+ packetUBXESFRAW = NULL ; // Redundant?
321
321
}
322
322
323
323
if (packetUBXHNRATT != NULL )
@@ -327,7 +327,7 @@ void SFE_UBLOX_GNSS::end(void)
327
327
delete[] packetUBXHNRATT->callbackData ;
328
328
}
329
329
delete[] packetUBXHNRATT;
330
- packetUBXHNRATT = NULL ; // Redundant?
330
+ packetUBXHNRATT = NULL ; // Redundant?
331
331
}
332
332
333
333
if (packetUBXHNRINS != NULL )
@@ -337,7 +337,7 @@ void SFE_UBLOX_GNSS::end(void)
337
337
delete[] packetUBXHNRINS->callbackData ;
338
338
}
339
339
delete[] packetUBXHNRINS;
340
- packetUBXHNRINS = NULL ; // Redundant?
340
+ packetUBXHNRINS = NULL ; // Redundant?
341
341
}
342
342
343
343
if (packetUBXHNRPVT != NULL )
@@ -347,7 +347,7 @@ void SFE_UBLOX_GNSS::end(void)
347
347
delete[] packetUBXHNRPVT->callbackData ;
348
348
}
349
349
delete[] packetUBXHNRPVT;
350
- packetUBXHNRPVT = NULL ; // Redundant?
350
+ packetUBXHNRPVT = NULL ; // Redundant?
351
351
}
352
352
353
353
}
@@ -1435,7 +1435,7 @@ void SFE_UBLOX_GNSS::processRTCMframe(uint8_t incoming)
1435
1435
// This function is called for each byte of an RTCM frame
1436
1436
// Ths user can overwrite this function and process the RTCM frame as they please
1437
1437
// Bytes can be piped to Serial or other interface. The consumer could be a radio or the internet (Ntrip broadcaster)
1438
- void SFE_UBLOX_GNSS::processRTCM (uint8_t incoming)
1438
+ void SFE_UBLOX_GNSS::processRTCM (uint8_t incoming) // IGNORE COMPILER WARNING unused parameter 'incoming'
1439
1439
{
1440
1440
// Radio.sendReliable((String)incoming); //An example of passing this byte to a radio
1441
1441
@@ -1458,7 +1458,7 @@ void SFE_UBLOX_GNSS::processUBX(uint8_t incoming, ubxPacket *incomingUBX, uint8_
1458
1458
// If incomingUBX is a user-defined custom packet, then the payload size could be different to packetCfgPayloadSize.
1459
1459
// TO DO: update this to prevent an overrun when receiving an automatic message
1460
1460
// and the incomingUBX payload size is smaller than packetCfgPayloadSize.
1461
- size_t maximum_payload_size;
1461
+ uint16_t maximum_payload_size;
1462
1462
if (activePacketBuffer == SFE_UBLOX_PACKET_PACKETCFG)
1463
1463
maximum_payload_size = packetCfgPayloadSize;
1464
1464
else if (activePacketBuffer == SFE_UBLOX_PACKET_PACKETAUTO)
@@ -2404,7 +2404,7 @@ void SFE_UBLOX_GNSS::processUBXpacket(ubxPacket *msg)
2404
2404
packetUBXESFMEAS->data .timeTag = extractLong (msg, 0 );
2405
2405
packetUBXESFMEAS->data .flags .all = extractInt (msg, 4 );
2406
2406
packetUBXESFMEAS->data .id = extractInt (msg, 6 );
2407
- for (int i = 0 ; (i < DEF_NUM_SENS) && (i < packetUBXESFMEAS->data .flags .bits .numMeas )
2407
+ for (uint16_t i = 0 ; (i < DEF_NUM_SENS) && (i < packetUBXESFMEAS->data .flags .bits .numMeas )
2408
2408
&& ((i * 4 ) < (msg->len - 8 )); i++)
2409
2409
{
2410
2410
packetUBXESFMEAS->data .data [i].data .all = extractLong (msg, 8 + (i * 4 ));
@@ -2435,10 +2435,10 @@ void SFE_UBLOX_GNSS::processUBXpacket(ubxPacket *msg)
2435
2435
// Parse various byte fields into storage - but only if we have memory allocated for it
2436
2436
if (packetUBXESFRAW != NULL )
2437
2437
{
2438
- for (int i = 0 ; (i < DEF_NUM_SENS) && ((i * 8 ) < (msg->len - 4 )); i++)
2438
+ for (uint16_t i = 0 ; (i < DEF_NUM_SENS) && ((i * 8 ) < (msg->len - 4 )); i++)
2439
2439
{
2440
- packetUBXESFRAW->data .data [i].data .all = extractLong (msg, 8 + (i * 8 ));
2441
- packetUBXESFRAW->data .data [i].sTag = extractLong (msg, 8 + (i * 8 ) + 4 );
2440
+ packetUBXESFRAW->data .data [i].data .all = extractLong (msg, 4 + (i * 8 ));
2441
+ packetUBXESFRAW->data .data [i].sTag = extractLong (msg, 8 + (i * 8 ));
2442
2442
}
2443
2443
2444
2444
// Mark all datums as fresh (not read before)
@@ -2468,7 +2468,7 @@ void SFE_UBLOX_GNSS::processUBXpacket(ubxPacket *msg)
2468
2468
packetUBXESFSTATUS->data .version = extractByte (msg, 4 );
2469
2469
packetUBXESFSTATUS->data .fusionMode = extractByte (msg, 12 );
2470
2470
packetUBXESFSTATUS->data .numSens = extractByte (msg, 15 );
2471
- for (int i = 0 ; (i < DEF_NUM_SENS) && (i < packetUBXESFSTATUS->data .numSens )
2471
+ for (uint16_t i = 0 ; (i < DEF_NUM_SENS) && (i < packetUBXESFSTATUS->data .numSens )
2472
2472
&& ((i * 4 ) < (msg->len - 16 )); i++)
2473
2473
{
2474
2474
packetUBXESFSTATUS->data .status [i].sensStatus1 .all = extractByte (msg, 16 + (i * 4 ) + 0 );
@@ -2771,7 +2771,7 @@ void SFE_UBLOX_GNSS::sendSerialCommand(ubxPacket *outgoingUBX)
2771
2771
_serialPort->write (outgoingUBX->len >> 8 ); // MSB
2772
2772
2773
2773
// Write payload.
2774
- for (int i = 0 ; i < outgoingUBX->len ; i++)
2774
+ for (uint16_t i = 0 ; i < outgoingUBX->len ; i++)
2775
2775
{
2776
2776
_serialPort->write (outgoingUBX->payload [i]);
2777
2777
}
@@ -2823,7 +2823,7 @@ void SFE_UBLOX_GNSS::printPacket(ubxPacket *packet, boolean alwaysPrintPayload)
2823
2823
{
2824
2824
_debugSerial->print (F (" Payload:" ));
2825
2825
2826
- for (int x = 0 ; x < packet->len ; x++)
2826
+ for (uint16_t x = 0 ; x < packet->len ; x++)
2827
2827
{
2828
2828
_debugSerial->print (F (" " ));
2829
2829
_debugSerial->print (packet->payload [x], HEX);
@@ -3394,7 +3394,9 @@ void SFE_UBLOX_GNSS::checkCallbacks(void)
3394
3394
// Push (e.g.) RTCM data directly to the module
3395
3395
// Returns true if all numDataBytes were pushed successfully
3396
3396
// Warning: this function does not check that the data is valid. It is the user's responsibility to ensure the data is valid before pushing.
3397
- boolean SFE_UBLOX_GNSS::pushRawData (uint8_t *dataBytes, size_t numDataBytes)
3397
+ // Default to using a restart between transmissions. But processors like ESP32 seem to need a stop (#30). Set stop to true to use a stop instead.
3398
+ // On processors like the ESP32, you can use setI2CTransactionSize to increase the size of each transmission - to e.g. 128 bytes
3399
+ boolean SFE_UBLOX_GNSS::pushRawData (uint8_t *dataBytes, size_t numDataBytes, boolean stop)
3398
3400
{
3399
3401
if (commType == COMM_TYPE_SERIAL)
3400
3402
{
@@ -3425,12 +3427,12 @@ boolean SFE_UBLOX_GNSS::pushRawData(uint8_t *dataBytes, size_t numDataBytes)
3425
3427
3426
3428
if (bytesLeftToWrite > 0 )
3427
3429
{
3428
- if (_i2cPort->endTransmission (false ) != 0 ) // Send a restart command. Do not release bus.
3429
- return (false ); // Sensor did not ACK
3430
+ if (_i2cPort->endTransmission (stop ) != 0 ) // Send a restart or stop command
3431
+ return (false ); // Sensor did not ACK
3430
3432
}
3431
3433
else
3432
3434
{
3433
- if (_i2cPort->endTransmission () != 0 ) // We're done. Release bus.
3435
+ if (_i2cPort->endTransmission () != 0 ) // We're done. Release bus. Always use a stop here
3434
3436
return (false ); // Sensor did not ACK
3435
3437
}
3436
3438
}
@@ -9709,7 +9711,7 @@ uint32_t SFE_UBLOX_GNSS::getUnixEpoch(uint16_t maxWait)
9709
9711
packetUBXNAVPVT->moduleQueried .moduleQueried1 .bits .sec = false ;
9710
9712
packetUBXNAVPVT->moduleQueried .moduleQueried1 .bits .all = false ;
9711
9713
// assemble time elements into time_t - credits to Thomas Roell @ https://github.com/GrumpyOldPizza
9712
- uint32_t t = ((((((((uint32_t )packetUBXNAVPVT->data .year - 1970 ) * 365 ) + ((((uint32_t )packetUBXNAVPVT->data .year - 1970 ) + 3 ) / 4 )) +
9714
+ uint32_t t = ((((((((uint32_t )packetUBXNAVPVT->data .year - 1970 ) * 365 ) + ((((uint32_t )packetUBXNAVPVT->data .year - 1970 ) + 3 ) / 4 )) +
9713
9715
DAYS_SINCE_MONTH[((uint32_t )packetUBXNAVPVT->data .year - 1970 ) & 3 ][(uint32_t )packetUBXNAVPVT->data .month ] +
9714
9716
((uint32_t )packetUBXNAVPVT->data .day - 1 )) * 24 +
9715
9717
(uint32_t )packetUBXNAVPVT->data .hour ) * 60 +
@@ -9736,7 +9738,7 @@ uint32_t SFE_UBLOX_GNSS::getUnixEpoch(uint32_t& microsecond, uint16_t maxWait)
9736
9738
packetUBXNAVPVT->moduleQueried .moduleQueried1 .bits .nano = false ;
9737
9739
packetUBXNAVPVT->moduleQueried .moduleQueried1 .bits .all = false ;
9738
9740
// assemble time elements into time_t - credits to Thomas Roell @ https://github.com/GrumpyOldPizza
9739
- uint32_t t = ((((((((uint32_t )packetUBXNAVPVT->data .year - 1970 ) * 365 ) + ((((uint32_t )packetUBXNAVPVT->data .year - 1970 ) + 3 ) / 4 )) +
9741
+ uint32_t t = ((((((((uint32_t )packetUBXNAVPVT->data .year - 1970 ) * 365 ) + ((((uint32_t )packetUBXNAVPVT->data .year - 1970 ) + 3 ) / 4 )) +
9740
9742
DAYS_SINCE_MONTH[((uint32_t )packetUBXNAVPVT->data .year - 1970 ) & 3 ][(uint32_t )packetUBXNAVPVT->data .month ] +
9741
9743
((uint32_t )packetUBXNAVPVT->data .day - 1 )) * 24 +
9742
9744
(uint32_t )packetUBXNAVPVT->data .hour ) * 60 +
@@ -10141,7 +10143,7 @@ uint16_t SFE_UBLOX_GNSS::getMagAcc(uint16_t maxWait)
10141
10143
}
10142
10144
10143
10145
// getGeoidSeparation is currently redundant. The geoid separation seems to only be provided in NMEA GGA and GNS messages.
10144
- int32_t SFE_UBLOX_GNSS::getGeoidSeparation (uint16_t maxWait)
10146
+ int32_t SFE_UBLOX_GNSS::getGeoidSeparation (uint16_t maxWait) // IGNORE COMPILER WARNING unused parameter 'maxWait'
10145
10147
{
10146
10148
return (0 );
10147
10149
}
@@ -10395,7 +10397,7 @@ uint8_t SFE_UBLOX_GNSS::getLeapIndicator(int32_t& timeToLsEvent, uint16_t maxWai
10395
10397
getLeapSecondEvent (maxWait);
10396
10398
packetUBXNAVTIMELS->moduleQueried .moduleQueried .bits .validTimeToLsEvent = false ; // Since we are about to give this to user, mark this data as stale
10397
10399
packetUBXNAVTIMELS->moduleQueried .moduleQueried .bits .lsChange = false ;
10398
- packetUBXNAVTIMELS->moduleQueried .moduleQueried .bits .timeToLsEvent = false ;
10400
+ packetUBXNAVTIMELS->moduleQueried .moduleQueried .bits .timeToLsEvent = false ;
10399
10401
packetUBXNAVTIMELS->moduleQueried .moduleQueried .bits .all = false ;
10400
10402
timeToLsEvent = packetUBXNAVTIMELS->data .timeToLsEvent ;
10401
10403
// returns NTP Leap Indicator
0 commit comments