The IEEE 802.15.4 specific header file for the RAIL library.

License#

Copyright 2020 Silicon Laboratories Inc. www.silabs.com

SPDX-License-Identifier: Zlib

The licensor of this software is Silicon Laboratories Inc.

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.

  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

  3. This notice may not be removed or altered from any source distribution.

Modules#

RAIL_IEEE802154_Address_t

RAIL_IEEE802154_AddrConfig_t

RAIL_IEEE802154_Config_t

RAIL_IEEE802154_RxChannelSwitchingCfg_t

RAIL_IEEE802154_ModeSwitchPhr_t

Macros#

#define

The maximum number of allowed addresses of each type.

#define

RX channel switching buffer size, in bytes.

#define

Fixed-width type indicating the needed alignment for RX channel switching buffer.

#define
RAIL_IEEE802154_RX_CHANNEL_SWITCHING_BUF_ALIGNMENT (sizeof(RAIL_IEEE802154_RX_CHANNEL_SWITCHING_BUF_ALIGNMENT_TYPE))

Alignment that is needed for RX channel switching buffer.

#define

Maximum numbers of channels supported for RX channel switching.

#define

A value representing no options enabled.

#define
RAIL_IEEE802154_E_OPTIONS_DEFAULT RAIL_IEEE802154_E_OPTIONS_NONE

All options disabled by default .

#define
RAIL_IEEE802154_E_OPTION_GB868 (1UL << RAIL_IEEE802154_E_OPTION_GB868_SHIFT)

An option to enable/disable 802.15.4E-2012 features needed for GB868.

#define
RAIL_IEEE802154_E_OPTION_ENH_ACK (1UL << RAIL_IEEE802154_E_OPTION_ENH_ACK_SHIFT)

An option to enable/disable 802.15.4E-2012 features needed for Enhanced Acks.

#define
RAIL_IEEE802154_E_OPTION_IMPLICIT_BROADCAST (1UL << RAIL_IEEE802154_E_OPTION_IMPLICIT_BROADCAST_SHIFT)

An option to enable/disable 802.15.4E-2012 macImplicitBroadcast feature.

#define

A value representing all possible options.

#define

A value representing no options enabled.

#define
RAIL_IEEE802154_G_OPTIONS_DEFAULT RAIL_IEEE802154_G_OPTIONS_NONE

All options disabled by default .

#define
RAIL_IEEE802154_G_OPTION_GB868 (1UL << RAIL_IEEE802154_G_OPTION_GB868_SHIFT)

An option to enable/disable 802.15.4G-2012 features needed for GB868.

#define
RAIL_IEEE802154_G_OPTION_DYNFEC (1UL << RAIL_IEEE802154_G_OPTION_DYNFEC_SHIFT)

An option to enable/disable 802.15.4G dynamic FEC feature (SUN FSK only).

#define
RAIL_IEEE802154_G_OPTION_WISUN_MODESWITCH (1UL << RAIL_IEEE802154_G_OPTION_WISUN_MODESWITCH_SHIFT)

An option to enable/disable Wi-SUN Mode Switch feature.

#define

A value representing all possible options.

#define

When receiving packets, accept 802.15.4 BEACON frame types.

#define

When receiving packets, accept 802.15.4 DATA frame types.

#define

When receiving packets, accept 802.15.4 Ack frame types.

#define

When receiving packets, accept 802.15.4 COMMAND frame types.

#define

When receiving packets, accept 802.15.4-2015 Multipurpose frame types.

#define

In standard operation, accept BEACON, DATA and COMMAND frames.

#define
RAIL_IEEE802154_ToggleFramePending RAIL_IEEE802154_SetFramePending

Alternate naming for function RAIL_IEEE802154_SetFramePending to depict it is used for changing the default setting specified by RAIL_IEEE802154_Config_t::defaultFramePendingInOutgoingAcks in an outgoing Ack.

#define
RAIL_IEEE802154_EnableSignalIdentifier RAIL_IEEE802154_EnableSignalDetection

Backward compatible name for the RAIL_IEEE802154_EnableSignalDetection API.

Enumerations#

enum
RAIL_IEEE802154_ShortAddress = 2
RAIL_IEEE802154_LongAddress = 3
}

Different lengths that an 802.15.4 address can have.

enum
RAIL_IEEE802154_PTI_RADIO_CONFIG_2P4GHZ = 0x00U
RAIL_IEEE802154_PTI_RADIO_CONFIG_2P4GHZ_ANTDIV = 0x01U
RAIL_IEEE802154_PTI_RADIO_CONFIG_2P4GHZ_COEX = 0x02U
RAIL_IEEE802154_PTI_RADIO_CONFIG_2P4GHZ_ANTDIV_COEX = 0x03U
RAIL_IEEE802154_PTI_RADIO_CONFIG_2P4GHZ_FEM = 0x08U
RAIL_IEEE802154_PTI_RADIO_CONFIG_2P4GHZ_FEM_ANTDIV = 0x09U
RAIL_IEEE802154_PTI_RADIO_CONFIG_2P4GHZ_FEM_COEX = 0x0AU
RAIL_IEEE802154_PTI_RADIO_CONFIG_2P4GHZ_FEM_ANTDIV_COEX = 0x0BU
RAIL_IEEE802154_PTI_RADIO_CONFIG_863MHZ_GB868 = 0x85U
RAIL_IEEE802154_PTI_RADIO_CONFIG_915MHZ_GB868 = 0x86U
RAIL_IEEE802154_PTI_RADIO_CONFIG_915MHZ_R23_NA_EXT = 0x97U
}

802.15.4 PTI radio configuration mode

enum
RAIL_IEEE802154_E_OPTION_GB868_SHIFT = 0
RAIL_IEEE802154_E_OPTION_ENH_ACK_SHIFT
RAIL_IEEE802154_E_OPTION_IMPLICIT_BROADCAST_SHIFT
}

802.15.4E-2012 options, in reality a bitmask.

enum
RAIL_IEEE802154_G_OPTION_GB868_SHIFT = 0
RAIL_IEEE802154_G_OPTION_DYNFEC_SHIFT
RAIL_IEEE802154_G_OPTION_WISUN_MODESWITCH_SHIFT
}

802.15.4G-2012 options, in reality a bitmask.

enum
RAIL_IEEE802154_CCA_MODE_RSSI = 0
RAIL_IEEE802154_CCA_MODE_SIGNAL
RAIL_IEEE802154_CCA_MODE_SIGNAL_OR_RSSI
RAIL_IEEE802154_CCA_MODE_SIGNAL_AND_RSSI
RAIL_IEEE802154_CCA_MODE_ALWAYS_TRANSMIT
RAIL_IEEE802154_CCA_MODE_COUNT
}

Available CCA modes.

enum
RAIL_IEEE802154_SIGNAL_IDENTIFIER_MODE_DISABLE = 0
RAIL_IEEE802154_SIGNAL_IDENTIFIER_MODE_154
}

Available Signal identifier modes.

Variables#

Default PHY to use for 2.4 GHz 802.15.4.

Default PHY to use for 2.4 GHz 802.15.4 with antenna diversity.

Default PHY to use for 2.4 GHz 802.15.4 optimized for coexistence.

Default PHY to use for 2.4 GHz 802.15.4 optimized for coexistence, while supporting antenna diversity.

Default PHY to use for 2.4 GHz 802.15.4 with a configuration that supports a front-end module.

Default PHY to use for 2.4 GHz 802.15.4 with a configuration that supports a front-end module and antenna diversity.

Default PHY to use for 2.4 GHz 802.15.4 with a configuration that supports a front-end module and is optimized for radio coexistence.

Default PHY to use for 2.4 GHz 802.15.4 with a configuration that supports a front-end module and antenna diversity, and is optimized for radio coexistence.

Default PHY to use for 2.4 GHz 802.15.4 with custom settings.

Default PHY to use for 863 MHz GB868 802.15.4.

Default PHY to use for 915 MHz GB868 802.15.4.

Default PHY to use for 2.4 GHz 802.15.4 with RX channel switching.

Functions#

RAIL_IEEE802154_Init(RAIL_Handle_t railHandle, const RAIL_IEEE802154_Config_t *config)

Initialize RAIL for IEEE802.15.4 features.

RAIL_IEEE802154_Config2p4GHzRadio(RAIL_Handle_t railHandle)

Configure the radio for 2.4 GHz 802.15.4 operation.

RAIL_IEEE802154_Config2p4GHzRadioAntDiv(RAIL_Handle_t railHandle)

Configure the radio for 2.4 GHz 802.15.4 operation with antenna diversity.

Configure the radio for 2.4 GHz 802.15.4 operation with antenna diversity optimized for radio coexistence.

RAIL_IEEE802154_Config2p4GHzRadioCoex(RAIL_Handle_t railHandle)

Configure the radio for 2.4 GHz 802.15.4 operation optimized for radio coexistence.

RAIL_IEEE802154_Config2p4GHzRadioFem(RAIL_Handle_t railHandle)

Configure the radio for 2.4 GHz 802.15.4 operation with a front end module.

Configure the radio for 2.4 GHz 802.15.4 operation with antenna diversity optimized for a front end module.

Configure the radio for 2.4 GHz 802.15.4 operation optimized for radio coexistence and a front end module.

Configure the radio for 2.4 GHz 802.15.4 operation with antenna diversity optimized for radio coexistence and a front end module.

Configure the radio for 2.4 GHz 802.15.4 operation with custom settings.

RAIL_IEEE802154_ConfigGB863MHzRadio(RAIL_Handle_t railHandle)

Configure the radio for Sub-GHz GB868 863 MHz 802.15.4 operation.

RAIL_IEEE802154_ConfigGB915MHzRadio(RAIL_Handle_t railHandle)

Configure the radio for Sub-GHz GB868 915 MHz 802.15.4 operation.

RAIL_IEEE802154_Deinit(RAIL_Handle_t railHandle)

De-initialize IEEE802.15.4 hardware acceleration.

bool
RAIL_IEEE802154_IsEnabled(RAIL_Handle_t railHandle)

Return whether IEEE802.15.4 hardware acceleration is currently enabled.

RAIL_IEEE802154_GetPtiRadioConfig(RAIL_Handle_t railHandle)

Return IEEE802.15.4 PTI radio config.

RAIL_IEEE802154_SetAddresses(RAIL_Handle_t railHandle, const RAIL_IEEE802154_AddrConfig_t *addresses)

Configure the RAIL Address Filter for 802.15.4 filtering.

RAIL_IEEE802154_SetPanId(RAIL_Handle_t railHandle, uint16_t panId, uint8_t index)

Set a PAN Id for 802.15.4 address filtering.

RAIL_IEEE802154_SetShortAddress(RAIL_Handle_t railHandle, uint16_t shortAddr, uint8_t index)

Set a short address for 802.15.4 address filtering.

RAIL_IEEE802154_SetLongAddress(RAIL_Handle_t railHandle, const uint8_t *longAddr, uint8_t index)

Set a long address for 802.15.4 address filtering.

RAIL_IEEE802154_SetPanCoordinator(RAIL_Handle_t railHandle, bool isPanCoordinator)

Set whether the current node is a PAN coordinator.

RAIL_IEEE802154_SetPromiscuousMode(RAIL_Handle_t railHandle, bool enable)

Set whether to enable 802.15.4 promiscuous mode.

RAIL_IEEE802154_ConfigEOptions(RAIL_Handle_t railHandle, RAIL_IEEE802154_EOptions_t mask, RAIL_IEEE802154_EOptions_t options)

Configure certain 802.15.4E-2012 / 802.15.4-2015 Frame Version 2 features.

RAIL_IEEE802154_ConfigGOptions(RAIL_Handle_t railHandle, RAIL_IEEE802154_GOptions_t mask, RAIL_IEEE802154_GOptions_t options)

Configure certain 802.15.4G-2012 / 802.15.4-2015 SUN PHY features (only for radio configurations designed accordingly).

RAIL_IEEE802154_ComputeChannelFromPhyModeId(RAIL_Handle_t railHandle, uint8_t newPhyModeId, uint16_t *pChannel)

Compute channel to switch to given a targeted PHY Mode Id in the context of Wi-SUN mode switching.

RAILCb_IEEE802154_IsModeSwitchNewChannelValid(uint32_t currentBaseFreq, uint8_t newPhyModeId, const RAIL_ChannelConfigEntry_t *configEntryNewPhyModeId, uint16_t *pChannel)

Manage forbidden channels during mode switch.

RAIL_IEEE802154_AcceptFrames(RAIL_Handle_t railHandle, uint8_t framesMask)

Set which 802.15.4 frame types to accept.

RAIL_IEEE802154_EnableEarlyFramePending(RAIL_Handle_t railHandle, bool enable)

Enable early Frame Pending lookup event notification (RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND).

RAIL_IEEE802154_EnableDataFramePending(RAIL_Handle_t railHandle, bool enable)

Enable Frame Pending lookup event notification (RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND) for MAC Data frames.

RAIL_IEEE802154_SetFramePending(RAIL_Handle_t railHandle)

Change the Frame Pending bit on the outgoing legacy Immediate Ack from the default specified by RAIL_IEEE802154_Config_t::defaultFramePendingInOutgoingAcks.

RAIL_IEEE802154_GetAddress(RAIL_Handle_t railHandle, RAIL_IEEE802154_Address_t *pAddress)

Get the source address of the incoming data request.

RAIL_IEEE802154_WriteEnhAck(RAIL_Handle_t railHandle, const uint8_t *ackData, uint16_t ackDataLen)

Write the Auto-Ack FIFO for the next outgoing 802.15.4E Enhanced Ack.

RAIL_IEEE802154_SetRxToEnhAckTx(RAIL_Handle_t railHandle, RAIL_TransitionTime_t *pRxToEnhAckTx)

Set a separate RX packet to TX state transition turnaround time for sending an Enhanced Ack.

uint8_t
RAIL_IEEE802154_ConvertRssiToLqi(uint8_t origLqi, int8_t rssiDbm)

Convert RSSI into 802.15.4 Link Quality Indication (LQI) metric compatible with the Silicon Labs Zigbee stack.

uint8_t

Convert RSSI into 802.15.4 Energy Detection (ED) metric compatible with the Silicon Labs Zigbee stack.

RAIL_IEEE802154_ConfigSignalIdentifier(RAIL_Handle_t railHandle, RAIL_IEEE802154_SignalIdentifierMode_t signalIdentifierMode)

Configure signal identifier for 802.15.4 signal detection.

RAIL_IEEE802154_EnableSignalDetection(RAIL_Handle_t railHandle, bool enable)

Enable or disable signal identifier for 802.15.4 signal detection.

RAIL_IEEE802154_ConfigCcaMode(RAIL_Handle_t railHandle, RAIL_IEEE802154_CcaMode_t ccaMode)

Set 802.15.4 CCA mode.

RAIL_IEEE802154_ConfigRxChannelSwitching(RAIL_Handle_t railHandle, const RAIL_IEEE802154_RxChannelSwitchingCfg_t *pConfig)

Configure RX channel switching for 802.15.4.

RAIL_IEEE802154_CalibrateIr2p4Ghz(RAIL_Handle_t railHandle, uint32_t *imageRejection)

Calibrate image rejection for IEEE 802.15.4 2.4 GHz.

RAIL_IEEE802154_CalibrateIrSubGhz(RAIL_Handle_t railHandle, uint32_t *imageRejection)

Calibrate image rejection for IEEE 802.15.4 915 MHz and 868 MHz.

Macro Definition Documentation#

RAIL_IEEE802154_MAX_ADDRESSES#

#define RAIL_IEEE802154_MAX_ADDRESSES
Value:
(3U)

The maximum number of allowed addresses of each type.


Definition at line 225 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_RX_CHANNEL_SWITCHING_BUF_BYTES#

#define RAIL_IEEE802154_RX_CHANNEL_SWITCHING_BUF_BYTES
Value:
(0U)

RX channel switching buffer size, in bytes.

SLI_LIBRARY_BUILD


Definition at line 315 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_RX_CHANNEL_SWITCHING_BUF_ALIGNMENT_TYPE#

#define RAIL_IEEE802154_RX_CHANNEL_SWITCHING_BUF_ALIGNMENT_TYPE
Value:
uint32_t

Fixed-width type indicating the needed alignment for RX channel switching buffer.


Definition at line 320 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_RX_CHANNEL_SWITCHING_BUF_ALIGNMENT#

#define RAIL_IEEE802154_RX_CHANNEL_SWITCHING_BUF_ALIGNMENT
Value:
(sizeof(RAIL_IEEE802154_RX_CHANNEL_SWITCHING_BUF_ALIGNMENT_TYPE))

Alignment that is needed for RX channel switching buffer.


Definition at line 323 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_RX_CHANNEL_SWITCHING_NUM_CHANNELS#

#define RAIL_IEEE802154_RX_CHANNEL_SWITCHING_NUM_CHANNELS
Value:
(2U)

Maximum numbers of channels supported for RX channel switching.


Definition at line 326 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_E_OPTIONS_NONE#

#define RAIL_IEEE802154_E_OPTIONS_NONE
Value:
0UL

A value representing no options enabled.


Definition at line 991 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_E_OPTIONS_DEFAULT#

#define RAIL_IEEE802154_E_OPTIONS_DEFAULT
Value:
RAIL_IEEE802154_E_OPTIONS_NONE

All options disabled by default .


Definition at line 993 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_E_OPTION_GB868#

#define RAIL_IEEE802154_E_OPTION_GB868
Value:
(1UL << RAIL_IEEE802154_E_OPTION_GB868_SHIFT)

An option to enable/disable 802.15.4E-2012 features needed for GB868.

When not promiscuous, RAIL normally accepts only 802.15.4 MAC frames whose MAC header Frame Version is 0 (802.15.4-2003) or 1 (802.15.4-2006), filtering out higher Frame Version packets (as RAIL_RX_PACKET_ABORT_FORMAT). Enabling this feature additionally allows Frame Version 2 (802.15.4E-2012 / 802.15.4-2015) packets to be accepted and passed to the application.

Note


Definition at line 1012 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_E_OPTION_ENH_ACK#

#define RAIL_IEEE802154_E_OPTION_ENH_ACK
Value:
(1UL << RAIL_IEEE802154_E_OPTION_ENH_ACK_SHIFT)

An option to enable/disable 802.15.4E-2012 features needed for Enhanced Acks.

This option requires that RAIL_IEEE802154_E_OPTION_GB868 also be enabled, and is enabled automatically on platforms that support this feature. It exists as a separate flag to allow runtime detection of whether the platform supports this feature or not.

When enabled, only an Enhanced Ack is expected in response to a transmitted Ack-requesting 802.15.4E Version 2 frame. RAIL only knows how to construct 802.15.4 Immediate Acks but not Enhanced Acks.

This option causes RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND to be issued for Ack-requesting Version 2 MAC Command frames, Data frames (if RAIL_IEEE802154_EnableDataFramePending() is enabled), and Multipurpose Frames (if RAIL_IEEE802154_ACCEPT_MULTIPURPOSE_FRAMES is enabled).

The application is expected to handle this event by calling RAIL_GetRxIncomingPacketInfo() and parsing the partly-received incoming frame to determine the type of Ack needed:

  • If an Immediate Ack, determine Frame Pending needs based on the packet type and addressing information and call RAIL_IEEE802154_ToggleFramePending() if necessary;

  • If an Enhanced Ack, generate the complete payload of the Enhanced Ack including any Frame Pending information and call RAIL_IEEE802154_WriteEnhAck() in time for that Enhanced Ack to be sent. If not called in time, RAIL_EVENT_TXACK_UNDERFLOW will likely result. Note that if 802.15.4 MAC-level encryption is used with Version 2 frames, the application should decrypt the MAC Command byte in a MAC Command frame to determine whether it is a Data Request or other MAC Command.

An application can also enable RAIL_IEEE802154_EnableEarlyFramePending() if the protocol doesn't need to examine the MAC Command byte of MAC Command frames but can infer it to be a Data Request.

On 802.15.4E GB868 platforms that lack this support, legacy Immediate Acks are sent/expected for received/transmitted Ack-requesting 802.15.4E Frame Version 2 frames; calls to RAIL_IEEE802154_WriteEnhAck() have no effect. Attempting to use this feature via RAIL_IEEE802154_ConfigEOptions() returns an error.


Definition at line 1058 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_E_OPTION_IMPLICIT_BROADCAST#

#define RAIL_IEEE802154_E_OPTION_IMPLICIT_BROADCAST
Value:
(1UL << RAIL_IEEE802154_E_OPTION_IMPLICIT_BROADCAST_SHIFT)

An option to enable/disable 802.15.4E-2012 macImplicitBroadcast feature.

When enabled, received Frame Version 2 frames without a destination PAN Id or destination address are treated as though they are addressed to the broadcast PAN Id and broadcast short address. When disabled, such frames are filtered unless the device is the PAN coordinator and appropriate source addressing information exists in the packet


Definition at line 1069 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_E_OPTIONS_ALL#

#define RAIL_IEEE802154_E_OPTIONS_ALL
Value:
0xFFFFFFFFUL

A value representing all possible options.


Definition at line 1072 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_G_OPTIONS_NONE#

#define RAIL_IEEE802154_G_OPTIONS_NONE
Value:
0UL

A value representing no options enabled.


Definition at line 1108 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_G_OPTIONS_DEFAULT#

#define RAIL_IEEE802154_G_OPTIONS_DEFAULT
Value:
RAIL_IEEE802154_G_OPTIONS_NONE

All options disabled by default .


Definition at line 1110 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_G_OPTION_GB868#

#define RAIL_IEEE802154_G_OPTION_GB868
Value:
(1UL << RAIL_IEEE802154_G_OPTION_GB868_SHIFT)

An option to enable/disable 802.15.4G-2012 features needed for GB868.

Normally RAIL supports 802.15.4-2003 and -2006 radio configurations that have the single-byte PHY header allowing frames up to 128 bytes in size. This feature must be enabled for 802.15.4G-2012 or 802.15.4-2015 SUN PHY radio configurations with the two-byte bit-reversed-length PHY header format.

While GB868 only supports whitened non-FEC non-mode-switch frames up to 129 bytes including 2-byte CRC, this option also enables:

  • On platforms where RAIL_FEAT_IEEE802154_G_4BYTE_CRC_SUPPORTED is true: automatic per-packet 2/4-byte Frame Check Sequence (FCS) reception and transmission based on the FCS Type bit in the received/transmitted PHY header. This includes Ack reception and automatically-generated Acks reflect the CRC size of the incoming frame being acknowledged (i.e., their MAC payload will be increased to 7 bytes when sending 4-byte FCS). On other platforms, only the 2-byte FCS is supported.

  • On platforms where RAIL_FEAT_IEEE802154_G_UNWHITENED_RX_SUPPORTED and/or RAIL_FEAT_IEEE802154_G_UNWHITENED_TX_SUPPORTED are true: automatic per-packet whitened/unwhitened reception and transmission, respectively, based on the Data Whitening bit in the received/transmitted PHY header. This includes Ack reception and automatically-generated Acks which reflect the whitening of the incoming frame being acknowledged. On other platforms, only whitened frames are supported.

  • Support for frames up to 2049 bytes per the radio configuration's maximum packet length setting.

Note

  • Sending/receiving whitened frames assumes the radio configuration has established an appropriate 802.15.4-compliant whitening algorithm. RAIL does not itself override the radio configuration's whitening settings other than to enable/disable it per-packet based on the packet's PHY header Data Whitening flag.


Definition at line 1146 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_G_OPTION_DYNFEC#

#define RAIL_IEEE802154_G_OPTION_DYNFEC
Value:
(1UL << RAIL_IEEE802154_G_OPTION_DYNFEC_SHIFT)

An option to enable/disable 802.15.4G dynamic FEC feature (SUN FSK only).

The sync word, called start-of-frame delimiter (SFD) in the 15.4 spec, indicates whether the rest of the packet is FEC encoded or not. This feature requires per-packet dual sync word detection and specific receiver pausing. Note that this feature is only available on platforms where RAIL_IEEE802154_SUPPORTS_G_DYNFEC is true.

This option is only valid for SUN PHYs that have the FEC configured and enabled.

The sync word used during transmit is selected with RAIL_TX_OPTION_SYNC_WORD_ID.

The sync word corresponding to the FEC encoded mode must be SYNC1, with SYNC2 indicating non-FEC. Sync words are set appropriately in all Sun FEC-enabled PHYs so there should never be a need to call RAIL_ConfigSyncWords() when this option is enabled.

Also, dual sync word detection is set in all SUN FEC enabled PHYs, then there is no need to change RAIL_RX_OPTION_ENABLE_DUALSYNC.


Definition at line 1167 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_G_OPTION_WISUN_MODESWITCH#

#define RAIL_IEEE802154_G_OPTION_WISUN_MODESWITCH
Value:
(1UL << RAIL_IEEE802154_G_OPTION_WISUN_MODESWITCH_SHIFT)

An option to enable/disable Wi-SUN Mode Switch feature.

This feature consists in switching to a new PHY mode with a higher rate typically by sending/receiving a specific Mode Switch packet that indicates the incoming new PHY mode. The Mode Switch packet is an FSK-modulated 2-byte PHY header with no payload. Because this feature relies on specific receiver pausing, note that it is only available on platforms where RAIL_IEEE802154_SUPPORTS_G_MODESWITCH is true.


Definition at line 1177 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_G_OPTIONS_ALL#

#define RAIL_IEEE802154_G_OPTIONS_ALL
Value:
0xFFFFFFFFUL

A value representing all possible options.


Definition at line 1180 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ACCEPT_BEACON_FRAMES#

#define RAIL_IEEE802154_ACCEPT_BEACON_FRAMES
Value:
(0x01)

When receiving packets, accept 802.15.4 BEACON frame types.


Definition at line 1275 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ACCEPT_DATA_FRAMES#

#define RAIL_IEEE802154_ACCEPT_DATA_FRAMES
Value:
(0x02)

When receiving packets, accept 802.15.4 DATA frame types.


Definition at line 1277 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ACCEPT_ACK_FRAMES#

#define RAIL_IEEE802154_ACCEPT_ACK_FRAMES
Value:
(0x04)

When receiving packets, accept 802.15.4 Ack frame types.

Note

  • Expected Ack frame types will still be accepted regardless of this setting when waiting for an Ack after a transmit that used RAIL_TX_OPTION_WAIT_FOR_ACK and auto-Ack is enabled.


Definition at line 1282 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ACCEPT_COMMAND_FRAMES#

#define RAIL_IEEE802154_ACCEPT_COMMAND_FRAMES
Value:
(0x08)

When receiving packets, accept 802.15.4 COMMAND frame types.


Definition at line 1284 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ACCEPT_MULTIPURPOSE_FRAMES#

#define RAIL_IEEE802154_ACCEPT_MULTIPURPOSE_FRAMES
Value:
(0x20)

When receiving packets, accept 802.15.4-2015 Multipurpose frame types.


Definition at line 1287 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ACCEPT_STANDARD_FRAMES#

#define RAIL_IEEE802154_ACCEPT_STANDARD_FRAMES
Value:
(RAIL_IEEE802154_ACCEPT_BEACON_FRAMES \
| RAIL_IEEE802154_ACCEPT_DATA_FRAMES \
| RAIL_IEEE802154_ACCEPT_COMMAND_FRAMES)

In standard operation, accept BEACON, DATA and COMMAND frames.

Don't receive Ack frames unless waiting for Ack (i.e., only receive expected Acks).


Definition at line 1292 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ToggleFramePending#

#define RAIL_IEEE802154_ToggleFramePending
Value:
RAIL_IEEE802154_SetFramePending

Alternate naming for function RAIL_IEEE802154_SetFramePending to depict it is used for changing the default setting specified by RAIL_IEEE802154_Config_t::defaultFramePendingInOutgoingAcks in an outgoing Ack.


Definition at line 1392 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_EnableSignalIdentifier#

#define RAIL_IEEE802154_EnableSignalIdentifier
Value:
RAIL_IEEE802154_EnableSignalDetection

Backward compatible name for the RAIL_IEEE802154_EnableSignalDetection API.


Definition at line 1633 of file protocol/ieee802154/rail_ieee802154.h

Enumeration Documentation#

RAIL_IEEE802154_AddressLength_t#

RAIL_IEEE802154_AddressLength_t

Different lengths that an 802.15.4 address can have.

Enumerator
RAIL_IEEE802154_ShortAddress

2 byte short address.

RAIL_IEEE802154_LongAddress

8 byte extended address.


Definition at line 185 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_PtiRadioConfig_t#

RAIL_IEEE802154_PtiRadioConfig_t

802.15.4 PTI radio configuration mode

Enumerator
RAIL_IEEE802154_PTI_RADIO_CONFIG_2P4GHZ

Built-in 2.4 GHz 802.15.4 radio configuration.

RAIL_IEEE802154_PTI_RADIO_CONFIG_2P4GHZ_ANTDIV

Built-in 2.4 GHz 802.15.4 radio configuration with RX antenna diversity support.

RAIL_IEEE802154_PTI_RADIO_CONFIG_2P4GHZ_COEX

Built-in 2.4 GHz 802.15.4 radio configuration optimized for radio coexistence.

RAIL_IEEE802154_PTI_RADIO_CONFIG_2P4GHZ_ANTDIV_COEX

Built-in 2.4 GHz 802.15.4 radio configuration with RX antenna diversity support optimized for radio coexistence.

RAIL_IEEE802154_PTI_RADIO_CONFIG_2P4GHZ_FEM

Built-in 2.4 GHz 802.15.4 radio configuration optimized for front end modules.

RAIL_IEEE802154_PTI_RADIO_CONFIG_2P4GHZ_FEM_ANTDIV

Built-in 2.4 GHz 802.15.4 radio configuration with RX antenna diversity support optimized for front end modules.

RAIL_IEEE802154_PTI_RADIO_CONFIG_2P4GHZ_FEM_COEX

Built-in 2.4 GHz 802.15.4 radio configuration optimized for radio coexistence and front end modules.

RAIL_IEEE802154_PTI_RADIO_CONFIG_2P4GHZ_FEM_ANTDIV_COEX

Built-in 2.4 GHz 802.15.4 radio configuration with RX antenna diversity support optimized for radio coexistence and front end modules.

RAIL_IEEE802154_PTI_RADIO_CONFIG_863MHZ_GB868

Built-in 863 MHz GB868 802.15.4 radio configuration.

RAIL_IEEE802154_PTI_RADIO_CONFIG_915MHZ_GB868

Built-in 915 MHz GB868 802.15.4 radio configuration.

RAIL_IEEE802154_PTI_RADIO_CONFIG_915MHZ_R23_NA_EXT

External 915 MHz Zigbee R23 802.15.4 NA radio configuration.


Definition at line 786 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_EOptions_t#

RAIL_IEEE802154_EOptions_t

802.15.4E-2012 options, in reality a bitmask.

Enumerator
RAIL_IEEE802154_E_OPTION_GB868_SHIFT

Shift position of RAIL_IEEE802154_E_OPTION_GB868 bit.

RAIL_IEEE802154_E_OPTION_ENH_ACK_SHIFT

Shift position of RAIL_IEEE802154_E_OPTION_ENH_ACK bit.

RAIL_IEEE802154_E_OPTION_IMPLICIT_BROADCAST_SHIFT

Shift position of RAIL_IEEE802154_E_OPTION_IMPLICIT_BROADCAST bit.


Definition at line 981 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_GOptions_t#

RAIL_IEEE802154_GOptions_t

802.15.4G-2012 options, in reality a bitmask.

Enumerator
RAIL_IEEE802154_G_OPTION_GB868_SHIFT

Shift position of RAIL_IEEE802154_G_OPTION_GB868 bit.

RAIL_IEEE802154_G_OPTION_DYNFEC_SHIFT

Shift position of RAIL_IEEE802154_G_OPTION_DYNFEC bit.

RAIL_IEEE802154_G_OPTION_WISUN_MODESWITCH_SHIFT

Shift position of RAIL_IEEE802154_G_OPTION_WISUN_MODESWITCH bit.


Definition at line 1098 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_CcaMode_t#

RAIL_IEEE802154_CcaMode_t

Available CCA modes.

Enumerator
RAIL_IEEE802154_CCA_MODE_RSSI

RSSI-based CCA.

RAIL_IEEE802154_CCA_MODE_SIGNAL

Signal Identifier-based CCA.

RAIL_IEEE802154_CCA_MODE_SIGNAL_OR_RSSI

RSSI or signal identifier-based CCA.

RAIL_IEEE802154_CCA_MODE_SIGNAL_AND_RSSI

RSSI and signal identifier-based CCA.

RAIL_IEEE802154_CCA_MODE_ALWAYS_TRANSMIT

ALOHA.

RAIL_IEEE802154_CCA_MODE_COUNT

Number of CCA modes.


Definition at line 1522 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_SignalIdentifierMode_t#

RAIL_IEEE802154_SignalIdentifierMode_t

Available Signal identifier modes.

Enumerator
RAIL_IEEE802154_SIGNAL_IDENTIFIER_MODE_DISABLE

Disable signal detection mode.

RAIL_IEEE802154_SIGNAL_IDENTIFIER_MODE_154

2.4 GHz 802.15.4 signal detection mode.


Definition at line 1572 of file protocol/ieee802154/rail_ieee802154.h

Variable Documentation#

RAIL_IEEE802154_Phy2p4GHz#

const RAIL_ChannelConfig_t* const RAIL_IEEE802154_Phy2p4GHz

Default PHY to use for 2.4 GHz 802.15.4.

Will be NULL if RAIL_SUPPORTS_PROTOCOL_IEEE802154 or RAIL_SUPPORTS_2P4GHZ_BAND is 0.


Definition at line 376 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Phy2p4GHzAntDiv#

const RAIL_ChannelConfig_t* const RAIL_IEEE802154_Phy2p4GHzAntDiv

Default PHY to use for 2.4 GHz 802.15.4 with antenna diversity.

Will be NULL if RAIL_SUPPORTS_PROTOCOL_IEEE802154, RAIL_SUPPORTS_2P4GHZ_BAND, or RAIL_SUPPORTS_ANTENNA_DIVERSITY is 0.


Definition at line 397 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Phy2p4GHzCoex#

const RAIL_ChannelConfig_t* const RAIL_IEEE802154_Phy2p4GHzCoex

Default PHY to use for 2.4 GHz 802.15.4 optimized for coexistence.

Will be NULL if RAIL_IEEE802154_SUPPORTS_COEX_PHY is 0.


Definition at line 403 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Phy2p4GHzAntDivCoex#

const RAIL_ChannelConfig_t* const RAIL_IEEE802154_Phy2p4GHzAntDivCoex

Default PHY to use for 2.4 GHz 802.15.4 optimized for coexistence, while supporting antenna diversity.

Will be NULL if RAIL_SUPPORTS_ANTENNA_DIVERSITY or RAIL_IEEE802154_SUPPORTS_COEX_PHY is 0.


Definition at line 411 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Phy2p4GHzFem#

const RAIL_ChannelConfig_t* const RAIL_IEEE802154_Phy2p4GHzFem

Default PHY to use for 2.4 GHz 802.15.4 with a configuration that supports a front-end module.

Will be NULL if RAIL_IEEE802154_SUPPORTS_FEM_PHY is 0.


Definition at line 418 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Phy2p4GHzAntDivFem#

const RAIL_ChannelConfig_t* const RAIL_IEEE802154_Phy2p4GHzAntDivFem

Default PHY to use for 2.4 GHz 802.15.4 with a configuration that supports a front-end module and antenna diversity.

Will be NULL if RAIL_IEEE802154_SUPPORTS_FEM_PHY or RAIL_SUPPORTS_ANTENNA_DIVERSITY is 0.


Definition at line 426 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Phy2p4GHzCoexFem#

const RAIL_ChannelConfig_t* const RAIL_IEEE802154_Phy2p4GHzCoexFem

Default PHY to use for 2.4 GHz 802.15.4 with a configuration that supports a front-end module and is optimized for radio coexistence.

Will be NULL if RAIL_IEEE802154_SUPPORTS_FEM_PHY or RAIL_IEEE802154_SUPPORTS_COEX_PHY is 0.


Definition at line 434 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Phy2p4GHzAntDivCoexFem#

const RAIL_ChannelConfig_t* const RAIL_IEEE802154_Phy2p4GHzAntDivCoexFem

Default PHY to use for 2.4 GHz 802.15.4 with a configuration that supports a front-end module and antenna diversity, and is optimized for radio coexistence.

Will be NULL if RAIL_IEEE802154_SUPPORTS_FEM_PHY, RAIL_IEEE802154_SUPPORTS_COEX_PHY, or RAIL_SUPPORTS_ANTENNA_DIVERSITY is 0.


Definition at line 443 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Phy2p4GHzCustom1#

const RAIL_ChannelConfig_t* const RAIL_IEEE802154_Phy2p4GHzCustom1

Default PHY to use for 2.4 GHz 802.15.4 with custom settings.

Will be NULL if RAIL_IEEE802154_SUPPORTS_CUSTOM1_PHY is 0.


Definition at line 449 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_PhyGB863MHz#

const RAIL_ChannelConfig_t* const RAIL_IEEE802154_PhyGB863MHz

Default PHY to use for 863 MHz GB868 802.15.4.

Will be NULL if RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868 is 0.


Definition at line 455 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_PhyGB915MHz#

const RAIL_ChannelConfig_t* const RAIL_IEEE802154_PhyGB915MHz

Default PHY to use for 915 MHz GB868 802.15.4.

Will be NULL if RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868 is 0.


Definition at line 461 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Phy2p4GHzRxChSwitching#

const RAIL_ChannelConfig_t* const RAIL_IEEE802154_Phy2p4GHzRxChSwitching

Default PHY to use for 2.4 GHz 802.15.4 with RX channel switching.

Will be NULL if RAIL_IEEE802154_SUPPORTS_RX_CHANNEL_SWITCHING is 0.


Definition at line 467 of file protocol/ieee802154/rail_ieee802154.h

Function Documentation#

RAIL_IEEE802154_Init#

RAIL_Status_t RAIL_IEEE802154_Init (RAIL_Handle_t railHandle, const RAIL_IEEE802154_Config_t * config)

Initialize RAIL for IEEE802.15.4 features.

Parameters
[in]railHandle

A RAIL instance handle.

[in]config

A non-NULL pointer to an IEEE802154 configuration structure.

Returns

  • Status code indicating success of the function call.

This function calls the following RAIL functions to configure the radio for IEEE802.15.4 features.

Initializes the following:

  • Enables IEEE802154 hardware acceleration

  • Configures RAIL Auto Ack functionality

  • Configures RAIL Address Filter for 802.15.4 address filtering

It saves having to call the following functions individually:

It must be called before most of the RAIL_IEEE802154_* functions.


Definition at line 497 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Config2p4GHzRadio#

RAIL_Status_t RAIL_IEEE802154_Config2p4GHzRadio (RAIL_Handle_t railHandle)

Configure the radio for 2.4 GHz 802.15.4 operation.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • Status code indicating success of the function call.

This initializes the radio for 2.4 GHz operation. It takes the place of calling RAIL_ConfigChannels(). After this call, channels 11-26 will be available, giving the frequencies of those channels on channel page 0, as defined by IEEE 802.15.4-2011 section 8.1.2.2.

Note


Definition at line 513 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Config2p4GHzRadioAntDiv#

RAIL_Status_t RAIL_IEEE802154_Config2p4GHzRadioAntDiv (RAIL_Handle_t railHandle)

Configure the radio for 2.4 GHz 802.15.4 operation with antenna diversity.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • Status code indicating success of the function call.

This initializes the radio for 2.4 GHz operation, but with a configuration that supports antenna diversity. It takes the place of calling RAIL_ConfigChannels(). After this call, channels 11-26 will be available, giving the frequencies of those channels on channel page 0, as defined by IEEE 802.15.4-2011 section 8.1.2.2.

Note


Definition at line 529 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Config2p4GHzRadioAntDivCoex#

RAIL_Status_t RAIL_IEEE802154_Config2p4GHzRadioAntDivCoex (RAIL_Handle_t railHandle)

Configure the radio for 2.4 GHz 802.15.4 operation with antenna diversity optimized for radio coexistence.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • Status code indicating success of the function call.

This initializes the radio for 2.4 GHz operation, but with a configuration that supports antenna diversity optimized for radio coexistence. It takes the place of calling RAIL_ConfigChannels(). After this call, channels 11-26 will be available, giving the frequencies of those channels on channel page 0, as defined by IEEE 802.15.4-2011 section 8.1.2.2.

Note


Definition at line 546 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Config2p4GHzRadioCoex#

RAIL_Status_t RAIL_IEEE802154_Config2p4GHzRadioCoex (RAIL_Handle_t railHandle)

Configure the radio for 2.4 GHz 802.15.4 operation optimized for radio coexistence.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • Status code indicating success of the function call.

This initializes the radio for 2.4 GHz operation, but with a configuration that supports radio coexistence. It takes the place of calling RAIL_ConfigChannels(). After this call, channels 11-26 will be available, giving the frequencies of those channels on channel page 0, as defined by IEEE 802.15.4-2011 section 8.1.2.2.

Note


Definition at line 562 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Config2p4GHzRadioFem#

RAIL_Status_t RAIL_IEEE802154_Config2p4GHzRadioFem (RAIL_Handle_t railHandle)

Configure the radio for 2.4 GHz 802.15.4 operation with a front end module.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • Status code indicating success of the function call.

This initializes the radio for 2.4 GHz operation, but with a configuration that supports a front end module. It takes the place of calling RAIL_ConfigChannels(). After this call, channels 11-26 will be available, giving the frequencies of those channels on channel page 0, as defined by IEEE 802.15.4-2011 section 8.1.2.2.

Note


Definition at line 578 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Config2p4GHzRadioAntDivFem#

RAIL_Status_t RAIL_IEEE802154_Config2p4GHzRadioAntDivFem (RAIL_Handle_t railHandle)

Configure the radio for 2.4 GHz 802.15.4 operation with antenna diversity optimized for a front end module.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • Status code indicating success of the function call.

This initializes the radio for 2.4 GHz operation, but with a configuration that supports antenna diversity and a front end module. It takes the place of calling RAIL_ConfigChannels(). After this call, channels 11-26 will be available, giving the frequencies of those channels on channel page 0, as defined by IEEE 802.15.4-2011 section 8.1.2.2.

Note


Definition at line 595 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Config2p4GHzRadioCoexFem#

RAIL_Status_t RAIL_IEEE802154_Config2p4GHzRadioCoexFem (RAIL_Handle_t railHandle)

Configure the radio for 2.4 GHz 802.15.4 operation optimized for radio coexistence and a front end module.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • Status code indicating success of the function call.

This initializes the radio for 2.4 GHz operation, but with a configuration that supports radio coexistence and a front end module. It takes the place of calling RAIL_ConfigChannels(). After this call, channels 11-26 will be available, giving the frequencies of those channels on channel page 0, as defined by IEEE 802.15.4-2011 section 8.1.2.2.

Note


Definition at line 612 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Config2p4GHzRadioAntDivCoexFem#

RAIL_Status_t RAIL_IEEE802154_Config2p4GHzRadioAntDivCoexFem (RAIL_Handle_t railHandle)

Configure the radio for 2.4 GHz 802.15.4 operation with antenna diversity optimized for radio coexistence and a front end module.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • Status code indicating success of the function call.

This initializes the radio for 2.4 GHz operation, but with a configuration that supports antenna diversity, radio coexistence and a front end module. It takes the place of calling RAIL_ConfigChannels(). After this call, channels 11-26 will be available, giving the frequencies of those channels on channel page 0, as defined by IEEE 802.15.4-2011 section 8.1.2.2.

Note


Definition at line 629 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Config2p4GHzRadioCustom1#

RAIL_Status_t RAIL_IEEE802154_Config2p4GHzRadioCustom1 (RAIL_Handle_t railHandle)

Configure the radio for 2.4 GHz 802.15.4 operation with custom settings.

Parameters
[in]railHandle

A RAIL instance handle.

It enables better interoperability with some proprietary PHYs, but doesn't guarantee data sheet performance.

Returns

  • Status code indicating success of the function call.

This initializes the radio for 2.4 GHz operation with custom settings. It replaces needing to call RAIL_ConfigChannels(). Do not call this function unless instructed by Silicon Labs.

Note


Definition at line 723 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ConfigGB863MHzRadio#

RAIL_Status_t RAIL_IEEE802154_ConfigGB863MHzRadio (RAIL_Handle_t railHandle)

Configure the radio for Sub-GHz GB868 863 MHz 802.15.4 operation.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • Status code indicating success of the function call.

This initializes the radio for Sub-GHz GB868 863 MHz operation. It takes the place of calling RAIL_ConfigChannels(). After this call, GB868 channels in the 863 MHz band (channel pages 28, 29, and 30 – logical channels 0x80..0x9A, 0xA0..0xA8, 0xC0..0xDA, respectively) will be available, as defined by Rev 22 of the Zigbee Specification, 2017 document 05-3474-22, section D.10.2.1.3.2.

Note


Definition at line 740 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ConfigGB915MHzRadio#

RAIL_Status_t RAIL_IEEE802154_ConfigGB915MHzRadio (RAIL_Handle_t railHandle)

Configure the radio for Sub-GHz GB868 915 MHz 802.15.4 operation.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • Status code indicating success of the function call.

This initializes the radio for Sub-GHz GB868 915 MHz operation. It takes the place of calling RAIL_ConfigChannels(). After this call, GB868 channels in the 915 MHz band (channel page 31 – logical channels 0xE0..0xFA) will be available, as defined by Rev 22 of the Zigbee Specification, 2017 document 05-3474-22, section D.10.2.1.3.2.

Note


Definition at line 756 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_Deinit#

RAIL_Status_t RAIL_IEEE802154_Deinit (RAIL_Handle_t railHandle)

De-initialize IEEE802.15.4 hardware acceleration.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • Status code indicating success of the function call.

Disables and resets all IEE802.15.4 hardware acceleration features. This function should only be called when the radio is IDLE. This calls the following:


Definition at line 771 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_IsEnabled#

bool RAIL_IEEE802154_IsEnabled (RAIL_Handle_t railHandle)

Return whether IEEE802.15.4 hardware acceleration is currently enabled.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • true if IEEE802.15.4 hardware acceleration was enabled to start with and false otherwise.


Definition at line 780 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_GetPtiRadioConfig#

RAIL_IEEE802154_PtiRadioConfig_t RAIL_IEEE802154_GetPtiRadioConfig (RAIL_Handle_t railHandle)

Return IEEE802.15.4 PTI radio config.

Parameters
[in]railHandle

A RAIL instance handle.

Returns

  • PTI (Packet Trace Information) radio config Id.


Definition at line 859 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_SetAddresses#

RAIL_Status_t RAIL_IEEE802154_SetAddresses (RAIL_Handle_t railHandle, const RAIL_IEEE802154_AddrConfig_t * addresses)

Configure the RAIL Address Filter for 802.15.4 filtering.

Parameters
[in]railHandle

A RAIL instance handle.

[in]addresses

A pointer to the address information that should be used.

Returns

  • Status code indicating success of the function call. If this returns an error, the 802.15.4 address filter is in an undefined state.

Set up the 802.15.4 address filter to accept messages to the given addresses. This will return false if any of the addresses failed to be set. If NULL is passed in for addresses, all addresses will be set to their reset value.


Definition at line 886 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_SetPanId#

RAIL_Status_t RAIL_IEEE802154_SetPanId (RAIL_Handle_t railHandle, uint16_t panId, uint8_t index)

Set a PAN Id for 802.15.4 address filtering.

Parameters
[in]railHandle

A RAIL instance handle.

[in]panId

The 16-bit PAN Id information. This will be matched against the destination PAN Id of incoming messages. The PAN Id is sent little endian over the air, meaning panId[7:0] is first in the payload followed by panId[15:8]. Set to 0xFFFF to disable for this index.

[in]index

Indicates which PAN Id to set. Must be below RAIL_IEEE802154_MAX_ADDRESSES.

Returns

  • Status code indicating success of the function call.

Set up the 802.15.4 address filter to accept messages to the given PAN Id.


Definition at line 903 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_SetShortAddress#

RAIL_Status_t RAIL_IEEE802154_SetShortAddress (RAIL_Handle_t railHandle, uint16_t shortAddr, uint8_t index)

Set a short address for 802.15.4 address filtering.

Parameters
[in]railHandle

A handle of RAIL instance

[in]shortAddr

16 bit short address value. This will be matched against the destination short address of incoming messages. The short address is sent little endian over the air meaning shortAddr[7:0] is first in the payload followed by shortAddr[15:8]. Set to 0xFFFF to disable for this index.

[in]index

Which short address to set. Must be below RAIL_IEEE802154_MAX_ADDRESSES.

Returns

  • Status code indicating success of the function call.

Set up the 802.15.4 address filter to accept messages to the given short address.


Definition at line 922 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_SetLongAddress#

RAIL_Status_t RAIL_IEEE802154_SetLongAddress (RAIL_Handle_t railHandle, const uint8_t * longAddr, uint8_t index)

Set a long address for 802.15.4 address filtering.

Parameters
[in]railHandle

A RAIL instance handle.

[in]longAddr

A pointer to an 8-byte array containing the long address information. The long address must be in over-the-air byte order. This will be matched against the destination long address of incoming messages. Set to 0x00 00 00 00 00 00 00 00 to disable for this index.

[in]index

Indicates which long address to set. Must be below RAIL_IEEE802154_MAX_ADDRESSES.

Returns

  • Status code indicating success of the function call.

Set up the 802.15.4 address filter to accept messages to the given long address.


Definition at line 941 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_SetPanCoordinator#

RAIL_Status_t RAIL_IEEE802154_SetPanCoordinator (RAIL_Handle_t railHandle, bool isPanCoordinator)

Set whether the current node is a PAN coordinator.

Parameters
[in]railHandle

A RAIL instance handle.

[in]isPanCoordinator

true if this device is a PAN coordinator.

Returns

  • Status code indicating success of the function call.

If the device is a PAN Coordinator, it will accept data and command frames with no destination address. This function will fail if 802.15.4 hardware acceleration is not currently enabled by calling RAIL_IEEE802154_Init(). This setting may be changed at any time when 802.15.4 hardware acceleration is enabled.


Definition at line 958 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_SetPromiscuousMode#

RAIL_Status_t RAIL_IEEE802154_SetPromiscuousMode (RAIL_Handle_t railHandle, bool enable)

Set whether to enable 802.15.4 promiscuous mode.

Parameters
[in]railHandle

A RAIL instance handle.

[in]enable

true if all frames and addresses should be accepted.

Returns

  • Status code indicating success of the function call.

If promiscuous mode is enabled, no frame or address filtering steps will be performed other than checking the CRC. This function will fail if 802.15.4 hardware acceleration is not currently enabled by calling RAIL_IEEE802154_Init(). This setting may be changed at any time when 802.15.4 hardware acceleration is enabled.


Definition at line 974 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ConfigEOptions#

RAIL_Status_t RAIL_IEEE802154_ConfigEOptions (RAIL_Handle_t railHandle, RAIL_IEEE802154_EOptions_t mask, RAIL_IEEE802154_EOptions_t options)

Configure certain 802.15.4E-2012 / 802.15.4-2015 Frame Version 2 features.

Parameters
[in]railHandle

A RAIL instance handle.

[in]mask

A bitmask containing which options should be modified.

[in]options

A bitmask containing desired options settings. Bit positions for each option are found in the RAIL_IEEE802154_EOptions_t.

Returns

  • Status code indicating success of the function call.

This function will fail if 802.15.4 hardware acceleration is not currently enabled by calling RAIL_IEEE802154_Init() or the platform does not support the feature(s). These settings may be changed at any time when 802.15.4 hardware acceleration is enabled.


Definition at line 1090 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ConfigGOptions#

RAIL_Status_t RAIL_IEEE802154_ConfigGOptions (RAIL_Handle_t railHandle, RAIL_IEEE802154_GOptions_t mask, RAIL_IEEE802154_GOptions_t options)

Configure certain 802.15.4G-2012 / 802.15.4-2015 SUN PHY features (only for radio configurations designed accordingly).

Parameters
[in]railHandle

A RAIL instance handle.

[in]mask

A bitmask containing which options should be modified.

[in]options

A bitmask containing desired options settings. Bit positions for each option are found in the RAIL_IEEE802154_GOptions_t.

Returns

  • Status code indicating success of the function call.

This function will fail if 802.15.4 hardware acceleration is not currently enabled by calling RAIL_IEEE802154_Init(), the platform does not support the feature(s), the radio configuration is not appropriate, or the radio is not idle.


Definition at line 1198 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ComputeChannelFromPhyModeId#

RAIL_Status_t RAIL_IEEE802154_ComputeChannelFromPhyModeId (RAIL_Handle_t railHandle, uint8_t newPhyModeId, uint16_t * pChannel)

Compute channel to switch to given a targeted PHY Mode Id in the context of Wi-SUN mode switching.

Parameters
[in]railHandle

A RAIL instance handle.

[in]newPhyModeId

A targeted PHY Mode Id.

[out]pChannel

A pointer to the channel to switch to.

Returns

  • Status code indicating success of the function call.

This function will fail if:


Definition at line 1241 of file protocol/ieee802154/rail_ieee802154.h

RAILCb_IEEE802154_IsModeSwitchNewChannelValid#

RAIL_Status_t RAILCb_IEEE802154_IsModeSwitchNewChannelValid (uint32_t currentBaseFreq, uint8_t newPhyModeId, const RAIL_ChannelConfigEntry_t * configEntryNewPhyModeId, uint16_t * pChannel)

Manage forbidden channels during mode switch.

Parameters
[in]currentBaseFreq

The current frequency of the base channel.

[in]newPhyModeId

A targeted PHY Mode Id.

[in]configEntryNewPhyModeId

A pointer to RAIL_ChannelConfigEntry_t structure corresponding to the new PHY configEntry.

[inout]pChannel

A pointer to the channel to switch to. If channel is valid, the function must just return. If channel is forbidden, the function must update it with the closest valid channel. The highest channel must be selected in case of two valid channels being equidistant to a forbidden channel.

Returns

This function must fail if no valid channel has been found. If so, RAIL will abort the mode switch.

Note


Definition at line 1269 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_AcceptFrames#

RAIL_Status_t RAIL_IEEE802154_AcceptFrames (RAIL_Handle_t railHandle, uint8_t framesMask)

Set which 802.15.4 frame types to accept.

Parameters
[in]railHandle

A RAIL instance handle.

[in]framesMask

A mask containing which 802.15.4 frame types to receive.

Returns

  • Status code indicating success of the function call.

This function will fail if 802.15.4 hardware acceleration is not currently enabled by calling RAIL_IEEE802154_Init() or framesMask requests an unsupported frame type. This setting may be changed at any time when 802.15.4 hardware acceleration is enabled. Only Beacon, Data, Ack, Command, and Multipurpose frames may be received. The RAIL_IEEE802154_ACCEPT_*_FRAMES defines may be combined to create a bitmask to pass into this function.

RAIL_IEEE802154_ACCEPT_ACK_FRAMES behaves slightly different than the other defines. If RAIL_IEEE802154_ACCEPT_ACK_FRAMES is set, the radio will accept an Ack frame during normal packet reception, but only a truly expected Ack will have its RAIL_RxPacketDetails_t::isAck true. If RAIL_IEEE802154_ACCEPT_ACK_FRAMES is not set, Ack frames will be filtered unless they're expected when the radio is waiting for an Ack.


Definition at line 1319 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_EnableEarlyFramePending#

RAIL_Status_t RAIL_IEEE802154_EnableEarlyFramePending (RAIL_Handle_t railHandle, bool enable)

Enable early Frame Pending lookup event notification (RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND).

Parameters
[in]railHandle

A RAIL instance handle.

[in]enable

true to enable, false to disable.

Returns

  • Status code indicating success of the function call.

Normally, RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND is triggered after receiving the entire MAC header and MAC command byte for an Ack-requesting MAC command frame. Version 0/1 frames also require that command to be a Data Request for this event to occur. Enabling this feature causes this event to be triggered earlier to allow for more time to determine the type of Ack needed (Immediate or Enhanced) and/or perform frame pending lookup to influence the outgoing Ack by using RAIL_IEEE802154_WriteEnhAck() or RAIL_IEEE802154_ToggleFramePending().

For Frame Version 0/1 packets and for Frame Version 2 packets when RAIL_IEEE802154_E_OPTION_ENH_ACK is not in use, "early" means right after receiving the source address information in the MAC header.

For Frame Version 2 packets when RAIL_IEEE802154_E_OPTION_ENH_ACK is in use, "early" means right after receiving any Auxiliary Security header which follows the source address information in the MAC header.

This feature is useful when the protocol knows an Ack-requesting MAC Command must be a data poll without needing to receive the MAC Command byte, giving it a bit more time to adjust Frame Pending or generate an Enhanced Ack.

This function will fail if 802.15.4 hardware acceleration is not currently enabled by calling RAIL_IEEE802154_Init(), or on platforms that do not support this feature. This setting may be changed at any time when 802.15.4 hardware acceleration is enabled.


Definition at line 1358 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_EnableDataFramePending#

RAIL_Status_t RAIL_IEEE802154_EnableDataFramePending (RAIL_Handle_t railHandle, bool enable)

Enable Frame Pending lookup event notification (RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND) for MAC Data frames.

Parameters
[in]railHandle

A RAIL instance handle.

[in]enable

true to enable, false to disable.

Returns

  • Status code indicating success of the function call.

Normally RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND is triggered only for Ack-requesting MAC command frames. Enabling this feature causes this event to also be triggered for MAC data frames, at the same point in the packet as RAIL_IEEE802154_EnableEarlyFramePending() would trigger. This feature is necessary to support the Thread Basil-Hayden Enhanced Frame Pending feature in Version 0/1 frames, and to support Version 2 Data frames which require an Enhanced Ack.

This function will fail if 802.15.4 hardware acceleration is not currently enabled by calling RAIL_IEEE802154_Init(). This setting may be changed at any time when 802.15.4 hardware acceleration is enabled.


Definition at line 1383 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_SetFramePending#

RAIL_Status_t RAIL_IEEE802154_SetFramePending (RAIL_Handle_t railHandle)

Change the Frame Pending bit on the outgoing legacy Immediate Ack from the default specified by RAIL_IEEE802154_Config_t::defaultFramePendingInOutgoingAcks.

Parameters
[in]railHandle

A handle of RAIL instance

Returns

  • Status code indicating success of the function call.

This function must only be called while processing the RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND if the Ack for this packet should go out with its Frame Pending bit set differently than what was specified by RAIL_IEEE802154_Config_t::defaultFramePendingInOutgoingAcks.

It's intended only for use with 802.15.4 legacy immediate Acks and not 802.15.4E enhanced Acks. This will return RAIL_STATUS_INVALID_STATE if it is too late to modify the outgoing Immediate Ack.


Definition at line 1413 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_GetAddress#

RAIL_Status_t RAIL_IEEE802154_GetAddress (RAIL_Handle_t railHandle, RAIL_IEEE802154_Address_t * pAddress)

Get the source address of the incoming data request.

Parameters
[in]railHandle

A RAIL instance handle.

[out]pAddress

A pointer to RAIL_IEEE802154_Address_t structure to populate with source address information.

Returns

  • Status code indicating success of the function call.

This function must only be called when handling the RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND event. This will return RAIL_STATUS_INVALID_STATE if the address information is stale (i.e., it is too late to affect the outgoing Ack).


Definition at line 1428 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_WriteEnhAck#

RAIL_Status_t RAIL_IEEE802154_WriteEnhAck (RAIL_Handle_t railHandle, const uint8_t * ackData, uint16_t ackDataLen)

Write the Auto-Ack FIFO for the next outgoing 802.15.4E Enhanced Ack.

Parameters
[in]railHandle

A RAIL instance handle.

[in]ackData

A pointer to Ack data to transmit This may be NULL, in which case it's assumed the data has already been emplaced into the Ack buffer and RAIL just needs to be told how many bytes are there. Use RAIL_GetAutoAckFifo() to get the address of RAIL's Auto-Ack buffer in RAM and its size.

[in]ackDataLen

Length of Ack data, in bytes. If this exceeds RAIL_AUTOACK_MAX_LENGTH the function will return RAIL_STATUS_INVALID_PARAMETER.

Returns

  • Status code indicating success of the function call.

This function sets the Auto-Ack data to use in acknowledging the frame being received. It must only be called while processing the RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND, and is intended for use when packet information from RAIL_GetRxIncomingPacketInfo() indicates an 802.15.4E Enhanced Ack must be sent instead of a legacy Immediate Ack. RAIL_IEEE802154_ToggleFramePending() should not be called for an Enhanced Ack; instead the Enhanced Ack's Frame Control Field should have the Frame Pending bit set appropriately in its ackData. This will return RAIL_STATUS_INVALID_STATE if it is too late to write the outgoing Ack – a situation that will likely trigger a RAIL_EVENT_TXACK_UNDERFLOW event. When successful, the Enhanced ackData will only be sent once. Subsequent packets needing an Enhanced Ack will each need to call this function to write their Ack information.


Definition at line 1459 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_SetRxToEnhAckTx#

RAIL_Status_t RAIL_IEEE802154_SetRxToEnhAckTx (RAIL_Handle_t railHandle, RAIL_TransitionTime_t * pRxToEnhAckTx)

Set a separate RX packet to TX state transition turnaround time for sending an Enhanced Ack.

Parameters
[in]railHandle

A RAIL instance handle.

[inout]pRxToEnhAckTx

A pointer to the turnaround transition requested for Enhanced Acks. It will be updated with the actual time set. Requesting a time of 0 will sync the Enhanced Ack turnaround time with that used for immediate Acks (and output 0). Requesting a time of RAIL_TRANSITION_TIME_KEEP will output the current Enhanced Ack timing parameter (0 if it is the same as that used for Immediate Acks).

Returns

  • Status code indicating a success of the function call. An error will not update the pRxToEnhAckTx output parameter.

Normally Immediate and Enhanced Acks are both sent using the RAIL_IEEE802154_Config_t::timings rxToTx turnaround time. If the stack needs more time to prepare an Enhanced Ack, it can call this function after RAIL_IEEE802154_Init() to set a longer turnaround time used just for Enhanced Ack transmits.

This function will fail on platforms that lack RAIL_IEEE802154_SUPPORTS_E_ENHANCED_ACK.


Definition at line 1486 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ConvertRssiToLqi#

uint8_t RAIL_IEEE802154_ConvertRssiToLqi (uint8_t origLqi, int8_t rssiDbm)

Convert RSSI into 802.15.4 Link Quality Indication (LQI) metric compatible with the Silicon Labs Zigbee stack.

Parameters
[in]origLqi

The original LQI, for example from RAIL_RxPacketDetails_t::lqi. This parameter is not currently used but may be used in the future.

[in]rssiDbm

The RSSI in dBm, for example from RAIL_RxPacketDetails_t::rssi.

Returns

  • An LQI value (range 0..255 but not all intermediate values are possible) based on the rssiDbm and the chip's RSSI sensitivity range.

This function is compatible with RAIL_ConvertLqiCallback_t and is suitable to pass to RAIL_ConvertLqi().


Definition at line 1504 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ConvertRssiToEd#

uint8_t RAIL_IEEE802154_ConvertRssiToEd (int8_t rssiDbm)

Convert RSSI into 802.15.4 Energy Detection (ED) metric compatible with the Silicon Labs Zigbee stack.

Parameters
[in]rssiDbm

The RSSI in dBm, for example from RAIL_RxPacketDetails_t::rssi.

Returns

  • An Energy Detect value (range 0..255 but not all intermediate values are possible) based on the rssiDbm and the chip's RSSI sensitivity range.


Definition at line 1516 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ConfigSignalIdentifier#

RAIL_Status_t RAIL_IEEE802154_ConfigSignalIdentifier (RAIL_Handle_t railHandle, RAIL_IEEE802154_SignalIdentifierMode_t signalIdentifierMode)

Configure signal identifier for 802.15.4 signal detection.

Parameters
[in]railHandle

A RAIL instance handle.

[in]signalIdentifierMode

Mode of signal identifier operation.

This features allows detection of 2.4 GHz 802.15.4 signal on air. This function must be called once before RAIL_IEEE802154_EnableSignalDetection() to configure and enable signal identifier.

To enable event for signal detection RAIL_ConfigEvents() must be called for enabling RAIL_EVENT_SIGNAL_DETECTED.

This function is only supported by chips where RAIL_IEEE802154_SUPPORTS_SIGNAL_IDENTIFIER and RAIL_IEEE802154_SupportsSignalIdentifier() are true.

Returns

  • Status code indicating success of the function call.


Definition at line 1604 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_EnableSignalDetection#

RAIL_Status_t RAIL_IEEE802154_EnableSignalDetection (RAIL_Handle_t railHandle, bool enable)

Enable or disable signal identifier for 802.15.4 signal detection.

Parameters
[in]railHandle

A RAIL instance handle.

[in]enable

Signal detection is enabled if true, disabled if false.

RAIL_IEEE802154_ConfigSignalIdentifier() must be called once before calling this function to configure and enable signal identifier. Once a signal is detected signal detection will be turned off and this function should be called to re-enable the signal detection without needing to call RAIL_IEEE802154_ConfigSignalIdentifier() if the signal identifier is already configured and enabled.

This function is only supported by chips where RAIL_IEEE802154_SUPPORTS_SIGNAL_IDENTIFIER and RAIL_IEEE802154_SupportsSignalIdentifier() are true.

Returns

  • Status code indicating success of the function call.


Definition at line 1626 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ConfigCcaMode#

RAIL_Status_t RAIL_IEEE802154_ConfigCcaMode (RAIL_Handle_t railHandle, RAIL_IEEE802154_CcaMode_t ccaMode)

Set 802.15.4 CCA mode.

Parameters
[in]railHandle

A RAIL instance handle.

[in]ccaMode

Mode of CCA operation.

This function sets the CCA mode RAIL_IEEE802154_CcaMode_t. If not called, RAIL_IEEE802154_CCA_MODE_RSSI (RSSI-based CCA) is used for CCA.

In RAIL_IEEE802154_CCA_MODE_SIGNAL, RAIL_IEEE802154_CCA_MODE_SIGNAL_OR_RSSI and RAIL_IEEE802154_CCA_MODE_SIGNAL_AND_RSSI the signal identifier is enabled for the duration of LBT. If previously enabled by RAIL_IEEE802154_ConfigSignalIdentifier(), the signal identifier will remain active until triggered.

This function is only supported by chips where RAIL_IEEE802154_SUPPORTS_SIGNAL_IDENTIFIER and RAIL_IEEE802154_SupportsSignalIdentifier() are true.

Returns

  • Status code indicating success of the function call. An error should be returned if ccaMode is unsuppported on a given device.


Definition at line 1657 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_ConfigRxChannelSwitching#

RAIL_Status_t RAIL_IEEE802154_ConfigRxChannelSwitching (RAIL_Handle_t railHandle, const RAIL_IEEE802154_RxChannelSwitchingCfg_t * pConfig)

Configure RX channel switching for 802.15.4.

Parameters
[in]railHandle

A RAIL instance handle.

[in]pConfig

A pointer to RAIL_IEEE802154_RxChannelSwitchingCfg_t structure. Use NULL to disable any switching previously set up.

Returns

  • Status code indicating success of the function call.

This function configures RX channel switching, allowing reception of 2.4 GHz 802.15.4 signals on two different radio channels within the same PHY. (If the two channels are same, the function behaves the same as if pConfig was NULL.) This function should be called once before RAIL_StartRx() and/or enabling RAIL_RX_OPTION_CHANNEL_SWITCHING.

When RAIL_RX_OPTION_CHANNEL_SWITCHING is enabled, channel switching will occur during normal listening but is suspended (and the radio is idled) when starting any kind of transmit, including scheduled or CSMA transmits. It remains suspended after a RAIL_TX_OPTION_WAIT_FOR_ACK transmit until the Ack is received or times out.

When RAIL_RX_OPTION_CHANNEL_SWITCHING is disabled after switching has been active, the radio could be left listening on either channel, so the application should call RAIL_StartRx() to put it on the desired non-switching channel.

Note

  • IEEE 802.15.4 must be enabled via RAIL_IEEE802154_Init(), and the radio must be in the idle state when configuring RX channel switching. A DMA channel must be allocated with RAIL_UseDma() or by incorporating the Direct Memory Access (DMA) Utility plugin; otherwise this API will return RAIL_STATUS_INVALID_CALL. This feature also requires a PRS channel, internally allocated by the RAIL library, to use and hold onto for future use. If no PRS channel is available, the function returns RAIL_STATUS_INVALID_PARAMETER.

  • When RX channel switching is active, receive sensitivity and performance are slightly impacted.

  • This function internally uses RAIL_EnableCacheSynthCal() to enable/disable the sequencer cache to store the synth calibration value.

  • Switching is cancelled on any PHY change, so this function would need to be re-called to reestablish switching after such a change.

Warnings

  • As this function relies on LDMA access and RAIL is meant to run in TrustZone non-secure world, it is not supported if LDMA is configured as secure peripheral and it will return RAIL_STATUS_INVALID_CALL.


Definition at line 1731 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_CalibrateIr2p4Ghz#

RAIL_Status_t RAIL_IEEE802154_CalibrateIr2p4Ghz (RAIL_Handle_t railHandle, uint32_t * imageRejection)

Calibrate image rejection for IEEE 802.15.4 2.4 GHz.

Parameters
[in]railHandle

A RAIL instance handle.

[out]imageRejection

A pointer to the result of the image rejection calibration.

Returns

  • Status code indicating success of the function call.

Some chips have protocol-specific image rejection calibrations programmed into their flash. This function will either get the value from flash and apply it, or run the image rejection algorithm to find the value.


Definition at line 1751 of file protocol/ieee802154/rail_ieee802154.h

RAIL_IEEE802154_CalibrateIrSubGhz#

RAIL_Status_t RAIL_IEEE802154_CalibrateIrSubGhz (RAIL_Handle_t railHandle, uint32_t * imageRejection)

Calibrate image rejection for IEEE 802.15.4 915 MHz and 868 MHz.

Parameters
[in]railHandle

A RAIL instance handle.

[out]imageRejection

The result of the image rejection calibration.

Returns

  • Status code indicating success of the function call.

Some chips have protocol-specific image rejection calibrations programmed into their flash. This function will either get the value from flash and apply it, or run the image rejection algorithm to find the value.

DeprecatedPlease use RAIL_CalibrateIrAlt instead.


Definition at line 1767 of file protocol/ieee802154/rail_ieee802154.h