@@ -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