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 392 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 387 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 377 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 372 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 382 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 349 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]railHandleA RAIL instance handle.
[in]aoxConfigConfiguration 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]railHandleA 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]railHandleA RAIL instance handle.
[in]lockLock the CTE buffer if true and unlock it if false.
Returns
True if the CTE buffer is locked after the call, otherwise false.