TI BLE5-Stack API Documentation  2.02.00.00
rtls_srv_api.h
Go to the documentation of this file.
1 /******************************************************************************
2 
3  @file rtls_srv_api.h
4 
5  @brief This file implements the RTLS Services APIs
6  Group: WCS, BTS
7  $Target Device: DEVICES $
8 
9  ******************************************************************************
10  $License: BSD3 2018 $
11  ******************************************************************************
12  $Release Name: PACKAGE NAME $
13  $Release Date: PACKAGE RELEASE DATE $
14  *****************************************************************************/
15 
25 #ifndef RTLSSRVAPI_H
26 #define RTLSSRVAPI_H
27 
28 #ifdef __cplusplus
29 extern "C"
30 {
31 #endif
32 
33 /*-------------------------------------------------------------------
34  * INCLUDES
35  */
36 
37 #include "bcomdef.h"
38 #include <ti/drivers/PIN.h>
39 #include "ble_user_config.h"
40 #include "hci.h"
41 #include "ll.h"
42 
43 /*-------------------------------------------------------------------
44  * CONSTANTS
45  */
46 
57 #define RTLSSRV_CTE_SAMPLING_NOT_INIT LL_CTE_SAMPLING_NOT_INIT
59 #define RTLSSRV_CTE_SAMPLING_ENABLE LL_CTE_SAMPLING_ENABLE
60 #define RTLSSRV_CTE_SAMPLING_DISABLE LL_CTE_SAMPLING_DISABLE
61 
62 #define RTLSSRV_CTE_SAMPLE_SLOT_1US LL_CTE_SAMPLE_SLOT_1US
64 #define RTLSSRV_CTE_SAMPLE_SLOT_2US LL_CTE_SAMPLE_SLOT_2US
65 
66 #define RTLSSRV_CTE_SAMPLE_RATE_1US_AOD_TX LL_CTE_SAMPLE_RATE_1US_AOD_TX
68 #define RTLSSRV_CTE_SAMPLE_RATE_1US_AOD_RX LL_CTE_SAMPLE_RATE_1US_AOD_RX
69 #define RTLSSRV_CTE_SAMPLE_RATE_1US_AOA_RX LL_CTE_SAMPLE_RATE_1US_AOA_RX
70 
71 #define RTLSSRV_CTE_TYPE_AOA LL_CTE_TYPE_AOA
73 
74 #define RTLSSRV_CTE_SAMPLE_RATE_1MHZ CTE_SAMPLING_CONFIG_1MHZ
76 #define RTLSSRV_CTE_SAMPLE_RATE_2MHZ CTE_SAMPLING_CONFIG_2MHZ
77 #define RTLSSRV_CTE_SAMPLE_RATE_3MHZ CTE_SAMPLING_CONFIG_3MHZ
78 #define RTLSSRV_CTE_SAMPLE_RATE_4MHZ CTE_SAMPLING_CONFIG_4MHZ
79 
80 #define RTLSSRV_CTE_SAMPLE_SIZE_8BITS LL_CTE_SAMPLE_SIZE_8BITS
82 #define RTLSSRV_CTE_SAMPLE_SIZE_16BITS LL_CTE_SAMPLE_SIZE_16BITS
83 
84 #define RTLSSRV_CTE_SAMPLE_CONTROL_RF_DEFAULT_FILTERING CTE_SAMPLING_CONTROL_DEFAULT_FILTERING
86 #define RTLSSRV_CTE_SAMPLE_CONTROL_RF_RAW_NO_FILTERING CTE_SAMPLING_CONTROL_RF_RAW_NO_FILTERING
87 
89 #define RTLSSRV_CL_CTE_ANTENNA_LIST_MIN_LENGTH LL_CTE_ANTENNA_LIST_MIN_LENGTH
90 #define RTLSSRV_CL_CTE_ANTENNA_LIST_MAX_LENGTH LL_CTE_ANTENNA_LIST_MAX_LENGTH
92 
94 #define RTLSSRV_CL_CTE_MIN_LEN LL_CTE_MIN_LEN
95 #define RTLSSRV_CL_CTE_MAX_LEN LL_CTE_MAX_LEN
97 
99 #define RTLSSRV_CL_CTE_MIN_COUNT LL_CTE_COUNT_MIN
100 #define RTLSSRV_CL_CTE_MAX_COUNT LL_CTE_COUNT_MAX
102 
104 #define RTLSSRV_SYNC_HANDLE_MASK 0x1000
105 #define RTLSSRV_REVERSE_SYNC_HANDLE 0x0FFF
107 
122 #define RTLSSRV_CONNECTION_CTE_IQ_REPORT_EVT 1
123 
128 #define RTLSSRV_ANTENNA_INFORMATION_EVT 2
129 
133 #define RTLSSRV_CTE_REQUEST_FAILED_EVT 3
134 
138 #define RTLSSRV_ERROR_EVT 4
139 
143 #define RTLSSRV_CL_CTE_EVT 5
144 
149 #define RTLSSRV_READ_PERIODIC_LIST_SIZE_EVT 6
150 
155 #define RTLSSRV_SYNC_EST_EVT 7
156 
161 #define RTLSSRV_SYNC_LOST_EVT 8
162 
167 #define RTLSSRV_PERIODIC_ADV_RPT 9
168 
173 #define RTLSSRV_CL_CTE_IQ_REPORT_EVT 10
174 
179 #define RTLSSRV_PERIODIC_ADV_TERMINATE_SYNC 11
180 
185 #define RTLSSRV_CL_AOA_ENABLE_EVT 12
186 
198 #define RTLSSRV_CONN_HANDLE_INVALID 0x02
199 #define RTLSSRV_OUT_OF_MEMORY 0x07
200 #define RTLSSRV_COMMAND_DISALLOWED 0x0C
201 #define RTLSSRV_ERROR_DUE_TO_LIMITED_RESOURCES 0x0D
202 #define RTLSSRV_FEATURE_NOT_SUPPORTED 0x11
203 #define RTLSSRV_BAD_PARAMETER 0x12
204 #define RTLSSRV_REMOTE_FEATURE_NOT_SUPPORTED 0x1A
205 #define RTLSSRV_UNKNOWN_ADVERTISING_IDENTIFIER 0x42
206 
207 
217 #define RTLSSRV_SET_CONNECTION_CTE_RECEIVE_PARAMS 0x2054
218 #define RTLSSRV_SET_CONNECTION_CTE_TRANSMIT_PARAMS 0x2055
219 #define RTLSSRV_SET_CONNECTION_CTE_REQUEST_ENABLE 0x2056
220 #define RTLSSRV_SET_CONNECTION_CTE_RESPONSE_ENABLE 0x2057
221 #define RTLSSRV_SET_CL_CTE_TRANSMIT_PARAMS 0x2051
222 #define RTLSSRV_SET_CL_CTE_TRANSMIT_ENABLE 0x2052
223 #define RTLSSRV_SET_CL_IQ_SAMPLING_ENABLE 0x2053
224 
225 
228 /*-------------------------------------------------------------------
229  * TYPEDEFS
230  */
231 
232 
238 typedef struct
240 {
241  uint16_t connHandle;
242  uint8_t phy;
243  uint8_t dataChIndex;
244  uint16_t rssi;
245  uint8_t rssiAntenna;
246  uint8_t cteType;
247  uint8_t slotDuration;
248  uint8_t status;
249  uint16_t connEvent;
250  uint16_t sampleCount;
251  uint8_t sampleRate;
252  uint8_t sampleSize;
253  uint8_t sampleCtrl;
254  uint8_t numAnt;
255  int8_t *iqSamples;
257 
259 typedef struct
260 {
261  uint16_t syncHandle;
262  uint8_t channelIndex;
263  uint16_t rssi;
264  uint8_t rssiAntenna;
265  uint8_t cteType;
266  uint8_t slotDuration;
267  uint8_t sampleRate;
268  uint8_t sampleSize;
269  uint8_t sampleCtrl;
270  uint8_t packetStatus;
271  uint16_t eventCounter;
272  uint8_t numAnt;
273  uint16_t sampleCount;
274  int8_t *iqSamples;
276 
277 
279 typedef struct
280 {
281  uint8_t sampleRates;
284  uint8_t maxCteLen;
286 
288 typedef struct
289 {
290  uint8_t status;
291  uint16_t connHandle;
293 
295 typedef struct
296 {
297  uint16_t connHandle;
298  uint16_t errSrc;
299  uint16_t errCause;
301 
303 typedef struct
304 {
305  uint16_t opcode;
306  uint8_t status;
308 
310 typedef struct
311 {
312  uint16_t opcode;
313  uint8_t status;
314  uint16_t syncHandle;
316 
318 typedef struct
319 {
320  uint8_t opcode;
321  uint8_t status;
322  uint16_t syncHandle;
323  uint8_t advSid;
324  uint8_t advAddrType;
325  uint8_t advAddress[6];
326  uint8_t advPhy;
327  uint16_t periodicAdvInt;
330 
332 typedef struct
333 {
334  uint8_t opcode;
335  uint16_t syncHandle;
337 
339 typedef struct
340 {
341  uint8_t opcode;
342  uint16_t syncHandle;
343  int8_t txPower;
344  int8_t rssi;
345  uint8_t cteType;
346  uint8_t dataStatus;
347  uint8_t dataLen;
348  uint8_t *pData;
350 
361 typedef struct
363 {
364  uint8_t evtType;
365  uint16_t evtSize;
366  uint8_t *evtData;
367 } rtlsSrv_evt_t;
368 
378 typedef void (*pfnAppEventHandlerCB_t)(rtlsSrv_evt_t *pEvt);
379 
382 extern uint8_t maxNumClCteBufs;
384 
385 /*-------------------------------------------------------------------
386  * API's
387  */
388 
396 extern bStatus_t RTLSSrv_init(uint8_t numOfRTLSConns);
397 
406 
425 extern bStatus_t RTLSSrv_setConnCteReceiveParams(uint16_t connHandle,
426  uint8_t samplingEnable,
427  uint8_t slotDurations,
428  uint8_t numAnt,
429  uint8_t antArray[]);
430 
444 extern bStatus_t RTLSSrv_setConnCteTransmitParams(uint16_t connHandle,
445  uint8_t types,
446  uint8_t length,
447  uint8_t antArray[]);
448 
461 extern bStatus_t RTLSSrv_setConnCteRequestEnableCmd(uint16_t connHandle,
462  uint8_t enable,
463  uint16_t interval,
464  uint8_t length,
465  uint8_t type);
466 
475 extern bStatus_t RTLSSrv_setConnCteResponseEnableCmd(uint16_t connHandle,
476  uint8_t enable);
477 
484 
502 extern bStatus_t RTLSSrv_setCteSampleAccuracy(uint16_t handle,
503  uint8_t sampleRate1M,
504  uint8_t sampleSize1M,
505  uint8_t sampleRate2M,
506  uint8_t sampleSize2M,
507  uint8_t sampleCtrl);
516 extern PIN_Handle RTLSSrv_initAntArray(uint8_t mainAntenna);
517 
530 extern bStatus_t RTLSSrv_processHciEvent(uint16_t hciEvt, uint16_t hciEvtSz, uint8_t *pEvtData);
531 
554  bStatus_t RTLSSrv_SetCLCteTransmitParams( uint8 advHandle,
555  uint8 cteLength,
556  uint8 cteType,
557  uint8 cteCount,
558  uint8 switchLen,
559  uint8 *pAntenna );
560 
575  bStatus_t RTLSSrv_CLCteTransmitEnable( uint8 advHandle,
576  uint8 enable );
577 
599 bStatus_t RTLSSrv_setCLCteSamplingEnableCmd( uint16_t syncHandle,
600  uint8_t enable,
601  uint8_t slotDuration,
602  uint8_t maxSampleCte,
603  uint8_t numAnt,
604  uint8_t pAntPattern[] );
605 
606 #ifdef __cplusplus
607 }
608 #endif
609 
610 #endif /* RTLSSRVAPI_H */
611 
uint8_t advClockAccuracy
Accuracy of the periodic advertiser&#39;s clock: 0x00 - 500 ppm 0x01 - 250 ppm 0x02 - 150 ppm 0x03 - ...
Definition: rtls_srv_api.h:328
uint16_t sampleCount
number of samples
Definition: rtls_srv_api.h:250
uint8_t slotDuration
sampling slot 1us or 2us
Definition: rtls_srv_api.h:266
uint8_t slotDuration
sampling slot 1us or 2us
Definition: rtls_srv_api.h:247
LE CTE Antenna Information Event RTLSSRV_ANTENNA_INFORMATION_EVT.
Definition: rtls_srv_api.h:279
bStatus_t RTLSSrv_setCteSampleAccuracy(uint16_t handle, uint8_t sampleRate1M, uint8_t sampleSize1M, uint8_t sampleRate2M, uint8_t sampleSize2M, uint8_t sampleCtrl)
uint16_t errCause
subEvt RTLS Services error codes
Definition: rtls_srv_api.h:299
uint8_t maxCteLen
maximum cte length supported by the controller
Definition: rtls_srv_api.h:284
Periodic advertising sync lost event.
Definition: rtls_srv_api.h:332
uint8_t sampleSize
sample size: 8 or 16 bit samples
Definition: rtls_srv_api.h:268
uint8_t cteType
cte type
Definition: rtls_srv_api.h:246
uint8_t status
packet status (success or CRC error)
Definition: rtls_srv_api.h:248
uint16_t rssi
current rssi
Definition: rtls_srv_api.h:263
uint16_t syncHandle
sync handle
Definition: rtls_srv_api.h:261
uint8_t opcode
RTLS event opcode.
Definition: rtls_srv_api.h:334
uint8_t opcode
RTLS event opcode.
Definition: rtls_srv_api.h:341
uint8_t numAnt
number of antennas we are using
Definition: rtls_srv_api.h:254
uint16_t periodicAdvInt
Periodic advertising interval Range: 0x0006 to 0xFFFF. Time = N * 1.25 ms (Time Range: 7...
Definition: rtls_srv_api.h:327
uint16_t syncHandle
Handle identifying the periodic advertising train.
Definition: rtls_srv_api.h:314
uint8_t phy
current phy
Definition: rtls_srv_api.h:242
uint8_t status
Event status.
Definition: rtls_srv_api.h:313
uint8_t maxSwitchPatternLen
maximum size of switch pattern supported by the controller
Definition: rtls_srv_api.h:283
bStatus_t RTLSSrv_setConnCteRequestEnableCmd(uint16_t connHandle, uint8_t enable, uint16_t interval, uint8_t length, uint8_t type)
uint8_t cteType
0x00 AoA CTE 0x01 - AoD CTE with 1us slots 0x02 - AoD CTE with 2us slots 0xFF - No CTE ...
Definition: rtls_srv_api.h:345
uint8_t numAnt
number of antennas we are using
Definition: rtls_srv_api.h:272
uint16_t connHandle
connection handle
Definition: rtls_srv_api.h:291
uint16_t evtSize
Size.
Definition: rtls_srv_api.h:365
uint16_t syncHandle
Handle identifying the periodic advertising train.
Definition: rtls_srv_api.h:322
CL AoA command complete event.
Definition: rtls_srv_api.h:303
uint8_t packetStatus
packet status (success or CRC error)
Definition: rtls_srv_api.h:270
int8_t txPower
Tx Power information (Range: -127 to +20 dBm)
Definition: rtls_srv_api.h:343
int8_t rssi
RSSI value for the received packet (Range: -127 to +20 dBm); If the packet contains CTE...
Definition: rtls_srv_api.h:344
uint16_t connEvent
connection event
Definition: rtls_srv_api.h:249
bStatus_t RTLSSrv_register(pfnAppEventHandlerCB_t pCB)
uint16_t connHandle
connection handle
Definition: rtls_srv_api.h:297
bStatus_t RTLSSrv_CLCteTransmitEnable(uint8 advHandle, uint8 enable)
uint8_t sampleCtrl
default filtering or RAW_RF
Definition: rtls_srv_api.h:253
PIN_Handle RTLSSrv_initAntArray(uint8_t mainAntenna)
uint8_t advPhy
Advertiser PHY: 0x01 - LE 1M 0x02 - LE 2M 0x03 - LE Coded.
Definition: rtls_srv_api.h:326
bStatus_t RTLSSrv_readAntennaInformationCmd(void)
uint16_t connHandle
connection handle
Definition: rtls_srv_api.h:241
bStatus_t RTLSSrv_processHciEvent(uint16_t hciEvt, uint16_t hciEvtSz, uint8_t *pEvtData)
Periodic advertising sync establish event structure.
Definition: rtls_srv_api.h:318
RTLS Services error structure RTLSSRV_ERROR_EVT.
Definition: rtls_srv_api.h:295
uint8_t advSid
Value of the Advertising SID subfield in the ADI field of the PDU.
Definition: rtls_srv_api.h:323
void(* pfnAppEventHandlerCB_t)(rtlsSrv_evt_t *pEvt)
Definition: rtls_srv_api.h:378
uint8_t * pData
Data received from a Periodic Advertising packet.
Definition: rtls_srv_api.h:348
uint8_t sampleRate
sample rate of frontend: 1Mhz, 2Mhz, 3Mhz, 4Mhz
Definition: rtls_srv_api.h:267
uint8_t sampleRates
sample rates supported by the controller
Definition: rtls_srv_api.h:281
int8_t * iqSamples
list of IQ samples, format is [i,q,i,q,i,q....]
Definition: rtls_srv_api.h:274
CL AoA Enable command complete event.
Definition: rtls_srv_api.h:310
Type definitions and macros for BLE stack.
uint16_t rssi
current rssi
Definition: rtls_srv_api.h:244
uint8_t maxNumOfAntennas
maximum number of antennas supported by the controller
Definition: rtls_srv_api.h:282
uint16_t eventCounter
periodic adv event counter
Definition: rtls_srv_api.h:271
uint8_t status
Periodic advertising sync HCI status.
Definition: rtls_srv_api.h:321
uint8_t dataStatus
0x00 - Data complete 0x01 - Data incomplete, more data to come 0x02 - Data incomplete, data truncated, no more to come
Definition: rtls_srv_api.h:346
uint8_t opcode
RTLS event opcode.
Definition: rtls_srv_api.h:320
uint8_t rssiAntenna
antenna ID
Definition: rtls_srv_api.h:264
uint8_t dataLen
Length of the Data field (Range: 0 to 247)
Definition: rtls_srv_api.h:347
uint8_t maxNumClCteBufs
Maximum number of buffers for CL AoA.
bStatus_t RTLSSrv_setConnCteTransmitParams(uint16_t connHandle, uint8_t types, uint8_t length, uint8_t antArray[])
uint16_t opcode
RTLS event opcode.
Definition: rtls_srv_api.h:312
HCI layer interface.
CTE Connection IQ Report Event RTLSSRV_CONNECTION_CTE_IQ_REPORT_EVT.
Definition: rtls_srv_api.h:239
LE CTE Request Failed Event RTLSSRV_CTE_REQUEST_FAILED_EVT.
Definition: rtls_srv_api.h:288
uint8_t sampleCtrl
default filtering or RAW_RF
Definition: rtls_srv_api.h:269
RTLS Services passes messages in this format.
Definition: rtls_srv_api.h:362
uint8_t status
status
Definition: rtls_srv_api.h:290
uint16_t sampleCount
number of samples
Definition: rtls_srv_api.h:273
uint16_t syncHandle
Handle identifying the periodic advertising train.
Definition: rtls_srv_api.h:335
bStatus_t RTLSSrv_init(uint8_t numOfRTLSConns)
Status_t bStatus_t
BLE Generic Status return.
Definition: bcomdef.h:251
bStatus_t RTLSSrv_setCLCteSamplingEnableCmd(uint16_t syncHandle, uint8_t enable, uint8_t slotDuration, uint8_t maxSampleCte, uint8_t numAnt, uint8_t pAntPattern[])
bStatus_t RTLSSrv_SetCLCteTransmitParams(uint8 advHandle, uint8 cteLength, uint8 cteType, uint8 cteCount, uint8 switchLen, uint8 *pAntenna)
uint8_t advAddrType
Advertiser address type: 0x00 - Public 0x01 - Random 0x02 - Public Identity Address 0x03 - Random...
Definition: rtls_srv_api.h:324
uint8_t status
Event status.
Definition: rtls_srv_api.h:306
uint16_t opcode
RTLS event opcode.
Definition: rtls_srv_api.h:305
uint8_t dataChIndex
index of data channel
Definition: rtls_srv_api.h:243
bStatus_t RTLSSrv_setConnCteResponseEnableCmd(uint16_t connHandle, uint8_t enable)
uint16_t errSrc
the command that caused the error
Definition: rtls_srv_api.h:298
uint8_t sampleRate
sample rate of frontend: 1Mhz, 2Mhz, 3Mhz, 4Mhz
Definition: rtls_srv_api.h:251
uint8_t sampleSize
sample size: 8 or 16 bit samples
Definition: rtls_srv_api.h:252
uint8_t channelIndex
index of data channel
Definition: rtls_srv_api.h:262
int8_t * iqSamples
list of IQ samples, format is [i,q,i,q,i,q....]
Definition: rtls_srv_api.h:255
uint8_t evtType
Type.
Definition: rtls_srv_api.h:364
uint8_t cteType
cte type
Definition: rtls_srv_api.h:265
Periodic adverting report event.
Definition: rtls_srv_api.h:339
uint8_t rssiAntenna
antenna ID
Definition: rtls_srv_api.h:245
bStatus_t RTLSSrv_setConnCteReceiveParams(uint16_t connHandle, uint8_t samplingEnable, uint8_t slotDurations, uint8_t numAnt, uint8_t antArray[])
CTE Connectionless IQ Report Event RTLSSRV_CL_CTE_IQ_REPORT_EVT.
Definition: rtls_srv_api.h:259
uint8_t * evtData
Pointer to Event Data.
Definition: rtls_srv_api.h:366
uint16_t syncHandle
Handle identifying the periodic advertising train.
Definition: rtls_srv_api.h:342
© Copyright 1995-2021, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale