Skip to content

Commit 263309c

Browse files
committed
Add storedClass and storedID for checkUblox
1 parent ca4c0b1 commit 263309c

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

src/u-blox_GNSS.cpp

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1065,14 +1065,28 @@ bool DevUBLOXGNSS::checkUblox(uint8_t requestedClass, uint8_t requestedID)
10651065
bool DevUBLOXGNSS::checkUbloxInternal(ubxPacket *incomingUBX, uint8_t requestedClass, uint8_t requestedID)
10661066
{
10671067
if (!lock()) return false;
1068+
1069+
// Update storedClass and storedID if either requestedClass or requestedID is non-zero,
1070+
// otherwise leave unchanged. This allows calls of checkUblox() (which defaults to checkUblox(0,0))
1071+
// by other threads without changing the requested / expected Class and ID.
1072+
volatile static uint8_t storedClass = 0;
1073+
volatile static uint8_t storedID = 0;
1074+
if (requestedClass || requestedID) // If either is non-zero, store the requested Class and ID
1075+
{
1076+
storedClass = requestedClass;
1077+
storedID = requestedID;
1078+
}
1079+
10681080
bool ok = false;
10691081
if (_commType == COMM_TYPE_I2C)
1070-
ok = (checkUbloxI2C(incomingUBX, requestedClass, requestedID));
1082+
ok = (checkUbloxI2C(incomingUBX, storedClass, storedID));
10711083
else if (_commType == COMM_TYPE_SERIAL)
1072-
ok = (checkUbloxSerial(incomingUBX, requestedClass, requestedID));
1084+
ok = (checkUbloxSerial(incomingUBX, storedClass, storedID));
10731085
else if (_commType == COMM_TYPE_SPI)
1074-
ok = (checkUbloxSpi(incomingUBX, requestedClass, requestedID));
1086+
ok = (checkUbloxSpi(incomingUBX, storedClass, storedID));
1087+
10751088
unlock();
1089+
10761090
return ok;
10771091
}
10781092

0 commit comments

Comments
 (0)