Radio Control Layer (RCL)
ble5.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020-2026, 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_ble5__include
34 #define ti_drivers_rcl_commands_ble5__include
35 
36 typedef struct RCL_FL_ENTRY_t RCL_FL_Entry;
37 typedef struct RCL_FILTER_LIST_t RCL_FilterList;
38 
39 typedef struct RCL_ADDR_TYPE_t RCL_AddrType;
40 typedef struct RCL_CONN_PARAMS_t RCL_ConnParams;
41 
42 typedef struct RCL_CMD_BLE5_ADV_t RCL_CmdBle5Advertiser;
43 typedef struct RCL_CMD_BLE5_AUX_ADV_t RCL_CmdBle5AuxAdvertiser;
44 typedef struct RCL_CMD_BLE5_PER_ADV_t RCL_CmdBle5PeriodicAdvertiser;
45 typedef struct RCL_CMD_BLE5_INITIATOR_t RCL_CmdBle5Initiator;
46 typedef struct RCL_CMD_BLE5_SCANNER_t RCL_CmdBle5Scanner;
47 typedef struct RCL_CMD_BLE5_PER_SCANNER_t RCL_CmdBle5PeriodicScanner;
48 typedef struct RCL_CMD_BLE5_CONNECTION_t RCL_CmdBle5Connection;
49 typedef struct RCL_CMD_BLE5_DTM_TX RCL_CmdBle5DtmTx;
50 typedef struct RCL_CMD_BLE5_GENERIC_RX_t RCL_CmdBle5GenericRx;
51 typedef struct RCL_CMD_BLE5_GENERIC_TX_t RCL_CmdBle5GenericTx;
52 typedef struct RCL_CMD_BLE5_TX_TEST_t RCL_CmdBle5TxTest;
53 typedef struct RCL_CMD_BLE5_CH_ASSESSMENT_t RCL_CmdBle5ChAssessment;
54 
55 typedef struct RCL_CTX_ADVERTISER_t RCL_CtxAdvertiser;
56 typedef struct RCL_CTX_PER_ADVERTISER_t RCL_CtxPeriodicAdvertiser;
57 typedef struct RCL_CTX_SCAN_INIT_t RCL_CtxScanInit;
58 typedef struct RCL_CTX_PER_SCANNER_t RCL_CtxPeriodicScanner;
59 typedef struct RCL_CTX_CONNECTION_t RCL_CtxConnection;
60 typedef struct RCL_CTX_GENERIC_RX_t RCL_CtxGenericRx;
61 typedef struct RCL_CTX_GENERIC_TX_t RCL_CtxGenericTx;
62 
63 typedef struct RCL_STATS_ADV_SCAN_INIT_t RCL_StatsAdvScanInit;
64 typedef struct RCL_STATS_CONNECTION_t RCL_StatsConnection;
65 typedef struct RCL_STATS_GENERIC_RX_t RCL_StatsGenericRx;
66 
75 typedef uint8_t RCL_Ble5Channel;
76 
81 typedef enum RCL_Ble5_RxPhy_e {
87 
92 typedef union {
93  struct {
94  RCL_Ble5_RxPhy phy :2;
95  uint8_t crcError :1;
96  uint8_t ignored :1;
97  uint8_t ignoredAddr :1;
98  uint8_t syncInfoOnly :1;
99  uint8_t reserved :2;
100  };
101  uint8_t value;
103 
104 /* Invalid packet status */
105 #define RCL_BLE5_RX_PKT_STATUS_INVALID 0xFF
106 
107 /* Do includes after typedefs, as the types are needed in ti/drivers/rcl/handlers/ble5.h */
110 #include <ti/drivers/utils/List.h>
111 
112 #include <ti/devices/DeviceFamily.h>
113 #include DeviceFamily_constructPath(inc/pbe_ble5_ram_regs.h)
114 
115 /* Command IDs for BLE commands */
116 #define RCL_CMDID_BLE5_ADVERTISER 0x1001U
117 #define RCL_CMDID_BLE5_INITIATOR 0x1002U
118 #define RCL_CMDID_BLE5_SCANNER 0x1003U
119 #define RCL_CMDID_BLE5_CONNECTION 0x1004U
120 #define RCL_CMDID_BLE5_DTM_TX 0x1005U
121 #define RCL_CMDID_BLE5_GENERIC_RX 0x1006U
122 #define RCL_CMDID_BLE5_GENERIC_TX 0x1007U
123 #define RCL_CMDID_BLE5_TX_TEST 0x1008U
124 #define RCL_CMDID_BLE5_AUX_ADV 0x1009U
125 #define RCL_CMDID_BLE5_PERIODIC_ADV 0x100AU
126 #define RCL_CMDID_BLE5_PERIODIC_SCAN 0x100BU
127 #define RCL_CMDID_BLE5_CH_ASSESSMENT 0x100CU
128 
136 #define BLE_CUSTOM_FREQ_BM 0x80U
137 
144  union
145  {
146  struct
147  {
148  uint16_t enabled : 1;
149  uint16_t addType : 1;
150  uint16_t duplicateIgn : 1;
151  uint16_t privIgn : 1;
152  uint16_t reserved : 12;
153  } ctl;
154  uint16_t ctlWord;
155  };
156  uint16_t address[3];
157 };
158 
165  uint32_t numEntries;
166  RCL_FL_Entry entries[16];
167 };
168 
175  uint8_t peer :1;
176  uint8_t own :1;
177  uint8_t scanReq :1;
178  uint8_t reserved: 5;
179 };
180 
187  struct
188  {
189  uint16_t interval;
190  uint16_t latency;
191  uint16_t timeout;
192  } ble2M;
193  struct
194  {
195  uint16_t interval;
196  uint16_t latency;
197  uint16_t timeout;
198  } bleCoded;
199 };
200 
207  RCL_Command common;
208  uint8_t chanMap;
211  uint8_t order;
212  uint8_t highDuty;
213  uint32_t connectPktTime;
214  RCL_CtxAdvertiser *ctx;
215  RCL_StatsAdvScanInit *stats;
216 };
217 
218 #define RCL_CmdBle5Advertiser_Default() \
219 { \
220  .common = RCL_Command_Default(RCL_CMDID_BLE5_ADVERTISER, \
221  RCL_Handler_BLE5_adv), \
222  .chanMap = 0x7, \
223  .txPower = {.dBm = 0, .fraction = 0}, \
224  .coexControl = {.value = 0}, \
225  .order = 0, \
226  .highDuty = 0, \
227  .connectPktTime = 0, \
228  .ctx = NULL, \
229  .stats = NULL, \
230 }
231 #define RCL_CmdBle5Advertiser_DefaultRuntime() (RCL_CmdBle5Advertiser) RCL_CmdBle5Advertiser_Default()
232 
239  RCL_Command common;
243  uint32_t connectPktTime;
244  RCL_CtxAdvertiser *ctx;
245  RCL_StatsAdvScanInit *stats;
246 };
247 
248 #define RCL_CmdBle5AuxAdvertiser_Default() \
249 { \
250  .common = RCL_Command_Default(RCL_CMDID_BLE5_AUX_ADV, \
251  RCL_Handler_BLE5_aux_adv), \
252  .channel = 0, \
253  .txPower = {.dBm = 0, .fraction = 0}, \
254  .coexControl = {.value = 0}, \
255  .ctx = NULL, \
256  .stats = NULL, \
257 }
258 #define RCL_CmdBle5AuxAdvertiser_DefaultRuntime() (RCL_CmdBle5AuxAdvertiser) RCL_CmdBle5AuxAdvertiser_Default()
259 
266  RCL_FilterList *filterListConn;
267  RCL_FilterList *filterListScan;
268  List_List txBuffers;
269  List_List rxBuffers;
270  uint16_t advA[3];
271  uint16_t peerA[3];
272  RCL_AddrType addrType;
273  uint8_t filterPolicy: 2;
274  uint8_t privIgnMode: 1;
275  uint8_t addrModePeer: 1;
276  uint8_t acceptAllConnectInd: 1;
277 };
278 
279 #define RCL_CtxAdvertiser_Default() \
280 { \
281  .filterListConn = NULL, \
282  .filterListScan = NULL, \
283  .txBuffers = { 0 }, \
284  .rxBuffers = { 0 }, \
285  .advA = { 0 }, \
286  .peerA = { 0 }, \
287  .addrType = { 0 }, \
288  .filterPolicy = 0, \
289  .privIgnMode = 0, \
290  .addrModePeer = 0, \
291  .acceptAllConnectInd = 0 \
292 }
293 #define RCL_CtxAdvertiser_DefaultRuntime() (RCL_CtxAdvertiser) RCL_CtxAdvertiser_Default()
294 
301  RCL_Command common;
305  struct
306  {
307  uint8_t perAdvType : 1;
308  uint8_t pawrMode : 2;
311  uint8_t reserved: 5;
312  } config;
313  uint16_t expSubeventRspNum;
316  RCL_CtxPeriodicAdvertiser *ctx;
317  RCL_StatsAdvScanInit *stats;
318 };
319 
320 #define RCL_CMD_BLE_PER_ADV_TYPE_PADVB (0U)
321 #define RCL_CMD_BLE_PER_ADV_TYPE_PAWR (1U)
323 #define RCL_CMD_BLE_PAWR_MODE_ZERO (0U)
324 #define RCL_CMD_BLE_PAWR_MODE_ONE (1U)
325 #define RCL_CMD_BLE_PAWR_MODE_TWO (2U)
326 #define RCL_CMD_BLE_PAWR_MODE_INVALID (3U)
328 #define RCL_CmdBle5PeriodicAdvertiser_Default() \
329 { \
330  .common = RCL_Command_Default(RCL_CMDID_BLE5_PERIODIC_ADV, \
331  RCL_Handler_BLE5_periodicAdv), \
332  .channel = 0, \
333  .txPower = {.dBm = 0, .fraction = 0}, \
334  .coexControl = {.value = 0}, \
335  .config = {.perAdvType = RCL_CMD_BLE_PER_ADV_TYPE_PADVB}, \
336  .ctx = NULL, \
337  .stats = NULL, \
338 }
339 #define RCL_CmdBle5PeriodicAdvertiser_DefaultRuntime() (RCL_CmdBle5PeriodicAdvertiser) RCL_CmdBle5PeriodicAdvertiser_Default()
340 
347  List_List txBuffers;
350  List_List rxBuffers;
351  uint32_t accessAddress;
352  uint32_t rspAA;
353  uint8_t acceptAllTargetA: 1;
356  uint8_t acceptAllAdvA: 1;
359  uint32_t crcInit;
360  uint16_t peerA[3];
362  uint16_t ownA[3];
364  RCL_AddrType addrType;
366 };
367 
368 #define RCL_CtxPeriodicAdvertiser_Default() \
369 { \
370  .txBuffers = { 0 }, \
371  .rxBuffers = { 0 }, \
372  .accessAddress = 0, \
373  .rspAA = 0, \
374  .acceptAllTargetA = 0, \
375  .acceptAllAdvA = 0, \
376  .crcInit = 0, \
377  .peerA = { 0 }, \
378  .ownA = { 0 }, \
379  .addrType = { 0 }, \
380 }
381 #define RCL_CtxPeriodicAdvertiser_DefaultRuntime() (RCL_CtxPeriodicAdvertiser) RCL_CtxPeriodicAdvertiser_Default()
382 
389  RCL_Command common;
393  uint16_t maxAuxPtrWaitTime;
395  bool acceptLegacy : 1;
396  bool acceptExtended : 1;
397  uint32_t connectTime;
398  RCL_CtxScanInit *ctx;
399  RCL_StatsAdvScanInit *stats;
400 };
401 
402 #define RCL_CmdInitiator_Default() \
403 { \
404  .common = RCL_Command_Default(RCL_CMDID_BLE5_INITIATOR, \
405  RCL_Handler_BLE5_scan_init), \
406  .channel = 37, \
407  .txPower = {.dBm = 0, .fraction = 0}, \
408  .coexControl = {.value = 0}, \
409  .maxAuxPtrWaitTime = 30000, \
410  .dynamicWinOffset = 0, \
411  .acceptLegacy = 1, \
412  .acceptExtended = 0, \
413  .connectTime = 0, \
414  .ctx = NULL, \
415  .stats = NULL, \
416 }
417 #define RCL_CmdInitiator_DefaultRuntime() (RCL_CmdBle5Initiator) RCL_CmdInitiator_Default()
418 
425  RCL_Command common;
429  uint16_t maxAuxPtrWaitTime;
430  bool activeScan;
431  bool acceptLegacy : 1;
432  bool acceptExtended : 1;
433  RCL_CtxScanInit *ctx;
434  RCL_StatsAdvScanInit *stats;
435 };
436 
437 #define RCL_CmdScanner_Default() \
438 { \
439  .common = RCL_Command_Default(RCL_CMDID_BLE5_SCANNER, \
440  RCL_Handler_BLE5_scan_init), \
441  .channel = 37, \
442  .txPower = {.dBm = 0, .fraction = 0}, \
443  .coexControl = {.value = 0}, \
444  .maxAuxPtrWaitTime = 20000, \
445  .activeScan = 0, \
446  .acceptLegacy = 1, \
447  .acceptExtended = 0, \
448  .ctx = NULL, \
449  .stats = NULL, \
450 }
451 #define RCL_CmdScanner_DefaultRuntime() (RCL_CmdBle5Scanner) RCL_CmdScanner_Default()
452 
459  RCL_FilterList *filterList;
460  List_List txBuffers;
461  List_List rxBuffers;
462  uint16_t ownA[3];
463  uint16_t peerA[3];
464  uint16_t scanReqA[3];
465  RCL_AddrType addrType;
466  uint8_t filterPolicy : 1;
467  uint8_t scanExtFilterPolicy: 1;
468  uint8_t addrModePeer: 1;
469  uint8_t acceptAllRpaConnectRsp: 1;
470  uint8_t periodicSyncEstablishment: 1;
471  uint16_t initialBackoff;
472  uint8_t backoffUpper;
473  struct
474  {
475  uint8_t backOffLastFail : 1;
476  uint8_t backOffLastSucceed : 1;
477  uint8_t reserved : 6;
478  } backoffStatus;
480  RCL_ConnParams connParams;
481 };
482 
483 #define RCL_CtxScanInit_Default() \
484 { \
485  .filterList = NULL, \
486  .txBuffers = { 0 }, \
487  .rxBuffers = { 0 }, \
488  .ownA = { 0 }, \
489  .peerA = { 0 }, \
490  .scanReqA = { 0 }, \
491  .addrType = { 0 }, \
492  .filterPolicy = 0, \
493  .scanExtFilterPolicy = 0, \
494  .addrModePeer = 0, \
495  .acceptAllRpaConnectRsp = 0, \
496  .periodicSyncEstablishment = 0, \
497  .initialBackoff = 1, \
498  .backoffUpper = 0, \
499  .backoffStatus = { 0 }, \
500  .localClockAccuracy = 3355, \
501 }
502 #define RCL_CtxScanInit_DefaultRuntime() (RCL_CtxScanInit) RCL_CtxScanInit_Default()
503 
510  RCL_Command common;
514  bool perAdvType;
515  uint16_t maxAuxPtrWaitTime;
516  uint32_t receivedPktTime;
517  RCL_CtxPeriodicScanner *ctx;
518  RCL_StatsAdvScanInit *stats;
519 };
520 
521 #define RCL_CmdPeriodicScanner_Default() \
522 { \
523  .common = RCL_Command_Default(RCL_CMDID_BLE5_PERIODIC_SCAN, \
524  RCL_Handler_BLE5_periodicScan), \
525  .channel = 37, \
526  .txPower = {.dBm = 0, .fraction = 0}, \
527  .coexControl = {.value = 0}, \
528  .perAdvType = 0, \
529  .maxAuxPtrWaitTime = 20000, \
530  .receivedPktTime = 0, \
531  .ctx = NULL, \
532  .stats = NULL, \
533 }
534 #define RCL_CmdPeriodicScanner_DefaultRuntime() (RCL_CmdBle5PeriodicScanner) RCL_CmdPeriodicScanner_Default()
535 
542  List_List txBuffers;
543  List_List rxBuffers;
544  uint16_t ownA[3];
545  uint16_t peerA[3];
546  RCL_AddrType addrType;
548  uint32_t accessAddress;
549  uint32_t crcInit;
551  uint8_t ignoreConnectReq : 1;
552 };
553 
554 #define RCL_CtxPeriodicScanner_Default() \
555 { \
556  .txBuffers = { 0 }, \
557  .rxBuffers = { 0 }, \
558  .ownA = { 0 }, \
559  .peerA = { 0 }, \
560  .addrType = { 0 }, \
561  .localClockAccuracy = 3355, \
562  .accessAddress = 0, \
563  .crcInit = 0, \
564  .acceptAllConnectInd = 1, \
565  .ignoreConnectReq = 0, \
566 }
567 #define RCL_CtxPeriodicScanner_DefaultRuntime() (RCL_CtxPeriodicScanner) RCL_CtxPeriodicScanner_Default()
568 
575  struct
576  {
577  uint8_t accumulate : 1;
578  uint8_t activeUpdate : 1;
579  uint8_t reserved : 6;
580  } config;
581  uint8_t timestampValid;
582  int8_t lastRssi;
583  uint32_t lastTimestamp;
584  uint16_t nRxNok;
585  uint16_t nRxIgnored;
586  uint16_t nRxOk;
587  uint8_t nRxFifoFull;
588  uint8_t nTx;
589 };
590 
591 #define RCL_StatsAdvScanInit_Default() \
592 { \
593  .config = { 0 }, \
594  .timestampValid = 0, \
595  .lastRssi = LRF_RSSI_INVALID, \
596 }
597 #define RCL_StatsAdvScanInit_DefaultRuntime() (RCL_StatsAdvScanInit) RCL_StatsAdvScanInit_Default()
598 
605  RCL_Command common;
609  uint16_t relRxTimeoutTime;
610  RCL_CtxConnection *ctx;
611  RCL_StatsConnection *stats;
612 };
613 
614 #define RCL_CmdBle5Connection_Default() \
615 { \
616  .common = RCL_Command_Default(RCL_CMDID_BLE5_CONNECTION, \
617  RCL_Handler_BLE5_conn), \
618  .channel = 0, \
619  .txPower = {.dBm = 0, .fraction = 0}, \
620  .coexControl = {.value = 0}, \
621  .ctx = NULL, \
622  .stats = NULL, \
623 }
624 #define RCL_CmdBle5Connection_DefaultRuntime() (RCL_CmdBle5Connection) RCL_CmdBle5Connection_Default()
625 
632  List_List txBuffers;
633  List_List rxBuffers;
635  uint16_t seqStat;
636  uint32_t accessAddress;
637  uint32_t crcInit;
638 };
639 
640 #define _INIT_SEQSTAT (PBE_BLE5_RAM_SEQSTAT_LASTRXSN_M | \
641  PBE_BLE5_RAM_SEQSTAT_LASTTXSN_M | \
642  PBE_BLE5_RAM_SEQSTAT_FIRSTPKT_M )
643 
644 #define RCL_CtxConnection_Default() \
645 { \
646  .txBuffers = { 0 }, \
647  .rxBuffers = { 0 }, \
648  .isPeripheral = 0, \
649  .seqStat = _INIT_SEQSTAT, \
650  .accessAddress = 0, \
651  .crcInit = 0, \
652 }
653 #define RCL_CtxConnection_DefaultRuntime() (RCL_CtxConnection) RCL_CtxConnection_Default()
654 
661  struct
662  {
663  uint8_t accumulate : 1;
664  uint8_t activeUpdate : 1;
665  uint8_t reserved : 6;
666  } config;
667  uint8_t anchorValid;
668  int8_t lastRssi;
670  uint32_t anchorPoint;
671  uint8_t nTxDone;
672  uint8_t nTxAck;
673  uint8_t nTxCtlAck;
674  uint8_t nTxCtl;
675  uint8_t nTxRetrans;
676  uint8_t nRxNok;
677  uint8_t nRxIgnored;
678  uint8_t nRxEmpty;
679  uint8_t nRxFifoFull;
680  uint8_t nRxOk;
681  uint8_t nTx;
682  uint8_t nRxCtl;
683  uint8_t nRxCtlAck;
684 };
685 
686 #define RCL_StatsConnection_Default() \
687 { \
688  .config = { 0 }, \
689  .anchorValid = 0, \
690  .lastRssi = LRF_RSSI_INVALID, \
691 }
692 #define RCL_StatsConnection_DefaultRuntime() (RCL_StatsConnection) RCL_StatsConnection_Default()
693 
700  RCL_Command common;
703  uint8_t pduHeader;
704  uint8_t pduLength;
705  uint8_t cteInfo;
706  uint16_t periodUs;
707  uint16_t numPackets;
708 };
709 
710 #define RCL_CmdBle5DtmTx_Default() \
711 { \
712  .common = RCL_Command_Default(RCL_CMDID_BLE5_DTM_TX, \
713  RCL_Handler_BLE5_dtmTx), \
714  .channel = 64, \
715  .txPower = {.dBm = 0, .fraction = 0}, \
716  .pduHeader = 0x00, \
717  .pduLength = 37, \
718  .cteInfo = 0x14, \
719  .periodUs = 625, \
720  .numPackets = 0, \
721 }
722 #define RCL_CmdBle5DtmTx_DefaultRuntime() (RCL_CmdBle5DtmTx) RCL_CmdBle5DtmTx_Default()
723 
730  RCL_Command common;
733  RCL_CtxGenericRx *ctx;
734  RCL_StatsGenericRx *stats;
735 };
736 
737 #define RCL_CmdBle5GenericRx_Default() \
738 { \
739  .common = RCL_Command_Default(RCL_CMDID_BLE5_GENERIC_RX, \
740  RCL_Handler_BLE5_genericRx), \
741  .channel = 64, \
742  .coexControl = {.value = 0}, \
743  .ctx = NULL, \
744  .stats = NULL, \
745 }
746 #define RCL_CmdBle5GenericRx_DefaultRuntime() (RCL_CmdBle5GenericRx) RCL_CmdBle5GenericRx_Default()
747 
754  List_List rxBuffers;
755  uint32_t accessAddress;
756  uint32_t crcInit;
757  uint8_t maxPktLen;
758  uint8_t maxPkts;
759  struct {
760  uint8_t repeated: 1;
761  uint8_t disableSync: 1;
762  uint8_t discardRxPackets: 1;
763  uint8_t reserved: 4;
764  } config;
765 };
766 
767 #define RCL_CtxGenericRx_Default() \
768 { \
769  .rxBuffers = { 0 }, \
770  .accessAddress = 0x71764129U, \
771  .crcInit = 0x555555, \
772  .maxPktLen = 255, \
773  .maxPkts = 0, \
774  .config = { \
775  .repeated = 1, \
776  .disableSync = 0, \
777  .discardRxPackets = 1, \
778  .reserved = 0, \
779  }, \
780 }
781 #define RCL_CtxGenericRx_DefaultRuntime() (RCL_CtxGenericRx) RCL_CtxGenericRx_Default()
782 
789  struct
790  {
791  uint8_t accumulate : 1;
792  uint8_t activeUpdate : 1;
793  uint8_t reserved : 6;
794  } config;
795  uint8_t timestampValid;
796  int8_t lastRssi;
797  uint32_t lastTimestamp;
798  uint16_t nRxNok;
799  uint16_t nRxOk;
800  uint8_t nRxFifoFull;
801 };
802 
803 #define RCL_StatsGenericRx_Default() \
804 { \
805  .config = { 0 }, \
806  .timestampValid = 0, \
807  .lastRssi = LRF_RSSI_INVALID, \
808 }
809 #define RCL_StatsGenericRx_DefaultRuntime() (RCL_StatsGenericRx) RCL_StatsGenericRx_Default()
810 
817  RCL_Command common;
821  RCL_CtxGenericTx *ctx;
822 };
823 
824 #define RCL_CmdBle5GenericTx_Default() \
825 { \
826  .common = RCL_Command_Default(RCL_CMDID_BLE5_GENERIC_TX, \
827  RCL_Handler_BLE5_genericTx), \
828  .channel = 64, \
829  .txPower = {.dBm = 0, .fraction = 0}, \
830  .coexControl = {.value = 0}, \
831  .ctx = NULL, \
832 }
833 #define RCL_CmdBle5GenericTx_DefaultRuntime() (RCL_CmdBle5GenericTx) RCL_CmdBle5GenericTx_Default()
834 
841  List_List txBuffers;
842  uint32_t accessAddress;
843  uint32_t crcInit;
845 };
846 
847 #define RCL_CtxGenericTx_Default() \
848 { \
849  .txBuffers = { 0 }, \
850  .accessAddress = 0x71764129U, \
851  .crcInit = 0x555555, \
852 }
853 #define RCL_CtxGenericTx_DefaultRuntime() (RCL_CtxGenericTx) RCL_CtxGenericTx_Default()
854 
861  RCL_Command common;
862  uint8_t channel;
864  uint16_t txWord;
865  struct {
866  uint8_t whitenMode: 2;
867  uint8_t sendCw: 1;
868  uint8_t reserved: 5;
869  } config;
870 };
871 
872 #define RCL_CmdBle5TxTest_Default() \
873 { \
874  .common = RCL_Command_Default(RCL_CMDID_BLE5_TX_TEST, \
875  RCL_Handler_Ble5_txTest), \
876  .channel = 64, \
877  .txPower = {.dBm = 0, .fraction = 0}, \
878  .txWord = 0, \
879  .config = { \
880  .whitenMode = 2, \
881  .sendCw = 0, \
882  .reserved = 0, \
883  }, \
884 }
885 #define RCL_CmdBle5TxTest_DefaultRuntime() (RCL_CmdBle5TxTest) RCL_CmdBle5TxTest_Default()
886 
887 #define RCL_CMD_BLE5_WH_MODE_DEFAULT 0U
888 #define RCL_CMD_BLE5_WH_MODE_PRBS9 1U
889 #define RCL_CMD_BLE5_WH_MODE_PRBS15 2U
890 #define RCL_CMD_BLE5_WH_MODE_PRBS32 3U
898 struct RCL_CMD_BLE5_CH_ASSESSMENT_t {
899  RCL_Command common;
904 };
905 
906 #define RCL_CmdBle5ChAssessment_Default() \
907 { \
908  .common = RCL_Command_Default(RCL_CMDID_BLE5_CH_ASSESSMENT, \
909  RCL_Handler_BLE5_ChannelAssessment), \
910  .channel = 37, \
911  .assessmentThreshold = -70, \
912  .assessmentDuration = 400, \
913  .coexControl = {.value = 0}, \
914 }
915 #define RCL_CmdBle5ChAssessment_DefaultRuntime() (RCL_CmdBle5ChAssessment) RCL_CmdBle5ChAssessment_Default()
916 
917 #endif /* ti_drivers_rcl_commands_ble5__include */
RCL_Command common
Definition: ble5.h:700
RCL_Command common
Definition: ble5.h:510
RCL_Command common
Definition: ble5.h:425
Secondary Channel Advertiser command.
Definition: ble5.h:238
uint32_t crcInit
Definition: ble5.h:756
Generic TX context.
Definition: ble5.h:840
uint32_t crcInit
Definition: ble5.h:843
RCL_Command common
Definition: ble5.h:605
RCL_AddrType addrType
Definition: ble5.h:465
Type for Coex control.
Definition: RCL_Command.h:231
RCL_Command common
Definition: ble5.h:730
Statistics structure for generic RX.
Definition: ble5.h:788
uint8_t nRxNok
Definition: ble5.h:676
uint16_t nRxOk
Definition: ble5.h:799
uint32_t accessAddress
Definition: ble5.h:842
List_List rxBuffers
Definition: ble5.h:543
uint16_t seqStat
Definition: ble5.h:635
uint16_t localClockAccuracy
Definition: ble5.h:479
Statistics structure for advertiser, scanner and initiator.
Definition: ble5.h:574
RCL_CtxPeriodicScanner * ctx
Definition: ble5.h:517
uint16_t assessmentDuration
Definition: ble5.h:902
List_List txBuffers
Definition: ble5.h:460
RCL_CtxGenericRx * ctx
Definition: ble5.h:733
RCL_Ble5Channel channel
Definition: ble5.h:390
List_List rxBuffers
Definition: ble5.h:269
Periodic advertiser command.
Definition: ble5.h:300
RCL_Ble5Channel channel
Definition: ble5.h:606
int8_t lastRssi
Definition: ble5.h:582
Scanner command.
Definition: ble5.h:424
BLE5 transmitter test command.
Definition: ble5.h:860
List_List rxBuffers
Definition: ble5.h:461
uint16_t txWord
Definition: ble5.h:864
uint8_t highDuty
Definition: ble5.h:212
RCL_Command common
Definition: ble5.h:389
uint16_t maxAuxPtrWaitTime
Definition: ble5.h:429
uint8_t nRxCtlAck
Definition: ble5.h:683
uint32_t anchorPoint
Definition: ble5.h:670
bool dynamicWinOffset
Definition: ble5.h:394
List_List txBuffers
Definition: ble5.h:632
uint8_t channel
Definition: ble5.h:862
RCL_Ble5Channel channel
Definition: ble5.h:302
bool perAdvType
Definition: ble5.h:514
uint32_t connectPktTime
Definition: ble5.h:243
RCL_AddrType addrType
Definition: ble5.h:272
uint16_t periodUs
Definition: ble5.h:706
Index of the tx power table.
Definition: LRFLPF3.h:170
uint16_t nRxNok
Definition: ble5.h:584
uint32_t receivedPktTime
Definition: ble5.h:516
RCL_Command_CoexControl coexControl
Definition: ble5.h:903
RCL_Ble5_RxPhy
PHY returned in status of received packets.
Definition: ble5.h:81
uint32_t numEntries
Definition: ble5.h:165
uint8_t nTxAck
Definition: ble5.h:672
RCL_Command_TxPower txPower
Definition: ble5.h:607
List_List rxBuffers
Definition: ble5.h:754
uint16_t expSubeventRspNum
Definition: ble5.h:313
uint16_t nRxIgnored
Definition: ble5.h:585
RCL_StatsGenericRx * stats
Definition: ble5.h:734
Address type.
Definition: ble5.h:174
List_List txBuffers
Definition: ble5.h:347
RCL_Command common
Definition: ble5.h:861
RCL_ConnParams connParams
Definition: ble5.h:480
uint8_t nTxCtl
Definition: ble5.h:674
uint32_t connectPktTime
Definition: ble5.h:213
RCL_FilterList * filterListConn
Definition: ble5.h:266
uint8_t pduLength
Definition: ble5.h:704
uint32_t rspAA
Definition: ble5.h:352
uint8_t nRxFifoFull
Definition: ble5.h:587
RCL_CtxAdvertiser * ctx
Definition: ble5.h:214
RCL_Command_CoexControl coexControl
Definition: ble5.h:428
RCL_StatsAdvScanInit * stats
Definition: ble5.h:245
List_List txBuffers
Definition: ble5.h:268
List_List txBuffers
Definition: ble5.h:542
RCL_Ble5Channel channel
Definition: ble5.h:900
uint16_t nRxOk
Definition: ble5.h:586
RCL_StatsAdvScanInit * stats
Definition: ble5.h:518
RCL_Command_CoexControl coexControl
Definition: ble5.h:392
uint16_t maxAuxPtrWaitTime
Definition: ble5.h:393
uint8_t chanMap
Definition: ble5.h:208
bool activeScan
Definition: ble5.h:430
RCL_Command_CoexControl coexControl
Definition: ble5.h:820
uint32_t crcInit
Definition: ble5.h:359
int8_t lastRssi
Definition: ble5.h:796
uint8_t value
Definition: ble5.h:101
RCL_Ble5Channel channel
Definition: ble5.h:426
RCL_Command_TxPower txPower
Definition: ble5.h:702
RCL_FilterList * filterListScan
Definition: ble5.h:267
RCL_Command_CoexControl coexControl
Definition: ble5.h:242
uint8_t acceptAllConnectInd
Definition: ble5.h:550
RCL_Ble5Channel channel
Definition: ble5.h:240
Generic RX command.
Definition: ble5.h:729
RCL_Command common
Definition: ble5.h:817
RCL_Command common
Definition: ble5.h:239
Definition: ble5.h:84
RCL_Command_TxPower txPower
Definition: ble5.h:391
RCL_CtxScanInit * ctx
Definition: ble5.h:433
RCL_Command common
Definition: ble5.h:301
RCL_Ble5_RxPhy lastRxPhy
Definition: ble5.h:669
uint32_t connectTime
Definition: ble5.h:397
RCL_Command_CoexControl coexControl
Definition: ble5.h:210
RCL_StatsConnection * stats
Definition: ble5.h:611
RCL_Command_CoexControl coexControl
Definition: ble5.h:304
DTM TX command.
Definition: ble5.h:699
int8_t assessmentThreshold
Definition: ble5.h:901
List_List txBuffers
Definition: ble5.h:841
uint8_t nRxCtl
Definition: ble5.h:682
uint32_t accessAddress
Definition: ble5.h:636
RCL_StatsAdvScanInit * stats
Definition: ble5.h:399
uint16_t relRxTimeoutTime
Definition: ble5.h:609
uint32_t crcInit
Definition: ble5.h:549
RCL_Command_CoexControl coexControl
Definition: ble5.h:608
Appended packet status field from RX buffer.
Definition: ble5.h:92
RCL_Command_TxPower txPower
Definition: ble5.h:512
RCL_CtxConnection * ctx
Definition: ble5.h:610
RCL_CtxScanInit * ctx
Definition: ble5.h:398
RCL_AddrType addrType
Definition: ble5.h:546
uint32_t accessAddress
Definition: ble5.h:755
uint32_t lastTimestamp
Definition: ble5.h:797
Connection context.
Definition: ble5.h:631
struct RCL_STATS_GENERIC_RX_t::@12 config
uint8_t nTx
Definition: ble5.h:681
uint8_t nTx
Definition: ble5.h:588
Generic TX command.
Definition: ble5.h:816
List_List rxBuffers
Definition: ble5.h:633
uint8_t nTxRetrans
Definition: ble5.h:675
uint8_t timestampValid
Definition: ble5.h:795
uint16_t initialBackoff
Definition: ble5.h:471
RCL_StatsAdvScanInit * stats
Definition: ble5.h:317
Periodic Advertiser context.
Definition: ble5.h:346
uint8_t order
Definition: ble5.h:211
RCL_CtxGenericTx * ctx
Definition: ble5.h:821
bool isPeripheral
Definition: ble5.h:634
uint8_t timestampValid
Definition: ble5.h:581
Filter list object.
Definition: ble5.h:164
uint8_t maxPkts
Definition: ble5.h:758
uint8_t nRxOk
Definition: ble5.h:680
uint8_t nTxDone
Definition: ble5.h:671
RCL_CtxPeriodicAdvertiser * ctx
Definition: ble5.h:316
Generic RX context.
Definition: ble5.h:753
uint8_t nRxEmpty
Definition: ble5.h:678
RCL_Command_TxPower txPower
Definition: ble5.h:303
RCL_Ble5Channel channel
Definition: ble5.h:701
Periodic Scanner command.
Definition: ble5.h:509
int8_t lastRssi
Definition: ble5.h:668
uint8_t pduHeader
Definition: ble5.h:703
RCL_Command_CoexControl coexControl
Definition: ble5.h:844
uint32_t crcInit
Definition: ble5.h:637
RCL_Command_TxPower txPower
Definition: ble5.h:819
uint8_t nRxFifoFull
Definition: ble5.h:800
uint8_t anchorValid
Definition: ble5.h:667
List_List rxBuffers
Definition: ble5.h:350
RCL_Command_TxPower txPower
Definition: ble5.h:209
Statistics structure for connection.
Definition: ble5.h:660
Definition: ble5.h:85
uint32_t accessAddress
Definition: ble5.h:351
RCL_Command common
Definition: ble5.h:207
RCL_Command_TxPower txPower
Definition: ble5.h:241
uint32_t accessAddress
Definition: ble5.h:548
RCL_StatsAdvScanInit * stats
Definition: ble5.h:215
Definition: ble5.h:82
uint16_t maxAuxPtrWaitTime
Definition: ble5.h:515
Advertiser context.
Definition: ble5.h:265
RCL_Ble5Channel channel
Definition: ble5.h:818
RCL_Ble5Channel channel
Definition: ble5.h:511
Filter list entry.
Definition: ble5.h:143
RCL_AddrType addrType
Definition: ble5.h:364
uint8_t cteInfo
Definition: ble5.h:705
RCL_Command common
Definition: ble5.h:899
uint8_t nRxIgnored
Definition: ble5.h:677
RCL_Command_CoexControl coexControl
Definition: ble5.h:513
Connection command.
Definition: ble5.h:604
RCL_Command_TxPower txPower
Definition: ble5.h:427
Advertiser command.
Definition: ble5.h:206
uint8_t backoffUpper
Definition: ble5.h:472
RCL_Command_TxPower txPower
Definition: ble5.h:863
RCL_CtxAdvertiser * ctx
Definition: ble5.h:244
RCL_Ble5Channel channel
Definition: ble5.h:731
uint16_t nRxNok
Definition: ble5.h:798
Scanner and initiator context.
Definition: ble5.h:458
RCL_FilterList * filterList
Definition: ble5.h:459
uint32_t lastTimestamp
Definition: ble5.h:583
uint8_t maxPktLen
Definition: ble5.h:757
Definition: ble5.h:83
RCL_Command_CoexControl coexControl
Definition: ble5.h:732
uint8_t nRxFifoFull
Definition: ble5.h:679
RCL_StatsAdvScanInit * stats
Definition: ble5.h:434
uint16_t localClockAccuracy
Definition: ble5.h:547
uint8_t nTxCtlAck
Definition: ble5.h:673
Periodic scanner context.
Definition: ble5.h:541
uint8_t responseSlotDelay
Definition: ble5.h:314
Channel Assessment command.
Definition: ble5.h:898
Initiator command.
Definition: ble5.h:388
Connection parameters.
Definition: ble5.h:186
uint8_t RCL_Ble5Channel
Type for BLE channels.
Definition: ble5.h:75
uint16_t numPackets
Definition: ble5.h:707