@@ -4621,6 +4621,8 @@ void DevUBLOXGNSS::addToChecksum(uint8_t incoming)
46214621// Given a packet and payload, send everything including CRC bytes via I2C port
46224622sfe_ublox_status_e DevUBLOXGNSS::sendCommand(ubxPacket *outgoingUBX, uint16_t maxWait, bool expectACKonly)
46234623{
4624+ if (!lock()) return SFE_UBLOX_STATUS_FAIL;
4625+
46244626 sfe_ublox_status_e retVal = SFE_UBLOX_STATUS_SUCCESS;
46254627
46264628 calcChecksum(outgoingUBX); // Sets checksum A and B bytes of the packet
@@ -4633,7 +4635,6 @@ sfe_ublox_status_e DevUBLOXGNSS::sendCommand(ubxPacket *outgoingUBX, uint16_t ma
46334635 }
46344636#endif
46354637
4636- if (!lock()) return SFE_UBLOX_STATUS_FAIL;
46374638 if (_commType == COMM_TYPE_I2C)
46384639 {
46394640 retVal = sendI2cCommand(outgoingUBX);
@@ -4656,6 +4657,7 @@ sfe_ublox_status_e DevUBLOXGNSS::sendCommand(ubxPacket *outgoingUBX, uint16_t ma
46564657 {
46574658 sendSpiCommand(outgoingUBX);
46584659 }
4660+
46594661 unlock();
46604662
46614663 if (maxWait > 0)
@@ -6050,7 +6052,7 @@ size_t DevUBLOXGNSS::pushAssistNowDataInternal(size_t offset, bool skipTime, con
60506052 bool keepGoing = true;
60516053 while (keepGoing && (millis() < (startTime + maxWait))) // Keep checking for the ACK until we time out
60526054 {
6053- checkUblox();
6055+ checkUbloxInternal(&packetCfg, UBX_CLASS_MGA, UBX_MGA_ACK_DATA0); // Was checkUblox();
60546056 if (packetUBXMGAACK->head != packetUBXMGAACK->tail) // Does the MGA ACK ringbuffer contain any ACK's?
60556057 {
60566058 bool dataAckd = true; // Check if we've received the correct ACK
@@ -6573,7 +6575,7 @@ size_t DevUBLOXGNSS::readNavigationDatabase(uint8_t *dataBytes, size_t maxNumDat
65736575
65746576 while (keepGoing && (millis() < (startTime + maxWait)))
65756577 {
6576- checkUblox();
6578+ checkUbloxInternal(&packetCfg, UBX_CLASS_MGA, UBX_MGA_ACK_DATA0); // Was checkUblox();
65776579
65786580 while (packetUBXMGADBD->head != packetUBXMGADBD->tail) // Does the MGA DBD ringbuffer contain any data?
65796581 {
0 commit comments