@@ -4363,20 +4363,6 @@ size_t SFE_UBLOX_GNSS::pushAssistNowData(size_t offset, bool skipTime, const uin
4363
4363
size_t SFE_UBLOX_GNSS::pushAssistNowDataInternal(size_t offset, bool skipTime, const uint8_t *dataBytes, size_t numDataBytes, sfe_ublox_mga_assist_ack_e mgaAck, uint16_t maxWait)
4364
4364
{
4365
4365
size_t dataPtr = offset; // Pointer into dataBytes
4366
-
4367
- if (offset >= numDataBytes) // Sanity check. Return now if offset is invalid.
4368
- {
4369
- #ifndef SFE_UBLOX_REDUCED_PROG_MEM
4370
- if ((_printDebug == true) || (_printLimitedDebug == true)) // This is important. Print this if doing limited debugging
4371
- {
4372
- _debugSerial->print(F("pushAssistNowData: offset ("));
4373
- _debugSerial->print(offset);
4374
- _debugSerial->println(F(") is invalid! Aborting..."));
4375
- }
4376
- #endif
4377
- return ((size_t)0);
4378
- }
4379
-
4380
4366
size_t packetsProcessed = 0; // Keep count of how many packets have been processed
4381
4367
size_t bytesPushed = 0; // Keep count
4382
4368
@@ -4406,7 +4392,7 @@ size_t SFE_UBLOX_GNSS::pushAssistNowDataInternal(size_t offset, bool skipTime, c
4406
4392
return (0);
4407
4393
}
4408
4394
4409
- while (dataPtr < numDataBytes) // Keep going until we have processed all the bytes
4395
+ while (dataPtr < (offset + numDataBytes) ) // Keep going until we have processed all the bytes
4410
4396
{
4411
4397
// Start by checking the validity of the packet being pointed to
4412
4398
bool dataIsOK = true;
@@ -4421,8 +4407,8 @@ size_t SFE_UBLOX_GNSS::pushAssistNowDataInternal(size_t offset, bool skipTime, c
4421
4407
uint8_t checksumB = 0;
4422
4408
// Calculate the checksum bytes
4423
4409
// Keep going until the end of the packet is reached (payloadPtr == (dataPtr + packetLength))
4424
- // or we reach the end of the AssistNow data (payloadPtr == numDataBytes)
4425
- for (size_t payloadPtr = dataPtr + ((size_t)2); (payloadPtr < (dataPtr + packetLength + ((size_t)6))) && (payloadPtr < numDataBytes); payloadPtr++)
4410
+ // or we reach the end of the AssistNow data (payloadPtr == offset + numDataBytes)
4411
+ for (size_t payloadPtr = dataPtr + ((size_t)2); (payloadPtr < (dataPtr + packetLength + ((size_t)6))) && (payloadPtr < (offset + numDataBytes) ); payloadPtr++)
4426
4412
{
4427
4413
checksumA += *(dataBytes + payloadPtr);
4428
4414
checksumB += checksumA;
@@ -4431,7 +4417,7 @@ size_t SFE_UBLOX_GNSS::pushAssistNowDataInternal(size_t offset, bool skipTime, c
4431
4417
dataIsOK &= (checksumA == *(dataBytes + dataPtr + packetLength + ((size_t)6)));
4432
4418
dataIsOK &= (checksumB == *(dataBytes + dataPtr + packetLength + ((size_t)7)));
4433
4419
4434
- dataIsOK &= ((dataPtr + packetLength + ((size_t)8)) <= numDataBytes); // Check we haven't overrun
4420
+ dataIsOK &= ((dataPtr + packetLength + ((size_t)8)) <= (offset + numDataBytes) ); // Check we haven't overrun
4435
4421
4436
4422
// If the data is valid, push it
4437
4423
if (dataIsOK)
@@ -4527,7 +4513,7 @@ size_t SFE_UBLOX_GNSS::pushAssistNowDataInternal(size_t offset, bool skipTime, c
4527
4513
// We are not checking for Acks, so let's assume the send was successful?
4528
4514
packetsProcessed++;
4529
4515
// We are not checking for Acks, so delay for maxWait millis unless we've reached the end of the data
4530
- if ((dataPtr + packetLength + ((size_t)8)) < numDataBytes)
4516
+ if ((dataPtr + packetLength + ((size_t)8)) < (offset + numDataBytes) )
4531
4517
{
4532
4518
delay(maxWait);
4533
4519
}
@@ -4548,7 +4534,7 @@ size_t SFE_UBLOX_GNSS::pushAssistNowDataInternal(size_t offset, bool skipTime, c
4548
4534
}
4549
4535
#endif
4550
4536
4551
- while ((dataPtr < numDataBytes) && (*(dataBytes + ++dataPtr) != UBX_SYNCH_1))
4537
+ while ((dataPtr < (offset + numDataBytes) ) && (*(dataBytes + ++dataPtr) != UBX_SYNCH_1))
4552
4538
{
4553
4539
; // Increment dataPtr until we are pointing at the next 0xB5 - or we reach the end of the data
4554
4540
}
@@ -4582,7 +4568,10 @@ bool SFE_UBLOX_GNSS::initPacketUBXMGAACK()
4582
4568
}
4583
4569
4584
4570
// Provide initial time assistance
4585
- bool SFE_UBLOX_GNSS::setUTCTimeAssistance(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second, uint32_t nanos, uint16_t tAccS, uint32_t tAccNs, uint8_t source, sfe_ublox_mga_assist_ack_e mgaAck, uint16_t maxWait)
4571
+ bool SFE_UBLOX_GNSS::setUTCTimeAssistance(uint16_t year, uint8_t month, uint8_t day,
4572
+ uint8_t hour, uint8_t minute, uint8_t second, uint32_t nanos,
4573
+ uint16_t tAccS, uint32_t tAccNs, uint8_t source,
4574
+ sfe_ublox_mga_assist_ack_e mgaAck, uint16_t maxWait)
4586
4575
{
4587
4576
uint8_t iniTimeUTC[32]; // Create the UBX-MGA-INI-TIME_UTC message by hand
4588
4577
memset(iniTimeUTC, 0x00, 32); // Set all unused / reserved bytes and the checksum to zero
0 commit comments