Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
af7fa204e1 | |||
f4ecd08e45 |
@ -16,7 +16,8 @@
|
||||
.queue_size = 64, \
|
||||
.wifi_interface = WIFI_IF_STA, \
|
||||
.wifi_channel = 1, \
|
||||
.attempts = 3}
|
||||
.attempts = 3, \
|
||||
.battery_mode = false}
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
@ -31,6 +32,7 @@ extern "C"
|
||||
wifi_interface_t wifi_interface; // WiFi interface (STA or AP) used for ESP-NOW operation. @note The MAC address of the device depends on the selected WiFi interface.
|
||||
uint8_t wifi_channel; // Wi-Fi channel uses to send/receive ESP-NOW data. @note Values from 1 to 14.
|
||||
uint8_t attempts; // Maximum number of attempts to send a message. @note It is not recommended to set a value greater than 5.
|
||||
bool battery_mode; // Battery operation mode. If true, the node does not receive messages.
|
||||
} zh_espnow_init_config_t;
|
||||
|
||||
ESP_EVENT_DECLARE_BASE(ZH_ESPNOW);
|
||||
@ -106,7 +108,7 @@ extern "C"
|
||||
|
||||
/**
|
||||
* @brief Get ESP-NOW version.
|
||||
*
|
||||
*
|
||||
* @return
|
||||
* - ESP-NOW version
|
||||
*/
|
||||
|
@ -1 +1 @@
|
||||
1.2.0
|
||||
1.3.1
|
26
zh_espnow.c
26
zh_espnow.c
@ -73,13 +73,28 @@ esp_err_t zh_espnow_init(const zh_espnow_init_config_t *config)
|
||||
ESP_LOGW(TAG, "ESP-NOW initialization warning. The device is connected to the router. Channel %d will be used for ESP-NOW.", prim);
|
||||
}
|
||||
}
|
||||
#if defined CONFIG_IDF_TARGET_ESP8266 || CONFIG_IDF_TARGET_ESP32C2
|
||||
esp_wifi_set_protocol(_init_config.wifi_interface, WIFI_PROTOCOL_11B);
|
||||
#else
|
||||
esp_wifi_set_protocol(_init_config.wifi_interface, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_LR);
|
||||
#endif
|
||||
_event_group_handle = xEventGroupCreate();
|
||||
_queue_handle = xQueueCreate(_init_config.queue_size, sizeof(_queue_t));
|
||||
if (esp_now_init() != ESP_OK || esp_now_register_send_cb(_send_cb) != ESP_OK || esp_now_register_recv_cb(_recv_cb) != ESP_OK)
|
||||
if (_init_config.battery_mode == false)
|
||||
{
|
||||
ESP_LOGE(TAG, "ESP-NOW initialization fail. Internal error at line %d.", __LINE__);
|
||||
return ESP_FAIL;
|
||||
if (esp_now_init() != ESP_OK || esp_now_register_send_cb(_send_cb) != ESP_OK || esp_now_register_recv_cb(_recv_cb) != ESP_OK)
|
||||
{
|
||||
ESP_LOGE(TAG, "ESP-NOW initialization fail. Internal error at line %d.", __LINE__);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (esp_now_init() != ESP_OK || esp_now_register_send_cb(_send_cb) != ESP_OK)
|
||||
{
|
||||
ESP_LOGE(TAG, "ESP-NOW initialization fail. Internal error at line %d.", __LINE__);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
}
|
||||
if (xTaskCreatePinnedToCore(&_processing, "zh_espnow_processing", _init_config.stack_size, NULL, _init_config.task_priority, &_processing_task_handle, tskNO_AFFINITY) != pdPASS)
|
||||
{
|
||||
@ -102,7 +117,10 @@ esp_err_t zh_espnow_deinit(void)
|
||||
vEventGroupDelete(_event_group_handle);
|
||||
vQueueDelete(_queue_handle);
|
||||
esp_now_unregister_send_cb();
|
||||
esp_now_unregister_recv_cb();
|
||||
if (_init_config.battery_mode == false)
|
||||
{
|
||||
esp_now_unregister_recv_cb();
|
||||
}
|
||||
esp_now_deinit();
|
||||
vTaskDelete(_processing_task_handle);
|
||||
_is_initialized = false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user