Skip to content

Commit bde592e

Browse files
lmaciejonczyknashif
authored andcommitted
drivers: ieee802154: configure IE header injection for nRF5
Pass enh ack data injection arguments to the nRF5 radio driver. Signed-off-by: Lukasz Maciejonczyk <[email protected]>
1 parent fe2075d commit bde592e

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

drivers/ieee802154/ieee802154_nrf5.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -855,6 +855,27 @@ static int nrf5_configure(const struct device *dev,
855855
break;
856856
#endif /* CONFIG_IEEE802154_CSL_ENDPOINT */
857857

858+
case IEEE802154_CONFIG_ENH_ACK_HEADER_IE: {
859+
uint8_t short_addr_le[SHORT_ADDRESS_SIZE];
860+
uint8_t ext_addr_le[EXTENDED_ADDRESS_SIZE];
861+
862+
/* We expect that addresses are in big endian format, but radio driver requires
863+
* to have them in little endian. Convert addresses to little endian.
864+
*/
865+
sys_put_le16(config->ack_ie.short_addr, short_addr_le);
866+
sys_memcpy_swap(ext_addr_le, config->ack_ie.ext_addr, EXTENDED_ADDRESS_SIZE);
867+
868+
if (config->ack_ie.data_len > 0) {
869+
nrf_802154_ack_data_set(short_addr_le, false, config->ack_ie.data,
870+
config->ack_ie.data_len, NRF_802154_ACK_DATA_IE);
871+
nrf_802154_ack_data_set(ext_addr_le, true, config->ack_ie.data,
872+
config->ack_ie.data_len, NRF_802154_ACK_DATA_IE);
873+
} else {
874+
nrf_802154_ack_data_clear(short_addr_le, false, NRF_802154_ACK_DATA_IE);
875+
nrf_802154_ack_data_clear(ext_addr_le, true, NRF_802154_ACK_DATA_IE);
876+
}
877+
} break;
878+
858879
default:
859880
return -EINVAL;
860881
}

0 commit comments

Comments
 (0)