From e506888ef09a23440d71b3f59067afbe84259c40 Mon Sep 17 00:00:00 2001 From: Florent Duchon Date: Tue, 23 Apr 2013 23:22:21 +0200 Subject: digital/zigbit/common: fix zigbit stack hangs when loosing network --- digital/zigbit/common/network.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'digital/zigbit') diff --git a/digital/zigbit/common/network.c b/digital/zigbit/common/network.c index dccbd5d7..a1dddd57 100644 --- a/digital/zigbit/common/network.c +++ b/digital/zigbit/common/network.c @@ -231,6 +231,8 @@ void APS_DataConf(APS_DataConf_t* confInfo) if (MAX_RETRIES_BEFORE_REJOIN == retryCounter) { + uprintf("!!! Too much failed transfert. You are now disconnected from the network %d\r\n",retryCounter); + retryCounter = 0; network_leave(); network_set_transmission_state(APP_DATA_TRANSMISSION_READY_STATE); network_set_state(APP_NETWORK_JOIN_REQUEST); @@ -238,16 +240,16 @@ void APS_DataConf(APS_DataConf_t* confInfo) else { /* Data not delivered, resend.*/ + network_set_transmission_state(APP_DATA_TRANSMISSION_SENDING_STATE); network_start_transmission(); } - return; } else { network_set_transmission_state(APP_DATA_TRANSMISSION_READY_STATE); network_specific_DataConfcallback(); + retryCounter = 0; } - retryCounter = 0; } @@ -255,7 +257,7 @@ void APS_DataConf(APS_DataConf_t* confInfo) void network_start_transmission(void) { /* Check the transmission state and send if ready */ - if(network_get_transmission_state() == APP_DATA_TRANSMISSION_READY_STATE) + if((network_get_transmission_state() == APP_DATA_TRANSMISSION_READY_STATE)||(network_get_transmission_state() == APP_DATA_TRANSMISSION_SENDING_STATE)) { network_set_transmission_state(APP_DATA_TRANSMISSION_BUSY_STATE); APS_DataReq(&network_config); -- cgit v1.2.3