Angle of Arrival/Departure
These APIs are to a stack implementing BLE's angle of arrival and angle of departure functionality.
Data Structures |
|
struct | RAIL_BLE_AoxConfig_t |
Contains arguments for
RAIL_BLE_ConfigAox
function.
|
Macros |
|
#define | RAIL_BLE_AOX_OPTIONS_SAMPLE_MODE (1U << RAIL_BLE_AOX_OPTIONS_SAMPLE_MODE_SHIFT) |
Sets one of the two AoX sampling/switching modes: 1us or 2us window.
|
|
#define | RAIL_BLE_AOX_OPTIONS_RX_ENABLED (1U << RAIL_BLE_AOX_OPTIONS_RX_ENABLED_SHIFT) |
Enables AoX Rx packets.
|
|
#define | RAIL_BLE_AOX_OPTIONS_DO_SWITCH (1U << RAIL_BLE_AOX_OPTIONS_DO_SWITCH_SHIFT) |
Enables antennae switching during CTE.
|
|
#define | RAIL_BLE_AOX_OPTIONS_TX_ENABLED (1U << RAIL_BLE_AOX_OPTIONS_TX_ENABLED_SHIFT) |
Enables AoX Tx packets.
|
|
#define | RAIL_BLE_AOX_OPTIONS_CONNLESS (1U << RAIL_BLE_AOX_OPTIONS_CONNLESS_SHIFT) |
Enables connectionless AoX Rx packets.
|
|
#define | RAIL_BLE_AOX_OPTIONS_CONN (1U << RAIL_BLE_AOX_OPTIONS_CONN_SHIFT) |
Enables connection based AoX Rx packets.
|
Enumerations |
|
enum |
RAIL_BLE_AoxOptions_t
{
RAIL_BLE_AOX_OPTIONS_DO_SWITCH_SHIFT = 0, RAIL_BLE_AOX_OPTIONS_RX_ENABLED_SHIFT = 1, RAIL_BLE_AOX_OPTIONS_SAMPLE_MODE_SHIFT = 2, RAIL_BLE_AOX_OPTIONS_TX_ENABLED_SHIFT = 3, RAIL_BLE_AOX_OPTIONS_CONNLESS_SHIFT = 10, RAIL_BLE_AOX_OPTIONS_CONN_SHIFT = 13 } |
Angle of Arrival/Departure options bit fields.
|
Functions |
|
bool | RAIL_BLE_LockCteBuffer ( RAIL_Handle_t railHandle, bool lock) |
Locks/unlocks the CTE buffer from the application's perspective.
|
|
bool | RAIL_BLE_CteBufferIsLocked ( RAIL_Handle_t railHandle) |
Determines whether the CTE buffer is currently locked or not.
|
|
RAIL_Status_t | RAIL_BLE_ConfigAox ( RAIL_Handle_t railHandle, const RAIL_BLE_AoxConfig_t *aoxConfig) |
Configures Angle of Arrival/Departure (AoX) functionality.
|
Detailed Description
These APIs are to a stack implementing BLE's angle of arrival and angle of departure functionality.
They are designed for use by the Silicon Labs BLE stack only at this time and may cause problems if accessed directly.
Macro Definition Documentation
#define RAIL_BLE_AOX_OPTIONS_CONN (1U << RAIL_BLE_AOX_OPTIONS_CONN_SHIFT) |
Enables connection based AoX Rx packets.
This requires RAIL_BLE_AOX_OPTIONS_RX_ENABLED to be set.
Definition at line
400
of file
rail_ble.h
.
#define RAIL_BLE_AOX_OPTIONS_CONNLESS (1U << RAIL_BLE_AOX_OPTIONS_CONNLESS_SHIFT) |
Enables connectionless AoX Rx packets.
This requires RAIL_BLE_AOX_OPTIONS_RX_ENABLED to be set.
Definition at line
395
of file
rail_ble.h
.
#define RAIL_BLE_AOX_OPTIONS_DO_SWITCH (1U << RAIL_BLE_AOX_OPTIONS_DO_SWITCH_SHIFT) |
Enables antennae switching during CTE.
If disabled antenna 0 will be active. If enabled antennae will switch from 0 to N, wrapping back to 0.
Definition at line
385
of file
rail_ble.h
.
#define RAIL_BLE_AOX_OPTIONS_RX_ENABLED (1U << RAIL_BLE_AOX_OPTIONS_RX_ENABLED_SHIFT) |
Enables AoX Rx packets.
When enabled radio will either receive AoX packet if CTE-present bit in the packet is set or normal packet if this bit isn't set.
Definition at line
380
of file
rail_ble.h
.
#define RAIL_BLE_AOX_OPTIONS_TX_ENABLED (1U << RAIL_BLE_AOX_OPTIONS_TX_ENABLED_SHIFT) |
Enables AoX Tx packets.
When set radio will transmit AoX packet, to transmit normal (non-AoX) packet clear this bitfield.
Definition at line
390
of file
rail_ble.h
.
Enumeration Type Documentation
Angle of Arrival/Departure options bit fields.
Enumerator | |
---|---|
RAIL_BLE_AOX_OPTIONS_DO_SWITCH_SHIFT |
Shift position of RAIL_BLE_AOX_OPTIONS_DO_SWITCH bit. |
RAIL_BLE_AOX_OPTIONS_RX_ENABLED_SHIFT |
Shift position of RAIL_BLE_AOX_OPTIONS_RX_ENABLED bit. |
RAIL_BLE_AOX_OPTIONS_SAMPLE_MODE_SHIFT |
Shift position of RAIL_BLE_AOX_OPTIONS_SAMPLE_MODE bit. |
RAIL_BLE_AOX_OPTIONS_TX_ENABLED_SHIFT |
Shift position of RAIL_BLE_AOX_OPTIONS_TX_ENABLED bit. |
RAIL_BLE_AOX_OPTIONS_CONNLESS_SHIFT |
Shift position of RAIL_BLE_AOX_OPTIONS_CONNLESS_SHIFT bit. |
RAIL_BLE_AOX_OPTIONS_CONN_SHIFT |
Shift position of RAIL_BLE_AOX_OPTIONS_CONN_SHIFT bit. |
Definition at line
357
of file
rail_ble.h
.
Function Documentation
RAIL_Status_t RAIL_BLE_ConfigAox | ( | RAIL_Handle_t |
railHandle,
|
const RAIL_BLE_AoxConfig_t * |
aoxConfig
|
||
) |
Configures Angle of Arrival/Departure (AoX) functionality.
AoX is a method of radio localization which infers angle of arrival/departure of the signal based on different phases of the raw I/Q signal from different antennas by controlling external RF switch during the continuous tone extension (CTE). Connection based AoX packets are different than normal BLE packets in that they have 3 header bytes instead of 2, and they have CTE appended after the payload's CRC. 3rd byte or CTE info contains CTE length. Connectionless AoX packets have 2 header bytes and CTE info is part of the paylod. AoX is supported on efr32xg12/13/14 only on legacy 1Mbps BLE PHY. Note that RAIL_TX_OPTION_REMOVE_CRC_SHIFT option in RAIL_TxOptions_t will not work when RAIL_BLE_AOX_OPTIONS_TX_ENABLED is enabled. Also note that calling RAIL_GetRadioEntropy during AoX reception may break receiving packets.
- Parameters
-
[in] railHandle
A RAIL instance handle. [in] aoxConfig
Configuration options for AoX
- Returns
- RAIL_Status_t indicating success or failure of the call.
bool RAIL_BLE_CteBufferIsLocked | ( | RAIL_Handle_t |
railHandle
|
) |
Determines whether the CTE buffer is currently locked or not.
- Parameters
-
[in] railHandle
A handle for RAIL instance.
- Returns
- True if CTE buffer is locked and false otherwise.
bool RAIL_BLE_LockCteBuffer | ( | RAIL_Handle_t |
railHandle,
|
bool |
lock
|
||
) |
Locks/unlocks the CTE buffer from the application's perspective.
The radio will write to the buffer only if the bit is NOT set at the beginning of the sampling period. The radio will set the bit once the sampling period starts to indicate that some CTE data has been collected, which will not be overwritten during the next sampling period, unless the buffer is unlocked by the application.
- Parameters
-
[in] railHandle
A RAIL instance handle. [in] lock
Lock the CTE buffer if true and unlock it if false.
- Returns
- True if the CTE buffer is locked after the call, otherwise false.