-
Notifications
You must be signed in to change notification settings - Fork 7.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'feature/154_api_enhancement_for_mp_v5.1' into 'release/…
…v5.1' feat(802.15.4): support register isr callback (v5.1) See merge request espressif/esp-idf!36201
- Loading branch information
Showing
9 changed files
with
326 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
/* | ||
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
#include <string.h> | ||
#include "esp_check.h" | ||
#include "esp_ieee802154_dev.h" | ||
#include "esp_ieee802154_event.h" | ||
#include "esp_ieee802154_types.h" | ||
#include "esp_ieee802154_util.h" | ||
|
||
static esp_ieee802154_event_cb_list_t s_event_cb_list; | ||
|
||
esp_err_t ieee802154_event_callback_list_register(esp_ieee802154_event_cb_list_t cb_list) | ||
{ | ||
ESP_RETURN_ON_FALSE(!ieee802154_mac_is_inited(), ESP_FAIL, IEEE802154_TAG, | ||
"The event callback register function should be called when the IEEE 802.15.4 subsystem is disabled"); | ||
memcpy((void*)(&s_event_cb_list), (void*)(&cb_list), sizeof(esp_ieee802154_event_cb_list_t)); | ||
return ESP_OK; | ||
} | ||
esp_err_t ieee802154_event_callback_list_unregister(void) | ||
{ | ||
ESP_RETURN_ON_FALSE(!ieee802154_mac_is_inited(), ESP_FAIL, IEEE802154_TAG, | ||
"The event callback unregister function should be called when the IEEE 802.15.4 subsystem is disabled"); | ||
memset((void*)(&s_event_cb_list), 0, sizeof(esp_ieee802154_event_cb_list_t)); | ||
return ESP_OK; | ||
} | ||
|
||
void ieee802154_inner_receive_done(uint8_t *data, esp_ieee802154_frame_info_t *frame_info) | ||
{ | ||
if (s_event_cb_list.rx_done_cb) { | ||
s_event_cb_list.rx_done_cb(data, frame_info); | ||
} else { | ||
esp_ieee802154_receive_done(data, frame_info); | ||
} | ||
} | ||
|
||
void ieee802154_inner_receive_sfd_done(void) | ||
{ | ||
if (s_event_cb_list.rx_sfd_done_cb) { | ||
s_event_cb_list.rx_sfd_done_cb(); | ||
} else { | ||
esp_ieee802154_receive_sfd_done(); | ||
} | ||
} | ||
|
||
void ieee802154_inner_transmit_done(const uint8_t *frame, const uint8_t *ack, esp_ieee802154_frame_info_t *ack_frame_info) | ||
{ | ||
if (s_event_cb_list.tx_done_cb) { | ||
s_event_cb_list.tx_done_cb(frame, ack, ack_frame_info); | ||
} else { | ||
esp_ieee802154_transmit_done(frame, ack, ack_frame_info); | ||
} | ||
} | ||
|
||
void ieee802154_inner_transmit_failed(const uint8_t *frame, esp_ieee802154_tx_error_t error) | ||
{ | ||
if (s_event_cb_list.tx_failed_cb) { | ||
s_event_cb_list.tx_failed_cb(frame, error); | ||
} else { | ||
esp_ieee802154_transmit_failed(frame, error); | ||
} | ||
} | ||
|
||
void ieee802154_inner_transmit_sfd_done(uint8_t *frame) | ||
{ | ||
if (s_event_cb_list.tx_sfd_done_cb) { | ||
s_event_cb_list.tx_sfd_done_cb(frame); | ||
} else { | ||
esp_ieee802154_transmit_sfd_done(frame); | ||
} | ||
} | ||
|
||
void ieee802154_inner_energy_detect_done(int8_t power) | ||
{ | ||
if (s_event_cb_list.ed_done_cb) { | ||
s_event_cb_list.ed_done_cb(power); | ||
} else { | ||
esp_ieee802154_energy_detect_done(power); | ||
} | ||
} | ||
|
||
esp_err_t ieee802154_inner_enh_ack_generator(uint8_t *frame, esp_ieee802154_frame_info_t *frame_info, uint8_t* enhack_frame) | ||
{ | ||
esp_err_t err = ESP_FAIL; | ||
if (s_event_cb_list.enh_ack_generator_cb) { | ||
err = s_event_cb_list.enh_ack_generator_cb(frame, frame_info, enhack_frame); | ||
} else { | ||
err = esp_ieee802154_enh_ack_generator(frame, frame_info, enhack_frame); | ||
} | ||
return err; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.