1 /***************************************************************************//** 2 * @file 3 * @brief Auxiliary header for the RAIL library. Includes consistent definitions 4 * of features available across different chips. 5 ******************************************************************************* 6 * # License 7 * <b>Copyright 2020 Silicon Laboratories Inc. www.silabs.com</b> 8 ******************************************************************************* 9 * 10 * SPDX-License-Identifier: Zlib 11 * 12 * The licensor of this software is Silicon Laboratories Inc. 13 * 14 * This software is provided 'as-is', without any express or implied 15 * warranty. In no event will the authors be held liable for any damages 16 * arising from the use of this software. 17 * 18 * Permission is granted to anyone to use this software for any purpose, 19 * including commercial applications, and to alter it and redistribute it 20 * freely, subject to the following restrictions: 21 * 22 * 1. The origin of this software must not be misrepresented; you must not 23 * claim that you wrote the original software. If you use this software 24 * in a product, an acknowledgment in the product documentation would be 25 * appreciated but is not required. 26 * 2. Altered source versions must be plainly marked as such, and must not be 27 * misrepresented as being the original software. 28 * 3. This notice may not be removed or altered from any source distribution. 29 * 30 ******************************************************************************/ 31 32 #ifndef __RAIL_FEATURES_H__ 33 #define __RAIL_FEATURES_H__ 34 35 #include "em_device.h" 36 37 #ifdef __cplusplus 38 extern "C" { 39 #endif 40 41 /** 42 * @addtogroup RAIL_API 43 * @{ 44 */ 45 46 /****************************************************************************** 47 * RAIL Features 48 *****************************************************************************/ 49 /** 50 * @addtogroup Features 51 * @brief Overview of support for various features across hardware platforms. 52 * These defines can be used at compile time to determine which 53 * features are available on your platform. However, keep in mind that 54 * these defines hold true for chip families. Your specific part 55 * may have further restrictions (band limitations, power amplifier 56 * restrictions, and so on) on top of those listed below, for which 57 * runtime RAIL_*Supports*() APIs can be used to check availability 58 * on a particular chip (after \ref RAIL_Init() has been called). 59 * In general, an attempt to call an API that is not supported on your 60 * chip family as listed below will result in a 61 * \ref RAIL_STATUS_INVALID_CALL. 62 * @{ 63 */ 64 65 /// Boolean to indicate whether the selected chip supports both Sub-GHz and 2.4 GHz bands. 66 /// See also runtime refinement \ref RAIL_SupportsDualBand(). 67 #if ((_SILICON_LABS_EFR32_RADIO_TYPE == _SILICON_LABS_EFR32_RADIO_DUALBAND) \ 68 || ((FEAT_RF_2G4 == 1) && (FEAT_RF_SUBG == 1))) 69 #define RAIL_SUPPORTS_DUAL_BAND 1 70 #else 71 #define RAIL_SUPPORTS_DUAL_BAND 0 72 #endif 73 /// Backwards-compatible synonym of \ref RAIL_SUPPORTS_DUAL_BAND. 74 #define RAIL_FEAT_DUAL_BAND_RADIO RAIL_SUPPORTS_DUAL_BAND 75 76 /// Boolean to indicate whether the selected chip supports the 2.4 GHz band. 77 /// See also runtime refinement \ref RAIL_Supports2p4GHzBand(). 78 #if (((_SILICON_LABS_EFR32_RADIO_TYPE == _SILICON_LABS_EFR32_RADIO_DUALBAND) \ 79 || (_SILICON_LABS_EFR32_RADIO_TYPE == _SILICON_LABS_EFR32_RADIO_2G4HZ)) \ 80 || (FEAT_RF_2G4 == 1)) 81 #define RAIL_SUPPORTS_2P4GHZ_BAND 1 82 #else 83 #define RAIL_SUPPORTS_2P4GHZ_BAND 0 84 #endif 85 /// Backwards-compatible synonym of \ref RAIL_SUPPORTS_2P4GHZ_BAND. 86 #define RAIL_FEAT_2G4_RADIO RAIL_SUPPORTS_2P4GHZ_BAND 87 88 /// Boolean to indicate whether the selected chip supports Sub-GHz bands. 89 /// See also runtime refinement \ref RAIL_SupportsSubGHzBand(). 90 #if (((_SILICON_LABS_EFR32_RADIO_TYPE == _SILICON_LABS_EFR32_RADIO_DUALBAND) \ 91 || (_SILICON_LABS_EFR32_RADIO_TYPE == _SILICON_LABS_EFR32_RADIO_SUBGHZ)) \ 92 || (FEAT_RF_SUBG == 1)) 93 #define RAIL_SUPPORTS_SUBGHZ_BAND 1 94 #else 95 #define RAIL_SUPPORTS_SUBGHZ_BAND 0 96 #endif 97 /// Backwards-compatible synonym of \ref RAIL_SUPPORTS_SUBGHZ_BAND. 98 #define RAIL_FEAT_SUBGIG_RADIO RAIL_SUPPORTS_SUBGHZ_BAND 99 100 /// Boolean to indicate whether the selected chip supports OFDM PA. 101 /// See also runtime refinement \ref RAIL_SupportsOFDMPA(). 102 #if (_SILICON_LABS_32B_SERIES_2_CONFIG == 5) 103 #define RAIL_SUPPORTS_OFDM_PA 1 104 #else 105 #define RAIL_SUPPORTS_OFDM_PA 0 106 #endif 107 108 /// Boolean to indicate whether the selected chip supports 109 /// bit masked address filtering. 110 /// See also runtime refinement \ref RAIL_SupportsAddrFilterAddressBitMask(). 111 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG >= 2) \ 112 || (_SILICON_LABS_32B_SERIES_3_CONFIG == 301) \ 113 || (_SILICON_LABS_32B_SERIES_3_CONFIG == 300)) 114 #define RAIL_SUPPORTS_ADDR_FILTER_ADDRESS_BIT_MASK 1 115 #else 116 #define RAIL_SUPPORTS_ADDR_FILTER_ADDRESS_BIT_MASK 0 117 #endif 118 119 /// Boolean to indicate whether the selected chip supports 120 /// address filter mask information for incoming packets in 121 /// \ref RAIL_RxPacketInfo_t::filterMask and 122 /// \ref RAIL_IEEE802154_Address_t::filterMask. 123 /// See also runtime refinement \ref RAIL_SupportsAddrFilterMask(). 124 #if (_SILICON_LABS_32B_SERIES_1_CONFIG != 1) 125 #define RAIL_SUPPORTS_ADDR_FILTER_MASK 1 126 #else 127 #define RAIL_SUPPORTS_ADDR_FILTER_MASK 0 128 #endif 129 130 /// Boolean to indicate whether the selected chip supports 131 /// alternate power settings for the Power Amplifier. 132 /// See also runtime refinement \ref RAIL_SupportsAlternateTxPower(). 133 #if ((_SILICON_LABS_32B_SERIES_1_CONFIG > 1) \ 134 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 3) \ 135 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 8)) 136 #define RAIL_SUPPORTS_ALTERNATE_TX_POWER 1 137 #else 138 #define RAIL_SUPPORTS_ALTERNATE_TX_POWER 0 139 #endif 140 /// Backwards-compatible synonym of \ref RAIL_SUPPORTS_ALTERNATE_TX_POWER. 141 #define RAIL_FEAT_ALTERNATE_POWER_TX_SUPPORTED RAIL_SUPPORTS_ALTERNATE_TX_POWER 142 143 /// Boolean to indicate whether the selected chip supports antenna diversity. 144 /// See also runtime refinement \ref RAIL_SupportsAntennaDiversity(). 145 #if ((_SILICON_LABS_32B_SERIES_1_CONFIG >= 2) \ 146 || (_SILICON_LABS_32B_SERIES == 2)) 147 #define RAIL_SUPPORTS_ANTENNA_DIVERSITY 1 148 #else 149 #define RAIL_SUPPORTS_ANTENNA_DIVERSITY 0 150 #endif 151 152 /// Backwards-compatible synonym of \ref RAIL_SUPPORTS_ANTENNA_DIVERSITY. 153 #define RAIL_FEAT_ANTENNA_DIVERSITY RAIL_SUPPORTS_ANTENNA_DIVERSITY 154 155 /// Boolean to indicate whether the selected chip supports internal RF path diversity. 156 /// See also runtime refinement \ref RAIL_SupportsPathDiversity(). 157 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 3) \ 158 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 8)) 159 #define RAIL_SUPPORTS_PATH_DIVERSITY 1 160 #else 161 #define RAIL_SUPPORTS_PATH_DIVERSITY 0 162 #endif 163 164 /// Boolean to indicate whether the selected chip supports channel hopping. 165 /// See also runtime refinement \ref RAIL_SupportsChannelHopping(). 166 #if ((_SILICON_LABS_32B_SERIES_1_CONFIG >= 2) \ 167 || (_SILICON_LABS_32B_SERIES_2_CONFIG >= 1) \ 168 || (_SILICON_LABS_32B_SERIES_3_CONFIG >= 300)) 169 #define RAIL_SUPPORTS_CHANNEL_HOPPING 1 170 #else 171 #define RAIL_SUPPORTS_CHANNEL_HOPPING 0 172 #endif 173 /// Backwards-compatible synonym of \ref RAIL_SUPPORTS_CHANNEL_HOPPING. 174 #define RAIL_FEAT_CHANNEL_HOPPING RAIL_SUPPORTS_CHANNEL_HOPPING 175 176 /// Boolean to indicate whether the selected chip supports dual sync words. 177 /// See also runtime refinement \ref RAIL_SupportsDualSyncWords(). 178 #if 1 179 #define RAIL_SUPPORTS_DUAL_SYNC_WORDS 1 180 #else 181 #define RAIL_SUPPORTS_DUAL_SYNC_WORDS 0 182 #endif 183 184 /// Boolean to indicate whether the selected chip supports automatic transitions 185 /// from TX to TX. 186 /// See also runtime refinement \ref RAIL_SupportsTxToTx(). 187 #if (_SILICON_LABS_32B_SERIES_1_CONFIG != 1) 188 #define RAIL_SUPPORTS_TX_TO_TX 1 189 #else 190 #define RAIL_SUPPORTS_TX_TO_TX 0 191 #endif 192 193 /// Boolean to indicate whether the selected chip supports \ref RAIL_TX_REPEAT_OPTION_START_TO_START. 194 /// See also runtime refinement \ref RAIL_SupportsTxRepeatStartToStart(). 195 #if (_SILICON_LABS_32B_SERIES_2_CONFIG >= 2) 196 #define RAIL_SUPPORTS_TX_REPEAT_START_TO_START RAIL_SUPPORTS_TX_TO_TX 197 #else 198 #define RAIL_SUPPORTS_TX_REPEAT_START_TO_START 0 199 #endif 200 201 /// Boolean to indicate whether the selected chip supports thermistor measurements. 202 /// See also runtime refinement \ref RAIL_SupportsExternalThermistor(). 203 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 2) \ 204 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 3) \ 205 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 5) \ 206 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 7) \ 207 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 8) \ 208 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 9)) 209 #define RAIL_SUPPORTS_EXTERNAL_THERMISTOR 1 210 #else 211 #define RAIL_SUPPORTS_EXTERNAL_THERMISTOR 0 212 #endif 213 /// Backwards-compatible synonym of \ref RAIL_SUPPORTS_EXTERNAL_THERMISTOR. 214 #define RAIL_FEAT_EXTERNAL_THERMISTOR RAIL_SUPPORTS_EXTERNAL_THERMISTOR 215 216 /// Boolean to indicate whether the selected chip supports HFXO compensation. 217 /// See also runtime refinement \ref RAIL_SupportsHFXOCompensation(). 218 #if (_SILICON_LABS_32B_SERIES_2_CONFIG == 5) 219 #define RAIL_SUPPORTS_HFXO_COMPENSATION RAIL_SUPPORTS_EXTERNAL_THERMISTOR 220 #else 221 #define RAIL_SUPPORTS_HFXO_COMPENSATION 0 222 #endif 223 224 /// Boolean to indicate whether the selected chip supports AUXADC measurements. 225 /// See also runtime refinement \ref RAIL_SupportsAuxAdc(). 226 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 2) \ 227 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 3) \ 228 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 5) \ 229 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 7) \ 230 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 8) \ 231 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 9)) 232 #define RAIL_SUPPORTS_AUXADC 1 233 #else 234 #define RAIL_SUPPORTS_AUXADC 0 235 #endif 236 237 /// Boolean to indicate whether the selected chip supports a high-precision 238 /// LFRCO. 239 /// Best to use the runtime refinement \ref RAIL_SupportsPrecisionLFRCO() 240 /// because some chip revisions do not support it. 241 #if ((_SILICON_LABS_32B_SERIES_1_CONFIG == 3) \ 242 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 2) \ 243 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 7) \ 244 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 9)) 245 #define RAIL_SUPPORTS_PRECISION_LFRCO 1 246 #else 247 #define RAIL_SUPPORTS_PRECISION_LFRCO 0 248 #endif 249 250 /// Boolean to indicate whether the selected chip supports radio entropy. 251 /// See also runtime refinement \ref RAIL_SupportsRadioEntropy(). 252 #ifndef FPGA 253 #define RAIL_SUPPORTS_RADIO_ENTROPY 1 254 #else 255 #define RAIL_SUPPORTS_RADIO_ENTROPY 0 256 #endif 257 258 /// Boolean to indicate whether the selected chip supports 259 /// RFSENSE Energy Detection Mode. 260 /// See also runtime refinement \ref RAIL_SupportsRfSenseEnergyDetection(). 261 #if ((_SILICON_LABS_32B_SERIES == 1) \ 262 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 2) \ 263 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 7) \ 264 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 9)) 265 #define RAIL_SUPPORTS_RFSENSE_ENERGY_DETECTION 1 266 #else 267 #define RAIL_SUPPORTS_RFSENSE_ENERGY_DETECTION 0 268 #endif 269 270 /// Boolean to indicate whether the selected chip supports 271 /// RFSENSE Selective(OOK) Mode. 272 /// See also runtime refinement \ref RAIL_SupportsRfSenseSelectiveOok(). 273 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 2) \ 274 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 7) \ 275 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 9)) 276 #define RAIL_SUPPORTS_RFSENSE_SELECTIVE_OOK 1 277 #else 278 #define RAIL_SUPPORTS_RFSENSE_SELECTIVE_OOK 0 279 #endif 280 /// Backwards-compatible synonym of \ref RAIL_SUPPORTS_RFSENSE_SELECTIVE_OOK. 281 #define RAIL_FEAT_RFSENSE_SELECTIVE_OOK_MODE_SUPPORTED \ 282 RAIL_SUPPORTS_RFSENSE_SELECTIVE_OOK 283 284 /// Boolean to indicate whether the selected chip supports the 285 /// VDET voltage measurement feature. 286 /// See also runtime refinement \ref RAIL_SupportsVdet(). 287 #if (_SILICON_LABS_32B_SERIES_2_CONFIG == 5) 288 #define RAIL_SUPPORTS_VDET 1 289 #else 290 #define RAIL_SUPPORTS_VDET 0 291 #endif 292 293 #ifndef DOXYGEN_SHOULD_SKIP_THIS 294 /// Boolean to indicate whether the selected chip supports the User Sequencer 295 /// See also runtime refinement \ref RAIL_SupportsUserSequencer(). 296 #if (_SILICON_LABS_32B_SERIES_3_CONFIG >= 300) 297 #define RAIL_SUPPORTS_USER_SEQUENCER 1 298 #else 299 #define RAIL_SUPPORTS_USER_SEQUENCER 0 300 #endif 301 #endif //DOXYGEN_SHOULD_SKIP_THIS 302 303 // BLE features 304 // Some features may not be available on all platforms 305 // due to radio hardware limitations. 306 307 /// Boolean to indicate whether the selected chip supports BLE. 308 /// See also runtime refinement \ref RAIL_SupportsProtocolBLE(). 309 #if (_SILICON_LABS_32B_SERIES_1_CONFIG != 4) 310 #define RAIL_SUPPORTS_PROTOCOL_BLE RAIL_SUPPORTS_2P4GHZ_BAND 311 #else 312 #define RAIL_SUPPORTS_PROTOCOL_BLE 0 313 #endif 314 315 /// Boolean to indicate whether the selected chip supports BLE 1 Mbps 316 /// Non-Viterbi PHY. 317 /// See also runtime refinement \ref RAIL_BLE_Supports1MbpsNonViterbi(). 318 #if (_SILICON_LABS_32B_SERIES_1_CONFIG >= 1) 319 #define RAIL_BLE_SUPPORTS_1MBPS_NON_VITERBI RAIL_SUPPORTS_PROTOCOL_BLE 320 #else 321 #define RAIL_BLE_SUPPORTS_1MBPS_NON_VITERBI 0 322 #endif 323 324 /// Boolean to indicate whether the selected chip supports BLE 1 Mbps Viterbi 325 /// PHY. 326 /// See also runtime refinement \ref RAIL_BLE_Supports1MbpsViterbi(). 327 #if (_SILICON_LABS_32B_SERIES_1_CONFIG != 1) 328 #define RAIL_BLE_SUPPORTS_1MBPS_VITERBI RAIL_SUPPORTS_PROTOCOL_BLE 329 #else 330 #define RAIL_BLE_SUPPORTS_1MBPS_VITERBI 0 331 #endif 332 333 /// Boolean to indicate whether the selected chip supports BLE 1 Mbps operation. 334 /// See also runtime refinement \ref RAIL_BLE_Supports1Mbps(). 335 #define RAIL_BLE_SUPPORTS_1MBPS \ 336 (RAIL_BLE_SUPPORTS_1MBPS_NON_VITERBI || RAIL_BLE_SUPPORTS_1MBPS_VITERBI) 337 338 /// Boolean to indicate whether the selected chip supports BLE 2 Mbps 339 /// Non-Viterbi PHY. 340 /// See also runtime refinement \ref RAIL_BLE_Supports2MbpsNonViterbi(). 341 #if (_SILICON_LABS_32B_SERIES_1_CONFIG >= 2) 342 #define RAIL_BLE_SUPPORTS_2MBPS_NON_VITERBI RAIL_SUPPORTS_PROTOCOL_BLE 343 #else 344 #define RAIL_BLE_SUPPORTS_2MBPS_NON_VITERBI 0 345 #endif 346 347 /// Boolean to indicate whether the selected chip supports BLE 2 Mbps Viterbi 348 /// PHY. 349 /// See also runtime refinement \ref RAIL_BLE_Supports2MbpsViterbi(). 350 #if (_SILICON_LABS_32B_SERIES_1_CONFIG != 1) 351 #define RAIL_BLE_SUPPORTS_2MBPS_VITERBI RAIL_SUPPORTS_PROTOCOL_BLE 352 #else 353 #define RAIL_BLE_SUPPORTS_2MBPS_VITERBI 0 354 #endif 355 356 /// Boolean to indicate whether the selected chip supports BLE 2 Mbps operation. 357 /// See also runtime refinement \ref RAIL_BLE_Supports2Mbps(). 358 #define RAIL_BLE_SUPPORTS_2MBPS \ 359 (RAIL_BLE_SUPPORTS_2MBPS_NON_VITERBI || RAIL_BLE_SUPPORTS_2MBPS_VITERBI) 360 361 /// Boolean to indicate whether the selected chip supports BLE 362 /// Antenna Switching needed for Angle-of-Arrival receives or 363 /// Angle-of-Departure transmits. 364 /// See also runtime refinement \ref RAIL_BLE_SupportsAntennaSwitching(). 365 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 2) \ 366 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 4) \ 367 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 6) \ 368 || (_SILICON_LABS_32B_SERIES_3_CONFIG >= 300)) 369 #define RAIL_BLE_SUPPORTS_ANTENNA_SWITCHING RAIL_SUPPORTS_PROTOCOL_BLE 370 #else 371 #define RAIL_BLE_SUPPORTS_ANTENNA_SWITCHING 0 372 #endif 373 374 /// Boolean to indicate whether the selected chip supports the BLE Coded PHY 375 /// used for Long-Range. 376 /// See also runtime refinement \ref RAIL_BLE_SupportsCodedPhy(). 377 #if ((_SILICON_LABS_32B_SERIES_1_CONFIG == 3) \ 378 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 1) \ 379 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 2) \ 380 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 4) \ 381 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 6) \ 382 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 7) \ 383 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 9) \ 384 || (_SILICON_LABS_32B_SERIES_3_CONFIG >= 300)) 385 #define RAIL_BLE_SUPPORTS_CODED_PHY RAIL_SUPPORTS_PROTOCOL_BLE 386 #else 387 #define RAIL_BLE_SUPPORTS_CODED_PHY 0 388 #endif 389 /// Backwards-compatible synonym of \ref RAIL_BLE_SUPPORTS_CODED_PHY. 390 #define RAIL_FEAT_BLE_CODED RAIL_BLE_SUPPORTS_CODED_PHY 391 392 /// Boolean to indicate whether the selected chip supports the BLE Simulscan PHY 393 /// used for simultaneous BLE 1 Mbps and Coded PHY reception. 394 /// See also runtime refinement \ref RAIL_BLE_SupportsSimulscanPhy(). 395 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 2) \ 396 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 4) \ 397 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 6) \ 398 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 7) \ 399 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 9) \ 400 || (_SILICON_LABS_32B_SERIES_3_CONFIG >= 300)) 401 #define RAIL_BLE_SUPPORTS_SIMULSCAN_PHY RAIL_SUPPORTS_PROTOCOL_BLE 402 #else 403 #define RAIL_BLE_SUPPORTS_SIMULSCAN_PHY 0 404 #endif 405 406 /// Boolean to indicate whether the selected chip supports BLE 407 /// CTE (Constant Tone Extension) needed for Angle-of-Arrival/Departure 408 /// transmits. 409 /// See also runtime refinement \ref RAIL_BLE_SupportsCte(). 410 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 2) \ 411 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 4) \ 412 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 6) \ 413 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 7) \ 414 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 9) \ 415 || (_SILICON_LABS_32B_SERIES_3_CONFIG >= 300)) 416 #define RAIL_BLE_SUPPORTS_CTE RAIL_SUPPORTS_PROTOCOL_BLE 417 #else 418 #define RAIL_BLE_SUPPORTS_CTE 0 419 #endif 420 421 /// Boolean to indicate whether the selected chip supports the 422 /// Quuppa PHY. 423 /// See also runtime refinement \ref RAIL_BLE_SupportsQuuppa(). 424 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 2) \ 425 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 7) \ 426 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 9)) 427 #define RAIL_BLE_SUPPORTS_QUUPPA RAIL_SUPPORTS_PROTOCOL_BLE 428 #else 429 #define RAIL_BLE_SUPPORTS_QUUPPA 0 430 #endif 431 432 /// Boolean to indicate whether the selected chip supports BLE 433 /// IQ Sampling needed for Angle-of-Arrival/Departure receives. 434 /// See also runtime refinement \ref RAIL_BLE_SupportsIQSampling(). 435 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 2) \ 436 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 4) \ 437 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 6) \ 438 || (_SILICON_LABS_32B_SERIES_3_CONFIG >= 300)) 439 #define RAIL_BLE_SUPPORTS_IQ_SAMPLING RAIL_SUPPORTS_PROTOCOL_BLE 440 #else 441 #define RAIL_BLE_SUPPORTS_IQ_SAMPLING 0 442 #endif 443 444 /// Boolean to indicate whether the selected chip supports some BLE AOX 445 /// features. 446 #define RAIL_BLE_SUPPORTS_AOX \ 447 (RAIL_BLE_SUPPORTS_ANTENNA_SWITCHING \ 448 || RAIL_BLE_SUPPORTS_IQ_SAMPLING \ 449 || RAIL_BLE_SUPPORTS_CTE) 450 451 /// Backwards-compatible synonym of \ref RAIL_BLE_SUPPORTS_AOX 452 #define RAIL_FEAT_BLE_AOX_SUPPORTED RAIL_BLE_SUPPORTS_AOX 453 454 #ifndef DOXYGEN_SHOULD_SKIP_THIS 455 /// Boolean to indicate whether the selected chip supports BLE 456 /// CS (Channel Sounding). 457 #if (_SILICON_LABS_32B_SERIES_2_CONFIG == 4) 458 #define RAIL_BLE_SUPPORTS_CS RAIL_SUPPORTS_PROTOCOL_BLE 459 #else 460 #define RAIL_BLE_SUPPORTS_CS 0 461 #endif 462 #endif//DOXYGEN_SHOULD_SKIP_THIS 463 464 /// Boolean to indicate whether the selected chip supports BLE PHY switch to RX 465 /// functionality, which is used to switch BLE PHYs at a specific time 466 /// to receive auxiliary packets. 467 /// See also runtime refinement \ref RAIL_BLE_SupportsPhySwitchToRx(). 468 #if (_SILICON_LABS_32B_SERIES_1_CONFIG != 1) 469 #define RAIL_BLE_SUPPORTS_PHY_SWITCH_TO_RX RAIL_SUPPORTS_PROTOCOL_BLE 470 #else 471 #define RAIL_BLE_SUPPORTS_PHY_SWITCH_TO_RX 0 472 #endif 473 /// Backwards-compatible synonym of \ref RAIL_BLE_SUPPORTS_PHY_SWITCH_TO_RX. 474 #define RAIL_FEAT_BLE_PHY_SWITCH_TO_RX RAIL_BLE_SUPPORTS_PHY_SWITCH_TO_RX 475 476 // IEEE 802.15.4 features 477 // Some features may not be available on all platforms 478 // due to radio hardware limitations. 479 480 /// Boolean to indicate whether the selected chip supports IEEE 802.15.4. 481 /// See also runtime refinement \ref RAIL_SupportsProtocolIEEE802154(). 482 #if 1 483 #define RAIL_SUPPORTS_PROTOCOL_IEEE802154 1 484 #else 485 #define RAIL_SUPPORTS_PROTOCOL_IEEE802154 0 486 #endif 487 488 /// Boolean to indicate whether the selected chip supports the 489 /// 802.15.4 Wi-Fi Coexistence PHY. 490 /// See also runtime refinement \ref RAIL_IEEE802154_SupportsCoexPhy(). 491 #if (_SILICON_LABS_32B_SERIES_1_CONFIG > 1) 492 #define RAIL_IEEE802154_SUPPORTS_COEX_PHY (RAIL_SUPPORTS_PROTOCOL_IEEE802154 && RAIL_SUPPORTS_2P4GHZ_BAND) 493 #else 494 #define RAIL_IEEE802154_SUPPORTS_COEX_PHY 0 495 #endif 496 /// Backwards-compatible synonym of \ref RAIL_IEEE802154_SUPPORTS_COEX_PHY. 497 #define RAIL_FEAT_802154_COEX_PHY RAIL_IEEE802154_SUPPORTS_COEX_PHY 498 499 /// Boolean to indicate whether the selected chip supports 500 /// the IEEE 802.15.4 2.4 GHz band variant. 501 /// See also runtime refinement \ref RAIL_SupportsIEEE802154Band2P4(). 502 #if (_SILICON_LABS_32B_SERIES_2_CONFIG != 3) 503 #define RAIL_SUPPORTS_IEEE802154_BAND_2P4 (RAIL_SUPPORTS_PROTOCOL_IEEE802154 && RAIL_SUPPORTS_2P4GHZ_BAND) 504 #else 505 #define RAIL_SUPPORTS_IEEE802154_BAND_2P4 0 506 #endif 507 508 /// Boolean to indicate whether the selected chip supports 509 /// the IEEE 802.15.4 2.4 RX channel switching. 510 /// See also runtime refinement \ref RAIL_IEEE802154_SupportsRxChannelSwitching(). 511 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 1) \ 512 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 4) \ 513 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 6)) 514 #define RAIL_IEEE802154_SUPPORTS_RX_CHANNEL_SWITCHING (RAIL_SUPPORTS_IEEE802154_BAND_2P4) 515 #else 516 #define RAIL_IEEE802154_SUPPORTS_RX_CHANNEL_SWITCHING 0 517 #endif 518 519 /// Boolean to indicate whether the selected chip supports a front end module. 520 /// See also runtime refinement \ref RAIL_IEEE802154_SupportsFemPhy(). 521 #if (_SILICON_LABS_32B_SERIES_2_CONFIG != 8) 522 #define RAIL_IEEE802154_SUPPORTS_FEM_PHY (RAIL_SUPPORTS_IEEE802154_BAND_2P4) 523 #else 524 #define RAIL_IEEE802154_SUPPORTS_FEM_PHY 0 525 #endif 526 527 /// Boolean to indicate whether the selected chip supports 528 /// IEEE 802.15.4E-2012 feature subset needed for Zigbee R22 GB868. 529 /// See also runtime refinement \ref 530 /// RAIL_IEEE802154_SupportsESubsetGB868(). 531 #if 1 532 #define RAIL_IEEE802154_SUPPORTS_E_SUBSET_GB868 RAIL_SUPPORTS_PROTOCOL_IEEE802154 533 #else 534 #define RAIL_IEEE802154_SUPPORTS_E_SUBSET_GB868 0 535 #endif 536 /// Backwards-compatible synonym of \ref 537 /// RAIL_IEEE802154_SUPPORTS_E_SUBSET_GB868. 538 #define RAIL_FEAT_IEEE802154_E_GB868_SUPPORTED \ 539 RAIL_IEEE802154_SUPPORTS_E_SUBSET_GB868 540 541 /// Boolean to indicate whether the selected chip supports 542 /// IEEE 802.15.4E-2012 Enhanced ACKing. 543 /// See also runtime refinement \ref 544 /// RAIL_IEEE802154_SupportsEEnhancedAck(). 545 #if 1 546 #define RAIL_IEEE802154_SUPPORTS_E_ENHANCED_ACK RAIL_IEEE802154_SUPPORTS_E_SUBSET_GB868 547 #else 548 #define RAIL_IEEE802154_SUPPORTS_E_ENHANCED_ACK 0 549 #endif 550 /// Backwards-compatible synonym of \ref 551 /// RAIL_IEEE802154_SUPPORTS_E_ENHANCED_ACK. 552 #define RAIL_FEAT_IEEE802154_E_ENH_ACK_SUPPORTED \ 553 RAIL_IEEE802154_SUPPORTS_E_ENHANCED_ACK 554 555 /// Boolean to indicate whether the selected chip supports 556 /// receiving IEEE 802.15.4E-2012 Multipurpose frames. 557 /// See also runtime refinement \ref 558 /// RAIL_IEEE802154_SupportsEMultipurposeFrames(). 559 #if (_SILICON_LABS_32B_SERIES_1_CONFIG != 1) 560 #define RAIL_IEEE802154_SUPPORTS_E_MULTIPURPOSE_FRAMES RAIL_IEEE802154_SUPPORTS_E_SUBSET_GB868 561 #else 562 #define RAIL_IEEE802154_SUPPORTS_E_MULTIPURPOSE_FRAMES 0 563 #endif 564 /// Backwards-compatible synonym of \ref 565 /// RAIL_IEEE802154_SUPPORTS_E_MULTIPURPOSE_FRAMES. 566 #define RAIL_FEAT_IEEE802154_MULTIPURPOSE_FRAME_SUPPORTED \ 567 RAIL_IEEE802154_SUPPORTS_E_MULTIPURPOSE_FRAMES 568 569 /// Boolean to indicate whether the selected chip supports 570 /// IEEE 802.15.4G-2012 feature subset needed for Zigbee R22 GB868. 571 /// See also runtime refinement \ref 572 /// RAIL_IEEE802154_SupportsGSubsetGB868(). 573 #if (_SILICON_LABS_32B_SERIES_2_CONFIG != 3) 574 #define RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868 \ 575 ((RAIL_SUPPORTS_PROTOCOL_IEEE802154 != 0) && (RAIL_SUPPORTS_SUBGHZ_BAND != 0)) 576 #else 577 #define RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868 0 578 #endif 579 /// Backwards-compatible synonym of \ref 580 /// RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868. 581 #define RAIL_FEAT_IEEE802154_G_GB868_SUPPORTED \ 582 RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868 583 584 /// Boolean to indicate whether the selected chip supports 585 /// dynamic FEC 586 /// See also runtime refinement \ref 587 /// RAIL_IEEE802154_SupportsGDynFec(). 588 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG > 1) \ 589 || (_SILICON_LABS_32B_SERIES_3_CONFIG >= 300)) 590 #define RAIL_IEEE802154_SUPPORTS_G_DYNFEC \ 591 RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868 // limit to Sub-GHz for now 592 #else 593 #define RAIL_IEEE802154_SUPPORTS_G_DYNFEC 0 594 #endif 595 596 /// Boolean to indicate whether the selected chip supports 597 /// Wi-SUN mode switching 598 /// See also runtime refinement \ref 599 /// RAIL_IEEE802154_SupportsGModeSwitch(). 600 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 5) \ 601 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 8)) 602 #define RAIL_IEEE802154_SUPPORTS_G_MODESWITCH \ 603 RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868 // limit to Sub-GHz for now 604 #else 605 #define RAIL_IEEE802154_SUPPORTS_G_MODESWITCH 0 606 #endif 607 608 /// Boolean to indicate whether the selected chip supports 609 /// IEEE 802.15.4G-2012 reception and transmission of frames 610 /// with 4-byte CRC. 611 /// See also runtime refinement \ref RAIL_IEEE802154_SupportsG4ByteCrc(). 612 #if (_SILICON_LABS_32B_SERIES_1_CONFIG != 1) 613 #define RAIL_IEEE802154_SUPPORTS_G_4BYTE_CRC RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868 614 #else 615 #define RAIL_IEEE802154_SUPPORTS_G_4BYTE_CRC 0 616 #endif 617 /// Backwards-compatible synonym of \ref RAIL_IEEE802154_SUPPORTS_G_4BYTE_CRC. 618 #define RAIL_FEAT_IEEE802154_G_4BYTE_CRC_SUPPORTED \ 619 RAIL_IEEE802154_SUPPORTS_G_4BYTE_CRC 620 621 /// Boolean to indicate whether the selected chip supports 622 /// IEEE 802.15.4G-2012 reception of unwhitened frames. 623 /// See also runtime refinement \ref 624 /// RAIL_IEEE802154_SupportsGUnwhitenedRx(). 625 #if (_SILICON_LABS_32B_SERIES_1_CONFIG != 1) 626 #define RAIL_IEEE802154_SUPPORTS_G_UNWHITENED_RX RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868 627 #else 628 #define RAIL_IEEE802154_SUPPORTS_G_UNWHITENED_RX 0 629 #endif 630 /// Backwards-compatible synonym of \ref 631 /// RAIL_IEEE802154_SUPPORTS_G_UNWHITENED_RX. 632 #define RAIL_FEAT_IEEE802154_G_UNWHITENED_RX_SUPPORTED \ 633 RAIL_IEEE802154_SUPPORTS_G_UNWHITENED_RX 634 635 /// Boolean to indicate whether the selected chip supports 636 /// IEEE 802.15.4G-2012 transmission of unwhitened frames. 637 /// See also runtime refinement \ref 638 /// RAIL_IEEE802154_SupportsGUnwhitenedTx(). 639 #if (_SILICON_LABS_32B_SERIES_1_CONFIG != 1) 640 #define RAIL_IEEE802154_SUPPORTS_G_UNWHITENED_TX RAIL_IEEE802154_SUPPORTS_G_SUBSET_GB868 641 #else 642 #define RAIL_IEEE802154_SUPPORTS_G_UNWHITENED_TX 0 643 #endif 644 /// Backwards-compatible synonym of \ref 645 /// RAIL_IEEE802154_SUPPORTS_G_UNWHITENED_TX. 646 #define RAIL_FEAT_IEEE802154_G_UNWHITENED_TX_SUPPORTED \ 647 RAIL_IEEE802154_SUPPORTS_G_UNWHITENED_TX 648 649 /// Boolean to indicate whether the selected chip supports 650 /// canceling the frame-pending lookup event 651 /// \ref RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND 652 /// when the radio transitions to a state that renders the 653 /// the reporting of this event moot (i.e., too late for 654 /// the stack to influence the outgoing ACK). 655 /// See also runtime refinement \ref 656 /// RAIL_IEEE802154_SupportsCancelFramePendingLookup(). 657 #if 1 658 #define RAIL_IEEE802154_SUPPORTS_CANCEL_FRAME_PENDING_LOOKUP RAIL_SUPPORTS_PROTOCOL_IEEE802154 659 #else 660 #define RAIL_IEEE802154_SUPPORTS_CANCEL_FRAME_PENDING_LOOKUP 0 661 #endif 662 /// Backwards-compatible synonym of \ref 663 /// RAIL_IEEE802154_SUPPORTS_CANCEL_FRAME_PENDING_LOOKUP. 664 #define RAIL_FEAT_IEEE802154_CANCEL_FP_LOOKUP_SUPPORTED \ 665 RAIL_IEEE802154_SUPPORTS_CANCEL_FRAME_PENDING_LOOKUP 666 667 /// Boolean to indicate whether the selected chip supports 668 /// early triggering of the frame-pending lookup event 669 /// \ref RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND 670 /// just after MAC address fields have been received. 671 /// See also runtime refinement \ref 672 /// RAIL_IEEE802154_SupportsEarlyFramePendingLookup(). 673 #if 1 674 #define RAIL_IEEE802154_SUPPORTS_EARLY_FRAME_PENDING_LOOKUP RAIL_SUPPORTS_PROTOCOL_IEEE802154 675 #else 676 #define RAIL_IEEE802154_SUPPORTS_EARLY_FRAME_PENDING_LOOKUP 0 677 #endif 678 /// Backwards-compatible synonym of \ref 679 /// RAIL_IEEE802154_SUPPORTS_EARLY_FRAME_PENDING_LOOKUP. 680 #define RAIL_FEAT_IEEE802154_EARLY_FP_LOOKUP_SUPPORTED \ 681 RAIL_IEEE802154_SUPPORTS_EARLY_FRAME_PENDING_LOOKUP 682 683 /// Boolean to indicate whether the selected chip supports dual PA configs for mode switch 684 /// or concurrent mode. 685 /// See also runtime refinement \ref RAIL_IEEE802154_SupportsDualPaConfig(). 686 #if (_SILICON_LABS_32B_SERIES_2_CONFIG == 5) 687 #define RAIL_IEEE802154_SUPPORTS_DUAL_PA_CONFIG 1 688 #else 689 #define RAIL_IEEE802154_SUPPORTS_DUAL_PA_CONFIG 0 690 #endif 691 692 /// Boolean to indicate whether the selected chip supports the pa power setting table. 693 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 5) \ 694 || (_SILICON_LABS_32B_SERIES_3_CONFIG >= 300)) 695 #define RAIL_SUPPORTS_DBM_POWERSETTING_MAPPING_TABLE 1 696 #else 697 #define RAIL_SUPPORTS_DBM_POWERSETTING_MAPPING_TABLE 0 698 #endif 699 700 #ifndef DOXYGEN_SHOULD_SKIP_THIS 701 /// Boolean to indicate whether the selected chip uses the common PA interface. 702 /// This feature is available when the configuration for Silicon Labs Series 3 703 /// devices is set to 1, enabling the use of a unified Power Amplifier (PA) interface 704 /// across different configurations. 705 #if (_SILICON_LABS_32B_SERIES_3_CONFIG >= 300) 706 #define RAIL_SUPPORTS_COMMON_PA_INTERFACE 1 707 #else 708 #define RAIL_SUPPORTS_COMMON_PA_INTERFACE 0 709 #endif 710 #endif //DOXYGEN_SHOULD_SKIP_THIS 711 712 #ifndef DOXYGEN_SHOULD_SKIP_THIS 713 /// Boolean to indicate whether the selected chip supports 714 /// IEEE802.15.4 2.4 GHz at 2 Mbps 715 /// See also runtime refinement \ref 716 /// RAIL_IEEE802154_Supports2MbpsPhy(). 717 #if (_SILICON_LABS_32B_SERIES_1_CONFIG == 3) \ 718 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 1) \ 719 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 6) \ 720 || (_SILICON_LABS_32B_SERIES_3_CONFIG == 301) \ 721 || (_SILICON_LABS_32B_SERIES_3_CONFIG == 300) 722 #define RAIL_IEEE802154_SUPPORTS_2MBPS_PHY \ 723 (RAIL_SUPPORTS_PROTOCOL_IEEE802154 && RAIL_SUPPORTS_2P4GHZ_BAND) 724 #else 725 #define RAIL_IEEE802154_SUPPORTS_2MBPS_PHY 0 726 #endif 727 #endif //DOXYGEN_SHOULD_SKIP_THIS 728 729 /// Boolean to indicate whether the selected chip supports IEEE 802.15.4 PHY 730 /// with custom settings 731 #if ((_SILICON_LABS_32B_SERIES_1_CONFIG == 2) \ 732 || (_SILICON_LABS_32B_SERIES_1_CONFIG == 3)) 733 #define RAIL_IEEE802154_SUPPORTS_CUSTOM1_PHY (RAIL_SUPPORTS_PROTOCOL_IEEE802154 && RAIL_SUPPORTS_2P4GHZ_BAND) 734 #else 735 #define RAIL_IEEE802154_SUPPORTS_CUSTOM1_PHY 0 736 #endif 737 738 // Wi_SUN features 739 740 /// Boolean to indicate whether the selected chip supports 741 /// Wi-SUN 742 /// See also runtime refinement \ref 743 /// RAIL_SupportsProtocolWiSUN(). 744 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 5) \ 745 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 8)) 746 #define RAIL_SUPPORTS_PROTOCOL_WI_SUN 1 747 #else 748 #define RAIL_SUPPORTS_PROTOCOL_WI_SUN 0 749 #endif 750 751 // WMBUS features 752 753 /// Boolean to indicate whether the selected chip supports WMBUS simultaneous 754 /// M2O RX of T and C modes set by \ref RAIL_WMBUS_Config(). 755 /// See also runtime refinement \ref RAIL_WMBUS_SupportsSimultaneousTCRx(). 756 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 3) \ 757 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 8)) 758 #define RAIL_WMBUS_SUPPORTS_SIMULTANEOUS_T_C_RX 1 759 #else 760 #define RAIL_WMBUS_SUPPORTS_SIMULTANEOUS_T_C_RX 0 761 #endif 762 763 // Z-Wave features 764 // Some features may not be available on all platforms 765 // due to radio hardware limitations. 766 767 /// Boolean to indicate whether the selected chip supports Z-Wave. 768 /// See also runtime refinement \ref RAIL_SupportsProtocolZWave(). 769 #if ((_SILICON_LABS_32B_SERIES_1_CONFIG >= 3) \ 770 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 3) \ 771 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 8)) 772 #define RAIL_SUPPORTS_PROTOCOL_ZWAVE RAIL_SUPPORTS_SUBGHZ_BAND 773 #else 774 #define RAIL_SUPPORTS_PROTOCOL_ZWAVE 0 775 #endif 776 /// Backwards-compatible synonym of \ref RAIL_SUPPORTS_PROTOCOL_ZWAVE. 777 #define RAIL_FEAT_ZWAVE_SUPPORTED RAIL_SUPPORTS_PROTOCOL_ZWAVE 778 779 /// Boolean to indicate whether the selected chip supports energy detect PHY. 780 /// See also runtime refinement \ref RAIL_ZWAVE_SupportsEnergyDetectPhy(). 781 #if (_SILICON_LABS_32B_SERIES_1_CONFIG >= 3) 782 #define RAIL_ZWAVE_SUPPORTS_ED_PHY RAIL_SUPPORTS_PROTOCOL_ZWAVE 783 #else 784 #define RAIL_ZWAVE_SUPPORTS_ED_PHY 0 785 #endif 786 787 /// Boolean to indicate whether the selected chip supports concurrent PHY. 788 /// See also runtime refinement \ref RAIL_ZWAVE_SupportsConcPhy(). 789 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 3) \ 790 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 8)) 791 #define RAIL_ZWAVE_SUPPORTS_CONC_PHY RAIL_SUPPORTS_PROTOCOL_ZWAVE 792 #else 793 #define RAIL_ZWAVE_SUPPORTS_CONC_PHY 0 794 #endif 795 796 /// Boolean to indicate whether the selected chip supports SQ-based PHY. 797 /// See also runtime refinement \ref RAIL_SupportsSQPhy(). 798 #if (((_SILICON_LABS_32B_SERIES_2_CONFIG >= 3) \ 799 && (_SILICON_LABS_32B_SERIES_2_CONFIG != 7) \ 800 && (_SILICON_LABS_32B_SERIES_2_CONFIG != 9)) \ 801 || (_SILICON_LABS_32B_SERIES_3_CONFIG == 301) \ 802 || (_SILICON_LABS_32B_SERIES_3_CONFIG == 300)) 803 #define RAIL_SUPPORTS_SQ_PHY 1 804 #else 805 #define RAIL_SUPPORTS_SQ_PHY 0 806 #endif 807 808 /// Boolean to indicate whether the code supports Z-Wave 809 /// region information in PTI and 810 /// newer \ref RAIL_ZWAVE_RegionConfig_t structure 811 /// See also runtime refinement \ref RAIL_ZWAVE_SupportsRegionPti(). 812 #if 1 813 #define RAIL_ZWAVE_SUPPORTS_REGION_PTI RAIL_SUPPORTS_PROTOCOL_ZWAVE 814 #else 815 #define RAIL_ZWAVE_SUPPORTS_REGION_PTI 0 816 #endif 817 /// Backwards-compatible synonym of \ref RAIL_ZWAVE_SUPPORTS_REGION_PTI. 818 #define RAIL_FEAT_ZWAVE_REGION_PTI RAIL_ZWAVE_SUPPORTS_REGION_PTI 819 820 /// Boolean to indicate whether the selected chip supports raw RX data 821 /// sources other than \ref RAIL_RxDataSource_t::RX_PACKET_DATA. 822 /// See also runtime refinement \ref RAIL_SupportsRxRawData(). 823 #if (_SILICON_LABS_32B_SERIES_3_CONFIG == 0) 824 #define RAIL_SUPPORTS_RX_RAW_DATA 1 825 #else 826 #define RAIL_SUPPORTS_RX_RAW_DATA 0 827 #endif 828 829 /// Boolean to indicate whether the selected chip supports 830 /// direct mode. 831 /// See also runtime refinement \ref RAIL_SupportsDirectMode(). 832 #if ((_SILICON_LABS_32B_SERIES == 1) \ 833 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 3) \ 834 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 8)) 835 #define RAIL_SUPPORTS_DIRECT_MODE 1 836 #else 837 #define RAIL_SUPPORTS_DIRECT_MODE 0 838 #endif 839 840 /// Boolean to indicate whether the selected chip supports 841 /// RX direct mode data to FIFO. 842 /// See also runtime refinement \ref RAIL_SupportsRxDirectModeDataToFifo(). 843 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 3) \ 844 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 8)) 845 #define RAIL_SUPPORTS_RX_DIRECT_MODE_DATA_TO_FIFO 1 846 #else 847 #define RAIL_SUPPORTS_RX_DIRECT_MODE_DATA_TO_FIFO 0 848 #endif 849 850 /// Boolean to indicate whether the selected chip supports 851 /// MFM protocol. 852 /// See also runtime refinement \ref RAIL_SupportsMfm(). 853 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 3) \ 854 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 8)) 855 #define RAIL_SUPPORTS_MFM 1 856 #else 857 #define RAIL_SUPPORTS_MFM 0 858 #endif 859 860 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 4) \ 861 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 6) \ 862 || (_SILICON_LABS_32B_SERIES_3_CONFIG == 301) \ 863 || (_SILICON_LABS_32B_SERIES_3_CONFIG == 300)) 864 /// Boolean to indicate whether the selected chip supports 865 /// 802.15.4 signal detection 866 #define RAIL_IEEE802154_SUPPORTS_SIGNAL_IDENTIFIER (RAIL_SUPPORTS_PROTOCOL_IEEE802154) 867 /// Boolean to indicate whether the selected chip supports 868 /// BLE signal detection 869 #define RAIL_BLE_SUPPORTS_SIGNAL_IDENTIFIER (RAIL_SUPPORTS_PROTOCOL_BLE) 870 #else 871 /// Boolean to indicate whether the selected chip supports 872 /// 802.15.4 signal detection 873 #define RAIL_IEEE802154_SUPPORTS_SIGNAL_IDENTIFIER 0 874 /// Boolean to indicate whether the selected chip supports 875 /// BLE signal detection 876 #define RAIL_BLE_SUPPORTS_SIGNAL_IDENTIFIER 0 877 #endif 878 879 /// Boolean to indicate whether the selected chip supports 880 /// configurable RSSI threshold set by \ref RAIL_SetRssiDetectThreshold(). 881 /// See also runtime refinement \ref RAIL_SupportsRssiDetectThreshold(). 882 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 3) \ 883 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 5)) 884 #define RAIL_SUPPORTS_RSSI_DETECT_THRESHOLD (1U) 885 #else 886 #define RAIL_SUPPORTS_RSSI_DETECT_THRESHOLD (0U) 887 #endif 888 889 /// Boolean to indicate whether the selected chip supports 890 /// thermal protection set by \ref RAIL_ConfigThermalProtection(). 891 /// See also runtime refinement \ref RAIL_SupportsThermalProtection(). 892 #if (_SILICON_LABS_32B_SERIES_2_CONFIG == 5) 893 #define RAIL_SUPPORTS_THERMAL_PROTECTION (1U) 894 #else 895 #define RAIL_SUPPORTS_THERMAL_PROTECTION (0U) 896 #endif 897 898 /// Boolean to indicate whether the selected chip supports fast RX-to-RX enabled by 899 /// \ref RAIL_RX_OPTION_FAST_RX2RX. 900 /// See also runtime refinement \ref RAIL_SupportsFastRx2Rx(). 901 #if (_SILICON_LABS_32B_SERIES_2_CONFIG >= 2) 902 #define RAIL_SUPPORTS_FAST_RX2RX (1U) 903 #else 904 #define RAIL_SUPPORTS_FAST_RX2RX (0U) 905 #endif 906 907 /// Boolean to indicate whether the selected chip supports collision detection 908 /// enabled by \ref RAIL_RX_OPTION_ENABLE_COLLISION_DETECTION 909 /// See also runtime refinement \ref RAIL_SupportsCollisionDetection(). 910 #if (_SILICON_LABS_32B_SERIES_2_CONFIG == 5) 911 #define RAIL_SUPPORTS_COLLISION_DETECTION (1U) 912 #else 913 #define RAIL_SUPPORTS_COLLISION_DETECTION (0U) 914 #endif 915 916 /// Boolean to indicate whether the selected chip supports Sidewalk protocol. 917 /// See also runtime refinement \ref RAIL_SupportsProtocolSidewalk(). 918 #if ((_SILICON_LABS_32B_SERIES_2_CONFIG == 3) \ 919 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 8)) 920 #define RAIL_SUPPORTS_PROTOCOL_SIDEWALK (1U) 921 #else 922 #define RAIL_SUPPORTS_PROTOCOL_SIDEWALK (0U) 923 #endif 924 925 /// Boolean to indicate whether the selected chip supports TrustZone secure 926 /// configuration of peripherals used by RAIL. 927 /// See also runtime refinement \ref RAIL_SupportsTrustZoneSecurePeripherals(). 928 #if (_SILICON_LABS_32B_SERIES_2_CONFIG == 3) \ 929 || (_SILICON_LABS_32B_SERIES_2_CONFIG == 8) 930 #define RAIL_SUPPORTS_TRUSTZONE_SECURE_PERIPHERALS (1U) 931 #else 932 #define RAIL_SUPPORTS_TRUSTZONE_SECURE_PERIPHERALS (0U) 933 #endif 934 935 /// Boolean to indicate whether the selected chip supports automatic PRS LNA 936 /// bypass for external FEM. 937 /// See also runtime refinement \ref RAIL_SupportsPrsLnaBypass(). 938 #if (_SILICON_LABS_32B_SERIES_2_CONFIG == 5) 939 #define RAIL_SUPPORTS_PRS_LNA_BYPASS (1U) 940 #else 941 #define RAIL_SUPPORTS_PRS_LNA_BYPASS (0U) 942 #endif 943 944 /** @} */ // end of group Features 945 946 /** @} */ // end of group RAIL_API 947 948 #ifdef __cplusplus 949 } 950 #endif 951 952 #endif // __RAIL_FEATURES_H__ 953