Diagnostic

APIs for diagnostic and test chip modes.

Modules

EFR32
Types specific to the EFR32 for the diagnostic routines.

Data Structures

struct  RAIL_VerifyConfig_t
 The configuration array provided to RAIL for use by the radio state verification feature.

Macros

#define RAIL_VERIFY_DURATION_MAX   0xFFFFFFFFUL
 This radio state verification duration indicates to RAIL that all memory contents should be verified by RAIL before returning to the application.

Typedefs

typedef bool(* RAIL_VerifyCallbackPtr_t) (uint32_t address, uint32_t expectedValue, uint32_t actualValue)
 A pointer to a verification callback function.

Enumerations

enum  RAIL_StreamMode_t {
  RAIL_STREAM_CARRIER_WAVE = 0,
  RAIL_STREAM_PN9_STREAM = 1,
  RAIL_STREAM_10_STREAM = 2,
  RAIL_STREAM_MODES_COUNT
}
 Possible stream output modes.

Functions

RAIL_Status_t RAIL_EnableDirectMode (RAIL_Handle_t railHandle, bool enable)
 Enable or disable direct mode for RAIL.
 
RAIL_Status_t RAIL_SetTune (RAIL_Handle_t railHandle, uint32_t tune)
 Set the crystal tuning.
 
uint32_t RAIL_GetTune (RAIL_Handle_t railHandle)
 Get the crystal tuning.
 
RAIL_FrequencyOffset_t RAIL_GetRxFreqOffset (RAIL_Handle_t railHandle)
 Get the frequency offset.
 
RAIL_Status_t RAIL_SetFreqOffset (RAIL_Handle_t railHandle, RAIL_FrequencyOffset_t freqOffset)
 Set the nominal radio frequency offset.
 
RAIL_Status_t RAIL_StartTxStream (RAIL_Handle_t railHandle, uint16_t channel, RAIL_StreamMode_t mode)
 Start transmitting a stream on a certain channel.
 
RAIL_Status_t RAIL_StartTxStreamAlt (RAIL_Handle_t railHandle, uint16_t channel, RAIL_StreamMode_t mode, RAIL_TxOptions_t options)
 Start transmitting a stream on a certain channel, with ability to select an antenna.
 
RAIL_Status_t RAIL_StopTxStream (RAIL_Handle_t railHandle)
 Stop stream transmission.
 
RAIL_Status_t RAIL_StopInfinitePreambleTx (RAIL_Handle_t railHandle)
 Stop infinite preamble transmission started and start transmitting the rest of the packet.
 
RAIL_Status_t RAIL_ConfigVerification (RAIL_Handle_t railHandle, RAIL_VerifyConfig_t *configVerify, const uint32_t *radioConfig, RAIL_VerifyCallbackPtr_t cb)
 Configure the verification of radio memory contents.
 
RAIL_Status_t RAIL_Verify (RAIL_VerifyConfig_t *configVerify, uint32_t durationUs, bool restart)
 Verify radio memory contents.

Detailed Description

APIs for diagnostic and test chip modes.

Typedef Documentation

◆ RAIL_VerifyCallbackPtr_t

typedef bool(* RAIL_VerifyCallbackPtr_t) (uint32_t address, uint32_t expectedValue, uint32_t actualValue)

A pointer to a verification callback function.

This will be called by the radio state verification feature built into RAIL when a verified memory value is different from its reference value.

Parameters
[in]addressThe address of the data in question.
[in]expectedValueThe expected value of the data in question.
[in]actualValueThe actual value of the data in question.
Returns
bool True indicates a data value difference is acceptable. False indicates a data value difference in unacceptable.
Note
This callback will be issued when an address' value is different from its reference value and either of the following conditions are met: 1) The default radio configuration provided by the radio configurator is used for verification purposes (i.e., a custom radio configuration is not supplied as an input to RAIL_ConfigVerification()), and the radio configurator has flagged the address under question as being verifiable. 2) A custom radio configuration is provided to the verification API (i.e., a custom radio configuration is supplied as an input to RAIL_ConfigVerification()). When providing a custom radio configuration for verification purposes, all addresses in that configuration will be verified, regardless of whether or not the addresses are flagged as verifiable.

Definition at line 3257 of file rail_types.h.

Enumeration Type Documentation

◆ RAIL_StreamMode_t

Possible stream output modes.

Enumerator
RAIL_STREAM_CARRIER_WAVE 

An unmodulated carrier wave.

RAIL_STREAM_PN9_STREAM 

PN9 byte sequence.

RAIL_STREAM_10_STREAM 

101010 sequence.

RAIL_STREAM_MODES_COUNT 

A count of the choices in this enumeration.

Must be last.

Definition at line 3211 of file rail_types.h.

Function Documentation

◆ RAIL_ConfigVerification()

RAIL_Status_t RAIL_ConfigVerification ( RAIL_Handle_t  railHandle,
RAIL_VerifyConfig_t configVerify,
const uint32_t *  radioConfig,
RAIL_VerifyCallbackPtr_t  cb 
)

Configure the verification of radio memory contents.

Parameters
[in]railHandleA RAIL instance handle.
[in,out]configVerifyA configuration structure made available to RAIL to perform radio state verification. This structure must be allocated in application global read-write memory. RAIL may modify fields within or referenced by this structure during its operation.
[in]radioConfigA pointer to a radioConfig that is to be used as a white list for verifying memory contents.
[in]cbA callback that notifies the application of a mismatch in expected vs actual memory contents. A NULL parameter may be passed in if a callback is not provided by the application.
Returns
RAIL_STATUS_NO_ERROR if setup of the verification feature successfully occurred. RAIL_STATUS_INVALID_PARAMETER is returned if the provided railHandle or configVerify structures are invalid.

◆ RAIL_EnableDirectMode()

RAIL_Status_t RAIL_EnableDirectMode ( RAIL_Handle_t  railHandle,
bool  enable 
)

Enable or disable direct mode for RAIL.

Parameters
[in]railHandleA RAIL instance handle.
[in]enableWhether or not to enable direct mode.
Returns
RAIL_STATUS_NO_ERROR on success and an error code on failure.
Warning
This API configures fixed pins for TX data in, RX data out, and RX clock out. There should be more control over these pins in the future but they are currently fixed. Also, this API is not safe to use in a true multiprotocol app.

In this mode, packets are output and input directly to the radio via GPIO and RAIL packet handling is ignored. On the EFR32, the DIN pin in TX is EFR32_PC10, which corresponds to EXP_HEADER15/WSTKP12, and the DOUT pin in RX is EFR32_PC11, which corresponds to EXP_HEADER16/WSTKP13.

◆ RAIL_GetRxFreqOffset()

RAIL_FrequencyOffset_t RAIL_GetRxFreqOffset ( RAIL_Handle_t  railHandle)

Get the frequency offset.

Parameters
[in]railHandleA RAIL instance handle.
Returns
Returns the measured frequency offset on a received packet. The units are described in the RAIL_FrequencyOffset_t documentation. If this returns RAIL_FREQUENCY_OFFSET_INVALID, it was called while the radio wasn't active and there is no way to get the frequency offset.

Retrieves the measured frequency offset used during the previous received packet, which includes the current radio frequency offset (see RAIL_SetFreqOffset()). If the chip has not been in RX, it returns the nominal radio frequency offset.

◆ RAIL_GetTune()

uint32_t RAIL_GetTune ( RAIL_Handle_t  railHandle)

Get the crystal tuning.

Parameters
[in]railHandleA RAIL instance handle.
Returns
A chip-dependent crystal capacitor bank tuning parameter.

Retrieves the current tuning value used by the crystal that the radio depends on.

◆ RAIL_SetFreqOffset()

RAIL_Status_t RAIL_SetFreqOffset ( RAIL_Handle_t  railHandle,
RAIL_FrequencyOffset_t  freqOffset 
)

Set the nominal radio frequency offset.

Parameters
[in]railHandleA RAIL instance handle.
[in]freqOffsetRAIL_FrequencyOffset_t parameter (signed, 2's complement).
Returns
Status code indicating success of the function call.

This function is used to adjust the radio's tuning frequency slightly up or down. It might be used in conjunction with RAIL_GetRxFreqOffset() after receiving a packet from a peer to adjust the tuner to better match the peer's tuned frequency.

Note
Unlike RAIL_SetTune(), which affects the entire chip's timing including radio tuning and channel spacing, this function only affects radio tuning without disturbing channel spacing or other chip peripheral timing.

◆ RAIL_SetTune()

RAIL_Status_t RAIL_SetTune ( RAIL_Handle_t  railHandle,
uint32_t  tune 
)

Set the crystal tuning.

Parameters
[in]railHandleA RAIL instance handle.
[in]tuneA chip-dependent crystal capacitor bank tuning parameter.
Returns
Status code indicating success of the function call.

Tunes the crystal that the radio depends on to change the location of the center frequency for transmitting and receiving. This function will only succeed if the radio is idle at the time of the call.

Note
This function proportionally affects the entire chip's timing across all its peripherals, including radio tuning and channel spacing. A separate function, RAIL_SetFreqOffset(), can be used to adjust just the radio tuner without disturbing channel spacing or other chip peripheral timing.

◆ RAIL_StartTxStream()

RAIL_Status_t RAIL_StartTxStream ( RAIL_Handle_t  railHandle,
uint16_t  channel,
RAIL_StreamMode_t  mode 
)

Start transmitting a stream on a certain channel.

Parameters
[in]railHandleA RAIL instance handle.
[in]channelA channel on which to emit a stream.
[in]modeChoose the stream mode (PN9, and so on).
Returns
Status code indicating success of the function call.

Begins streaming onto the given channel. The sources can either be an unmodulated carrier wave or an encoded stream of bits from a PN9 source. All ongoing radio operations will be stopped before transmission begins.

◆ RAIL_StartTxStreamAlt()

RAIL_Status_t RAIL_StartTxStreamAlt ( RAIL_Handle_t  railHandle,
uint16_t  channel,
RAIL_StreamMode_t  mode,
RAIL_TxOptions_t  options 
)

Start transmitting a stream on a certain channel, with ability to select an antenna.

Parameters
[in]railHandleA RAIL instance handle.
[in]channelA channel on which to emit a stream.
[in]modeChoose the stream mode (PN9, and so on).
[in]optionsChoose the TX Antenna option. Takes only RAIL_TX_OPTION_ANTENNA0, RAIL_TX_OPTION_ANTENNA1, RAIL_TX_OPTIONS_DEFAULT or RAIL_TX_OPTIONS_NONE from the RAIL_TxOptions_t. If some other value is used then, transmission is possible on any antenna.
Returns
Status code indicating success of the function call.

Begins streaming onto the given channel. The sources can either be an unmodulated carrier wave or an encoded stream of bits from a PN9 source. All ongoing radio operations will be stopped before transmission begins.

◆ RAIL_StopInfinitePreambleTx()

RAIL_Status_t RAIL_StopInfinitePreambleTx ( RAIL_Handle_t  railHandle)

Stop infinite preamble transmission started and start transmitting the rest of the packet.

This function is only useful for radio configurations that specify an infinite preamble. It should only be called after RAIL_EVENT_TX_STARTED has occurred and the radio is transmitting.

Parameters
[in]railHandleA RAIL instance handle.
Returns
Status code indicating success of the function call: RAIL_STATUS_NO_ERROR if infinite preamble was stopped; RAIL_STATUS_INVALID_CALL if the radio isn't configured for infinite preamble; RAIL_STATUS_INVALID_STATE if the radio isn't transmitting.

◆ RAIL_StopTxStream()

RAIL_Status_t RAIL_StopTxStream ( RAIL_Handle_t  railHandle)

Stop stream transmission.

Parameters
[in]railHandleA RAIL instance handle.
Returns
Status code indicating success of the function call.

Halts the transmission started by RAIL_StartTxStream().

◆ RAIL_Verify()

RAIL_Status_t RAIL_Verify ( RAIL_VerifyConfig_t configVerify,
uint32_t  durationUs,
bool  restart 
)

Verify radio memory contents.

Parameters
[in,out]configVerifyA configuration structure made available to RAIL to perform radio state verification. This structure must be allocated in application global read-write memory. RAIL may modify fields within or referenced by this structure during its operation.
[in]durationUsThe duration (in microseconds) for how long memory verification should occur before returning to the application. A value of RAIL_VERIFY_DURATION_MAX indicates that all memory contents should be verified before returning to the application.
[in]restartThis flag only has meaning if a previous call of this function returned RAIL_STATUS_SUSPENDED. By restarting (true), the verification process starts over from the beginning, or by resuming where verification left off after being suspended (false), verification can proceed towards completion.
Returns
RAIL_STATUS_NO_ERROR if the contents of all applicable memory locations have been verified. RAIL_STATUS_SUSPENDED is returned if the provided test duration expired but the time was not sufficient to verify all memory contents. By calling RAIL_Verify again, further verification will commence. RAIL_STATUS_INVALID_PARAMETER is returned if the provided verifyConfig structure pointer is not configured for use by the active RAIL handle. RAIL_STATUS_INVALID_STATE is returned if any of the verified memory contents are different from their reference values.