Auxiliary header for the RAIL library.

Includes consistent definitions of features available across different chips.

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.

Macros#

#define
RAIL_SUPPORTS_DUAL_BAND 1

Boolean to indicate whether the selected chip supports both SubGHz and 2.4 GHz bands.

#define
RAIL_FEAT_DUAL_BAND_RADIO RAIL_SUPPORTS_DUAL_BAND

Backwards-compatible synonym of RAIL_SUPPORTS_DUAL_BAND.

#define
RAIL_SUPPORTS_2P4GHZ_BAND 1

Boolean to indicate whether the selected chip supports the 2.4 GHz band.

#define
RAIL_FEAT_2G4_RADIO RAIL_SUPPORTS_2P4GHZ_BAND

Backwards-compatible synonym of RAIL_SUPPORTS_2P4GHZ_BAND.

#define
RAIL_SUPPORTS_SUBGHZ_BAND 1

Boolean to indicate whether the selected chip supports SubGHz bands.

#define
RAIL_FEAT_SUBGIG_RADIO RAIL_SUPPORTS_SUBGHZ_BAND

Backwards-compatible synonym of RAIL_SUPPORTS_SUBGHZ_BAND.

#define
RAIL_SUPPORTS_OFDM_PA 0

Boolean to indicate whether the selected chip supports OFDM PA.

#define
RAIL_SUPPORTS_ADDR_FILTER_ADDRESS_BIT_MASK 0

Boolean to indicate whether the selected chip supports bit masked address filtering.

#define
RAIL_SUPPORTS_ADDR_FILTER_MASK 1

Boolean to indicate whether the selected chip supports address filter mask information for incoming packets in RAIL_RxPacketInfo_t::filterMask and RAIL_IEEE802154_Address_t::filterMask.

#define
RAIL_SUPPORTS_ALTERNATE_TX_POWER 0

Boolean to indicate whether the selected chip supports alternate power settings for the Power Amplifier.

#define
RAIL_FEAT_ALTERNATE_POWER_TX_SUPPORTED RAIL_SUPPORTS_ALTERNATE_TX_POWER

Backwards-compatible synonym of RAIL_SUPPORTS_ALTERNATE_TX_POWER.

#define
RAIL_SUPPORTS_ANTENNA_DIVERSITY 0

Boolean to indicate whether the selected chip supports antenna diversity.

#define
RAIL_FEAT_ANTENNA_DIVERSITY RAIL_SUPPORTS_ANTENNA_DIVERSITY

Backwards-compatible synonym of RAIL_SUPPORTS_ANTENNA_DIVERSITY.

#define
RAIL_SUPPORTS_PATH_DIVERSITY 0

Boolean to indicate whether the selected chip supports RF path diversity.

#define
RAIL_SUPPORTS_CHANNEL_HOPPING 0

Boolean to indicate whether the selected chip supports channel hopping.

#define
RAIL_FEAT_CHANNEL_HOPPING RAIL_SUPPORTS_CHANNEL_HOPPING

Backwards-compatible synonym of RAIL_SUPPORTS_CHANNEL_HOPPING.

#define
RAIL_SUPPORTS_DUAL_SYNC_WORDS 1

Boolean to indicate whether the selected chip supports dual sync words.

#define
RAIL_SUPPORTS_TX_TO_TX 1

Boolean to indicate whether the selected chip supports automatic transitions from TX to TX.

#define
RAIL_SUPPORTS_TX_REPEAT_START_TO_START 0

Boolean to indicate whether the selected chip supports RAIL_TX_REPEAT_OPTION_START_TO_START.

#define
RAIL_SUPPORTS_EXTERNAL_THERMISTOR 0

Boolean to indicate whether the selected chip supports thermistor measurements.

#define
RAIL_FEAT_EXTERNAL_THERMISTOR RAIL_SUPPORTS_EXTERNAL_THERMISTOR

Backwards-compatible synonym of RAIL_SUPPORTS_EXTERNAL_THERMISTOR.

#define
RAIL_SUPPORTS_HFXO_COMPENSATION 0

Boolean to indicate whether the selected chip supports HFXO compensation.

#define
RAIL_SUPPORTS_AUXADC 0

Boolean to indicate whether the selected chip supports AUXADC measurements.

#define
RAIL_SUPPORTS_PRECISION_LFRCO 0

Boolean to indicate whether the selected chip supports a high-precision LFRCO.

#define
RAIL_SUPPORTS_RADIO_ENTROPY 1

Boolean to indicate whether the selected chip supports radio entropy.

#define
RAIL_SUPPORTS_RFSENSE_ENERGY_DETECTION 0

Boolean to indicate whether the selected chip supports RFSENSE Energy Detection Mode.

#define
RAIL_SUPPORTS_RFSENSE_SELECTIVE_OOK 0

Boolean to indicate whether the selected chip supports RFSENSE Selective(OOK) Mode.

#define
RAIL_FEAT_RFSENSE_SELECTIVE_OOK_MODE_SUPPORTED RAIL_SUPPORTS_RFSENSE_SELECTIVE_OOK

Backwards-compatible synonym of RAIL_SUPPORTS_RFSENSE_SELECTIVE_OOK.

#define
RAIL_SUPPORTS_VDET 0

Boolean to indicate whether the selected chip supports the VDET voltage measurement feature.

#define
RAIL_SUPPORTS_PROTOCOL_BLE RAIL_SUPPORTS_2P4GHZ_BAND

Boolean to indicate whether the selected chip supports BLE.

#define
RAIL_BLE_SUPPORTS_1MBPS_NON_VITERBI 0

Boolean to indicate whether the selected chip supports BLE 1Mbps Non-Viterbi PHY.

#define
RAIL_BLE_SUPPORTS_1MBPS_VITERBI RAIL_SUPPORTS_PROTOCOL_BLE

Boolean to indicate whether the selected chip supports BLE 1Mbps Viterbi PHY.

#define
RAIL_BLE_SUPPORTS_1MBPS (RAIL_BLE_SUPPORTS_1MBPS_NON_VITERBI || RAIL_BLE_SUPPORTS_1MBPS_VITERBI)

Boolean to indicate whether the selected chip supports BLE 1Mbps operation.

#define
RAIL_BLE_SUPPORTS_2MBPS_NON_VITERBI 0

Boolean to indicate whether the selected chip supports BLE 2Mbps Non-Viterbi PHY.

#define
RAIL_BLE_SUPPORTS_2MBPS_VITERBI RAIL_SUPPORTS_PROTOCOL_BLE

Boolean to indicate whether the selected chip supports BLE 2Mbps Viterbi PHY.

#define
RAIL_BLE_SUPPORTS_2MBPS (RAIL_BLE_SUPPORTS_2MBPS_NON_VITERBI || RAIL_BLE_SUPPORTS_2MBPS_VITERBI)

Boolean to indicate whether the selected chip supports BLE 2Mbps operation.

#define
RAIL_BLE_SUPPORTS_ANTENNA_SWITCHING 0

Boolean to indicate whether the selected chip supports BLE Antenna Switching needed for Angle-of-Arrival receives or Angle-of-Departure transmits.

#define
RAIL_BLE_SUPPORTS_CODED_PHY 0

Boolean to indicate whether the selected chip supports the BLE Coded PHY used for Long-Range.

#define
RAIL_FEAT_BLE_CODED RAIL_BLE_SUPPORTS_CODED_PHY

Backwards-compatible synonym of RAIL_BLE_SUPPORTS_CODED_PHY.

#define
RAIL_BLE_SUPPORTS_SIMULSCAN_PHY 0

Boolean to indicate whether the selected chip supports the BLE Simulscan PHY used for simultaneous BLE 1Mbps and Coded PHY reception.

#define
RAIL_BLE_SUPPORTS_CTE 0

Boolean to indicate whether the selected chip supports BLE CTE (Constant Tone Extension) needed for Angle-of-Arrival/Departure transmits.

#define
RAIL_BLE_SUPPORTS_QUUPPA 0

Boolean to indicate whether the selected chip supports the Quuppa PHY.

#define
RAIL_BLE_SUPPORTS_IQ_SAMPLING 0

Boolean to indicate whether the selected chip supports BLE IQ Sampling needed for Angle-of-Arrival/Departure receives.

#define
RAIL_BLE_SUPPORTS_AOX undefined

Boolean to indicate whether the selected chip supports some BLE AOX features.

#define
RAIL_FEAT_BLE_AOX_SUPPORTED RAIL_BLE_SUPPORTS_AOX

Backwards-compatible synonym of RAIL_BLE_SUPPORTS_AOX.

#define
RAIL_BLE_SUPPORTS_PHY_SWITCH_TO_RX RAIL_SUPPORTS_PROTOCOL_BLE

Boolean to indicate whether the selected chip supports BLE PHY switch to RX functionality, which is used to switch BLE PHYs at a specific time to receive auxiliary packets.

#define
RAIL_FEAT_BLE_PHY_SWITCH_TO_RX RAIL_BLE_SUPPORTS_PHY_SWITCH_TO_RX

Backwards-compatible synonym of RAIL_BLE_SUPPORTS_PHY_SWITCH_TO_RX.

#define
RAIL_SUPPORTS_PROTOCOL_IEEE802154 1

Boolean to indicate whether the selected chip supports IEEE 802.15.4.

#define
RAIL_IEEE802154_SUPPORTS_COEX_PHY 0

Boolean to indicate whether the selected chip supports the 802.15.4 Wi-Fi Coexistence PHY.

#define
RAIL_FEAT_802154_COEX_PHY RAIL_IEEE802154_SUPPORTS_COEX_PHY

Backwards-compatible synonym of RAIL_IEEE802154_SUPPORTS_COEX_PHY.

#define
RAIL_SUPPORTS_IEEE802154_BAND_2P4 (RAIL_SUPPORTS_PROTOCOL_IEEE802154 && RAIL_SUPPORTS_2P4GHZ_BAND)

Boolean to indicate whether the selected chip supports the IEEE 802.15.4 2.4 GHz band variant.

#define
RAIL_IEEE802154_SUPPORTS_RX_CHANNEL_SWITCHING 0

Boolean to indicate whether the selected chip supports the IEEE 802.15.4 2.4 RX channel switching.

#define
RAIL_IEEE802154_SUPPORTS_FEM_PHY (RAIL_SUPPORTS_IEEE802154_BAND_2P4)

Boolean to indicate whether the selected chip supports a front end module.

#define
RAIL_IEEE802154_SUPPORTS_E_SUBSET_GB868 RAIL_SUPPORTS_PROTOCOL_IEEE802154

Boolean to indicate whether the selected chip supports IEEE 802.15.4E-2012 feature subset needed for Zigbee R22 GB868.

#define
RAIL_FEAT_IEEE802154_E_GB868_SUPPORTED RAIL_IEEE802154_SUPPORTS_E_SUBSET_GB868

Backwards-compatible synonym of RAIL_IEEE802154_SUPPORTS_E_SUBSET_GB868.

#define
RAIL_IEEE802154_SUPPORTS_E_ENHANCED_ACK RAIL_IEEE802154_SUPPORTS_E_SUBSET_GB868

Boolean to indicate whether the selected chip supports IEEE 802.15.4E-2012 Enhanced ACKing.

#define
RAIL_FEAT_IEEE802154_E_ENH_ACK_SUPPORTED RAIL_IEEE802154_SUPPORTS_E_ENHANCED_ACK

Backwards-compatible synonym of RAIL_IEEE802154_SUPPORTS_E_ENHANCED_ACK.

#define
RAIL_IEEE802154_SUPPORTS_E_MULTIPURPOSE_FRAMES RAIL_IEEE802154_SUPPORTS_E_SUBSET_GB868

Boolean to indicate whether the selected chip supports receiving IEEE 802.15.4E-2012 Multipurpose frames.

#define
RAIL_FEAT_IEEE802154_MULTIPURPOSE_FRAME_SUPPORTED RAIL_IEEE802154_SUPPORTS_E_MULTIPURPOSE_FRAMES

Backwards-compatible synonym of RAIL_IEEE802154_SUPPORTS_E_MULTIPURPOSE_FRAMES.

#define
RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868 ((RAIL_SUPPORTS_PROTOCOL_IEEE802154 != 0) && (RAIL_SUPPORTS_SUBGHZ_BAND != 0))

Boolean to indicate whether the selected chip supports IEEE 802.15.4G-2012 feature subset needed for Zigbee R22 GB868.

#define
RAIL_FEAT_IEEE802154_G_GB868_SUPPORTED RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868

Backwards-compatible synonym of RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868.

#define
RAIL_IEEE802154_SUPPORTS_G_DYNFEC 0

Boolean to indicate whether the selected chip supports dynamic FEC See also runtime refinement RAIL_IEEE802154_SupportsGDynFec().

#define
RAIL_IEEE802154_SUPPORTS_G_MODESWITCH 0

Boolean to indicate whether the selected chip supports Wi-SUN mode switching See also runtime refinement RAIL_IEEE802154_SupportsGModeSwitch().

#define
RAIL_IEEE802154_SUPPORTS_G_4BYTE_CRC RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868

Boolean to indicate whether the selected chip supports IEEE 802.15.4G-2012 reception and transmission of frames with 4-byte CRC.

#define
RAIL_FEAT_IEEE802154_G_4BYTE_CRC_SUPPORTED RAIL_IEEE802154_SUPPORTS_G_4BYTE_CRC

Backwards-compatible synonym of RAIL_IEEE802154_SUPPORTS_G_4BYTE_CRC.

#define
RAIL_IEEE802154_SUPPORTS_G_UNWHITENED_RX RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868

Boolean to indicate whether the selected chip supports IEEE 802.15.4G-2012 reception of unwhitened frames.

#define
RAIL_FEAT_IEEE802154_G_UNWHITENED_RX_SUPPORTED RAIL_IEEE802154_SUPPORTS_G_UNWHITENED_RX

Backwards-compatible synonym of RAIL_IEEE802154_SUPPORTS_G_UNWHITENED_RX.

#define
RAIL_IEEE802154_SUPPORTS_G_UNWHITENED_TX RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868

Boolean to indicate whether the selected chip supports IEEE 802.15.4G-2012 transmission of unwhitened frames.

#define
RAIL_FEAT_IEEE802154_G_UNWHITENED_TX_SUPPORTED RAIL_IEEE802154_SUPPORTS_G_UNWHITENED_TX

Backwards-compatible synonym of RAIL_IEEE802154_SUPPORTS_G_UNWHITENED_TX.

#define
RAIL_IEEE802154_SUPPORTS_CANCEL_FRAME_PENDING_LOOKUP RAIL_SUPPORTS_PROTOCOL_IEEE802154

Boolean to indicate whether the selected chip supports canceling the frame-pending lookup event RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND when the radio transitions to a state that renders the the reporting of this event moot (i.e., too late for the stack to influence the outgoing ACK).

#define
RAIL_FEAT_IEEE802154_CANCEL_FP_LOOKUP_SUPPORTED RAIL_IEEE802154_SUPPORTS_CANCEL_FRAME_PENDING_LOOKUP
#define
RAIL_IEEE802154_SUPPORTS_EARLY_FRAME_PENDING_LOOKUP RAIL_SUPPORTS_PROTOCOL_IEEE802154

Boolean to indicate whether the selected chip supports early triggering of the frame-pending lookup event RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND just after MAC address fields have been received.

#define
RAIL_FEAT_IEEE802154_EARLY_FP_LOOKUP_SUPPORTED RAIL_IEEE802154_SUPPORTS_EARLY_FRAME_PENDING_LOOKUP

Backwards-compatible synonym of RAIL_IEEE802154_SUPPORTS_EARLY_FRAME_PENDING_LOOKUP.

#define
RAIL_IEEE802154_SUPPORTS_DUAL_PA_CONFIG 0

Boolean to indicate whether the selected chip supports dual PA configs for mode switch or concurrent mode.

#define
RAIL_SUPPORTS_DBM_POWERSETTING_MAPPING_TABLE 0

Boolean to indicate whether the selected chip supports the pa power setting table.

#define
RAIL_IEEE802154_SUPPORTS_CUSTOM1_PHY 0

Boolean to indicate whether the selected chip supports IEEE 802.15.4 PHY with custom settings.

#define
RAIL_SUPPORTS_PROTOCOL_WI_SUN 0

Boolean to indicate whether the selected chip supports Wi-SUN See also runtime refinement RAIL_SupportsProtocolWiSUN().

#define
RAIL_WMBUS_SUPPORTS_SIMULTANEOUS_T_C_RX 0

Boolean to indicate whether the selected chip supports WMBUS simultaneous M2O RX of T and C modes set by RAIL_WMBUS_Config().

#define
RAIL_SUPPORTS_PROTOCOL_ZWAVE 0

Boolean to indicate whether the selected chip supports Z-Wave.

#define
RAIL_FEAT_ZWAVE_SUPPORTED RAIL_SUPPORTS_PROTOCOL_ZWAVE

Backwards-compatible synonym of RAIL_SUPPORTS_PROTOCOL_ZWAVE.

#define
RAIL_ZWAVE_SUPPORTS_ED_PHY 0

Boolean to indicate whether the selected chip supports energy detect PHY.

#define
RAIL_ZWAVE_SUPPORTS_CONC_PHY 0

Boolean to indicate whether the selected chip supports concurrent PHY.

#define
RAIL_SUPPORTS_SQ_PHY 0

Boolean to indicate whether the selected chip supports SQ-based PHY.

#define
RAIL_ZWAVE_SUPPORTS_REGION_PTI RAIL_SUPPORTS_PROTOCOL_ZWAVE

Boolean to indicate whether the code supports Z-Wave region information in PTI and newer RAIL_ZWAVE_RegionConfig_t structure See also runtime refinement RAIL_ZWAVE_SupportsRegionPti().

#define
RAIL_FEAT_ZWAVE_REGION_PTI RAIL_ZWAVE_SUPPORTS_REGION_PTI

Backwards-compatible synonym of RAIL_ZWAVE_SUPPORTS_REGION_PTI.

#define
RAIL_SUPPORTS_RX_RAW_DATA 1

Boolean to indicate whether the selected chip supports raw RX data sources other than RAIL_RxDataSource_t::RX_PACKET_DATA.

#define
RAIL_SUPPORTS_DIRECT_MODE 0

Boolean to indicate whether the selected chip supports direct mode.

#define
RAIL_SUPPORTS_RX_DIRECT_MODE_DATA_TO_FIFO 0

Boolean to indicate whether the selected chip supports RX direct mode data to FIFO.

#define
RAIL_SUPPORTS_MFM 0

Boolean to indicate whether the selected chip supports MFM protocol.

#define
RAIL_IEEE802154_SUPPORTS_SIGNAL_IDENTIFIER 0

Boolean to indicate whether the selected chip supports 802.15.4 signal detection.

#define
RAIL_BLE_SUPPORTS_SIGNAL_IDENTIFIER 0

Boolean to indicate whether the selected chip supports BLE signal detection.

#define
RAIL_SUPPORTS_RSSI_DETECT_THRESHOLD (0U)

Boolean to indicate whether the selected chip supports configurable RSSI threshold set by RAIL_SetRssiDetectThreshold().

#define
RAIL_SUPPORTS_THERMAL_PROTECTION (0U)

Boolean to indicate whether the selected chip supports thermal protection set by RAIL_ConfigThermalProtection().

#define
RAIL_SUPPORTS_FAST_RX2RX (0U)

Boolean to indicate whether the selected chip supports fast RX2RX enabled by RAIL_RX_OPTION_FAST_RX2RX.

#define
RAIL_SUPPORTS_COLLISION_DETECTION (0U)

Boolean to indicate whether the selected chip supports collision detection enabled by RAIL_RX_OPTION_ENABLE_COLLISION_DETECTION See also runtime refinement RAIL_SupportsCollisionDetection().

#define
RAIL_SUPPORTS_PROTOCOL_SIDEWALK (0U)

Boolean to indicate whether the selected chip supports Sidewalk protocol.

#define
RAIL_SUPPORTS_AUTO_LNA_BYPASS (0U)

Boolean to indicate whether the selected chip supports automatic LNA bypass for external FEM.