mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 03:00:34 +03:00
feat(802.15.4): introduced a feature for registering 802.15.4 ISR callbacks
This commit is contained in:
@@ -678,6 +678,32 @@ void esp_ieee802154_set_coex_config(esp_ieee802154_coex_config_t config);
|
||||
esp_ieee802154_coex_config_t esp_ieee802154_get_coex_config(void);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Register process callbacks for events generated by the IEEE 802.15.4 subsystem.
|
||||
*
|
||||
* @param[in] cb_list The event process callback list, please refer to `esp_ieee802154_event_cb_list_t`.
|
||||
*
|
||||
* @note This API should be called only when IEEE 802.15.4 subsystem is not enabled
|
||||
* or after IEEE 802.15.4 subsystem is disabled (refer to `esp_ieee802154_disable`).
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK on success.
|
||||
* - ESP_FAIL on failure.
|
||||
*/
|
||||
esp_err_t esp_ieee802154_event_callback_list_register(esp_ieee802154_event_cb_list_t cb_list);
|
||||
|
||||
/**
|
||||
* @brief Unregister process callbacks for events generated by the IEEE 802.15.4 subsystem.
|
||||
*
|
||||
* @note This API should be called only when IEEE 802.15.4 subsystem is not enabled
|
||||
* or after IEEE 802.15.4 subsystem is disabled (refer to `esp_ieee802154_disable`).
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK on success.
|
||||
* - ESP_FAIL on failure.
|
||||
*/
|
||||
esp_err_t esp_ieee802154_event_callback_list_unregister(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "esp_err.h"
|
||||
|
||||
#define US_PER_SYMBLE 16
|
||||
|
||||
@@ -83,6 +84,73 @@ typedef struct {
|
||||
uint64_t timestamp; /*!< The timestamp when the frame's SFD field was received */
|
||||
} esp_ieee802154_frame_info_t;
|
||||
|
||||
/**
|
||||
* @brief The O-QPSK PHY transmission power table for 2.4 GHz channels as defined by the IEEE 802.15.4 specification.
|
||||
*
|
||||
*/
|
||||
typedef struct {
|
||||
int8_t channel[16]; /*!< Index 0 -> Channel 11, Index 1 -> Channel 12 ... Index 15 -> Channel 26 */
|
||||
} esp_ieee802154_txpower_table_t;
|
||||
|
||||
// These callbacks will be processed in ISR context, please locate them in IRAM, see `IRAM_ATTR`.
|
||||
/**
|
||||
* @brief The callback to process Rx Done event, refer to `esp_ieee802154_receive_done`.
|
||||
*
|
||||
*/
|
||||
typedef void (*esp_ieee802154_receive_done_cb_t)(uint8_t *data, esp_ieee802154_frame_info_t *frame_info);
|
||||
|
||||
/**
|
||||
* @brief The callback to process Rx SFD Done event, refer to `esp_ieee802154_receive_sfd_done`.
|
||||
*
|
||||
*/
|
||||
typedef void (*esp_ieee802154_receive_sfd_done_cb_t)(void);
|
||||
|
||||
/**
|
||||
* @brief The callback to process Tx Done event, refer to `esp_ieee802154_transmit_done`.
|
||||
*
|
||||
*/
|
||||
typedef void (*esp_ieee802154_transmit_done_cb_t)(const uint8_t *frame, const uint8_t *ack, esp_ieee802154_frame_info_t *ack_frame_info);
|
||||
|
||||
/**
|
||||
* @brief The callback to process Tx Failed event, refer to `esp_ieee802154_transmit_failed`.
|
||||
*
|
||||
*/
|
||||
typedef void (*esp_ieee802154_transmit_failed_cb_t)(const uint8_t *frame, esp_ieee802154_tx_error_t error);
|
||||
|
||||
/**
|
||||
* @brief The callback to process Tx SFD Done event, refer to `esp_ieee802154_transmit_sfd_done`.
|
||||
*
|
||||
*/
|
||||
typedef void (*esp_ieee802154_transmit_sfd_done_cb_t)(uint8_t *frame);
|
||||
|
||||
/**
|
||||
* @brief The callback to process ED Done event, refer to `esp_ieee802154_energy_detect_done`.
|
||||
*
|
||||
*/
|
||||
typedef void (*esp_ieee802154_energy_detect_done_cb_t)(int8_t power);
|
||||
|
||||
/**
|
||||
* @brief The callback to process enh-ack generating, refer to `esp_ieee802154_enh_ack_generator`.
|
||||
*
|
||||
*/
|
||||
typedef esp_err_t (*esp_ieee802154_enh_ack_generator_cb_t)(uint8_t *frame, esp_ieee802154_frame_info_t *frame_info, uint8_t* enhack_frame);
|
||||
|
||||
/**
|
||||
* @brief The callback list for event process.
|
||||
*
|
||||
* @note These callbacks might be called in ISR context.
|
||||
*
|
||||
*/
|
||||
typedef struct {
|
||||
esp_ieee802154_receive_done_cb_t rx_done_cb; /*!<The callback to process Rx Done event */
|
||||
esp_ieee802154_receive_sfd_done_cb_t rx_sfd_done_cb; /*!<The callback to process Rx SFD Done event */
|
||||
esp_ieee802154_transmit_done_cb_t tx_done_cb; /*!<The callback to process Tx Done event */
|
||||
esp_ieee802154_transmit_failed_cb_t tx_failed_cb; /*!<The callback to process Tx Failed event */
|
||||
esp_ieee802154_transmit_sfd_done_cb_t tx_sfd_done_cb; /*!<The callback to process Tx SFD Done event */
|
||||
esp_ieee802154_energy_detect_done_cb_t ed_done_cb; /*!<The callback to process ED Done event */
|
||||
esp_ieee802154_enh_ack_generator_cb_t enh_ack_generator_cb; /*!<The callback to process enh-ack generating */
|
||||
} esp_ieee802154_event_cb_list_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user