@@ -33,8 +33,9 @@ uint8_t AntPlusRouter::setDriver(BaseAntWithCallbacks* driver) {
3333 _ant->onEventFilter (onEventFilterCallback, (uintptr_t )this );
3434 _ant->onSelectiveDataUpdateMaskSetting (onSelectiveDataUpdateMaskSettingCallback, (uintptr_t )this );
3535 _ant->onStartUpMessage (onStartUpMessageCallback, (uintptr_t )this );
36- resetRadio (ANTPLUS_RESET_WAIT_FOR_STARTUP);
37- delay (1000 ); // TODO replace with lock waiting for startup
36+ if (resetRadio (ANTPLUS_RESET_WAIT_FOR_STARTUP)) {
37+ return ANTPLUS_RESET_RADIO_FAILED;
38+ }
3839 pushNetworkKey ();
3940 // get max channels
4041 return 0 ;
@@ -81,7 +82,7 @@ void AntPlusRouter::reset() {
8182 // reset system state
8283}
8384
84- void AntPlusRouter::resetRadio (uint8_t waitForStartup) {
85+ uint8_t AntPlusRouter::resetRadio (uint8_t waitForStartup) {
8586 ResetSystem rs;
8687 for (uint8_t i = 0 ; i < ANTPLUS_MAX_CHANNELS_POSSIBLE; i++) {
8788 if (_profiles[i]) {
@@ -91,8 +92,14 @@ void AntPlusRouter::resetRadio(uint8_t waitForStartup) {
9192 send (rs);
9293 _radioStarted = ANTPLUS_DRIVER_STATE_UNKNOWN;
9394 if (waitForStartup == ANTPLUS_RESET_WAIT_FOR_STARTUP) {
94- // TODO use driver wait for message once impletmented
95+ StartUpMessage sm = StartUpMessage ();
96+ if (_ant->waitFor (sm, ANTPLUS_DRIVER_RESET_TIMEOUT)) {
97+ onStartUpMessage (sm);
98+ } else {
99+ return ANTPLUS_RESET_RADIO_FAILED;
100+ }
95101 }
102+ return 0 ;
96103}
97104
98105void AntPlusRouter::onPacketError (uint8_t error) {
@@ -175,4 +182,5 @@ void AntPlusRouter::onSelectiveDataUpdateMaskSetting(SelectiveDataUpdateMaskSett
175182
176183void AntPlusRouter::onStartUpMessage (StartUpMessage& msg) {
177184 _radioStarted = ANTPLUS_DRIVER_STATE_STARTED;
185+ // TODO handle radio crash
178186}
0 commit comments