From 1613f032ffa69174ca79b82e8b54d31b3bfcec6c Mon Sep 17 00:00:00 2001 From: Vianney Boyer Date: Sat, 22 Aug 2015 21:03:40 +0200 Subject: [PATCH] fix ANT device reset requence --- src/ANT.cpp | 19 ++++++++++++++++--- src/ANT.h | 2 ++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/ANT.cpp b/src/ANT.cpp index 1e422eab7..473b83be6 100644 --- a/src/ANT.cpp +++ b/src/ANT.cpp @@ -427,10 +427,20 @@ ANT::setup() // fixme: better synchronisation? msleep(500); - sendMessage(ANTMessage::resetSystem()); + uint8_t attempts = 0; + do + { + ANT_Reset_Acknowledge = false; + sendMessage(ANTMessage::resetSystem()); - // specs say wait 500ms after reset before sending any more host commands - msleep(500); + // specs say wait 500ms after reset before sending any more host commands + msleep(500); + + if (!ANT_Reset_Acknowledge) + qDebug() << "ANT device reset was not acknowledged !...try again"; +// else +// qDebug() << "ANT device reset successful !"; + } while (!ANT_Reset_Acknowledge && attempts++<3); sendMessage(ANTMessage::setNetworkKey(1, key)); @@ -885,6 +895,9 @@ ANT::processMessage(void) { emit receivedAntMessage(m, timestamp); switch (rxMessage[ANT_OFFSET_ID]) { + case ANT_NOTIF_STARTUP: + ANT_Reset_Acknowledge = true; + break; case ANT_ACK_DATA: case ANT_BROADCAST_DATA: case ANT_CHANNEL_STATUS: diff --git a/src/ANT.h b/src/ANT.h index 9e04e5649..3854b1d43 100644 --- a/src/ANT.h +++ b/src/ANT.h @@ -165,6 +165,7 @@ struct setChannelAtom { #define ANT_VERSION 0x3E #define ANT_CAPABILITIES 0x54 #define ANT_SERIAL_NUMBER 0x61 +#define ANT_NOTIF_STARTUP 0x6F #define ANT_CW_INIT 0x53 #define ANT_CW_TEST 0x48 @@ -530,6 +531,7 @@ private: QTime elapsedTime; #endif + bool ANT_Reset_Acknowledge; unsigned char rxMessage[ANT_MAX_MESSAGE_SIZE]; // state machine whilst receiving bytes