Added multiple attempts to send a message
This commit is contained in:
@ -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));
|
||||
|
Reference in New Issue
Block a user