@@ -91,15 +91,15 @@ void SFE_UBLOX_GNSS::end(void)
9191 delete[] packetUBXNAVTIMELS;
9292 packetUBXNAVTIMELS = NULL ; // Redundant?
9393 }
94-
94+
9595 if (packetUBXNAVPOSECEF != NULL )
9696 {
9797 if (packetUBXNAVPOSECEF->callbackData != NULL )
9898 {
9999 delete[] packetUBXNAVPOSECEF->callbackData ;
100100 }
101101 delete[] packetUBXNAVPOSECEF;
102- packetUBXNAVPOSECEF = NULL ; // Redundant?
102+ packetUBXNAVPOSECEF = NULL ; // Redundant?
103103 }
104104
105105 if (packetUBXNAVSTATUS != NULL )
@@ -109,7 +109,7 @@ void SFE_UBLOX_GNSS::end(void)
109109 delete[] packetUBXNAVSTATUS->callbackData ;
110110 }
111111 delete[] packetUBXNAVSTATUS;
112- packetUBXNAVSTATUS = NULL ; // Redundant?
112+ packetUBXNAVSTATUS = NULL ; // Redundant?
113113 }
114114
115115 if (packetUBXNAVDOP != NULL )
@@ -119,7 +119,7 @@ void SFE_UBLOX_GNSS::end(void)
119119 delete[] packetUBXNAVDOP->callbackData ;
120120 }
121121 delete[] packetUBXNAVDOP;
122- packetUBXNAVDOP = NULL ; // Redundant?
122+ packetUBXNAVDOP = NULL ; // Redundant?
123123 }
124124
125125 if (packetUBXNAVATT != NULL )
@@ -129,7 +129,7 @@ void SFE_UBLOX_GNSS::end(void)
129129 delete[] packetUBXNAVATT->callbackData ;
130130 }
131131 delete[] packetUBXNAVATT;
132- packetUBXNAVATT = NULL ; // Redundant?
132+ packetUBXNAVATT = NULL ; // Redundant?
133133 }
134134
135135 if (packetUBXNAVPVT != NULL )
@@ -143,7 +143,7 @@ void SFE_UBLOX_GNSS::end(void)
143143 }
144144 }
145145 delete[] packetUBXNAVPVT;
146- packetUBXNAVPVT = NULL ; // Redundant?
146+ packetUBXNAVPVT = NULL ; // Redundant?
147147 if (_printDebug == true )
148148 {
149149 _debugSerial->println (F (" end: packetUBXNAVPVT has been deleted" ));
@@ -157,7 +157,7 @@ void SFE_UBLOX_GNSS::end(void)
157157 delete[] packetUBXNAVODO->callbackData ;
158158 }
159159 delete[] packetUBXNAVODO;
160- packetUBXNAVODO = NULL ; // Redundant?
160+ packetUBXNAVODO = NULL ; // Redundant?
161161 }
162162
163163 if (packetUBXNAVVELECEF != NULL )
@@ -167,7 +167,7 @@ void SFE_UBLOX_GNSS::end(void)
167167 delete[] packetUBXNAVVELECEF->callbackData ;
168168 }
169169 delete[] packetUBXNAVVELECEF;
170- packetUBXNAVVELECEF = NULL ; // Redundant?
170+ packetUBXNAVVELECEF = NULL ; // Redundant?
171171 }
172172
173173 if (packetUBXNAVVELNED != NULL )
@@ -177,7 +177,7 @@ void SFE_UBLOX_GNSS::end(void)
177177 delete[] packetUBXNAVVELNED->callbackData ;
178178 }
179179 delete[] packetUBXNAVVELNED;
180- packetUBXNAVVELNED = NULL ; // Redundant?
180+ packetUBXNAVVELNED = NULL ; // Redundant?
181181 }
182182
183183 if (packetUBXNAVHPPOSECEF != NULL )
@@ -187,7 +187,7 @@ void SFE_UBLOX_GNSS::end(void)
187187 delete[] packetUBXNAVHPPOSECEF->callbackData ;
188188 }
189189 delete[] packetUBXNAVHPPOSECEF;
190- packetUBXNAVHPPOSECEF = NULL ; // Redundant?
190+ packetUBXNAVHPPOSECEF = NULL ; // Redundant?
191191 }
192192
193193 if (packetUBXNAVHPPOSLLH != NULL )
@@ -197,7 +197,7 @@ void SFE_UBLOX_GNSS::end(void)
197197 delete[] packetUBXNAVHPPOSLLH->callbackData ;
198198 }
199199 delete[] packetUBXNAVHPPOSLLH;
200- packetUBXNAVHPPOSLLH = NULL ; // Redundant?
200+ packetUBXNAVHPPOSLLH = NULL ; // Redundant?
201201 }
202202
203203 if (packetUBXNAVCLOCK != NULL )
@@ -207,7 +207,7 @@ void SFE_UBLOX_GNSS::end(void)
207207 delete[] packetUBXNAVCLOCK->callbackData ;
208208 }
209209 delete[] packetUBXNAVCLOCK;
210- packetUBXNAVCLOCK = NULL ; // Redundant?
210+ packetUBXNAVCLOCK = NULL ; // Redundant?
211211 }
212212
213213 if (packetUBXNAVSVIN != NULL )
@@ -217,7 +217,7 @@ void SFE_UBLOX_GNSS::end(void)
217217 delete[] packetUBXNAVSVIN->callbackData ;
218218 }
219219 delete[] packetUBXNAVSVIN;
220- packetUBXNAVSVIN = NULL ; // Redundant?
220+ packetUBXNAVSVIN = NULL ; // Redundant?
221221 }
222222
223223 if (packetUBXNAVRELPOSNED != NULL )
@@ -227,7 +227,7 @@ void SFE_UBLOX_GNSS::end(void)
227227 delete[] packetUBXNAVRELPOSNED->callbackData ;
228228 }
229229 delete[] packetUBXNAVRELPOSNED;
230- packetUBXNAVRELPOSNED = NULL ; // Redundant?
230+ packetUBXNAVRELPOSNED = NULL ; // Redundant?
231231 }
232232
233233 if (packetUBXRXMSFRBX != NULL )
@@ -237,7 +237,7 @@ void SFE_UBLOX_GNSS::end(void)
237237 delete[] packetUBXRXMSFRBX->callbackData ;
238238 }
239239 delete[] packetUBXRXMSFRBX;
240- packetUBXRXMSFRBX = NULL ; // Redundant?
240+ packetUBXRXMSFRBX = NULL ; // Redundant?
241241 }
242242
243243 if (packetUBXRXMRAWX != NULL )
@@ -247,7 +247,7 @@ void SFE_UBLOX_GNSS::end(void)
247247 delete[] packetUBXRXMRAWX->callbackData ;
248248 }
249249 delete[] packetUBXRXMRAWX;
250- packetUBXRXMRAWX = NULL ; // Redundant?
250+ packetUBXRXMRAWX = NULL ; // Redundant?
251251 }
252252
253253 if (packetUBXCFGRATE != NULL )
@@ -257,7 +257,7 @@ void SFE_UBLOX_GNSS::end(void)
257257 delete[] packetUBXCFGRATE->callbackData ;
258258 }
259259 delete[] packetUBXCFGRATE;
260- packetUBXCFGRATE = NULL ; // Redundant?
260+ packetUBXCFGRATE = NULL ; // Redundant?
261261 }
262262
263263 if (packetUBXTIMTM2 != NULL )
@@ -267,7 +267,7 @@ void SFE_UBLOX_GNSS::end(void)
267267 delete[] packetUBXTIMTM2->callbackData ;
268268 }
269269 delete[] packetUBXTIMTM2;
270- packetUBXTIMTM2 = NULL ; // Redundant?
270+ packetUBXTIMTM2 = NULL ; // Redundant?
271271 }
272272
273273 if (packetUBXESFALG != NULL )
@@ -277,7 +277,7 @@ void SFE_UBLOX_GNSS::end(void)
277277 delete[] packetUBXESFALG->callbackData ;
278278 }
279279 delete[] packetUBXESFALG;
280- packetUBXESFALG = NULL ; // Redundant?
280+ packetUBXESFALG = NULL ; // Redundant?
281281 }
282282
283283 if (packetUBXESFSTATUS != NULL )
@@ -287,7 +287,7 @@ void SFE_UBLOX_GNSS::end(void)
287287 delete[] packetUBXESFSTATUS->callbackData ;
288288 }
289289 delete[] packetUBXESFSTATUS;
290- packetUBXESFSTATUS = NULL ; // Redundant?
290+ packetUBXESFSTATUS = NULL ; // Redundant?
291291 }
292292
293293 if (packetUBXESFINS != NULL )
@@ -297,7 +297,7 @@ void SFE_UBLOX_GNSS::end(void)
297297 delete[] packetUBXESFINS->callbackData ;
298298 }
299299 delete[] packetUBXESFINS;
300- packetUBXESFINS = NULL ; // Redundant?
300+ packetUBXESFINS = NULL ; // Redundant?
301301 }
302302
303303 if (packetUBXESFMEAS != NULL )
@@ -307,7 +307,7 @@ void SFE_UBLOX_GNSS::end(void)
307307 delete[] packetUBXESFMEAS->callbackData ;
308308 }
309309 delete[] packetUBXESFMEAS;
310- packetUBXESFMEAS = NULL ; // Redundant?
310+ packetUBXESFMEAS = NULL ; // Redundant?
311311 }
312312
313313 if (packetUBXESFRAW != NULL )
@@ -317,7 +317,7 @@ void SFE_UBLOX_GNSS::end(void)
317317 delete[] packetUBXESFRAW->callbackData ;
318318 }
319319 delete[] packetUBXESFRAW;
320- packetUBXESFRAW = NULL ; // Redundant?
320+ packetUBXESFRAW = NULL ; // Redundant?
321321 }
322322
323323 if (packetUBXHNRATT != NULL )
@@ -327,7 +327,7 @@ void SFE_UBLOX_GNSS::end(void)
327327 delete[] packetUBXHNRATT->callbackData ;
328328 }
329329 delete[] packetUBXHNRATT;
330- packetUBXHNRATT = NULL ; // Redundant?
330+ packetUBXHNRATT = NULL ; // Redundant?
331331 }
332332
333333 if (packetUBXHNRINS != NULL )
@@ -337,7 +337,7 @@ void SFE_UBLOX_GNSS::end(void)
337337 delete[] packetUBXHNRINS->callbackData ;
338338 }
339339 delete[] packetUBXHNRINS;
340- packetUBXHNRINS = NULL ; // Redundant?
340+ packetUBXHNRINS = NULL ; // Redundant?
341341 }
342342
343343 if (packetUBXHNRPVT != NULL )
@@ -347,7 +347,7 @@ void SFE_UBLOX_GNSS::end(void)
347347 delete[] packetUBXHNRPVT->callbackData ;
348348 }
349349 delete[] packetUBXHNRPVT;
350- packetUBXHNRPVT = NULL ; // Redundant?
350+ packetUBXHNRPVT = NULL ; // Redundant?
351351 }
352352
353353}
@@ -1435,7 +1435,7 @@ void SFE_UBLOX_GNSS::processRTCMframe(uint8_t incoming)
14351435// This function is called for each byte of an RTCM frame
14361436// Ths user can overwrite this function and process the RTCM frame as they please
14371437// 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'
14391439{
14401440 // Radio.sendReliable((String)incoming); //An example of passing this byte to a radio
14411441
@@ -1458,7 +1458,7 @@ void SFE_UBLOX_GNSS::processUBX(uint8_t incoming, ubxPacket *incomingUBX, uint8_
14581458 // If incomingUBX is a user-defined custom packet, then the payload size could be different to packetCfgPayloadSize.
14591459 // TO DO: update this to prevent an overrun when receiving an automatic message
14601460 // and the incomingUBX payload size is smaller than packetCfgPayloadSize.
1461- size_t maximum_payload_size;
1461+ uint16_t maximum_payload_size;
14621462 if (activePacketBuffer == SFE_UBLOX_PACKET_PACKETCFG)
14631463 maximum_payload_size = packetCfgPayloadSize;
14641464 else if (activePacketBuffer == SFE_UBLOX_PACKET_PACKETAUTO)
@@ -2404,7 +2404,7 @@ void SFE_UBLOX_GNSS::processUBXpacket(ubxPacket *msg)
24042404 packetUBXESFMEAS->data .timeTag = extractLong (msg, 0 );
24052405 packetUBXESFMEAS->data .flags .all = extractInt (msg, 4 );
24062406 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 )
24082408 && ((i * 4 ) < (msg->len - 8 )); i++)
24092409 {
24102410 packetUBXESFMEAS->data .data [i].data .all = extractLong (msg, 8 + (i * 4 ));
@@ -2435,10 +2435,10 @@ void SFE_UBLOX_GNSS::processUBXpacket(ubxPacket *msg)
24352435 // Parse various byte fields into storage - but only if we have memory allocated for it
24362436 if (packetUBXESFRAW != NULL )
24372437 {
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++)
24392439 {
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 ));
24422442 }
24432443
24442444 // Mark all datums as fresh (not read before)
@@ -2468,7 +2468,7 @@ void SFE_UBLOX_GNSS::processUBXpacket(ubxPacket *msg)
24682468 packetUBXESFSTATUS->data .version = extractByte (msg, 4 );
24692469 packetUBXESFSTATUS->data .fusionMode = extractByte (msg, 12 );
24702470 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 )
24722472 && ((i * 4 ) < (msg->len - 16 )); i++)
24732473 {
24742474 packetUBXESFSTATUS->data .status [i].sensStatus1 .all = extractByte (msg, 16 + (i * 4 ) + 0 );
@@ -2771,7 +2771,7 @@ void SFE_UBLOX_GNSS::sendSerialCommand(ubxPacket *outgoingUBX)
27712771 _serialPort->write (outgoingUBX->len >> 8 ); // MSB
27722772
27732773 // Write payload.
2774- for (int i = 0 ; i < outgoingUBX->len ; i++)
2774+ for (uint16_t i = 0 ; i < outgoingUBX->len ; i++)
27752775 {
27762776 _serialPort->write (outgoingUBX->payload [i]);
27772777 }
@@ -2823,7 +2823,7 @@ void SFE_UBLOX_GNSS::printPacket(ubxPacket *packet, boolean alwaysPrintPayload)
28232823 {
28242824 _debugSerial->print (F (" Payload:" ));
28252825
2826- for (int x = 0 ; x < packet->len ; x++)
2826+ for (uint16_t x = 0 ; x < packet->len ; x++)
28272827 {
28282828 _debugSerial->print (F (" " ));
28292829 _debugSerial->print (packet->payload [x], HEX);
@@ -3394,7 +3394,9 @@ void SFE_UBLOX_GNSS::checkCallbacks(void)
33943394// Push (e.g.) RTCM data directly to the module
33953395// Returns true if all numDataBytes were pushed successfully
33963396// 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)
33983400{
33993401 if (commType == COMM_TYPE_SERIAL)
34003402 {
@@ -3425,12 +3427,12 @@ boolean SFE_UBLOX_GNSS::pushRawData(uint8_t *dataBytes, size_t numDataBytes)
34253427
34263428 if (bytesLeftToWrite > 0 )
34273429 {
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
34303432 }
34313433 else
34323434 {
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
34343436 return (false ); // Sensor did not ACK
34353437 }
34363438 }
@@ -9709,7 +9711,7 @@ uint32_t SFE_UBLOX_GNSS::getUnixEpoch(uint16_t maxWait)
97099711 packetUBXNAVPVT->moduleQueried .moduleQueried1 .bits .sec = false ;
97109712 packetUBXNAVPVT->moduleQueried .moduleQueried1 .bits .all = false ;
97119713 // 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 )) +
97139715 DAYS_SINCE_MONTH[((uint32_t )packetUBXNAVPVT->data .year - 1970 ) & 3 ][(uint32_t )packetUBXNAVPVT->data .month ] +
97149716 ((uint32_t )packetUBXNAVPVT->data .day - 1 )) * 24 +
97159717 (uint32_t )packetUBXNAVPVT->data .hour ) * 60 +
@@ -9736,7 +9738,7 @@ uint32_t SFE_UBLOX_GNSS::getUnixEpoch(uint32_t& microsecond, uint16_t maxWait)
97369738 packetUBXNAVPVT->moduleQueried .moduleQueried1 .bits .nano = false ;
97379739 packetUBXNAVPVT->moduleQueried .moduleQueried1 .bits .all = false ;
97389740 // 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 )) +
97409742 DAYS_SINCE_MONTH[((uint32_t )packetUBXNAVPVT->data .year - 1970 ) & 3 ][(uint32_t )packetUBXNAVPVT->data .month ] +
97419743 ((uint32_t )packetUBXNAVPVT->data .day - 1 )) * 24 +
97429744 (uint32_t )packetUBXNAVPVT->data .hour ) * 60 +
@@ -10141,7 +10143,7 @@ uint16_t SFE_UBLOX_GNSS::getMagAcc(uint16_t maxWait)
1014110143}
1014210144
1014310145// 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'
1014510147{
1014610148 return (0 );
1014710149}
@@ -10395,7 +10397,7 @@ uint8_t SFE_UBLOX_GNSS::getLeapIndicator(int32_t& timeToLsEvent, uint16_t maxWai
1039510397 getLeapSecondEvent (maxWait);
1039610398 packetUBXNAVTIMELS->moduleQueried .moduleQueried .bits .validTimeToLsEvent = false ; // Since we are about to give this to user, mark this data as stale
1039710399 packetUBXNAVTIMELS->moduleQueried .moduleQueried .bits .lsChange = false ;
10398- packetUBXNAVTIMELS->moduleQueried .moduleQueried .bits .timeToLsEvent = false ;
10400+ packetUBXNAVTIMELS->moduleQueried .moduleQueried .bits .timeToLsEvent = false ;
1039910401 packetUBXNAVTIMELS->moduleQueried .moduleQueried .bits .all = false ;
1040010402 timeToLsEvent = packetUBXNAVTIMELS->data .timeToLsEvent ;
1040110403 // returns NTP Leap Indicator
0 commit comments