nrf_802154: rev e45bb47f0a4a43b69d19a145bdf15001d67e02dd

This commit updates revision of the nrf_802154 component.

Signed-off-by: Jędrzej Ciupis <jedrzej.ciupis@nordicsemi.no>
This commit is contained in:
Jędrzej Ciupis 2024-01-23 07:52:25 +01:00 committed by Robert Lubos
parent a5f11c3386
commit 4362d0fcdb
6 changed files with 99 additions and 11 deletions

View File

@ -1005,6 +1005,15 @@ bool nrf_802154_ack_data_clear(const uint8_t * p_addr,
bool extended,
nrf_802154_ack_data_t data_type);
/**
* @brief Removes all addresses of a given length from the ACK data list.
*
* @param[in] extended Indication if all extended addresses or all short addresses are
* to be removed from the list.
* @param[in] data_type Type of data that is to be cleared for all addresses of a given length.
*/
void nrf_802154_ack_data_remove_all(bool extended, nrf_802154_ack_data_t data_type);
/**
* @brief Enables or disables setting a pending bit in automatically transmitted ACK frames.
*

View File

@ -817,6 +817,12 @@ bool nrf_802154_delayed_trx_receive(uint64_t rx_time,
uint8_t channel,
uint32_t id)
{
if (dly_rx_data_by_id_search(id) != NULL)
{
/* DRX with given id is already present. */
return false;
}
dly_op_data_t * p_dly_rx_data = available_dly_rx_slot_get();
bool result = false;

View File

@ -841,6 +841,11 @@ bool nrf_802154_ack_data_clear(const uint8_t * p_addr,
return nrf_802154_ack_data_for_addr_clear(p_addr, extended, data_type);
}
void nrf_802154_ack_data_remove_all(bool extended, nrf_802154_ack_data_t data_type)
{
nrf_802154_ack_data_reset(extended, data_type);
}
void nrf_802154_auto_pending_bit_set(bool enabled)
{
nrf_802154_ack_data_enable(enabled);

View File

@ -471,6 +471,12 @@ typedef enum
SPINEL_PROP_VENDOR_NORDIC_NRF_802154_RX_ON_WHEN_IDLE_SET =
SPINEL_PROP_VENDOR_NORDIC_NRF_802154__BEGIN + 67,
/**
* Vendor property for nrf_802154_ack_data_remove_all serialization.
*/
SPINEL_PROP_VENDOR_NORDIC_NRF_802154_ACK_DATA_REMOVE_ALL =
SPINEL_PROP_VENDOR_NORDIC_NRF_802154__BEGIN + 68,
} spinel_prop_vendor_key_t;
/**
@ -1018,46 +1024,46 @@ typedef enum
#define SPINEL_DATATYPE_NRF_802154_TRANSMIT_AT_CANCEL_RET SPINEL_DATATYPE_BOOL_S
/**
* @brief Spinel data type desription for nrf_802154_auto_pending_bit_set.
* @brief Spinel data type description for nrf_802154_auto_pending_bit_set.
*/
#define SPINEL_DATATYPE_NRF_802154_AUTO_PENDING_BIT_SET SPINEL_DATATYPE_BOOL_S
/**
* @brief Spinel data type desription for nrf_802154_pending_bit_for_addr_set.
* @brief Spinel data type description for nrf_802154_pending_bit_for_addr_set.
*
* SPINEL_DATATYPE_ARRAY_S encoding is not implemented, SPINEL_DATATYPE_DATA_S has to be used instead.
*/
#define SPINEL_DATATYPE_NRF_802154_PENDING_BIT_FOR_ADDR_SET SPINEL_DATATYPE_DATA_S
/**
* @brief Spinel data type desription for nrf_802154_pending_bit_for_addr_set return value.
* @brief Spinel data type description for nrf_802154_pending_bit_for_addr_set return value.
*/
#define SPINEL_DATATYPE_NRF_802154_PENDING_BIT_FOR_ADDR_SET_RET SPINEL_DATATYPE_BOOL_S
/**
* @brief Spinel data type desription for nrf_802154_pending_bit_for_addr_clear.
* @brief Spinel data type description for nrf_802154_pending_bit_for_addr_clear.
*
* SPINEL_DATATYPE_ARRAY_S encoding is not implemented, SPINEL_DATATYPE_DATA_S has to be used instead.
*/
#define SPINEL_DATATYPE_NRF_802154_PENDING_BIT_FOR_ADDR_CLEAR SPINEL_DATATYPE_DATA_S
/**
* @brief Spinel data type desription for nrf_802154_pending_bit_for_addr_set return value.
* @brief Spinel data type description for nrf_802154_pending_bit_for_addr_set return value.
*/
#define SPINEL_DATATYPE_NRF_802154_PENDING_BIT_FOR_ADDR_CLEAR_RET SPINEL_DATATYPE_BOOL_S
/**
* @brief Spinel data type desription for nrf_802154_pending_bit_for_addr_reset.
* @brief Spinel data type description for nrf_802154_pending_bit_for_addr_reset.
*/
#define SPINEL_DATATYPE_NRF_802154_PENDING_BIT_FOR_ADDR_RESET SPINEL_DATATYPE_BOOL_S
/**
* @brief Spinel data type desription for nrf_802154_src_addr_matching_method_set.
* @brief Spinel data type description for nrf_802154_src_addr_matching_method_set.
*/
#define SPINEL_DATATYPE_NRF_802154_SRC_ADDR_MATCHING_METHOD_SET SPINEL_DATATYPE_UINT8_S
/**
* @brief Spinel data type desription for nrf_802154_ack_data_set.
* @brief Spinel data type description for nrf_802154_ack_data_set.
*
* SPINEL_DATATYPE_ARRAY_S encoding is not implemented, SPINEL_DATATYPE_DATA_S has to be used instead.
*/
@ -1067,12 +1073,12 @@ typedef enum
SPINEL_DATATYPE_UINT8_S /* Type of the data */ \
/**
* @brief Spinel data type desription for nrf_802154_ack_data_set return value.
* @brief Spinel data type description for nrf_802154_ack_data_set return value.
*/
#define SPINEL_DATATYPE_NRF_802154_ACK_DATA_SET_RET SPINEL_DATATYPE_BOOL_S
/**
* @brief Spinel data type desription for nrf_802154_ack_data_clear.
* @brief Spinel data type description for nrf_802154_ack_data_clear.
*
* SPINEL_DATATYPE_ARRAY_S encoding is not implemented, SPINEL_DATATYPE_DATA_S has to be used instead.
*/
@ -1081,10 +1087,17 @@ typedef enum
SPINEL_DATATYPE_UINT8_S /* Type of the data */
/**
* @brief Spinel data type desription for nrf_802154_ack_data_clear return value.
* @brief Spinel data type description for nrf_802154_ack_data_clear return value.
*/
#define SPINEL_DATATYPE_NRF_802154_ACK_DATA_CLEAR_RET SPINEL_DATATYPE_BOOL_S
/**
* @brief Spinel data type description for nrf_802154_ack_data_remove_all.
*/
#define SPINEL_DATATYPE_NRF_802154_ACK_DATA_REMOVE_ALL \
SPINEL_DATATYPE_BOOL_S /* Extended/short address */ \
SPINEL_DATATYPE_UINT8_S /* Type of the data */
/**
* @brief Spinel data type description for nrf_802154_transmit_csma_ca_raw.
*/

View File

@ -867,6 +867,33 @@ bail:
return ack_data_clear_res;
}
void nrf_802154_ack_data_remove_all(bool extended, nrf_802154_ack_data_t data_type)
{
nrf_802154_ser_err_t res;
SERIALIZATION_ERROR_INIT(error);
NRF_802154_SPINEL_LOG_BANNER_CALLING();
NRF_802154_SPINEL_LOG_VAR_NAMED("%s", (extended ? "true" : "false"), "extended");
nrf_802154_spinel_response_notifier_lock_before_request(
SPINEL_PROP_VENDOR_NORDIC_NRF_802154_ACK_DATA_REMOVE_ALL);
res = nrf_802154_spinel_send_cmd_prop_value_set(
SPINEL_PROP_VENDOR_NORDIC_NRF_802154_ACK_DATA_REMOVE_ALL,
SPINEL_DATATYPE_NRF_802154_ACK_DATA_REMOVE_ALL,
extended,
data_type);
SERIALIZATION_ERROR_CHECK(res, error, bail);
res = status_ok_await(CONFIG_NRF_802154_SER_DEFAULT_RESPONSE_TIMEOUT);
SERIALIZATION_ERROR_CHECK(res, error, bail);
bail:
SERIALIZATION_ERROR_RAISE_IF_FAILED(error);
}
void nrf_802154_auto_pending_bit_set(bool enabled)
{
nrf_802154_ser_err_t res;

View File

@ -863,6 +863,30 @@ static nrf_802154_ser_err_t spinel_decode_prop_nrf_802154_ack_data_clear(
ack_data_clear_res);
}
static nrf_802154_ser_err_t spinel_decode_prop_nrf_802154_ack_data_remove_all(
const void * p_property_data,
size_t property_data_len)
{
bool extended;
nrf_802154_ack_data_t data_type;
spinel_ssize_t siz;
siz = spinel_datatype_unpack(p_property_data,
property_data_len,
SPINEL_DATATYPE_NRF_802154_ACK_DATA_REMOVE_ALL,
&extended,
&data_type);
if (siz < 0)
{
return NRF_802154_SERIALIZATION_ERROR_DECODING_FAILURE;
}
nrf_802154_ack_data_remove_all(extended, data_type);
return nrf_802154_spinel_send_prop_last_status_is(SPINEL_STATUS_OK);
}
#if NRF_802154_CSMA_CA_ENABLED
/**
@ -2101,6 +2125,10 @@ nrf_802154_ser_err_t nrf_802154_spinel_decode_cmd_prop_value_set(const void * p_
return spinel_decode_prop_nrf_802154_ack_data_clear(p_property_data,
property_data_len);
case SPINEL_PROP_VENDOR_NORDIC_NRF_802154_ACK_DATA_REMOVE_ALL:
return spinel_decode_prop_nrf_802154_ack_data_remove_all(p_property_data,
property_data_len);
case SPINEL_PROP_VENDOR_NORDIC_NRF_802154_SECURITY_GLOBAL_FRAME_COUNTER_SET:
return spinel_decode_prop_nrf_802154_security_global_frame_counter_set(p_property_data,
property_data_len);