Added multiple attempts to send a message

This commit is contained in:
2024-06-12 10:44:04 +03:00
parent 660f516ae2
commit 1fa7ab2822
2 changed files with 12 additions and 1 deletions

View File

@ -32,6 +32,7 @@ static zh_vector_t _response_vector = {0};
static uint8_t _self_mac[6] = {0};
static const uint8_t _broadcast_mac[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
static bool _is_initialized = false;
static uint8_t _attempts = 0;
/// \cond
typedef struct
@ -401,6 +402,8 @@ static void _processing(void *pvParameter)
}
memset(on_send, 0, sizeof(zh_network_event_on_send_t));
memcpy(on_send->mac_addr, queue.data.original_target_mac, 6);
SEND:
++_attempts;
if (esp_now_send((uint8_t *)peer->peer_addr, (uint8_t *)&queue.data, sizeof(_queue_t) - 12) != ESP_OK)
{
ESP_LOGE(TAG, "ESP-NOW message processing task internal error at line %d.", __LINE__);
@ -411,6 +414,7 @@ static void _processing(void *pvParameter)
EventBits_t bit = xEventGroupWaitBits(_event_group_handle, DATA_SEND_SUCCESS | DATA_SEND_FAIL, pdTRUE, pdFALSE, 50 / portTICK_PERIOD_MS);
if ((bit & DATA_SEND_SUCCESS) != 0)
{
_attempts = 0;
if (memcmp(queue.data.original_sender_mac, _self_mac, 6) == 0)
{
if (queue.data.message_type == BROADCAST)
@ -482,6 +486,11 @@ static void _processing(void *pvParameter)
}
else
{
if (_attempts < _init_config.attempts)
{
goto SEND;
}
_attempts = 0;
if (memcmp(queue.data.original_target_mac, _broadcast_mac, 6) != 0)
{
ESP_LOGI(TAG, "Routing to MAC %02X:%02X:%02X:%02X:%02X:%02X via MAC %02X:%02X:%02X:%02X:%02X:%02X is incorrect.", MAC2STR(queue.data.original_target_mac), MAC2STR(peer->peer_addr));