General#
Basic APIs to set up and interact with the RAIL library.
Modules#
Typedefs#
A radio-generic handle (e.g., RAIL_EFR32_HANDLE), or a real RAIL instance handle as returned from RAIL_Init().
A status returned by many RAIL API calls indicating their success or failure.
A pointer to an initialization complete callback function.
Provided for backwards compatibility.
Functions#
Get the version information for the compiled RAIL library.
Add a 3rd multiprotocol internal state buffer for use by RAIL_Init().
Add a 4th multiprotocol internal state buffer for use by RAIL_Init().
Allocate a DMA channel for RAIL to work with.
Reads out device specific data that may be needed by RAIL and populates appropriate data structures in the library.
Initialize RAIL.
Get RAIL initialization status.
Collect entropy from the radio if available.
Macros#
A placeholder for a radio-generic RAIL handle.
RAIL function reports no error.
Call to RAIL function threw an error because of an invalid parameter.
Call to RAIL function threw an error because it was called during an invalid radio state.
RAIL function is called in an invalid order.
RAIL function did not finish in the allotted time.
RAIL function could not be scheduled by the Radio scheduler.
A value to signal that RAIL should not use DMA.
Typedef Documentation#
RAIL_Handle_t#
RAIL_Handle_t
A radio-generic handle (e.g., RAIL_EFR32_HANDLE), or a real RAIL instance handle as returned from RAIL_Init().
Generic handles should be used for certain RAIL APIs that are called prior to RAIL initialization. However, once RAIL has been initialized, the real handle returned by RAIL_Init() should be used instead.
109
of file common/rail_types.h
RAIL_Status_t#
RAIL_Status_t
A status returned by many RAIL API calls indicating their success or failure.
It is a subset of sl_status_t.
126
of file common/rail_types.h
RAIL_InitCompleteCallbackPtr_t#
typedef void(* RAIL_InitCompleteCallbackPtr_t) (RAIL_Handle_t railHandle) )(RAIL_Handle_t railHandle)
A pointer to an initialization complete callback function.
[in] | railHandle | The initialized RAIL instance handle. |
157
of file common/rail_types.h
RAIL_StateBuffer_t#
RAIL_StateBuffer_t [1]
Provided for backwards compatibility.
175
of file common/rail_types.h
Function Documentation#
RAIL_GetVersion#
RAIL_Status_t RAIL_GetVersion (RAIL_Version_t * version, bool verbose)
Get the version information for the compiled RAIL library.
[out] | version | A non-NULL pointer to RAIL_Version_t structure to populate with version information. |
[in] | verbose | Populate RAIL_Version_t struct with verbose information. |
Returns
Status code indicating success of the function call.
The version information contains a major version number, a minor version number, and a rev (revision) number.
83
of file common/rail.h
RAIL_AddStateBuffer3#
RAIL_Status_t RAIL_AddStateBuffer3 (RAIL_Handle_t genericRailHandle)
Add a 3rd multiprotocol internal state buffer for use by RAIL_Init().
[in] | genericRailHandle | A generic RAIL instance handle. |
Returns
Status code indicating success of the function call. An error is returned if the 3rd state buffer was previously added or this isn't the RAIL multiprotocol library.
152
of file common/rail.h
RAIL_AddStateBuffer4#
RAIL_Status_t RAIL_AddStateBuffer4 (RAIL_Handle_t genericRailHandle)
Add a 4th multiprotocol internal state buffer for use by RAIL_Init().
[in] | genericRailHandle | A generic RAIL instance handle. |
Returns
Status code indicating success of the function call. An error is returned if the 4th state buffer was previously added. or this isn't the RAIL multiprotocol library.
162
of file common/rail.h
RAIL_UseDma#
RAIL_Status_t RAIL_UseDma (uint8_t channel)
Allocate a DMA channel for RAIL to work with.
[in] | channel | The DMA channel to use when copying memory. If a value of RAIL_DMA_INVALID is passed, RAIL will stop using any DMA channel. |
Returns
Status code indicating success of the function call.
To use this API, the application must initialize the DMA engine on the chip and allocate a DMA channel. This channel will be used periodically to copy memory more efficiently. Call this function before RAIL_Init() to have the most benefit. If the application needs to take back control of the DMA channel that RAIL is using, this API may be called with a channel of RAIL_DMA_INVALID to tell RAIL to stop using DMA.
Warnings
To allocate and use a DMA channel for RAIL to work with when TrustZone is enabled and LDMA is configured as secure peripheral, the secure application must initialize the DMA engine and call this API. The non-secure application must provide a non-NULL RAIL_TZ_Config_t::radioPerformM2mLdmaCallback to RAIL_TZ_InitNonSecure(). To take back control of the DMA channel when TrustZone is enabled and LDMA is configured as secure peripheral, the secure application must call this API with a channel of RAIL_DMA_INVALID. The non-secure application must provide a NULL RAIL_TZ_Config_t::radioPerformM2mLdmaCallback to RAIL_TZ_InitNonSecure().
190
of file common/rail.h
RAIL_CopyDeviceInfo#
RAIL_Status_t RAIL_CopyDeviceInfo (RAIL_Handle_t genericRailHandle)
Reads out device specific data that may be needed by RAIL and populates appropriate data structures in the library.
[in] | genericRailHandle | A generic RAIL instance handle. |
Returns
Status code indicating success of the function call.
Note
This function must be called before calling RAIL_Init() on any platforms that require this data and should not be called inside a critical section. This function does nothing on EFR32 Series 2 devices.
312
of file common/rail.h
RAIL_Init#
RAIL_Handle_t RAIL_Init (const RAIL_Config_t * railCfg, RAIL_InitCompleteCallbackPtr_t cb)
Initialize RAIL.
[in] | railCfg | The configuration for setting up the protocol. |
[in] | cb | A callback that notifies the application when the radio is finished initializing and is ready for further configuration. This callback is useful for potential transceiver products that require a power up sequence before further configuration is available. After the callback fires, the radio is ready for additional configuration before transmit and receive operations. |
Returns
Handle for initialized rail instance or NULL if an invalid value was passed in the railCfg.
Note
Call this function only once per protocol. If called again, it will do nothing and return NULL. RAIL_CopyDeviceInfo() should be called once before calling this function for Silicon Labs Series 3 devices.
332
of file common/rail.h
RAIL_IsInitialized#
bool RAIL_IsInitialized (void )
Get RAIL initialization status.
N/A |
Returns
true if the radio has finished initializing and false otherwise.
RAIL APIs, e.g., RAIL_GetTime(), which work only if RAIL_Init() has been called, can use RAIL_IsInitialized() to determine whether RAIL has been initialized or not.
344
of file common/rail.h
RAIL_GetRadioEntropy#
uint16_t RAIL_GetRadioEntropy (RAIL_Handle_t railHandle, uint8_t * buffer, uint16_t bytes)
Collect entropy from the radio if available.
[in] | railHandle | A RAIL instance handle. |
[out] | buffer | A non-NULL pointer to the buffer to write the collected entropy. |
[in] | bytes | The number of bytes to fill in the input buffer. |
Returns
The number of bytes of entropy collected. For radios that don't support entropy collection, the function returns 0. Values less than the requested amount may also be returned on platforms that use entropy pools to collect random data periodically.
Attempts to fill the provided buffer with the requested number of bytes of entropy. If the requested number of bytes can't be provided, as many bytes as possible will be filled and returned. For radios that do not support this function, 0 bytes are always returned. For information about the specific mechanism for gathering entropy, see documentation for the chip family.
364
of file common/rail.h
Macro Definition Documentation#
RAIL_EFR32_HANDLE#
#define RAIL_EFR32_HANDLEValue:
((RAIL_Handle_t)0xFFFFFFFFUL)
A placeholder for a radio-generic RAIL handle.
Using NULL as a RAIL handle is not recommended. As a result, another value that can't be de-referenced is used.
This generic handle can and should be used for RAIL APIs that are called prior to RAIL initialization.
119
of file common/rail_types.h
RAIL_STATUS_NO_ERROR#
#define RAIL_STATUS_NO_ERRORValue:
SL_STATUS_OK
RAIL function reports no error.
129
of file common/rail_types.h
RAIL_STATUS_INVALID_PARAMETER#
#define RAIL_STATUS_INVALID_PARAMETERValue:
SL_STATUS_INVALID_PARAMETER
Call to RAIL function threw an error because of an invalid parameter.
132
of file common/rail_types.h
RAIL_STATUS_INVALID_STATE#
#define RAIL_STATUS_INVALID_STATEValue:
SL_STATUS_INVALID_STATE
Call to RAIL function threw an error because it was called during an invalid radio state.
138
of file common/rail_types.h
RAIL_STATUS_INVALID_CALL#
#define RAIL_STATUS_INVALID_CALLValue:
SL_STATUS_NOT_AVAILABLE
RAIL function is called in an invalid order.
141
of file common/rail_types.h
RAIL_STATUS_SUSPENDED#
#define RAIL_STATUS_SUSPENDEDValue:
SL_STATUS_IN_PROGRESS
RAIL function did not finish in the allotted time.
144
of file common/rail_types.h
RAIL_STATUS_SCHED_ERROR#
#define RAIL_STATUS_SCHED_ERRORValue:
SL_STATUS_ABORT
RAIL function could not be scheduled by the Radio scheduler.
Only issued when using a Multiprotocol application.
150
of file common/rail_types.h
RAIL_DMA_INVALID#
#define RAIL_DMA_INVALIDValue:
(0xFFU)
A value to signal that RAIL should not use DMA.
160
of file common/rail_types.h