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.