Zephyr API Documentation  3.6.0
A Scalable Open Source RTOS
3.6.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ieee802154_radio.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2016 Intel Corporation.
3 * Copyright (c) 2023 F. Grandel, Zephyr Project
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
15#ifndef ZEPHYR_INCLUDE_NET_IEEE802154_RADIO_H_
16#define ZEPHYR_INCLUDE_NET_IEEE802154_RADIO_H_
17
18#include <zephyr/device.h>
19#include <zephyr/net/net_if.h>
20#include <zephyr/net/net_pkt.h>
21#include <zephyr/net/net_time.h>
24#include <zephyr/sys/util.h>
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
82#define IEEE802154_PHY_SYMBOLS_PER_SECOND(symbol_period_ns) (NSEC_PER_SEC / symbol_period_ns)
83
97#define IEEE802154_MAC_A_BASE_SLOT_DURATION 60U
98
103#define IEEE802154_MAC_A_NUM_SUPERFRAME_SLOTS 16U
104
109#define IEEE802154_MAC_A_BASE_SUPERFRAME_DURATION \
110 (IEEE802154_MAC_A_BASE_SLOT_DURATION * IEEE802154_MAC_A_NUM_SUPERFRAME_SLOTS)
111
116#define IEEE802154_MAC_A_UNIT_BACKOFF_PERIOD(turnaround_time) \
117 (turnaround_time + IEEE802154_PHY_A_CCA_TIME)
118
123#define IEEE802154_MAC_RESPONSE_WAIT_TIME_DEFAULT 32U
124
182
185
188
191
194
197
200
203
206
212
218
221
224
227};
228
236};
237
250
253};
254
280#define IEEE802154_DEFINE_PHY_SUPPORTED_CHANNELS(drv_attr, from, to) \
281 static const struct { \
282 const struct ieee802154_phy_channel_range phy_channel_range; \
283 const struct ieee802154_phy_supported_channels phy_supported_channels; \
284 } drv_attr = { \
285 .phy_channel_range = {.from_channel = (from), .to_channel = (to)}, \
286 .phy_supported_channels = \
287 { \
288 .ranges = &drv_attr.phy_channel_range, \
289 .num_ranges = 1U, \
290 }, \
291 }
292
305#define IEEE802154_PHY_A_TURNAROUND_TIME_DEFAULT 12U
306
311#define IEEE802154_PHY_A_TURNAROUND_TIME_1MS(symbol_period_ns) \
312 DIV_ROUND_UP(NSEC_PER_MSEC, symbol_period_ns)
313
318#define IEEE802154_PHY_A_CCA_TIME 8U
319
330#define IEEE802154_PHY_OQPSK_868MHZ_SYMBOL_PERIOD_NS 40000LL
331
336#define IEEE802154_PHY_OQPSK_780_TO_2450MHZ_SYMBOL_PERIOD_NS 16000LL
337
347#define IEEE802154_PHY_BPSK_868MHZ_SYMBOL_PERIOD_NS 50000LL
348
350#define IEEE802154_PHY_BPSK_915MHZ_SYMBOL_PERIOD_NS 25000LL
351
370#define IEEE802154_PHY_HRP_UWB_PRF4_TPSYM_SYMBOL_PERIOD_NS 3974.36F
372#define IEEE802154_PHY_HRP_UWB_PRF16_TPSYM_SYMBOL_PERIOD_NS 993.59F
374#define IEEE802154_PHY_HRP_UWB_PRF64_TPSYM_SYMBOL_PERIOD_NS 1017.63F
376#define IEEE802154_PHY_HRP_UWB_ERDEV_TPSYM_SYMBOL_PERIOD_NS 729.17F
377
385
394};
395
397#define IEEE802154_PHY_HRP_UWB_RDEV \
398 (IEEE802154_PHY_HRP_UWB_NOMINAL_4_M | IEEE802154_PHY_HRP_UWB_NOMINAL_16_M | \
399 IEEE802154_PHY_HRP_UWB_NOMINAL_64_M)
400
402#define IEEE802154_PHY_HRP_UWB_ERDEV \
403 (IEEE802154_PHY_HRP_UWB_NOMINAL_64_M_BPRF | IEEE802154_PHY_HRP_UWB_NOMINAL_128_M_HPRF | \
404 IEEE802154_PHY_HRP_UWB_NOMINAL_256_M_HPRF)
405
415#define IEEE802154_PHY_SUN_FSK_863MHZ_915MHZ_SYMBOL_PERIOD_NS 20000LL
416
418#define IEEE802154_PHY_SUN_FSK_PHR_LEN 2
419
436
437 /*
438 * PHY capabilities
439 *
440 * The following capabilities describe features of the underlying radio
441 * hardware (PHY/L1).
442 */
443
446
447 /*
448 * MAC offloading capabilities (optional)
449 *
450 * The following MAC/L2 features may optionally be offloaded to
451 * specialized hardware or proprietary driver firmware ("hard MAC").
452 *
453 * L2 implementations will have to provide a "soft MAC" fallback for
454 * these features in case the driver does not support them natively.
455 *
456 * Note: Some of these offloading capabilities may be mandatory in
457 * practice to stay within timing requirements of certain IEEE 802.15.4
458 * protocols, e.g. CPUs may not be fast enough to send ACKs within the
459 * required delays in the 2.4 GHz band without hard MAC support.
460 */
461
464
467
470
473
476
479
482
485
511
514
517
520
521 /* Note: Update also IEEE802154_HW_CAPS_BITS_COMMON_COUNT when changing
522 * the ieee802154_hw_caps type.
523 */
524};
525
527#define IEEE802154_HW_CAPS_BITS_COMMON_COUNT (13)
528
530#define IEEE802154_HW_CAPS_BITS_PRIV_START IEEE802154_HW_CAPS_BITS_COMMON_COUNT
531
539};
540
555};
556
568
570typedef void (*energy_scan_done_cb_t)(const struct device *dev,
571 int16_t max_ed);
572
574typedef void (*ieee802154_event_cb_t)(const struct device *dev,
575 enum ieee802154_event evt,
576 void *event_params);
577
580 union {
587 };
588};
589
605};
606
611
614
621
628
638
641
644};
645
650
655};
656
671
681
689
696
704
717
734
748
799
931
985
1067
1096
1099
1102};
1103
1108#define IEEE802154_CONFIG_RX_SLOT_NONE -1LL
1109
1118#define IEEE802154_CONFIG_RX_SLOT_OFF 0LL
1119
1123 union {
1125 struct {
1129
1131 struct {
1132 uint8_t *addr; /* in little endian for both, short and extended address */
1134 bool enabled;
1136
1139
1142
1145
1148
1164
1167
1169 struct {
1182
1194
1197
1204
1209
1211 struct {
1222
1233
1244
1254 };
1255};
1256
1269
1276
1283
1286
1291};
1292
1307 union {
1308 /* TODO: Implement configuration of phyCurrentPage once drivers
1309 * need to support channel page switching at runtime.
1310 */
1328
1365
1366 /* TODO: Allow the PRF to be configured for each TX call once
1367 * drivers need to support PRF switching at runtime.
1368 */
1381 };
1382};
1383
1399 enum ieee802154_attr attr,
1400 const enum ieee802154_phy_channel_page phy_supported_channel_page,
1401 const struct ieee802154_phy_supported_channels *phy_supported_channels,
1402 struct ieee802154_attr_value *value)
1403{
1404 switch (attr) {
1406 value->phy_supported_channel_pages = phy_supported_channel_page;
1407 return 0;
1408
1410 value->phy_supported_channels = phy_supported_channels;
1411 return 0;
1412
1413 default:
1414 return -ENOENT;
1415 }
1416}
1417
1501 struct net_if_api iface_api;
1502
1514 enum ieee802154_hw_caps (*get_capabilities)(const struct device *dev);
1515
1532 int (*cca)(const struct device *dev);
1533
1556 int (*set_channel)(const struct device *dev, uint16_t channel);
1557
1581 int (*filter)(const struct device *dev,
1582 bool set,
1583 enum ieee802154_filter_type type,
1584 const struct ieee802154_filter *filter);
1585
1602 int (*set_txpower)(const struct device *dev, int16_t dbm);
1603
1679 int (*tx)(const struct device *dev, enum ieee802154_tx_mode mode,
1680 struct net_pkt *pkt, struct net_buf *frag);
1681
1703 int (*start)(const struct device *dev);
1704
1727 int (*stop)(const struct device *dev);
1728
1748 int (*continuous_carrier)(const struct device *dev);
1749
1785 int (*configure)(const struct device *dev,
1786 enum ieee802154_config_type type,
1787 const struct ieee802154_config *config);
1788
1813 int (*ed_scan)(const struct device *dev,
1814 uint16_t duration,
1815 energy_scan_done_cb_t done_cb);
1816
1834 net_time_t (*get_time)(const struct device *dev);
1835
1856 uint8_t (*get_sch_acc)(const struct device *dev);
1857
1879 int (*attr_get)(const struct device *dev,
1880 enum ieee802154_attr attr,
1881 struct ieee802154_attr_value *value);
1882};
1883
1884/* Make sure that the network interface API is properly setup inside
1885 * IEEE 802.15.4 driver API struct (it is the first one).
1886 */
1887BUILD_ASSERT(offsetof(struct ieee802154_radio_api, iface_api) == 0);
1888
1897#define IEEE802154_AR_FLAG_SET (0x20)
1910static inline bool ieee802154_is_ar_flag_set(struct net_buf *frag)
1911{
1912 return (*frag->data & IEEE802154_AR_FLAG_SET);
1913}
1914
1922/* TODO: Fix drivers to either unref the packet before they return NET_OK or to
1923 * return NET_CONTINUE instead. See note below.
1924 */
1947extern enum net_verdict ieee802154_handle_ack(struct net_if *iface, struct net_pkt *pkt);
1948
1962#ifndef CONFIG_IEEE802154_RAW_MODE
1963extern void ieee802154_init(struct net_if *iface);
1964#else
1965#define ieee802154_init(_iface_)
1966#endif /* CONFIG_IEEE802154_RAW_MODE */
1967
1970#ifdef __cplusplus
1971}
1972#endif
1973
1978#endif /* ZEPHYR_INCLUDE_NET_IEEE802154_RADIO_H_ */
ieee802154_rx_fail_reason
RX failed event reasons, see IEEE802154_EVENT_RX_FAILED.
Definition: ieee802154_radio.h:558
ieee802154_phy_hrp_uwb_nominal_prf
represents the nominal pulse rate frequency of an HRP UWB PHY
Definition: ieee802154_radio.h:379
ieee802154_event
Driver events, see IEEE802154_CONFIG_EVENT_HANDLER.
Definition: ieee802154_radio.h:542
ieee802154_config_type
IEEE 802.15.4 driver configuration types.
Definition: ieee802154_radio.h:658
enum net_verdict ieee802154_handle_ack(struct net_if *iface, struct net_pkt *pkt)
IEEE 802.15.4 driver ACK handling callback into L2 that drivers must call when receiving an ACK packa...
void(* ieee802154_event_cb_t)(const struct device *dev, enum ieee802154_event evt, void *event_params)
Driver event callback.
Definition: ieee802154_radio.h:574
void(* energy_scan_done_cb_t)(const struct device *dev, int16_t max_ed)
Energy scan callback.
Definition: ieee802154_radio.h:570
ieee802154_filter_type
Filter type, see ieee802154_radio_api::filter.
Definition: ieee802154_radio.h:533
ieee802154_tx_mode
IEEE 802.15.4 Transmission mode.
Definition: ieee802154_radio.h:608
ieee802154_fpb_mode
IEEE 802.15.4 Frame Pending Bit table address matching mode.
Definition: ieee802154_radio.h:647
ieee802154_phy_channel_page
PHY channel pages, see section 10.1.3.
Definition: ieee802154_radio.h:167
void ieee802154_init(struct net_if *iface)
IEEE 802.15.4 driver initialization callback into L2 called by drivers to initialize the active L2 st...
ieee802154_attr
IEEE 802.15.4 driver attributes.
Definition: ieee802154_radio.h:1263
static bool ieee802154_is_ar_flag_set(struct net_buf *frag)
Check if the AR flag is set on the frame inside the given Network Packet Library.
Definition: ieee802154_radio.h:1910
static int ieee802154_attr_get_channel_page_and_range(enum ieee802154_attr attr, const enum ieee802154_phy_channel_page phy_supported_channel_page, const struct ieee802154_phy_supported_channels *phy_supported_channels, struct ieee802154_attr_value *value)
Helper function to handle channel page and range to be called from drivers' attr_get() implementation...
Definition: ieee802154_radio.h:1398
ieee802154_hw_caps
IEEE 802.15.4 driver capabilities.
Definition: ieee802154_radio.h:435
@ IEEE802154_RX_FAIL_INVALID_FCS
Frame had invalid checksum.
Definition: ieee802154_radio.h:562
@ IEEE802154_RX_FAIL_OTHER
General reason.
Definition: ieee802154_radio.h:566
@ IEEE802154_RX_FAIL_ADDR_FILTERED
Address did not match.
Definition: ieee802154_radio.h:564
@ IEEE802154_RX_FAIL_NOT_RECEIVED
Nothing received.
Definition: ieee802154_radio.h:560
@ IEEE802154_PHY_HRP_UWB_NOMINAL_64_M
Definition: ieee802154_radio.h:384
@ IEEE802154_PHY_HRP_UWB_PRF_OFF
standard modes, see section 8.3.2, table 8-88.
Definition: ieee802154_radio.h:381
@ IEEE802154_PHY_HRP_UWB_NOMINAL_4_M
Definition: ieee802154_radio.h:382
@ IEEE802154_PHY_HRP_UWB_NOMINAL_256_M_HPRF
Definition: ieee802154_radio.h:393
@ IEEE802154_PHY_HRP_UWB_NOMINAL_64_M_BPRF
enhanced ranging device (ERDEV) modes not specified in table 8-88, see IEEE 802.15....
Definition: ieee802154_radio.h:391
@ IEEE802154_PHY_HRP_UWB_NOMINAL_16_M
Definition: ieee802154_radio.h:383
@ IEEE802154_PHY_HRP_UWB_NOMINAL_128_M_HPRF
Definition: ieee802154_radio.h:392
@ IEEE802154_EVENT_TX_STARTED
Data transmission started.
Definition: ieee802154_radio.h:544
@ IEEE802154_EVENT_RX_FAILED
Data reception failed.
Definition: ieee802154_radio.h:546
@ IEEE802154_EVENT_RX_OFF
An RX slot ended, requires IEEE802154_HW_RXTIME.
Definition: ieee802154_radio.h:554
@ IEEE802154_CONFIG_PRIV_START
This and higher values are specific to the protocol- or driver-specific extensions.
Definition: ieee802154_radio.h:1101
@ IEEE802154_CONFIG_EXPECTED_RX_TIME
Configure a timepoint at which an RX frame is expected to arrive.
Definition: ieee802154_radio.h:984
@ IEEE802154_CONFIG_AUTO_ACK_FPB
Indicates how the driver should set the Frame Pending bit in ACK responses for Data Requests.
Definition: ieee802154_radio.h:670
@ IEEE802154_CONFIG_PROMISCUOUS
Enable/disable promiscuous mode.
Definition: ieee802154_radio.h:695
@ IEEE802154_CONFIG_COMMON_COUNT
Number of types defined in ieee802154_config_type.
Definition: ieee802154_radio.h:1098
@ IEEE802154_CONFIG_ENH_ACK_HEADER_IE
Adds a header information element (IE) to be injected into enhanced ACK frames generated by the drive...
Definition: ieee802154_radio.h:1066
@ IEEE802154_CONFIG_MAC_KEYS
Updates MAC keys, key index and the per-key frame counter for drivers supporting transmit security of...
Definition: ieee802154_radio.h:716
@ IEEE802154_CONFIG_EVENT_HANDLER
Specifies new IEEE 802.15.4 driver event handler.
Definition: ieee802154_radio.h:703
@ IEEE802154_CONFIG_RX_ON_WHEN_IDLE
Enable/disable RxOnWhenIdle MAC PIB attribute (Table 8-94).
Definition: ieee802154_radio.h:1095
@ IEEE802154_CONFIG_CSL_PERIOD
Enables or disables a device as a CSL receiver and configures its CSL period.
Definition: ieee802154_radio.h:930
@ IEEE802154_CONFIG_FRAME_COUNTER_IF_LARGER
Sets the current MAC frame counter value if the provided value is greater than the current one.
Definition: ieee802154_radio.h:747
@ IEEE802154_CONFIG_FRAME_COUNTER
Sets the current MAC frame counter value associated with the interface for drivers supporting transmi...
Definition: ieee802154_radio.h:733
@ IEEE802154_CONFIG_PAN_COORDINATOR
Indicates whether the device is a PAN coordinator.
Definition: ieee802154_radio.h:688
@ IEEE802154_CONFIG_ACK_FPB
Indicates whether to set ACK Frame Pending bit for specific address or not.
Definition: ieee802154_radio.h:680
@ IEEE802154_CONFIG_RX_SLOT
Set or unset a radio reception window (RX slot).
Definition: ieee802154_radio.h:798
@ IEEE802154_FILTER_TYPE_SHORT_ADDR
Definition: ieee802154_radio.h:535
@ IEEE802154_FILTER_TYPE_IEEE_ADDR
Definition: ieee802154_radio.h:534
@ IEEE802154_FILTER_TYPE_PAN_ID
Definition: ieee802154_radio.h:536
@ IEEE802154_FILTER_TYPE_SRC_SHORT_ADDR
Definition: ieee802154_radio.h:538
@ IEEE802154_FILTER_TYPE_SRC_IEEE_ADDR
Definition: ieee802154_radio.h:537
@ IEEE802154_TX_MODE_CCA
Perform CCA before packet transmission.
Definition: ieee802154_radio.h:613
@ IEEE802154_TX_MODE_TXTIME_CCA
Transmit packet in the future, perform CCA before transmission.
Definition: ieee802154_radio.h:637
@ IEEE802154_TX_MODE_CSMA_CA
Perform full CSMA/CA procedure before packet transmission.
Definition: ieee802154_radio.h:620
@ IEEE802154_TX_MODE_DIRECT
Transmit packet immediately, no CCA.
Definition: ieee802154_radio.h:610
@ IEEE802154_TX_MODE_TXTIME
Transmit packet in the future, at the specified time, no CCA.
Definition: ieee802154_radio.h:627
@ IEEE802154_TX_MODE_COMMON_COUNT
Number of modes defined in ieee802154_tx_mode.
Definition: ieee802154_radio.h:640
@ IEEE802154_TX_MODE_PRIV_START
This and higher values are specific to the protocol- or driver-specific extensions.
Definition: ieee802154_radio.h:643
@ IEEE802154_FPB_ADDR_MATCH_THREAD
The pending bit shall be set only for addresses found in the list.
Definition: ieee802154_radio.h:649
@ IEEE802154_FPB_ADDR_MATCH_ZIGBEE
The pending bit shall be cleared for short addresses found in the list.
Definition: ieee802154_radio.h:654
@ IEEE802154_ATTR_PHY_CHANNEL_PAGE_TEN_SUN_FSK_GENERIC
SUN FSK/OFDM/O-QPSK PHYs - generic modulation and channel description, see sections 10....
Definition: ieee802154_radio.h:217
@ IEEE802154_ATTR_PHY_CHANNEL_PAGE_SEVEN_MSK
MSK PHY - 780 MHz and 2450 MHz bands, see sections 10.1.3.6, 10.1.3.7.
Definition: ieee802154_radio.h:202
@ IEEE802154_ATTR_PHY_CHANNEL_PAGE_ONE_DEPRECATED
Formerly ASK PHY - deprecated in IEEE 802.15.4-2015.
Definition: ieee802154_radio.h:184
@ IEEE802154_ATTR_PHY_CHANNEL_PAGE_THIRTEEN_RCC
RCC PHY, see section 10.1.3.12.
Definition: ieee802154_radio.h:226
@ IEEE802154_ATTR_PHY_CHANNEL_PAGE_TWO_OQPSK_868_915
O-QPSK PHY - 868 MHz and 915 MHz bands, see section 10.1.3.3.
Definition: ieee802154_radio.h:187
@ IEEE802154_ATTR_PHY_CHANNEL_PAGE_FOUR_HRP_UWB
UWB PHY - SubG, low and high bands, see section 10.1.3.5.
Definition: ieee802154_radio.h:193
@ IEEE802154_ATTR_PHY_CHANNEL_PAGE_TWELVE_LECIM
LECIM DSSS/FSK PHYs, see section 10.1.3.11.
Definition: ieee802154_radio.h:223
@ IEEE802154_ATTR_PHY_CHANNEL_PAGE_FIVE_OQPSK_780
O-QPSK PHY - 780 MHz band, see section 10.1.3.2.
Definition: ieee802154_radio.h:196
@ IEEE802154_ATTR_PHY_CHANNEL_PAGE_THREE_CSS
CSS PHY - 2450 MHz band, see section 10.1.3.4.
Definition: ieee802154_radio.h:190
@ IEEE802154_ATTR_PHY_CHANNEL_PAGE_ZERO_OQPSK_2450_BPSK_868_915
Channel page zero supports the 2.4G channels of the O-QPSK PHY and all channels from the BPSK PHYs in...
Definition: ieee802154_radio.h:181
@ IEEE802154_ATTR_PHY_CHANNEL_PAGE_NINE_SUN_PREDEFINED
SUN FSK/OFDM/O-QPSK PHYs - predefined bands, operating modes and channels, see sections 10....
Definition: ieee802154_radio.h:211
@ IEEE802154_ATTR_PHY_CHANNEL_PAGE_EIGHT_LRP_UWB
LRP UWB PHY, see sections 10.1.3.8.
Definition: ieee802154_radio.h:205
@ IEEE802154_ATTR_PHY_CHANNEL_PAGE_ELEVEN_OQPSK_2380
O-QPSK PHY - 2380 MHz band, see section 10.1.3.10.
Definition: ieee802154_radio.h:220
@ IEEE802154_ATTR_PHY_CHANNEL_PAGE_SIX_RESERVED
reserved - not currently assigned
Definition: ieee802154_radio.h:199
@ IEEE802154_ATTR_PHY_SUPPORTED_CHANNEL_PAGES
Retrieves a bit field with supported channel pages.
Definition: ieee802154_radio.h:1268
@ IEEE802154_ATTR_COMMON_COUNT
Number of attributes defined in ieee802154_attr.
Definition: ieee802154_radio.h:1285
@ IEEE802154_ATTR_PHY_SUPPORTED_CHANNEL_RANGES
Retrieves a pointer to the array of supported channel ranges within the currently configured channel ...
Definition: ieee802154_radio.h:1275
@ IEEE802154_ATTR_PRIV_START
This and higher values are specific to the protocol- or driver-specific extensions.
Definition: ieee802154_radio.h:1290
@ IEEE802154_ATTR_PHY_HRP_UWB_SUPPORTED_PRFS
Retrieves a bit field with supported HRP UWB nominal pulse repetition frequencies.
Definition: ieee802154_radio.h:1282
@ IEEE802154_HW_FCS
Frame checksum verification supported.
Definition: ieee802154_radio.h:463
@ IEEE802154_HW_ENERGY_SCAN
Energy detection (ED) supported (optional)
Definition: ieee802154_radio.h:445
@ IEEE802154_HW_CSMA
CSMA-CA procedure supported on TX.
Definition: ieee802154_radio.h:472
@ IEEE802154_HW_SLEEP_TO_TX
TX directly from sleep supported.
Definition: ieee802154_radio.h:510
@ IEEE802154_HW_TXTIME
TX at specified time supported.
Definition: ieee802154_radio.h:484
@ IEEE802154_HW_PROMISC
Promiscuous mode supported.
Definition: ieee802154_radio.h:469
@ IEEE802154_HW_RXTIME
Timed RX window scheduling supported.
Definition: ieee802154_radio.h:513
@ IEEE802154_HW_RETRANSMISSION
Supports retransmission on TX ACK timeout.
Definition: ieee802154_radio.h:478
@ IEEE802154_HW_TX_SEC
TX security supported (key management, encryption and authentication)
Definition: ieee802154_radio.h:516
@ IEEE802154_HW_TX_RX_ACK
Waits for ACK on TX if AR bit is set in TX pkt.
Definition: ieee802154_radio.h:475
@ IEEE802154_RX_ON_WHEN_IDLE
RxOnWhenIdle handling supported.
Definition: ieee802154_radio.h:519
@ IEEE802154_HW_RX_TX_ACK
Sends ACK on RX if AR bit is set in RX pkt.
Definition: ieee802154_radio.h:481
@ IEEE802154_HW_FILTER
Filtering of PAN ID, extended and short address supported.
Definition: ieee802154_radio.h:466
net_verdict
Net Verdict.
Definition: net_core.h:98
int64_t net_time_t
Any occurrence of net_time_t specifies a concept of nanosecond resolution scalar time span,...
Definition: net_time.h:101
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition: util_macro.h:44
#define ENOENT
No such file or directory.
Definition: errno.h:41
IEEE 802.15.4 native L2 stack public header.
IEEE 802.15.4 MAC information element (IE) related types and helpers.
Public API for network interface.
Network packet buffer descriptor API.
Representation of nanosecond resolution elapsed time and timestamps in the network stack.
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
__INT16_TYPE__ int16_t
Definition: stdint.h:73
Runtime device structure (in ROM) per driver instance.
Definition: device.h:387
IEEE 802.15.4 driver attribute values.
Definition: ieee802154_radio.h:1306
uint32_t phy_supported_channel_pages
A bit field that represents the supported channel pages, see ieee802154_phy_channel_page.
Definition: ieee802154_radio.h:1327
const struct ieee802154_phy_supported_channels * phy_supported_channels
Pointer to a structure representing channel ranges currently available on the selected channel page.
Definition: ieee802154_radio.h:1364
uint32_t phy_hrp_uwb_supported_nominal_prfs
A bit field representing supported HRP UWB pulse repetition frequencies (PRF), see enum ieee802154_ph...
Definition: ieee802154_radio.h:1380
IEEE 802.15.4 driver configuration data.
Definition: ieee802154_radio.h:1121
const uint8_t * ext_addr
Filters the devices that will receive this IE by extended address.
Definition: ieee802154_radio.h:1232
bool pan_coordinator
see IEEE802154_CONFIG_PAN_COORDINATOR
Definition: ieee802154_radio.h:1138
ieee802154_event_cb_t event_handler
see IEEE802154_CONFIG_EVENT_HANDLER
Definition: ieee802154_radio.h:1147
uint32_t frame_counter
see IEEE802154_CONFIG_FRAME_COUNTER
Definition: ieee802154_radio.h:1166
uint32_t csl_period
see IEEE802154_CONFIG_CSL_PERIOD
Definition: ieee802154_radio.h:1203
struct ieee802154_config::@300::@304 rx_slot
see IEEE802154_CONFIG_RX_SLOT
struct ieee802154_header_ie * header_ie
Pointer to the header IE, see section 7.4.2.1, figure 7-21.
Definition: ieee802154_radio.h:1221
bool extended
Definition: ieee802154_radio.h:1133
uint8_t * addr
Definition: ieee802154_radio.h:1132
struct ieee802154_config::@300::@303 ack_fpb
see IEEE802154_CONFIG_ACK_FPB
struct ieee802154_config::@300::@305 ack_ie
see IEEE802154_CONFIG_ENH_ACK_HEADER_IE
net_time_t expected_rx_time
see IEEE802154_CONFIG_EXPECTED_RX_TIME
Definition: ieee802154_radio.h:1208
net_time_t start
Nanosecond resolution timestamp relative to the network subsystem's local clock defining the start of...
Definition: ieee802154_radio.h:1181
bool purge_ie
Flag for purging enh ACK header IEs.
Definition: ieee802154_radio.h:1252
bool rx_on_when_idle
see IEEE802154_CONFIG_RX_ON_WHEN_IDLE
Definition: ieee802154_radio.h:1144
uint8_t channel
Definition: ieee802154_radio.h:1195
struct ieee802154_key * mac_keys
see IEEE802154_CONFIG_MAC_KEYS
Definition: ieee802154_radio.h:1163
struct ieee802154_config::@300::@302 auto_ack_fpb
see IEEE802154_CONFIG_AUTO_ACK_FPB
uint16_t short_addr
Filters the devices that will receive this IE by short address.
Definition: ieee802154_radio.h:1243
bool promiscuous
see IEEE802154_CONFIG_PROMISCUOUS
Definition: ieee802154_radio.h:1141
net_time_t duration
Nanosecond resolution duration of the RX window relative to the above RX window start time during whi...
Definition: ieee802154_radio.h:1193
enum ieee802154_fpb_mode mode
Definition: ieee802154_radio.h:1127
bool enabled
Definition: ieee802154_radio.h:1126
Filter value, see ieee802154_radio_api::filter.
Definition: ieee802154_radio.h:579
uint16_t short_addr
Short address, in CPU byte order.
Definition: ieee802154_radio.h:584
uint16_t pan_id
PAN ID, in CPU byte order.
Definition: ieee802154_radio.h:586
uint8_t * ieee_addr
Extended address, in little endian.
Definition: ieee802154_radio.h:582
Definition: ieee802154_ie.h:133
Key configuration for transmit security offloading, see IEEE802154_CONFIG_MAC_KEYS.
Definition: ieee802154_radio.h:594
uint8_t * key_value
Key material.
Definition: ieee802154_radio.h:596
uint32_t key_frame_counter
Initial value of frame counter associated with the key, see section 9.4.3.
Definition: ieee802154_radio.h:598
bool frame_counter_per_key
Indicates if per-key frame counter should be used, see section 9.4.3.
Definition: ieee802154_radio.h:600
uint8_t key_id_mode
Key Identifier Mode, see section 9.4.2.3, Table 9-7.
Definition: ieee802154_radio.h:602
uint8_t * key_id
Key Identifier, see section 9.4.4.
Definition: ieee802154_radio.h:604
Represents a supported channel range, see ieee802154_phy_supported_channels.
Definition: ieee802154_radio.h:233
uint16_t to_channel
Definition: ieee802154_radio.h:235
uint16_t from_channel
Definition: ieee802154_radio.h:234
Represents a list channels supported by a driver for a given interface, see IEEE802154_ATTR_PHY_SUPPO...
Definition: ieee802154_radio.h:242
const struct ieee802154_phy_channel_range *const ranges
Pointer to an array of channel range structures.
Definition: ieee802154_radio.h:249
const uint8_t num_ranges
The number of currently available channel ranges.
Definition: ieee802154_radio.h:252
IEEE 802.15.4 driver interface API.
Definition: ieee802154_radio.h:1493
int(* ed_scan)(const struct device *dev, uint16_t duration, energy_scan_done_cb_t done_cb)
Run an energy detection scan.
Definition: ieee802154_radio.h:1813
enum ieee802154_hw_caps(* get_capabilities)(const struct device *dev)
Get the device driver capabilities.
Definition: ieee802154_radio.h:1514
int(* attr_get)(const struct device *dev, enum ieee802154_attr attr, struct ieee802154_attr_value *value)
Get the value of a driver specific attribute.
Definition: ieee802154_radio.h:1879
int(* start)(const struct device *dev)
Start the device.
Definition: ieee802154_radio.h:1703
int(* cca)(const struct device *dev)
Clear Channel Assessment - Check channel's activity.
Definition: ieee802154_radio.h:1532
int(* continuous_carrier)(const struct device *dev)
Start continuous carrier wave transmission.
Definition: ieee802154_radio.h:1748
int(* tx)(const struct device *dev, enum ieee802154_tx_mode mode, struct net_pkt *pkt, struct net_buf *frag)
Transmit a packet fragment as a single frame.
Definition: ieee802154_radio.h:1679
int(* stop)(const struct device *dev)
Stop the device.
Definition: ieee802154_radio.h:1727
net_time_t(* get_time)(const struct device *dev)
Get the current time in nanoseconds relative to the network subsystem's local uptime clock as represe...
Definition: ieee802154_radio.h:1834
int(* configure)(const struct device *dev, enum ieee802154_config_type type, const struct ieee802154_config *config)
Set or update driver configuration.
Definition: ieee802154_radio.h:1785
int(* set_channel)(const struct device *dev, uint16_t channel)
Set current channel.
Definition: ieee802154_radio.h:1556
int(* filter)(const struct device *dev, bool set, enum ieee802154_filter_type type, const struct ieee802154_filter *filter)
Set/Unset PAN ID, extended or short address filters.
Definition: ieee802154_radio.h:1581
struct net_if_api iface_api
network interface API
Definition: ieee802154_radio.h:1501
uint8_t(* get_sch_acc)(const struct device *dev)
Get the current estimated worst case accuracy (maximum ± deviation from the nominal frequency) of the...
Definition: ieee802154_radio.h:1856
int(* set_txpower)(const struct device *dev, int16_t dbm)
Set TX power level in dbm.
Definition: ieee802154_radio.h:1602
Network buffer representation.
Definition: buf.h:910
uint8_t * data
Pointer to the start of data in the buffer.
Definition: buf.h:936
Network Interface structure.
Definition: net_if.h:615
Network packet.
Definition: net_pkt.h:63
Misc utilities.