diff --git a/libraries/Bridge/src/Bridge.cpp b/libraries/Bridge/src/Bridge.cpp index 7e4ee02c8..c772dee8e 100644 --- a/libraries/Bridge/src/Bridge.cpp +++ b/libraries/Bridge/src/Bridge.cpp @@ -57,9 +57,9 @@ void BridgeClass::begin() { // Reset the brigde to check if it is running uint8_t cmd[] = {'X', 'X', '1', '0', '0'}; - uint8_t res[1]; + uint8_t res[4]; max_retries = 50; - uint16_t l = transfer(cmd, 5, res, 1); + uint16_t l = transfer(cmd, 5, res, 4); if (l == TRANSFER_TIMEOUT) { // Bridge didn't start... // Maybe the board is starting-up? @@ -71,6 +71,14 @@ void BridgeClass::begin() { if (res[0] != 0) while (true); + // Detect bridge version + if (l == 4) { + bridgeVersion = (res[1]-'0')*100 + (res[2]-'0')*10 + (res[3]-'0'); + } else { + // Bridge v1.0.0 didn't send any version info + bridgeVersion = 100; + } + max_retries = 50; return; } diff --git a/libraries/Bridge/src/Bridge.h b/libraries/Bridge/src/Bridge.h index c13ae6d34..36cf26cb0 100644 --- a/libraries/Bridge/src/Bridge.h +++ b/libraries/Bridge/src/Bridge.h @@ -61,12 +61,18 @@ class BridgeClass { return transfer(buff1, len1, buff2, len2, NULL, 0, rxbuff, rxlen); } + uint16_t getBridgeVersion() + { + return bridgeVersion; + } + static const int TRANSFER_TIMEOUT = 0xFFFF; private: uint8_t index; int timedRead(unsigned int timeout); void dropAll(); + uint16_t bridgeVersion; private: void crcUpdate(uint8_t c);