From b7e76fe20de5e36348055a57712d9c71d749360d Mon Sep 17 00:00:00 2001 From: Edwin Heerschap Date: Fri, 26 May 2023 09:26:40 +0930 Subject: [PATCH] fix: send_ack_packet no longer causes unexpected behaviour if the Shared_Data_sendData function fails. --- libraries/provisioning/provisioning.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/libraries/provisioning/provisioning.c b/libraries/provisioning/provisioning.c index b8da2270..da06d782 100644 --- a/libraries/provisioning/provisioning.c +++ b/libraries/provisioning/provisioning.c @@ -228,23 +228,25 @@ static uint32_t send_ack_packet(void) res = Shared_Data_sendData(&data_to_send, packet_sent_cb); if (res != APP_LIB_DATA_SEND_RES_SUCCESS) { - LOG(LVL_WARNING, "State WAIT_DATA : Error sending ACK (res:%d).", res); - return APP_SCHEDULER_SCHEDULE_ASAP; + LOG(LVL_WARNING, "State WAIT_DATA : Error sending ACK (res:%u).", res); + // Timeout immediately as the packet failed to send + m_timeout_ms = APP_SCHEDULER_SCHEDULE_ASAP; } else { /* Set a timeout in case the packets takes to much time - * to be sent. - */ + * to be sent. + */ m_timeout_ms = m_conf.timeout_s * 1000; - if (App_Scheduler_addTask_execTime(timeout_task, + } + + if (App_Scheduler_addTask_execTime(timeout_task, m_timeout_ms, 500) != APP_SCHEDULER_RES_OK) - { - reset_provisioning(); - m_conf.end_cb(PROV_RES_ERROR_INTERNAL); - LOG(LVL_ERROR, "State WAIT_DATA : Error adding task."); - } + { + reset_provisioning(); + m_conf.end_cb(PROV_RES_ERROR_INTERNAL); + LOG(LVL_ERROR, "State WAIT_DATA : Error adding task."); } return APP_SCHEDULER_STOP_TASK;