@@ -56,6 +56,22 @@ boolean BNO080::begin(uint8_t deviceAddress, TwoWire &wirePort, uint8_t intPin)
56
56
{
57
57
if (shtpData[0 ] == SHTP_REPORT_PRODUCT_ID_RESPONSE)
58
58
{
59
+ if (_printDebug == true )
60
+ {
61
+ _debugPort->print (F (" SW Version Major: 0x" ));
62
+ _debugPort->print (shtpData[2 ], HEX);
63
+ _debugPort->print (F (" SW Version Minor: 0x" ));
64
+ _debugPort->print (shtpData[3 ], HEX);
65
+ uint32_t SW_Part_Number = ((uint32_t )shtpData[7 ] << 24 ) | ((uint32_t )shtpData[6 ] << 16 ) | ((uint32_t )shtpData[5 ] << 8 ) | ((uint32_t )shtpData[4 ]);
66
+ _debugPort->print (F (" SW Part Number: 0x" ));
67
+ _debugPort->print (SW_Part_Number, HEX);
68
+ uint32_t SW_Build_Number = ((uint32_t )shtpData[11 ] << 24 ) | ((uint32_t )shtpData[10 ] << 16 ) | ((uint32_t )shtpData[9 ] << 8 ) | ((uint32_t )shtpData[8 ]);
69
+ _debugPort->print (F (" SW Build Number: 0x" ));
70
+ _debugPort->print (SW_Build_Number, HEX);
71
+ uint16_t SW_Version_Patch = ((uint16_t )shtpData[13 ] << 8 ) | ((uint16_t )shtpData[12 ]);
72
+ _debugPort->print (F (" SW Version Patch: 0x" ));
73
+ _debugPort->println (SW_Version_Patch, HEX);
74
+ }
59
75
return (true );
60
76
}
61
77
}
@@ -123,6 +139,22 @@ boolean BNO080::beginSPI(uint8_t user_CSPin, uint8_t user_WAKPin, uint8_t user_I
123
139
if (receivePacket () == true )
124
140
{
125
141
if (shtpData[0 ] == SHTP_REPORT_PRODUCT_ID_RESPONSE)
142
+ if (_printDebug == true )
143
+ {
144
+ _debugPort->print (F (" SW Version Major: 0x" ));
145
+ _debugPort->print (shtpData[2 ], HEX);
146
+ _debugPort->print (F (" SW Version Minor: 0x" ));
147
+ _debugPort->print (shtpData[3 ], HEX);
148
+ uint32_t SW_Part_Number = ((uint32_t )shtpData[7 ] << 24 ) | ((uint32_t )shtpData[6 ] << 16 ) | ((uint32_t )shtpData[5 ] << 8 ) | ((uint32_t )shtpData[4 ]);
149
+ _debugPort->print (F (" SW Part Number: 0x" ));
150
+ _debugPort->print (SW_Part_Number, HEX);
151
+ uint32_t SW_Build_Number = ((uint32_t )shtpData[11 ] << 24 ) | ((uint32_t )shtpData[10 ] << 16 ) | ((uint32_t )shtpData[9 ] << 8 ) | ((uint32_t )shtpData[8 ]);
152
+ _debugPort->print (F (" SW Build Number: 0x" ));
153
+ _debugPort->print (SW_Build_Number, HEX);
154
+ uint16_t SW_Version_Patch = ((uint16_t )shtpData[13 ] << 8 ) | ((uint16_t )shtpData[12 ]);
155
+ _debugPort->print (F (" SW Version Patch: 0x" ));
156
+ _debugPort->println (SW_Version_Patch, HEX);
157
+ }
126
158
return (true );
127
159
}
128
160
@@ -346,13 +378,19 @@ void BNO080::parseInputReport(void)
346
378
}
347
379
else if (shtpData[5 ] == SHTP_REPORT_COMMAND_RESPONSE)
348
380
{
349
- Serial.println (" !" );
381
+ if (_printDebug == true )
382
+ {
383
+ _debugPort->println (F (" !" ));
384
+ }
350
385
// The BNO080 responds with this report to command requests. It's up to use to remember which command we issued.
351
386
uint8_t command = shtpData[5 + 2 ]; // This is the Command byte of the response
352
387
353
388
if (command == COMMAND_ME_CALIBRATE)
354
389
{
355
- Serial.println (" ME Cal report found!" );
390
+ if (_printDebug == true )
391
+ {
392
+ _debugPort->println (F (" ME Cal report found!" ));
393
+ }
356
394
calibrationStatus = shtpData[5 + 5 ]; // R0 - Status (0 = success, non-zero = fail)
357
395
}
358
396
}
@@ -1231,6 +1269,7 @@ boolean BNO080::receivePacket(void)
1231
1269
if (dataLength == 0 )
1232
1270
{
1233
1271
// Packet is empty
1272
+ printHeader ();
1234
1273
return (false ); // All done
1235
1274
}
1236
1275
dataLength -= 4 ; // Remove the header bytes from the data count
@@ -1246,7 +1285,7 @@ boolean BNO080::receivePacket(void)
1246
1285
digitalWrite (_cs, HIGH); // Release BNO080
1247
1286
1248
1287
_spiPort->endTransaction ();
1249
- printPacket ();
1288
+ printPacket ();
1250
1289
}
1251
1290
else // Do I2C
1252
1291
{
@@ -1443,3 +1482,21 @@ void BNO080::printPacket(void)
1443
1482
_debugPort->println ();
1444
1483
}
1445
1484
}
1485
+
1486
+ // Pretty prints the contents of the current shtp header (only)
1487
+ void BNO080::printHeader (void )
1488
+ {
1489
+ if (_printDebug == true )
1490
+ {
1491
+ // Print the four byte header
1492
+ _debugPort->print (F (" Header:" ));
1493
+ for (uint8_t x = 0 ; x < 4 ; x++)
1494
+ {
1495
+ _debugPort->print (F (" " ));
1496
+ if (shtpHeader[x] < 0x10 )
1497
+ _debugPort->print (F (" 0" ));
1498
+ _debugPort->print (shtpHeader[x], HEX);
1499
+ }
1500
+ _debugPort->println ();
1501
+ }
1502
+ }
0 commit comments