kopia lustrzana https://github.com/espressif/esp-idf
feat(802154): log `buffer full` message in debug mode only
rodzic
3fd3c37507
commit
10f0077baf
|
@ -12,7 +12,6 @@
|
|||
|
||||
#if CONFIG_IEEE802154_DEBUG
|
||||
ieee802154_probe_info_t g_ieee802154_probe;
|
||||
#define TAG "ieee802154_debug"
|
||||
|
||||
#if CONFIG_IEEE802154_RECORD_EVENT
|
||||
static char *ieee802154_get_event_string(ieee802154_ll_event_t events)
|
||||
|
@ -176,7 +175,7 @@ static char *ieee80154_tx_abort_reason_string[] = {
|
|||
void ieee802154_assert_print(void)
|
||||
{
|
||||
#if CONFIG_IEEE802154_RECORD_EVENT
|
||||
ESP_EARLY_LOGW(TAG, "Print the record event, current event index: %d", g_ieee802154_probe.event_index);
|
||||
ESP_EARLY_LOGW(IEEE802154_TAG, "Print the record event, current event index: %d", g_ieee802154_probe.event_index);
|
||||
for (uint8_t i = 0; i < IEEE802154_ASSERT_RECORD_EVENT_SIZE; i++) {
|
||||
char event_log[200] = { 0 };
|
||||
char abort_log[100] = { 0 };
|
||||
|
@ -191,49 +190,49 @@ void ieee802154_assert_print(void)
|
|||
snprintf(abort_log, 100, "tx abort reason: %4x, %20s", g_ieee802154_probe.event[i].abort_reason.tx,
|
||||
ieee80154_tx_abort_reason_string[g_ieee802154_probe.event[i].abort_reason.tx]);
|
||||
}
|
||||
ESP_EARLY_LOGW(TAG, "%s %s", event_log, abort_log);
|
||||
ESP_EARLY_LOGW(IEEE802154_TAG, "%s %s", event_log, abort_log);
|
||||
}
|
||||
ESP_EARLY_LOGW(TAG,"Print the record event done.\n");
|
||||
ESP_EARLY_LOGW(IEEE802154_TAG,"Print the record event done.");
|
||||
#endif // CONFIG_IEEE802154_RECORD_EVENT
|
||||
|
||||
#if CONFIG_IEEE802154_RECORD_STATE
|
||||
ESP_EARLY_LOGW(TAG, "Print the record state, current state index: %d", g_ieee802154_probe.state_index);
|
||||
ESP_EARLY_LOGW(IEEE802154_TAG, "Print the record state, current state index: %d", g_ieee802154_probe.state_index);
|
||||
for (uint8_t i = 0; i < IEEE802154_ASSERT_RECORD_STATE_SIZE; i++) {
|
||||
ESP_EARLY_LOGW(TAG, "index %2d: line:%5s, state:%10s, timestamp: %lld",
|
||||
ESP_EARLY_LOGW(IEEE802154_TAG, "index %2d: line:%5s, state:%10s, timestamp: %lld",
|
||||
i, g_ieee802154_probe.state[i].line_str,
|
||||
ieee802154_state_string[g_ieee802154_probe.state[i].state],
|
||||
g_ieee802154_probe.state[i].timestamp);
|
||||
}
|
||||
ESP_EARLY_LOGW(TAG,"Print the record state done.\n");
|
||||
ESP_EARLY_LOGW(IEEE802154_TAG,"Print the record state done.");
|
||||
#endif // CONFIG_IEEE802154_RECORD_STATE
|
||||
|
||||
#if CONFIG_IEEE802154_RECORD_CMD
|
||||
ESP_EARLY_LOGW(TAG, "Print the record cmd, current cmd index: %d", g_ieee802154_probe.cmd_index);
|
||||
ESP_EARLY_LOGW(IEEE802154_TAG, "Print the record cmd, current cmd index: %d", g_ieee802154_probe.cmd_index);
|
||||
for (uint8_t i = 0; i < IEEE802154_ASSERT_RECORD_CMD_SIZE; i++) {
|
||||
ESP_EARLY_LOGW(TAG, "index %2d: line:%5s, cmd:%10s, timestamp: %lld",
|
||||
ESP_EARLY_LOGW(IEEE802154_TAG, "index %2d: line:%5s, cmd:%10s, timestamp: %lld",
|
||||
i, g_ieee802154_probe.cmd[i].line_str,
|
||||
ieee802154_get_cmd_string(g_ieee802154_probe.cmd[i].cmd),
|
||||
g_ieee802154_probe.cmd[i].timestamp);
|
||||
}
|
||||
ESP_EARLY_LOGW(TAG,"Print the record cmd done.\n");
|
||||
ESP_EARLY_LOGW(IEEE802154_TAG,"Print the record cmd done.");
|
||||
#endif // CONFIG_IEEE802154_RECORD_CMD
|
||||
|
||||
#if CONFIG_IEEE802154_RECORD_ABORT
|
||||
ESP_EARLY_LOGW(TAG, "Print the record abort, current abort index: %d", g_ieee802154_probe.abort_index);
|
||||
ESP_EARLY_LOGW(IEEE802154_TAG, "Print the record abort, current abort index: %d", g_ieee802154_probe.abort_index);
|
||||
for (uint8_t i = 0; i < IEEE802154_ASSERT_RECORD_ABORT_SIZE; i++) {
|
||||
if (g_ieee802154_probe.abort[i].is_tx_abort) {
|
||||
ESP_EARLY_LOGW(TAG, "index %2d: tx abort: %4x, %15s, timestamp: %lld",
|
||||
ESP_EARLY_LOGW(IEEE802154_TAG, "index %2d: tx abort: %4x, %15s, timestamp: %lld",
|
||||
i, g_ieee802154_probe.abort[i].abort_reason.tx,
|
||||
ieee80154_tx_abort_reason_string[g_ieee802154_probe.abort[i].abort_reason.tx],
|
||||
g_ieee802154_probe.abort[i].timestamp);
|
||||
} else {
|
||||
ESP_EARLY_LOGW(TAG, "index %2d: rx abort: %4x, %15s, timestamp: %lld",
|
||||
ESP_EARLY_LOGW(IEEE802154_TAG, "index %2d: rx abort: %4x, %15s, timestamp: %lld",
|
||||
i, g_ieee802154_probe.abort[i].abort_reason.rx,
|
||||
ieee80154_rx_abort_reason_string[g_ieee802154_probe.abort[i].abort_reason.rx],
|
||||
g_ieee802154_probe.abort[i].timestamp);
|
||||
}
|
||||
}
|
||||
ESP_EARLY_LOGW(TAG,"Print the record abort done.\n");
|
||||
ESP_EARLY_LOGW(IEEE802154_TAG,"Print the record abort done.");
|
||||
#endif // CONFIG_IEEE802154_RECORD_ABORT
|
||||
}
|
||||
#endif // CONFIG_IEEE802154_ASSERT
|
||||
|
@ -330,43 +329,43 @@ void ieee802154_txrx_statistic_print(void)
|
|||
uint64_t rx_success_nums = s_ieee802154_txrx_statistic.rx.done_nums - s_ieee802154_txrx_statistic.rx.abort.tx_ack_coex_break_nums;
|
||||
|
||||
|
||||
ESP_LOGW(TAG, "+--------------------+-----------------------------------+--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-10s%-15llu%9.2f%%|%-25s%-15llu%9.2f%%|", "", "Done:", s_ieee802154_txrx_statistic.tx.done_nums, tx_done_ratio*100, "Success:", tx_success_nums, tx_success_ratio*100);
|
||||
ESP_LOGW(TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-35s|%-25s%-15llu%9.2f%%|", "", "", "tx_direct_num:", tx_direct_num, tx_direct_num_ratio*100);
|
||||
ESP_LOGW(TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-35s|%-25s%-15llu%9.2f%%|", "", "", "tx_deferred_num:", s_ieee802154_txrx_statistic.tx.deferred_nums, tx_deferred_num_ratio*100);
|
||||
ESP_LOGW(TAG, "+ +-----------------------------------+--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-35s|%-25s%-15llu%9.2f%%|", "", "", "rx_ack_coex_break:", s_ieee802154_txrx_statistic.tx.abort.rx_ack_coex_break_nums, tx_abort_rx_ack_coex_break_ratio*100);
|
||||
ESP_LOGW(TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-35s|%-25s%-15llu%9.2f%%|", "", "", "rx_ack_timeout:", s_ieee802154_txrx_statistic.tx.abort.rx_ack_timeout_nums, tx_abort_rx_ack_timeout_ratio*100);
|
||||
ESP_LOGW(TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-5s%-15llu|%-10s%-15llu%9.2f%%|%-25s%-15llu%9.2f%%|", "TX:", s_ieee802154_txrx_statistic.tx.nums, "Abort", tx_abort_nums, tx_abort_ratio*100, "tx_coex_break:", s_ieee802154_txrx_statistic.tx.abort.tx_coex_break_nums, tx_abort_tx_coex_break_ratio*100);
|
||||
ESP_LOGW(TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-35s|%-25s%-15llu%9.2f%%|", "", "", "tx_security_error:", s_ieee802154_txrx_statistic.tx.abort.tx_security_error_nums, tx_abort_tx_security_error_ratio*100);
|
||||
ESP_LOGW(TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-35s|%-25s%-15llu%9.2f%%|", "", "", "cca_failed:", s_ieee802154_txrx_statistic.tx.abort.cca_failed_nums, tx_abort_cca_failed_ratio*100);
|
||||
ESP_LOGW(TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-35s|%-25s%-15llu%9.2f%%|", "", "", "cca_busy:", s_ieee802154_txrx_statistic.tx.abort.cca_busy_nums, tx_abort_cca_busy_ratio*100);
|
||||
ESP_LOGW(TAG, "+--------------------+-----------------------------------+--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-10s%-25llu|%-25s%-25llu|", "", "Done:", s_ieee802154_txrx_statistic.rx.done_nums, "Success:", rx_success_nums);
|
||||
ESP_LOGW(TAG, "+ +-----------------------------------+--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-35s|%-25s%-25llu|", "", "", "tx_ack_coex_break:", s_ieee802154_txrx_statistic.rx.abort.tx_ack_coex_break_nums);
|
||||
ESP_LOGW(TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-35s|%-25s%-25llu|", "", "", "sfd_timeout:", s_ieee802154_txrx_statistic.rx.abort.sfd_timeout_nums);
|
||||
ESP_LOGW(TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-35s|%-25s%-25llu|", "", "", "crc_error:", s_ieee802154_txrx_statistic.rx.abort.crc_error_nums);
|
||||
ESP_LOGW(TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-10s%-25llu|%-25s%-25llu|", "RX", "Abort", rx_abort_nums, "filter_fail:", s_ieee802154_txrx_statistic.rx.abort.filter_fail_nums);
|
||||
ESP_LOGW(TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-35s|%-25s%-25llu|", "", "", "no_rss:", s_ieee802154_txrx_statistic.rx.abort.no_rss_nums);
|
||||
ESP_LOGW(TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-35s|%-25s%-25llu|", "", "", "rx_coex_break:", s_ieee802154_txrx_statistic.rx.abort.rx_coex_break_nums);
|
||||
ESP_LOGW(TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-35s|%-25s%-25llu|", "", "", "rx_restart:", s_ieee802154_txrx_statistic.rx.abort.rx_restart_nums);
|
||||
ESP_LOGW(TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(TAG, "|%-20s|%-35s|%-25s%-25llu|", "", "", "ed_abort:", s_ieee802154_txrx_statistic.rx.abort.ed_abort_nums);
|
||||
ESP_LOGW(TAG, "+--------------------+-----------------------------------+--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "+--------------------+-----------------------------------+--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-10s%-15llu%9.2f%%|%-25s%-15llu%9.2f%%|", "", "Done:", s_ieee802154_txrx_statistic.tx.done_nums, tx_done_ratio*100, "Success:", tx_success_nums, tx_success_ratio*100);
|
||||
ESP_LOGW(IEEE802154_TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-35s|%-25s%-15llu%9.2f%%|", "", "", "tx_direct_num:", tx_direct_num, tx_direct_num_ratio*100);
|
||||
ESP_LOGW(IEEE802154_TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-35s|%-25s%-15llu%9.2f%%|", "", "", "tx_deferred_num:", s_ieee802154_txrx_statistic.tx.deferred_nums, tx_deferred_num_ratio*100);
|
||||
ESP_LOGW(IEEE802154_TAG, "+ +-----------------------------------+--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-35s|%-25s%-15llu%9.2f%%|", "", "", "rx_ack_coex_break:", s_ieee802154_txrx_statistic.tx.abort.rx_ack_coex_break_nums, tx_abort_rx_ack_coex_break_ratio*100);
|
||||
ESP_LOGW(IEEE802154_TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-35s|%-25s%-15llu%9.2f%%|", "", "", "rx_ack_timeout:", s_ieee802154_txrx_statistic.tx.abort.rx_ack_timeout_nums, tx_abort_rx_ack_timeout_ratio*100);
|
||||
ESP_LOGW(IEEE802154_TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-5s%-15llu|%-10s%-15llu%9.2f%%|%-25s%-15llu%9.2f%%|", "TX:", s_ieee802154_txrx_statistic.tx.nums, "Abort", tx_abort_nums, tx_abort_ratio*100, "tx_coex_break:", s_ieee802154_txrx_statistic.tx.abort.tx_coex_break_nums, tx_abort_tx_coex_break_ratio*100);
|
||||
ESP_LOGW(IEEE802154_TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-35s|%-25s%-15llu%9.2f%%|", "", "", "tx_security_error:", s_ieee802154_txrx_statistic.tx.abort.tx_security_error_nums, tx_abort_tx_security_error_ratio*100);
|
||||
ESP_LOGW(IEEE802154_TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-35s|%-25s%-15llu%9.2f%%|", "", "", "cca_failed:", s_ieee802154_txrx_statistic.tx.abort.cca_failed_nums, tx_abort_cca_failed_ratio*100);
|
||||
ESP_LOGW(IEEE802154_TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-35s|%-25s%-15llu%9.2f%%|", "", "", "cca_busy:", s_ieee802154_txrx_statistic.tx.abort.cca_busy_nums, tx_abort_cca_busy_ratio*100);
|
||||
ESP_LOGW(IEEE802154_TAG, "+--------------------+-----------------------------------+--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-10s%-25llu|%-25s%-25llu|", "", "Done:", s_ieee802154_txrx_statistic.rx.done_nums, "Success:", rx_success_nums);
|
||||
ESP_LOGW(IEEE802154_TAG, "+ +-----------------------------------+--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-35s|%-25s%-25llu|", "", "", "tx_ack_coex_break:", s_ieee802154_txrx_statistic.rx.abort.tx_ack_coex_break_nums);
|
||||
ESP_LOGW(IEEE802154_TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-35s|%-25s%-25llu|", "", "", "sfd_timeout:", s_ieee802154_txrx_statistic.rx.abort.sfd_timeout_nums);
|
||||
ESP_LOGW(IEEE802154_TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-35s|%-25s%-25llu|", "", "", "crc_error:", s_ieee802154_txrx_statistic.rx.abort.crc_error_nums);
|
||||
ESP_LOGW(IEEE802154_TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-10s%-25llu|%-25s%-25llu|", "RX", "Abort", rx_abort_nums, "filter_fail:", s_ieee802154_txrx_statistic.rx.abort.filter_fail_nums);
|
||||
ESP_LOGW(IEEE802154_TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-35s|%-25s%-25llu|", "", "", "no_rss:", s_ieee802154_txrx_statistic.rx.abort.no_rss_nums);
|
||||
ESP_LOGW(IEEE802154_TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-35s|%-25s%-25llu|", "", "", "rx_coex_break:", s_ieee802154_txrx_statistic.rx.abort.rx_coex_break_nums);
|
||||
ESP_LOGW(IEEE802154_TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-35s|%-25s%-25llu|", "", "", "rx_restart:", s_ieee802154_txrx_statistic.rx.abort.rx_restart_nums);
|
||||
ESP_LOGW(IEEE802154_TAG, "+ + +--------------------------------------------------+");
|
||||
ESP_LOGW(IEEE802154_TAG, "|%-20s|%-35s|%-25s%-25llu|", "", "", "ed_abort:", s_ieee802154_txrx_statistic.rx.abort.ed_abort_nums);
|
||||
ESP_LOGW(IEEE802154_TAG, "+--------------------+-----------------------------------+--------------------------------------------------+");
|
||||
}
|
||||
|
||||
#endif // CONFIG_IEEE802154_TXRX_STATISTIC
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "sdkconfig.h"
|
||||
#include "freertos/portmacro.h"
|
||||
#include "soc/periph_defs.h"
|
||||
#include "soc/soc.h"
|
||||
|
@ -84,9 +85,7 @@ static pending_tx_t s_pending_tx = { 0 };
|
|||
static void ieee802154_receive_done(uint8_t *data, esp_ieee802154_frame_info_t *frame_info)
|
||||
{
|
||||
// If the RX done packet is written in the stub buffer, drop it silently.
|
||||
if (s_rx_index == CONFIG_IEEE802154_RX_BUFFER_SIZE) {
|
||||
esp_rom_printf("receive buffer full, drop the current frame.\n");
|
||||
} else {
|
||||
if (s_rx_index != CONFIG_IEEE802154_RX_BUFFER_SIZE) {
|
||||
// Otherwise, post it to the upper layer.
|
||||
// Ignore bit8 for the frame length, due to the max frame length is 127 based 802.15.4 spec.
|
||||
data[0] = data[0] & 0x7f;
|
||||
|
@ -99,7 +98,6 @@ static void ieee802154_transmit_done(const uint8_t *frame, const uint8_t *ack, e
|
|||
{
|
||||
if (ack && ack_frame_info) {
|
||||
if (s_rx_index == CONFIG_IEEE802154_RX_BUFFER_SIZE) {
|
||||
esp_rom_printf("receive buffer full, drop the current ack frame.\n");
|
||||
esp_ieee802154_transmit_failed(frame, ESP_IEEE802154_TX_ERR_NO_ACK);
|
||||
} else {
|
||||
ack_frame_info->process = true;
|
||||
|
@ -165,7 +163,6 @@ IEEE802154_STATIC void set_next_rx_buffer(void)
|
|||
{
|
||||
uint8_t* next_rx_buffer = NULL;
|
||||
uint8_t index = 0;
|
||||
|
||||
if (s_rx_index != CONFIG_IEEE802154_RX_BUFFER_SIZE && s_rx_frame_info[s_rx_index].process == false) {
|
||||
// If buffer is not full, and current index is empty, set it to hardware.
|
||||
next_rx_buffer = s_rx_frame[s_rx_index];
|
||||
|
@ -188,8 +185,10 @@ IEEE802154_STATIC void set_next_rx_buffer(void)
|
|||
if (!next_rx_buffer) {
|
||||
s_rx_index = CONFIG_IEEE802154_RX_BUFFER_SIZE;
|
||||
next_rx_buffer = s_rx_frame[CONFIG_IEEE802154_RX_BUFFER_SIZE];
|
||||
#if CONFIG_IEEE802154_DEBUG
|
||||
ESP_EARLY_LOGW(IEEE802154_TAG, "Rx buffer full.");
|
||||
#endif
|
||||
}
|
||||
|
||||
ieee802154_ll_set_rx_addr(next_rx_buffer);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
@ -9,8 +9,7 @@
|
|||
#include "esp_attr.h"
|
||||
#include "esp_ieee802154_dev.h"
|
||||
#include "esp_ieee802154_frame.h"
|
||||
|
||||
static const char *TAG = "ieee802154 frame";
|
||||
#include "esp_ieee802154_util.h"
|
||||
|
||||
IEEE802154_STATIC IEEE802154_INLINE bool is_security_enabled(const uint8_t *frame)
|
||||
{
|
||||
|
@ -59,7 +58,7 @@ IEEE802154_STATIC bool is_dst_panid_present(const uint8_t *frame)
|
|||
uint8_t src_mode = src_addr_mode(frame);
|
||||
bool panid_compression = is_panid_compression(frame);
|
||||
|
||||
if (dst_mode != IEEE802154_FRAME_DST_MODE_NONE) { // dest address is present/short/extented
|
||||
if (dst_mode != IEEE802154_FRAME_DST_MODE_NONE) { // dest address is present/short/extended
|
||||
if ((src_mode == IEEE802154_FRAME_SRC_MODE_NONE && panid_compression) ||
|
||||
(dst_mode == IEEE802154_FRAME_DST_MODE_EXT && src_mode == IEEE802154_FRAME_SRC_MODE_EXT && panid_compression)) {
|
||||
dst_panid_present = false;
|
||||
|
@ -163,12 +162,12 @@ IEEE802154_STATIC IRAM_ATTR uint8_t ieee802154_frame_address_size(const uint8_t
|
|||
|
||||
IEEE802154_STATIC uint8_t ieee802154_frame_security_header_offset(const uint8_t *frame)
|
||||
{
|
||||
ESP_RETURN_ON_FALSE_ISR(is_suported_frame_type(ieee802154_frame_get_type(frame)), IEEE802154_FRAME_INVALID_ADDR_MODE, TAG, "invalid frame type");
|
||||
ESP_RETURN_ON_FALSE_ISR(is_suported_frame_type(ieee802154_frame_get_type(frame)), IEEE802154_FRAME_INVALID_ADDR_MODE, IEEE802154_TAG, "invalid frame type");
|
||||
uint8_t offset = ieee802154_frame_address_offset(frame);
|
||||
uint8_t address_size = ieee802154_frame_address_size(frame);
|
||||
|
||||
ESP_RETURN_ON_FALSE_ISR(offset != IEEE802154_FRAME_INVALID_OFFSET, IEEE802154_FRAME_INVALID_OFFSET, TAG, "invalid offset");
|
||||
ESP_RETURN_ON_FALSE_ISR(address_size != IEEE802154_FRAME_INVALID_OFFSET, IEEE802154_FRAME_INVALID_OFFSET, TAG, "invalid offset");
|
||||
ESP_RETURN_ON_FALSE_ISR(offset != IEEE802154_FRAME_INVALID_OFFSET, IEEE802154_FRAME_INVALID_OFFSET, IEEE802154_TAG, "invalid offset");
|
||||
ESP_RETURN_ON_FALSE_ISR(address_size != IEEE802154_FRAME_INVALID_OFFSET, IEEE802154_FRAME_INVALID_OFFSET, IEEE802154_TAG, "invalid offset");
|
||||
|
||||
offset += address_size;
|
||||
|
||||
|
@ -177,12 +176,12 @@ IEEE802154_STATIC uint8_t ieee802154_frame_security_header_offset(const uint8_t
|
|||
|
||||
IEEE802154_STATIC uint8_t ieee802154_frame_get_security_field_len(const uint8_t *frame)
|
||||
{
|
||||
ESP_RETURN_ON_FALSE_ISR(is_suported_frame_type(ieee802154_frame_get_type(frame)), IEEE802154_FRAME_INVALID_OFFSET, TAG, "invalid frame type");
|
||||
ESP_RETURN_ON_FALSE_ISR(is_suported_frame_type(ieee802154_frame_get_type(frame)), IEEE802154_FRAME_INVALID_OFFSET, IEEE802154_TAG, "invalid frame type");
|
||||
|
||||
uint8_t security_field_len = 0;
|
||||
uint8_t offset = ieee802154_frame_security_header_offset(frame);
|
||||
|
||||
ESP_RETURN_ON_FALSE_ISR(offset != IEEE802154_FRAME_INVALID_OFFSET, IEEE802154_FRAME_INVALID_OFFSET, TAG, "invalid offset");
|
||||
ESP_RETURN_ON_FALSE_ISR(offset != IEEE802154_FRAME_INVALID_OFFSET, IEEE802154_FRAME_INVALID_OFFSET, IEEE802154_TAG, "invalid offset");
|
||||
|
||||
security_field_len += IEEE802154_FRAME_SE_HEAD_SIZE;
|
||||
uint8_t security_header = frame[offset];
|
||||
|
@ -315,13 +314,13 @@ bool IEEE802154_INLINE ieee802154_frame_is_ack_required(const uint8_t *frame)
|
|||
|
||||
uint8_t ieee802154_frame_get_dst_addr(const uint8_t *frame, uint8_t *addr)
|
||||
{
|
||||
ESP_RETURN_ON_FALSE_ISR(is_suported_frame_type(ieee802154_frame_get_type(frame)), IEEE802154_FRAME_INVALID_ADDR_MODE, TAG, "invalid frame type");
|
||||
ESP_RETURN_ON_FALSE_ISR(is_suported_frame_type(ieee802154_frame_get_type(frame)), IEEE802154_FRAME_INVALID_ADDR_MODE, IEEE802154_TAG, "invalid frame type");
|
||||
|
||||
uint8_t offset = ieee802154_frame_address_offset(frame);
|
||||
uint8_t dst_mode = dst_addr_mode(frame);
|
||||
uint8_t addr_size;
|
||||
|
||||
ESP_RETURN_ON_FALSE_ISR(dst_mode == IEEE802154_FRAME_DST_MODE_SHORT || dst_mode == IEEE802154_FRAME_DST_MODE_EXT, dst_mode, TAG, "invalid address mode");
|
||||
ESP_RETURN_ON_FALSE_ISR(dst_mode == IEEE802154_FRAME_DST_MODE_SHORT || dst_mode == IEEE802154_FRAME_DST_MODE_EXT, dst_mode, IEEE802154_TAG, "invalid address mode");
|
||||
|
||||
addr_size = (dst_mode == IEEE802154_FRAME_DST_MODE_SHORT) ? IEEE802154_FRAME_SHORT_ADDR_SIZE : IEEE802154_FRAME_EXT_ADDR_SIZE;
|
||||
|
||||
|
@ -336,14 +335,14 @@ uint8_t ieee802154_frame_get_dst_addr(const uint8_t *frame, uint8_t *addr)
|
|||
|
||||
uint8_t ieee802154_frame_get_src_addr(const uint8_t *frame, uint8_t *addr)
|
||||
{
|
||||
ESP_RETURN_ON_FALSE_ISR(is_suported_frame_type(ieee802154_frame_get_type(frame)), IEEE802154_FRAME_INVALID_ADDR_MODE, TAG, "invalid frame type");
|
||||
ESP_RETURN_ON_FALSE_ISR(is_suported_frame_type(ieee802154_frame_get_type(frame)), IEEE802154_FRAME_INVALID_ADDR_MODE, IEEE802154_TAG, "invalid frame type");
|
||||
|
||||
uint8_t offset = ieee802154_frame_address_offset(frame);
|
||||
uint8_t dst_mode = dst_addr_mode(frame);
|
||||
uint8_t src_mode = src_addr_mode(frame);
|
||||
uint8_t addr_size;
|
||||
|
||||
ESP_RETURN_ON_FALSE_ISR(src_mode == IEEE802154_FRAME_SRC_MODE_SHORT || src_mode == IEEE802154_FRAME_SRC_MODE_EXT, src_mode, TAG, "invalid address mode");
|
||||
ESP_RETURN_ON_FALSE_ISR(src_mode == IEEE802154_FRAME_SRC_MODE_SHORT || src_mode == IEEE802154_FRAME_SRC_MODE_EXT, src_mode, IEEE802154_TAG, "invalid address mode");
|
||||
|
||||
addr_size = (src_mode == IEEE802154_FRAME_SRC_MODE_SHORT) ? IEEE802154_FRAME_SHORT_ADDR_SIZE : IEEE802154_FRAME_EXT_ADDR_SIZE;
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
@ -8,8 +8,7 @@
|
|||
#include "hal/ieee802154_ll.h"
|
||||
#include "esp_check.h"
|
||||
#include "esp_ieee802154_timer.h"
|
||||
|
||||
static const char *TAG = "ieee802154_timer";
|
||||
#include "esp_ieee802154_util.h"
|
||||
|
||||
void ieee802154_timer0_start(void)
|
||||
{
|
||||
|
@ -23,7 +22,7 @@ void ieee802154_timer0_stop(void)
|
|||
|
||||
esp_err_t ieee802154_timer0_set_threshold(uint32_t value)
|
||||
{
|
||||
ESP_RETURN_ON_FALSE((value < IEEE802154_TIMER0_THRESHOLD), ESP_ERR_INVALID_ARG, TAG, "invalid timer0 threshold\r\n");
|
||||
ESP_RETURN_ON_FALSE((value < IEEE802154_TIMER0_THRESHOLD), ESP_ERR_INVALID_ARG, IEEE802154_TAG, "invalid timer0 threshold");
|
||||
|
||||
ieee802154_ll_timer0_set_threshold(value);
|
||||
|
||||
|
@ -47,7 +46,7 @@ void ieee802154_timer1_stop(void)
|
|||
|
||||
esp_err_t ieee802154_timer1_set_threshold(uint32_t value)
|
||||
{
|
||||
ESP_RETURN_ON_FALSE((value < IEEE802154_TIMER1_THRESHOLD), ESP_ERR_INVALID_ARG, TAG, "invalid timer1 threshold\r\n");
|
||||
ESP_RETURN_ON_FALSE((value < IEEE802154_TIMER1_THRESHOLD), ESP_ERR_INVALID_ARG, IEEE802154_TAG, "invalid timer1 threshold");
|
||||
|
||||
ieee802154_ll_timer1_set_threshold(value);
|
||||
|
||||
|
|
|
@ -19,8 +19,6 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define IEEE802154_TAG "ieee802154"
|
||||
|
||||
// These three macros are in microseconds, used for transmit_at
|
||||
#define IEEE802154_ED_TRIG_TX_RAMPUP_TIME_US 256
|
||||
#define IEEE802154_TX_RAMPUP_TIME_US 98
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define IEEE802154_TAG "ieee802154"
|
||||
|
||||
#if SOC_PM_MODEM_RETENTION_BY_REGDMA && CONFIG_FREERTOS_USE_TICKLESS_IDLE
|
||||
#define IEEE802154_RF_ENABLE() ieee802154_rf_enable()
|
||||
#define IEEE802154_RF_DISABLE() ieee802154_rf_disable()
|
||||
|
|
Ładowanie…
Reference in New Issue