@@ -1336,15 +1336,22 @@ void BNO080::saveCalibration()
1336
1336
// This function _should_ be unnecessary but communication with the BNO080 stalls without it...
1337
1337
boolean BNO080::waitForI2C (size_t expectedLength)
1338
1338
{
1339
+ size_t i2cAvailable;
1340
+
1339
1341
for (uint8_t counter = 0 ; counter < 100 ; counter++) // Don't got more than 255
1340
1342
{
1341
- if (_i2cPort->available () >= expectedLength) // Greater than should be impossible...
1343
+ i2cAvailable = _i2cPort->available ();
1344
+ if (i2cAvailable >= expectedLength) // Greater than should be impossible...
1342
1345
return (true );
1343
1346
delay (1 );
1344
1347
}
1345
1348
1346
1349
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" ));
1348
1355
return (false );
1349
1356
}
1350
1357
@@ -1432,7 +1439,13 @@ boolean BNO080::receivePacket(void)
1432
1439
uint8_t packetMSB = _i2cPort->read ();
1433
1440
uint8_t channelNumber = _i2cPort->read ();
1434
1441
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
+ // }
1436
1449
// Store the header info.
1437
1450
shtpHeader[0 ] = packetLSB;
1438
1451
shtpHeader[1 ] = packetMSB;
@@ -1505,6 +1518,13 @@ boolean BNO080::getData(uint16_t bytesRemaining, uint8_t channelNumber, uint8_t
1505
1518
uint8_t packetMSB = _i2cPort->read ();
1506
1519
uint8_t thisChannelNumber = _i2cPort->read ();
1507
1520
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
+ // }
1508
1528
1509
1529
// Calculate the number of data bytes in this packet
1510
1530
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
1549
1569
for (uint8_t x = 0 ; x < numberOfBytesToRead; x++)
1550
1570
{
1551
1571
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
+ // }
1552
1579
if (dataSpot < MAX_PACKET_SIZE)
1553
1580
{
1554
1581
shtpData[dataSpot++] = incoming; // Store data into the shtpData array
0 commit comments