Skip to content

Commit eb30aa0

Browse files
committed
Modify waitForI2c - tell it how many bytes to expect. Add extra debug messages.
1 parent acad31a commit eb30aa0

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

src/SparkFun_BNO080_Arduino_Library.cpp

+30-3
Original file line numberDiff line numberDiff line change
@@ -1336,15 +1336,22 @@ void BNO080::saveCalibration()
13361336
//This function _should_ be unnecessary but communication with the BNO080 stalls without it...
13371337
boolean BNO080::waitForI2C(size_t expectedLength)
13381338
{
1339+
size_t i2cAvailable;
1340+
13391341
for (uint8_t counter = 0; counter < 100; counter++) //Don't got more than 255
13401342
{
1341-
if (_i2cPort->available() >= expectedLength) // Greater than should be impossible...
1343+
i2cAvailable = _i2cPort->available();
1344+
if (i2cAvailable >= expectedLength) // Greater than should be impossible...
13421345
return (true);
13431346
delay(1);
13441347
}
13451348

13461349
if (_printDebug == true)
1347-
_debugPort->println(F("I2C timeout"));
1350+
_debugPort->print(F("waitForI2C: I2C timeout when expecting "));
1351+
_debugPort->print(expectedLength);
1352+
_debugPort->print(F(" bytes. "));
1353+
_debugPort->print(i2cAvailable);
1354+
_debugPort->println(F(" were available"));
13481355
return (false);
13491356
}
13501357

@@ -1432,7 +1439,13 @@ boolean BNO080::receivePacket(void)
14321439
uint8_t packetMSB = _i2cPort->read();
14331440
uint8_t channelNumber = _i2cPort->read();
14341441
uint8_t sequenceNumber = _i2cPort->read(); //Not sure if we need to store this or not
1435-
1442+
// if (_printDebug == true)
1443+
// {
1444+
// _debugPort->print(F("receivePacket (I2C): packetLSB: 0x")); _debugPort->println(packetLSB, HEX);
1445+
// _debugPort->print(F("receivePacket (I2C): packetMSB: 0x")); _debugPort->println(packetMSB, HEX);
1446+
// _debugPort->print(F("receivePacket (I2C): channelNumber: 0x")); _debugPort->println(channelNumber, HEX);
1447+
// _debugPort->print(F("receivePacket (I2C): sequenceNumber: 0x")); _debugPort->println(sequenceNumber, HEX);
1448+
// }
14361449
//Store the header info.
14371450
shtpHeader[0] = packetLSB;
14381451
shtpHeader[1] = packetMSB;
@@ -1505,6 +1518,13 @@ boolean BNO080::getData(uint16_t bytesRemaining, uint8_t channelNumber, uint8_t
15051518
uint8_t packetMSB = _i2cPort->read();
15061519
uint8_t thisChannelNumber = _i2cPort->read();
15071520
uint8_t thisSequenceNumber = _i2cPort->read();
1521+
// if (_printDebug == true)
1522+
// {
1523+
// _debugPort->print(F("getData: packetLSB: 0x")); _debugPort->println(packetLSB, HEX);
1524+
// _debugPort->print(F("getData: packetMSB: 0x")); _debugPort->println(packetMSB, HEX);
1525+
// _debugPort->print(F("getData: thisChannelNumber: 0x")); _debugPort->println(thisChannelNumber, HEX);
1526+
// _debugPort->print(F("getData: thisSequenceNumber: 0x")); _debugPort->println(thisSequenceNumber, HEX);
1527+
// }
15081528

15091529
//Calculate the number of data bytes in this packet
15101530
uint16_t dataLength = (((uint16_t)packetMSB) << 8) | ((uint16_t)packetLSB);
@@ -1549,6 +1569,13 @@ boolean BNO080::getData(uint16_t bytesRemaining, uint8_t channelNumber, uint8_t
15491569
for (uint8_t x = 0; x < numberOfBytesToRead; x++)
15501570
{
15511571
uint8_t incoming = _i2cPort->read();
1572+
// if (_printDebug == true)
1573+
// {
1574+
// _debugPort->print(F("getData: dataSpot: "));
1575+
// _debugPort->print(dataSpot);
1576+
// _debugPort->print(F(" incoming: 0x"));
1577+
// _debugPort->println(incoming, HEX);
1578+
// }
15521579
if (dataSpot < MAX_PACKET_SIZE)
15531580
{
15541581
shtpData[dataSpot++] = incoming; //Store data into the shtpData array

0 commit comments

Comments
 (0)