Radio Control Layer (RCL)
ble_cs.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2022-2023, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 #ifndef ti_drivers_RCL_commands_ble_cs_h__include
34 #define ti_drivers_RCL_commands_ble_cs_h__include
35 
39 
40 #include <ti/drivers/utils/List.h>
41 
42 /* Forward declaration of types */
43 typedef struct RCL_CMD_BLE_CS_t RCL_CmdBleCs;
44 typedef struct RCL_CMD_BLE_CS_STEP_t RCL_CmdBleCs_Step;
45 typedef struct RCL_CMD_BLE_CS_STEP_RESULT_t RCL_CmdBleCs_StepResult;
46 typedef struct RCL_CMD_BLE_CS_S2R_t RCL_CmdBleCs_S2r;
47 typedef struct RCL_CMD_BLE_CS_OUTPUT_t RCL_CmdBleCs_Output;
48 
59 
60 /* Command IDs for generic commands */
61 #define RCL_CMDID_BLE_CS 0x1001U
62 
63 /* Helper macros to convert between time units */
64 #define RCL_BLE_CS_US_TO_MCE_TIMER(x) ((x)*48)
65 #define RCL_BLE_CS_US_TO_PBE_TIMER(x) ((x)*4)
66 #define RCL_BLE_CS_MCE_TIMER_TO_US(x) ((x)/48)
67 #define RCL_BLE_CS_PBE_TIMER_TO_US(x) ((x)/4)
68 #define RCL_BLE_CS_MCE_TIMER_TO_PBE_TIMER(x) ((x)/12)
69 
70 /* Helper macros for constants */
71 #define RCL_BLE_CS_MAX_NUM_ANT 4
72 #define RCL_BLE_CS_MAX_NUM_ANT_PATH 5
73 #define RCL_BLE_CS_MAX_PAYLOAD_SIZE 4
74 #define RCL_BLE_CS_NUM_CORR 3
75 #define RCL_BLE_CS_NUM_STIM 2
76 #define RCL_BLE_CS_LEN_S2R 512
77 
84  RCL_Command common;
85  struct {
86  uint16_t role:1;
87  uint16_t phy:1;
88  uint16_t repeatSteps:1;
89  uint16_t chFilterEnable:1;
90  uint16_t nS2R:4;
91  uint16_t nSteps:8;
92  } mode;
93 
94  struct {
95  uint8_t select;
96  uint8_t gpoMask;
97  uint8_t gpoVal[RCL_BLE_CS_MAX_NUM_ANT];
98  } antennaConfig;
99 
100  struct {
101  uint16_t tFcs;
102  uint16_t tFm;
103  uint16_t tPm;
104  uint16_t tIp1;
105  uint16_t tIp2;
106  uint16_t reserved;
107  uint16_t tSw;
108  uint16_t tSwAdjustA;
109  uint16_t tSwAdjustB;
110  } timing;
111 
112  struct {
113  uint8_t txPower;
114  uint8_t rxGain;
115  uint8_t foffOverride;
116  uint8_t foffOverrideEnable:1;
117  uint8_t reserved:7;
118  } frontend;
119 
120  uint16_t reserved1;
121 
122  RCL_CmdBleCs_Step *steps;
123  RCL_CmdBleCs_StepResult *results;
124  RCL_CmdBleCs_S2r *s2rResults;
125  RCL_CmdBleCs_Output *output;
126 };
127 
128 /* Default configuration of command */
129 #define RCL_CmdBleCs_Default() \
130 { \
131  .common = RCL_Command_Default(RCL_CMDID_BLE_CS, \
132  RCL_Handler_BLE_CS), \
133 }
134 #define RCL_CmdBleCs_DefaultRuntime() (RCL_CmdBleCs) RCL_CmdBleCs_Default()
135 
142  uint16_t channelIdx;
143  uint16_t mode;
144  struct {
145  uint16_t toneExtension : 2;
146  uint16_t reserved : 13;
147  uint16_t infiniteRx : 1;
148  } options;
149  uint16_t foffErr;
150  uint16_t tAdjustA;
151  uint16_t tAdjustB;
152  uint16_t reserved0;
153  uint16_t payloadLen;
154  uint32_t payloadTx[RCL_BLE_CS_MAX_PAYLOAD_SIZE];
155  uint32_t payloadRx[RCL_BLE_CS_MAX_PAYLOAD_SIZE];
156  uint32_t aaTx;
157  uint32_t aaRx;
158  uint16_t antennaPermIdx;
159  uint16_t antennaSequence;
160  uint16_t tStep;
161  uint16_t tAntenna;
162 };
163 
169 typedef struct {
170  int16_t q;
171  int16_t i;
172 } IQSample;
173 
179 typedef struct {
180  int16_t magnMin;
181  int16_t magnMax;
182  int16_t magnAvg;
183  int16_t magnAvgdB;
184 } MagnData;
185 
192  uint16_t pktResult;
193  int16_t foffMeasured;
194  uint16_t rtt;
195  uint16_t corr[RCL_BLE_CS_NUM_CORR];
196  uint16_t stim[RCL_BLE_CS_NUM_STIM];
199  uint32_t payload[RCL_BLE_CS_MAX_PAYLOAD_SIZE];
201 };
202 
208 typedef union {
209  uint32_t word;
210  uint8_t byte[4];
212 } S2RSample;
213 
220  uint16_t idx;
221  uint16_t length;
223 };
224 
231  uint16_t nStepsWritten;
232  uint16_t nResultsRead;
233  uint16_t nStepsDone;
234  uint16_t nRxOk;
235  uint16_t nRxNok;
236  uint8_t nS2RDone;
237  int8_t lastRssi;
238  int16_t lastFoff;
239 };
240 
250 };
251 
261 };
262 
274 };
275 
287 };
288 
300 };
301 
312 };
313 
326 };
327 
340 };
341 
358 };
359 
372 };
373 #endif
RCL_CMD_BLE_CS_Tpm_e
Enumerator of tPm duration options.
Definition: ble_cs.h:307
RCL_CMD_BLE_CS_Payload_e
Enumerator of payload length.
Definition: ble_cs.h:365
uint16_t tAdjustA
Definition: ble_cs.h:150
Definition: ble_cs.h:349
struct RCL_CMD_BLE_CS_t::@11 mode
Definition: ble_cs.h:352
BLE Channel Sounding.
Definition: ble_cs.h:83
Definition: ble_cs.h:295
uint16_t antennaPermIdx
Definition: ble_cs.h:158
Definition: ble_cs.h:297
RCL_CMD_BLE_CS_Tfcs_e
Enumerator of tFcs duration options.
Definition: ble_cs.h:294
BLE Channel Sounding QQ data.
Definition: ble_cs.h:179
Definition: ble_cs.h:296
int8_t lastRssi
Definition: ble_cs.h:237
RCL_CMD_BLE_CS_Tip_e
Enumerator of tIp duration.
Definition: ble_cs.h:319
Definition: ble_cs.h:322
struct RCL_CMD_BLE_CS_t::@13 timing
uint16_t tAntenna
Definition: ble_cs.h:161
Definition: ble_cs.h:285
#define RCL_BLE_CS_NUM_STIM
Definition: ble_cs.h:75
struct RCL_CMD_BLE_CS_t::@12 antennaConfig
#define RCL_BLE_CS_MAX_PAYLOAD_SIZE
Definition: ble_cs.h:73
enum RCL_CMD_BLE_CS_Phy_e RCL_CmdBleCs_Phy
Definition: ble_cs.h:49
Definition: ble_cs.h:355
BLE Channel Sounding Step.
Definition: ble_cs.h:141
BLE Channel Sounding S2R IQ Data.
Definition: ble_cs.h:219
enum RCL_CMD_BLE_CS_PacketResult_e RCL_CmdBleCs_PacketResult
Definition: ble_cs.h:52
int16_t lastFoff
Definition: ble_cs.h:238
uint8_t nS2RDone
Definition: ble_cs.h:236
Definition: ble_cs.h:284
RCL_CMD_BLE_CS_StepMode_e
Enumerator of step types.
Definition: ble_cs.h:268
RCL_CMD_BLE_CS_Role_e
Enumerator of role types.
Definition: ble_cs.h:257
Definition: ble_cs.h:283
enum RCL_CMD_BLE_CS_Tfcs_e RCL_CmdBleCs_Tfcs
Definition: ble_cs.h:53
Definition: ble_cs.h:350
Definition: ble_cs.h:286
uint16_t tStep
Definition: ble_cs.h:160
Definition: ble_cs.h:258
enum RCL_CMD_BLE_CS_Role_e RCL_CmdBleCs_Role
Definition: ble_cs.h:50
BLE Channel Sounding Step Result.
Definition: ble_cs.h:191
RCL_CMD_BLE_CS_Tsw_e
Enumerator of antenna switch duration.
Definition: ble_cs.h:333
Definition: ble_cs.h:356
Definition: ble_cs.h:272
uint16_t payloadLen
Definition: ble_cs.h:153
enum RCL_CMD_BLE_CS_Tpm_e RCL_CmdBleCs_Tpm
Definition: ble_cs.h:54
uint16_t channelIdx
Definition: ble_cs.h:142
Definition: ble_cs.h:320
Definition: ble_cs.h:299
Definition: ble_cs.h:273
Definition: ble_cs.h:370
uint16_t pktResult
Definition: ble_cs.h:192
Definition: ble_cs.h:366
Definition: ble_cs.h:323
IQSample iq
Definition: ble_cs.h:211
#define RCL_BLE_CS_MAX_NUM_ANT_PATH
Definition: ble_cs.h:72
int16_t foffMeasured
Definition: ble_cs.h:193
#define RCL_BLE_CS_MAX_NUM_ANT
Definition: ble_cs.h:71
Definition: ble_cs.h:336
Definition: ble_cs.h:339
uint16_t nRxNok
Definition: ble_cs.h:235
#define RCL_BLE_CS_LEN_S2R
Definition: ble_cs.h:76
int16_t magnMin
Definition: ble_cs.h:180
IQSample dc
Definition: ble_cs.h:197
Definition: ble_cs.h:248
Definition: ble_cs.h:369
Definition: ble_cs.h:260
RCL_CmdBleCs_Output * output
Definition: ble_cs.h:125
BLE Channel Sounding S2R Sample type definition.
Definition: ble_cs.h:208
uint16_t tAdjustB
Definition: ble_cs.h:151
#define RCL_BLE_CS_NUM_CORR
Definition: ble_cs.h:74
Definition: ble_cs.h:247
enum RCL_CMD_BLE_CS_Tsw_e RCL_CmdBleCs_Tsw
Definition: ble_cs.h:56
Definition: ble_cs.h:298
uint16_t antennaSequence
Definition: ble_cs.h:159
uint16_t mode
Definition: ble_cs.h:143
RCL_Command common
Definition: ble_cs.h:84
RCL_CMD_BLE_CS_AntennaConfig_e
Enumerator of antenna configuration.
Definition: ble_cs.h:348
uint16_t idx
Definition: ble_cs.h:220
Definition: ble_cs.h:270
Definition: ble_cs.h:325
Definition: ble_cs.h:353
Definition: ble_cs.h:259
Definition: ble_cs.h:335
RCL_CMD_BLE_CS_PacketResult_e
Enumerator of packet status options.
Definition: ble_cs.h:281
int16_t magnMax
Definition: ble_cs.h:181
Definition: ble_cs.h:308
uint16_t rtt
Definition: ble_cs.h:194
BLE Channel Sounding IQ Sample.
Definition: ble_cs.h:169
int16_t magnAvg
Definition: ble_cs.h:182
uint16_t nRxOk
Definition: ble_cs.h:234
uint32_t aaTx
Definition: ble_cs.h:156
uint16_t nResultsRead
Definition: ble_cs.h:232
uint32_t aaRx
Definition: ble_cs.h:157
Definition: ble_cs.h:269
Definition: ble_cs.h:309
uint16_t length
Definition: ble_cs.h:221
Definition: ble_cs.h:311
Definition: ble_cs.h:321
enum RCL_CMD_BLE_CS_Payload_e RCL_CmdBleCs_Payload
Definition: ble_cs.h:58
uint32_t word
Definition: ble_cs.h:209
Definition: ble_cs.h:334
Definition: ble_cs.h:368
RCL_CMD_BLE_CS_Phy_e
Enumerator of phy types.
Definition: ble_cs.h:246
Definition: ble_cs.h:371
Definition: ble_cs.h:367
Definition: ble_cs.h:338
BLE Channel Sounding Output Parameters.
Definition: ble_cs.h:230
Definition: ble_cs.h:310
int16_t i
Definition: ble_cs.h:171
enum RCL_CMD_BLE_CS_StepMode_e RCL_CmdBleCs_StepMode
Definition: ble_cs.h:51
Definition: ble_cs.h:282
Definition: ble_cs.h:324
Definition: ble_cs.h:249
uint16_t reserved1
Definition: ble_cs.h:120
int16_t magnAvgdB
Definition: ble_cs.h:183
int16_t q
Definition: ble_cs.h:170
enum RCL_CMD_BLE_CS_Tip_e RCL_CmdBleCs_Tip
Definition: ble_cs.h:55
uint16_t foffErr
Definition: ble_cs.h:149
uint16_t reserved0
Definition: ble_cs.h:152
uint16_t nStepsDone
Definition: ble_cs.h:233
RCL_CmdBleCs_Step * steps
Definition: ble_cs.h:122
RCL_CmdBleCs_StepResult * results
Definition: ble_cs.h:123
uint16_t nStepsWritten
Definition: ble_cs.h:231
Definition: ble_cs.h:271
struct RCL_CMD_BLE_CS_t::@14 frontend
Definition: ble_cs.h:354
RCL_CmdBleCs_S2r * s2rResults
Definition: ble_cs.h:124
enum RCL_CMD_BLE_CS_AntennaConfig_e RCL_CmdBleCs_AntennaConfig
Definition: ble_cs.h:57
Definition: ble_cs.h:337
Definition: ble_cs.h:351
Definition: ble_cs.h:357