TI BLE5-Stack API Documentation  2.01.03.00
AOA.h
Go to the documentation of this file.
1 /******************************************************************************
2 
3  @file AOA.h
4 
5  @brief This file contains typedefs and API functions of AOA.c
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 AOA_H_
26 #define AOA_H_
27 
28 #ifdef __cplusplus
29 extern "C"
30 {
31 #endif
32 
33 /*******************************************************************************
34  * INCLUDES
35  */
36 
37 #include <stdint.h>
38 #include <driverlib/ioc.h>
39 #include "ant_array2_config_boostxl_rev1v1.h"
40 
41 /*********************************************************************
42  * CONSTANTS
43  */
44 
46 #define AOA_RES_MAX_SIZE 512
47 #define AOA_RES_MAX_CTE_TIME 20
48 
49 /*********************************************************************
50  * MACROS
51  */
52 
54 #define AOA_PIN(x) (1 << (x&0xff))
55 
56 // Antenna configuration for BOOSTXL-AOA
57 #define ANT_ARRAY (27)
58 #define ANT1 (28)
59 #define ANT2 (29)
60 #define ANT3 (30)
61 
62 /*********************************************************************
63  * TYPEDEFS
64  */
65 
70 typedef enum
72 {
76 } AoA_Role_t;
77 
79 typedef struct
80 {
81  int16_t *pairAngle;
82  int8_t rssi;
83  uint8_t ch;
85 
87 typedef struct
88 {
89  // Note that Passive takes the samples directly from RF core RAM
90  // Hence the format is different than the Master
91 #ifdef RTLS_PASSIVE
92  int16_t q;
93  int16_t i;
94 #else
95  int16_t i;
96  int16_t q;
97 #endif
99 
101 typedef struct
102 {
103  int8_t i;
104  int8_t q;
106 
109 typedef enum
111 {
112  SAMPLES_NOT_READY,
113  SAMPLES_NOT_VALID,
114  SAMPLES_READY
116 
117 /*********************************************************************
118  * EXTERNAL VARIABLES
119  */
120 
121 #ifdef RTLS_PASSIVE
122 
128 void AOA_getPairAngles(AoA_AntennaConfig_t *antConfig, AoA_AntennaResult_t *antResult);
129 #elif RTLS_MASTER
130 /***
131 * @brief Extract results and estimates an angle between two antennas
132 *
133 * @param antConfig - antenna configuration provided from antenna files
134 * @param antResult - struct to write results into
135 * @param numIqSamples - number of I and Q samples
136 * @param sampleRate - sample rate that was used to capture (1,2,3 or 4 Mhz)
137 * @param sampleSize - sample size 1 = 8 bit, 2 = 16 bit
138 * @param numAnt - number of antennas in capture array
139 * @param pIQ - pointer to IQ samples
140 *
141 * @return none
142 */
143 void AOA_getPairAngles(AoA_AntennaConfig_t *antConfig, AoA_AntennaResult_t *antResult, uint16_t numIqSamples, uint8_t sampleRate, uint8_t sampleSize, uint8_t slotDuration, uint8_t numAnt, int8_t *pIQ);
144 #endif
145 
152 void AOA_init(uint8_t startAntenna);
153 
165 void AOA_cteCapEnable(uint8_t cteTime, uint8_t cteScanOvs, uint8_t cteOffset);
166 
180 uint16_t AOA_calcNumOfCteSamples(uint8_t cteTime, uint8_t cteScanOvs, uint8_t cteOffset);
181 
192 void AOA_postProcess(int8_t rssi, uint8_t channel, AoA_IQSample_Ext_t *samplesBuff);
193 
194 #ifdef RTLS_PASSIVE
195 
200 AoA_IQSample_Ext_t *AOA_getRawSamples(void);
201 #endif
202 
207 uint8_t AOA_getActiveAnt(void);
208 
214 AoA_IQSampleState_t AOA_getSampleState(void);
215 /*********************************************************************
216 *********************************************************************/
217 
218 #ifdef __cplusplus
219 }
220 #endif
221 
222 #endif /* AOA_H_ */
223 
uint8_t ch
Channel.
Definition: AOA.h:83
uint16_t AOA_calcNumOfCteSamples(uint8_t cteTime, uint8_t cteScanOvs, uint8_t cteOffset)
This function calculate the number of IQ samples based on the cte parameters from the CTEInfo header ...
AoA_IQSampleState_t
IQ Sample state - relevant for Passive.
Definition: AOA.h:110
void AOA_cteCapEnable(uint8_t cteTime, uint8_t cteScanOvs, uint8_t cteOffset)
This function enables the CTE capture in the rf core.
Transmitter Role.
Definition: AOA.h:73
void AOA_postProcess(int8_t rssi, uint8_t channel, AoA_IQSample_Ext_t *samplesBuff)
This function will update the final result report with rssi and channel For RTLS Passive it will also...
int8_t i
I - In-phase.
Definition: AOA.h:103
Receiver Role.
Definition: AOA.h:74
Passive Role.
Definition: AOA.h:75
32 bit IQ Sample structure
Definition: AOA.h:87
void AOA_init(uint8_t startAntenna)
Initialize AoA for the defined role.
int8_t q
Q - Quadrature.
Definition: AOA.h:104
IQ Sample structure.
Definition: AOA.h:101
int16_t i
I - In-phase.
Definition: AOA.h:95
AoA result per antenna array.
Definition: AOA.h:79
uint8_t AOA_getActiveAnt(void)
Returns active antenna id.
int8_t rssi
Last Rx rssi.
Definition: AOA.h:82
int16_t q
Q - Quadrature.
Definition: AOA.h:96
AoA_Role_t
AoA Device Role.
Definition: AOA.h:71
int16_t * pairAngle
Antenna pair angle.
Definition: AOA.h:81
AoA_IQSampleState_t AOA_getSampleState(void)
Returns active antenna id.
© Copyright 1995-2020, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale