Radio Control Layer (RCL)
ble5.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020-2025, 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_h__include
34 #define ti_drivers_RCL_commands_ble5_h__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 {
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;
210  uint8_t order;
211  uint8_t highDuty;
212  uint32_t connectPktTime;
213  RCL_CtxAdvertiser *ctx;
214  RCL_StatsAdvScanInit *stats;
215 };
216 
217 #define RCL_CmdBle5Advertiser_Default() \
218 { \
219  .common = RCL_Command_Default(RCL_CMDID_BLE5_ADVERTISER, \
220  RCL_Handler_BLE5_adv), \
221  .chanMap = 0x7, \
222  .txPower = {.dBm = 0, .fraction = 0}, \
223  .order = 0, \
224  .highDuty = 0, \
225  .connectPktTime = 0, \
226  .ctx = NULL, \
227  .stats = NULL, \
228 }
229 #define RCL_CmdBle5Advertiser_DefaultRuntime() (RCL_CmdBle5Advertiser) RCL_CmdBle5Advertiser_Default()
230 
237  RCL_Command common;
240  uint32_t connectPktTime;
241  RCL_CtxAdvertiser *ctx;
242  RCL_StatsAdvScanInit *stats;
243 };
244 
245 #define RCL_CmdBle5AuxAdvertiser_Default() \
246 { \
247  .common = RCL_Command_Default(RCL_CMDID_BLE5_AUX_ADV, \
248  RCL_Handler_BLE5_aux_adv), \
249  .channel = 0, \
250  .txPower = {.dBm = 0, .fraction = 0}, \
251  .ctx = NULL, \
252  .stats = NULL, \
253 }
254 #define RCL_CmdBle5AuxAdvertiser_DefaultRuntime() (RCL_CmdBle5AuxAdvertiser) RCL_CmdBle5AuxAdvertiser_Default()
255 
262  RCL_FilterList *filterListConn;
263  RCL_FilterList *filterListScan;
264  List_List txBuffers;
265  List_List rxBuffers;
266  uint16_t advA[3];
267  uint16_t peerA[3];
268  RCL_AddrType addrType;
269  uint8_t filterPolicy: 2;
270  uint8_t privIgnMode: 1;
271  uint8_t addrModePeer: 1;
272  uint8_t acceptAllConnectInd: 1;
273 };
274 
275 #define RCL_CtxAdvertiser_Default() \
276 { \
277  .filterListConn = NULL, \
278  .filterListScan = NULL, \
279  .txBuffers = { 0 }, \
280  .rxBuffers = { 0 }, \
281  .advA = { 0 }, \
282  .peerA = { 0 }, \
283  .addrType = { 0 }, \
284  .filterPolicy = 0, \
285  .privIgnMode = 0, \
286  .addrModePeer = 0, \
287  .acceptAllConnectInd = 0 \
288 }
289 #define RCL_CtxAdvertiser_DefaultRuntime() (RCL_CtxAdvertiser) RCL_CtxAdvertiser_Default()
290 
297  RCL_Command common;
300  RCL_CtxPeriodicAdvertiser *ctx;
301  RCL_StatsAdvScanInit *stats;
302 };
303 
304 #define RCL_CmdBle5PeriodicAdvertiser_Default() \
305 { \
306  .common = RCL_Command_Default(RCL_CMDID_BLE5_PERIODIC_ADV, \
307  RCL_Handler_BLE5_periodicAdv), \
308  .channel = 0, \
309  .txPower = {.dBm = 0, .fraction = 0}, \
310  .ctx = NULL, \
311  .stats = NULL, \
312 }
313 #define RCL_CmdBle5PeriodicAdvertiser_DefaultRuntime() (RCL_CmdBle5PeriodicAdvertiser) RCL_CmdBle5PeriodicAdvertiser_Default()
314 
321  List_List txBuffers;
322  uint32_t accessAddress;
323  uint32_t crcInit;
324 };
325 
326 #define RCL_CtxPeriodicAdvertiser_Default() \
327 { \
328  .txBuffers = { 0 }, \
329  .accessAddress = 0, \
330  .crcInit = 0, \
331 }
332 #define RCL_CtxPeriodicAdvertiser_DefaultRuntime() (RCL_CtxPeriodicAdvertiser) RCL_CtxPeriodicAdvertiser_Default()
333 
340  RCL_Command common;
343  uint16_t maxAuxPtrWaitTime;
345  bool acceptLegacy : 1;
346  bool acceptExtended : 1;
347  uint32_t connectTime;
348  RCL_CtxScanInit *ctx;
349  RCL_StatsAdvScanInit *stats;
350 };
351 
352 #define RCL_CmdInitiator_Default() \
353 { \
354  .common = RCL_Command_Default(RCL_CMDID_BLE5_INITIATOR, \
355  RCL_Handler_BLE5_scan_init), \
356  .channel = 37, \
357  .txPower = {.dBm = 0, .fraction = 0}, \
358  .maxAuxPtrWaitTime = 30000, \
359  .dynamicWinOffset = 0, \
360  .acceptLegacy = 1, \
361  .acceptExtended = 0, \
362  .connectTime = 0, \
363  .ctx = NULL, \
364  .stats = NULL, \
365 }
366 #define RCL_CmdInitiator_DefaultRuntime() (RCL_CmdBle5Initiator) RCL_CmdInitiator_Default()
367 
374  RCL_Command common;
377  uint16_t maxAuxPtrWaitTime;
378  bool activeScan;
379  bool acceptLegacy : 1;
380  bool acceptExtended : 1;
381  RCL_CtxScanInit *ctx;
382  RCL_StatsAdvScanInit *stats;
383 };
384 
385 #define RCL_CmdScanner_Default() \
386 { \
387  .common = RCL_Command_Default(RCL_CMDID_BLE5_SCANNER, \
388  RCL_Handler_BLE5_scan_init), \
389  .channel = 37, \
390  .txPower = {.dBm = 0, .fraction = 0}, \
391  .maxAuxPtrWaitTime = 20000, \
392  .activeScan = 0, \
393  .acceptLegacy = 1, \
394  .acceptExtended = 0, \
395  .ctx = NULL, \
396  .stats = NULL, \
397 }
398 #define RCL_CmdScanner_DefaultRuntime() (RCL_CmdBle5Scanner) RCL_CmdScanner_Default()
399 
406  RCL_FilterList *filterList;
407  List_List txBuffers;
408  List_List rxBuffers;
409  uint16_t ownA[3];
410  uint16_t peerA[3];
411  uint16_t scanReqA[3];
412  RCL_AddrType addrType;
413  uint8_t filterPolicy : 1;
414  uint8_t scanExtFilterPolicy: 1;
415  uint8_t addrModePeer: 1;
416  uint8_t acceptAllRpaConnectRsp: 1;
417  uint8_t periodicSyncEstablishment: 1;
418  uint16_t initialBackoff;
419  uint8_t backoffUpper;
420  struct
421  {
422  uint8_t backOffLastFail : 1;
423  uint8_t backOffLastSucceed : 1;
424  uint8_t reserved : 6;
425  } backoffStatus;
427  RCL_ConnParams connParams;
428 };
429 
430 #define RCL_CtxScanInit_Default() \
431 { \
432  .filterList = NULL, \
433  .txBuffers = { 0 }, \
434  .rxBuffers = { 0 }, \
435  .ownA = { 0 }, \
436  .peerA = { 0 }, \
437  .scanReqA = { 0 }, \
438  .addrType = { 0 }, \
439  .filterPolicy = 0, \
440  .scanExtFilterPolicy = 0, \
441  .addrModePeer = 0, \
442  .acceptAllRpaConnectRsp = 0, \
443  .periodicSyncEstablishment = 0, \
444  .initialBackoff = 1, \
445  .backoffUpper = 0, \
446  .backoffStatus = { 0 }, \
447  .localClockAccuracy = 3355, \
448 }
449 #define RCL_CtxScanInit_DefaultRuntime() (RCL_CtxScanInit) RCL_CtxScanInit_Default()
450 
457  RCL_Command common;
460  bool perAdvType;
461  uint16_t maxAuxPtrWaitTime;
462  uint32_t receivedPktTime;
463  RCL_CtxPeriodicScanner *ctx;
464  RCL_StatsAdvScanInit *stats;
465 };
466 
467 #define RCL_CmdPeriodicScanner_Default() \
468 { \
469  .common = RCL_Command_Default(RCL_CMDID_BLE5_PERIODIC_SCAN, \
470  RCL_Handler_BLE5_periodicScan), \
471  .channel = 37, \
472  .txPower = {.dBm = 0, .fraction = 0}, \
473  .perAdvType = 0, \
474  .maxAuxPtrWaitTime = 20000, \
475  .receivedPktTime = 0, \
476  .ctx = NULL, \
477  .stats = NULL, \
478 }
479 #define RCL_CmdPeriodicScanner_DefaultRuntime() (RCL_CmdBle5PeriodicScanner) RCL_CmdPeriodicScanner_Default()
480 
487  List_List txBuffers;
488  List_List rxBuffers;
489  uint16_t ownA[3];
490  uint16_t peerA[3];
491  RCL_AddrType addrType;
493  uint32_t accessAddress;
494  uint32_t crcInit;
496 };
497 
498 #define RCL_CtxPeriodicScanner_Default() \
499 { \
500  .txBuffers = { 0 }, \
501  .rxBuffers = { 0 }, \
502  .ownA = { 0 }, \
503  .peerA = { 0 }, \
504  .addrType = { 0 }, \
505  .localClockAccuracy = 3355, \
506  .accessAddress = 0, \
507  .crcInit = 0, \
508  .acceptAllConnectInd = 1, \
509 }
510 #define RCL_CtxPeriodicScanner_DefaultRuntime() (RCL_CtxPeriodicScanner) RCL_CtxPeriodicScanner_Default()
511 
518  struct
519  {
520  uint8_t accumulate : 1;
521  uint8_t activeUpdate : 1;
522  uint8_t reserved : 6;
523  } config;
524  uint8_t timestampValid;
525  int8_t lastRssi;
526  uint32_t lastTimestamp;
527  uint16_t nRxNok;
528  uint16_t nRxIgnored;
529  uint16_t nRxOk;
530  uint8_t nRxFifoFull;
531  uint8_t nTx;
532 };
533 
534 #define RCL_StatsAdvScanInit_Default() \
535 { \
536  .config = { 0 }, \
537  .timestampValid = 0, \
538  .lastRssi = LRF_RSSI_INVALID, \
539 }
540 #define RCL_StatsAdvScanInit_DefaultRuntime() (RCL_StatsAdvScanInit) RCL_StatsAdvScanInit_Default()
541 
548  RCL_Command common;
551  uint16_t relRxTimeoutTime;
552  RCL_CtxConnection *ctx;
553  RCL_StatsConnection *stats;
554 };
555 
556 #define RCL_CmdBle5Connection_Default() \
557 { \
558  .common = RCL_Command_Default(RCL_CMDID_BLE5_CONNECTION, \
559  RCL_Handler_BLE5_conn), \
560  .channel = 0, \
561  .txPower = {.dBm = 0, .fraction = 0}, \
562  .ctx = NULL, \
563  .stats = NULL, \
564 }
565 #define RCL_CmdBle5Connection_DefaultRuntime() (RCL_CmdBle5Connection) RCL_CmdBle5Connection_Default()
566 
573  List_List txBuffers;
574  List_List rxBuffers;
576  uint16_t seqStat;
577  uint32_t accessAddress;
578  uint32_t crcInit;
579 };
580 
581 #define _INIT_SEQSTAT (PBE_BLE5_RAM_SEQSTAT_LASTRXSN_M | \
582  PBE_BLE5_RAM_SEQSTAT_LASTTXSN_M | \
583  PBE_BLE5_RAM_SEQSTAT_FIRSTPKT_M )
584 
585 #define RCL_CtxConnection_Default() \
586 { \
587  .txBuffers = { 0 }, \
588  .rxBuffers = { 0 }, \
589  .isPeripheral = 0, \
590  .seqStat = _INIT_SEQSTAT, \
591  .accessAddress = 0, \
592  .crcInit = 0, \
593 }
594 #define RCL_CtxConnection_DefaultRuntime() (RCL_CtxConnection) RCL_CtxConnection_Default()
595 
602  struct
603  {
604  uint8_t accumulate : 1;
605  uint8_t activeUpdate : 1;
606  uint8_t reserved : 6;
607  } config;
608  uint8_t anchorValid;
609  int8_t lastRssi;
610  uint32_t anchorPoint;
611  uint8_t nTxDone;
612  uint8_t nTxAck;
613  uint8_t nTxCtlAck;
614  uint8_t nTxCtl;
615  uint8_t nTxRetrans;
616  uint8_t nRxNok;
617  uint8_t nRxIgnored;
618  uint8_t nRxEmpty;
619  uint8_t nRxFifoFull;
620  uint8_t nRxOk;
621  uint8_t nTx;
622  uint8_t nRxCtl;
623  uint8_t nRxCtlAck;
624 };
625 
626 #define RCL_StatsConnection_Default() \
627 { \
628  .config = { 0 }, \
629  .anchorValid = 0, \
630  .lastRssi = LRF_RSSI_INVALID, \
631 }
632 #define RCL_StatsConnection_DefaultRuntime() (RCL_StatsConnection) RCL_StatsConnection_Default()
633 
640  RCL_Command common;
643  uint8_t pduHeader;
644  uint8_t pduLength;
645  uint8_t cteInfo;
646  uint16_t periodUs;
647  uint16_t numPackets;
648 };
649 
650 #define RCL_CmdBle5DtmTx_Default() \
651 { \
652  .common = RCL_Command_Default(RCL_CMDID_BLE5_DTM_TX, \
653  RCL_Handler_BLE5_dtmTx), \
654  .channel = 64, \
655  .txPower = {.dBm = 0, .fraction = 0}, \
656  .pduHeader = 0x00, \
657  .pduLength = 37, \
658  .cteInfo = 0x14, \
659  .periodUs = 625, \
660  .numPackets = 0, \
661 }
662 #define RCL_CmdBle5DtmTx_DefaultRuntime() (RCL_CmdBle5DtmTx) RCL_CmdBle5DtmTx_Default()
663 
670  RCL_Command common;
672  RCL_CtxGenericRx *ctx;
673  RCL_StatsGenericRx *stats;
674 };
675 
676 #define RCL_CmdBle5GenericRx_Default() \
677 { \
678  .common = RCL_Command_Default(RCL_CMDID_BLE5_GENERIC_RX, \
679  RCL_Handler_BLE5_genericRx), \
680  .channel = 64, \
681  .ctx = NULL, \
682  .stats = NULL, \
683 }
684 #define RCL_CmdBle5GenericRx_DefaultRuntime() (RCL_CmdBle5GenericRx) RCL_CmdBle5GenericRx_Default()
685 
692  List_List rxBuffers;
693  uint32_t accessAddress;
694  uint32_t crcInit;
695  uint8_t maxPktLen;
696  uint8_t maxPkts;
697  struct {
698  uint8_t repeated: 1;
699  uint8_t disableSync: 1;
700  uint8_t discardRxPackets: 1;
701  uint8_t reserved: 4;
702  } config;
703 };
704 
705 #define RCL_CtxGenericRx_Default() \
706 { \
707  .rxBuffers = { 0 }, \
708  .accessAddress = 0x71764129U, \
709  .crcInit = 0x555555, \
710  .maxPktLen = 255, \
711  .maxPkts = 0, \
712  .config = { \
713  .repeated = 1, \
714  .disableSync = 0, \
715  .discardRxPackets = 1, \
716  .reserved = 0, \
717  }, \
718 }
719 #define RCL_CtxGenericRx_DefaultRuntime() (RCL_CtxGenericRx) RCL_CtxGenericRx_Default()
720 
727  struct
728  {
729  uint8_t accumulate : 1;
730  uint8_t activeUpdate : 1;
731  uint8_t reserved : 6;
732  } config;
733  uint8_t timestampValid;
734  int8_t lastRssi;
735  uint32_t lastTimestamp;
736  uint16_t nRxNok;
737  uint16_t nRxOk;
738  uint8_t nRxFifoFull;
739 };
740 
741 #define RCL_StatsGenericRx_Default() \
742 { \
743  .config = { 0 }, \
744  .timestampValid = 0, \
745  .lastRssi = LRF_RSSI_INVALID, \
746 }
747 #define RCL_StatsGenericRx_DefaultRuntime() (RCL_StatsGenericRx) RCL_StatsGenericRx_Default()
748 
755  RCL_Command common;
758  RCL_CtxGenericTx *ctx;
759 };
760 
761 #define RCL_CmdBle5GenericTx_Default() \
762 { \
763  .common = RCL_Command_Default(RCL_CMDID_BLE5_GENERIC_TX, \
764  RCL_Handler_BLE5_genericTx), \
765  .channel = 64, \
766  .txPower = {.dBm = 0, .fraction = 0}, \
767  .ctx = NULL, \
768 }
769 #define RCL_CmdBle5GenericTx_DefaultRuntime() (RCL_CmdBle5GenericTx) RCL_CmdBle5GenericTx_Default()
770 
777  List_List txBuffers;
778  uint32_t accessAddress;
779  uint32_t crcInit;
780 };
781 
782 #define RCL_CtxGenericTx_Default() \
783 { \
784  .txBuffers = { 0 }, \
785  .accessAddress = 0x71764129U, \
786  .crcInit = 0x555555, \
787 }
788 #define RCL_CtxGenericTx_DefaultRuntime() (RCL_CtxGenericTx) RCL_CtxGenericTx_Default()
789 
796  RCL_Command common;
797  uint8_t channel;
799  uint16_t txWord;
800  struct {
801  uint8_t whitenMode: 2;
802  uint8_t sendCw: 1;
803  uint8_t reserved: 5;
804  } config;
805 };
806 
807 #define RCL_CmdBle5TxTest_Default() \
808 { \
809  .common = RCL_Command_Default(RCL_CMDID_BLE5_TX_TEST, \
810  RCL_Handler_Ble5_txTest), \
811  .channel = 64, \
812  .txPower = {.dBm = 0, .fraction = 0}, \
813  .txWord = 0, \
814  .config = { \
815  .whitenMode = 2, \
816  .sendCw = 0, \
817  .reserved = 0, \
818  }, \
819 }
820 #define RCL_CmdBle5TxTest_DefaultRuntime() (RCL_CmdBle5TxTest) RCL_CmdBle5TxTest_Default()
821 
822 #define RCL_CMD_BLE5_WH_MODE_DEFAULT 0
823 #define RCL_CMD_BLE5_WH_MODE_PRBS9 1
824 #define RCL_CMD_BLE5_WH_MODE_PRBS15 2
825 #define RCL_CMD_BLE5_WH_MODE_PRBS32 3
833 struct RCL_CMD_BLE5_CH_ASSESSMENT_t {
834  RCL_Command common;
838 };
839 
840 #define RCL_CmdBle5ChAssessment_Default() \
841 { \
842  .common = RCL_Command_Default(RCL_CMDID_BLE5_CH_ASSESSMENT, \
843  RCL_Handler_BLE5_ChannelAssessment), \
844  .channel = 37, \
845  .assessmentThreshold = -70, \
846  .assessmentDuration = 400, \
847 }
848 #define RCL_CmdBle5ChAssessment_DefaultRuntime() (RCL_CmdBle5ChAssessment) RCL_CmdBle5ChAssessment_Default()
849 
850 #endif
RCL_Command common
Definition: ble5.h:640
RCL_Command common
Definition: ble5.h:457
struct RCL_STATS_GENERIC_RX_t::@11 config
RCL_Command common
Definition: ble5.h:374
Secondary Channel Advertiser command.
Definition: ble5.h:236
uint32_t crcInit
Definition: ble5.h:694
Generic TX context.
Definition: ble5.h:776
uint32_t crcInit
Definition: ble5.h:779
RCL_Command common
Definition: ble5.h:548
RCL_AddrType addrType
Definition: ble5.h:412
RCL_Command common
Definition: ble5.h:670
Statistics structure for generic RX.
Definition: ble5.h:726
uint8_t nRxNok
Definition: ble5.h:616
uint16_t nRxOk
Definition: ble5.h:737
uint32_t accessAddress
Definition: ble5.h:778
List_List rxBuffers
Definition: ble5.h:488
uint16_t seqStat
Definition: ble5.h:576
uint16_t localClockAccuracy
Definition: ble5.h:426
Statistics structure for advertiser, scanner and initiator.
Definition: ble5.h:517
RCL_CtxPeriodicScanner * ctx
Definition: ble5.h:463
uint16_t assessmentDuration
Definition: ble5.h:837
List_List txBuffers
Definition: ble5.h:407
RCL_CtxGenericRx * ctx
Definition: ble5.h:672
RCL_Ble5Channel channel
Definition: ble5.h:341
List_List rxBuffers
Definition: ble5.h:265
Periodic advertiser command.
Definition: ble5.h:296
RCL_Ble5Channel channel
Definition: ble5.h:549
int8_t lastRssi
Definition: ble5.h:525
Scanner command.
Definition: ble5.h:373
BLE5 transmitter test command.
Definition: ble5.h:795
List_List rxBuffers
Definition: ble5.h:408
uint16_t txWord
Definition: ble5.h:799
uint8_t highDuty
Definition: ble5.h:211
RCL_Command common
Definition: ble5.h:340
uint16_t maxAuxPtrWaitTime
Definition: ble5.h:377
uint8_t nRxCtlAck
Definition: ble5.h:623
uint32_t anchorPoint
Definition: ble5.h:610
bool dynamicWinOffset
Definition: ble5.h:344
List_List txBuffers
Definition: ble5.h:573
uint8_t channel
Definition: ble5.h:797
RCL_Ble5Channel channel
Definition: ble5.h:298
bool perAdvType
Definition: ble5.h:460
uint32_t connectPktTime
Definition: ble5.h:240
RCL_AddrType addrType
Definition: ble5.h:268
uint16_t periodUs
Definition: ble5.h:646
uint16_t nRxNok
Definition: ble5.h:527
uint32_t receivedPktTime
Definition: ble5.h:462
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:612
RCL_Command_TxPower txPower
Definition: ble5.h:550
List_List rxBuffers
Definition: ble5.h:692
uint16_t nRxIgnored
Definition: ble5.h:528
RCL_StatsGenericRx * stats
Definition: ble5.h:673
Address type.
Definition: ble5.h:174
List_List txBuffers
Definition: ble5.h:321
RCL_Command common
Definition: ble5.h:796
RCL_ConnParams connParams
Definition: ble5.h:427
uint8_t nTxCtl
Definition: ble5.h:614
uint32_t connectPktTime
Definition: ble5.h:212
RCL_FilterList * filterListConn
Definition: ble5.h:262
uint8_t pduLength
Definition: ble5.h:644
uint8_t nRxFifoFull
Definition: ble5.h:530
Index of the tx power table.
Definition: LRFCC23X0.h:169
RCL_CtxAdvertiser * ctx
Definition: ble5.h:213
RCL_StatsAdvScanInit * stats
Definition: ble5.h:242
List_List txBuffers
Definition: ble5.h:264
List_List txBuffers
Definition: ble5.h:487
RCL_Ble5Channel channel
Definition: ble5.h:835
uint16_t nRxOk
Definition: ble5.h:529
RCL_StatsAdvScanInit * stats
Definition: ble5.h:464
uint16_t maxAuxPtrWaitTime
Definition: ble5.h:343
uint8_t chanMap
Definition: ble5.h:208
bool activeScan
Definition: ble5.h:378
uint32_t crcInit
Definition: ble5.h:323
int8_t lastRssi
Definition: ble5.h:734
uint8_t value
Definition: ble5.h:101
RCL_Ble5Channel channel
Definition: ble5.h:375
RCL_Command_TxPower txPower
Definition: ble5.h:642
RCL_FilterList * filterListScan
Definition: ble5.h:263
uint8_t acceptAllConnectInd
Definition: ble5.h:495
RCL_Ble5Channel channel
Definition: ble5.h:238
Generic RX command.
Definition: ble5.h:669
RCL_Command common
Definition: ble5.h:755
RCL_Command common
Definition: ble5.h:237
Definition: ble5.h:84
RCL_Command_TxPower txPower
Definition: ble5.h:342
RCL_CtxScanInit * ctx
Definition: ble5.h:381
RCL_Command common
Definition: ble5.h:297
uint32_t connectTime
Definition: ble5.h:347
RCL_StatsConnection * stats
Definition: ble5.h:553
DTM TX command.
Definition: ble5.h:639
int8_t assessmentThreshold
Definition: ble5.h:836
List_List txBuffers
Definition: ble5.h:777
uint8_t nRxCtl
Definition: ble5.h:622
uint32_t accessAddress
Definition: ble5.h:577
RCL_StatsAdvScanInit * stats
Definition: ble5.h:349
uint16_t relRxTimeoutTime
Definition: ble5.h:551
uint32_t crcInit
Definition: ble5.h:494
Appended packet status field from RX buffer.
Definition: ble5.h:92
RCL_Command_TxPower txPower
Definition: ble5.h:459
RCL_CtxConnection * ctx
Definition: ble5.h:552
RCL_CtxScanInit * ctx
Definition: ble5.h:348
RCL_AddrType addrType
Definition: ble5.h:491
uint32_t accessAddress
Definition: ble5.h:693
uint32_t lastTimestamp
Definition: ble5.h:735
Connection context.
Definition: ble5.h:572
uint8_t nTx
Definition: ble5.h:621
uint8_t nTx
Definition: ble5.h:531
Generic TX command.
Definition: ble5.h:754
List_List rxBuffers
Definition: ble5.h:574
uint8_t nTxRetrans
Definition: ble5.h:615
uint8_t timestampValid
Definition: ble5.h:733
uint16_t initialBackoff
Definition: ble5.h:418
RCL_StatsAdvScanInit * stats
Definition: ble5.h:301
Periodic Advertiser context.
Definition: ble5.h:320
uint8_t order
Definition: ble5.h:210
RCL_CtxGenericTx * ctx
Definition: ble5.h:758
bool isPeripheral
Definition: ble5.h:575
uint8_t timestampValid
Definition: ble5.h:524
Filter list object.
Definition: ble5.h:164
uint8_t maxPkts
Definition: ble5.h:696
uint8_t nRxOk
Definition: ble5.h:620
uint8_t nTxDone
Definition: ble5.h:611
RCL_CtxPeriodicAdvertiser * ctx
Definition: ble5.h:300
Generic RX context.
Definition: ble5.h:691
uint8_t nRxEmpty
Definition: ble5.h:618
RCL_Command_TxPower txPower
Definition: ble5.h:299
RCL_Ble5Channel channel
Definition: ble5.h:641
Periodic Scanner command.
Definition: ble5.h:456
int8_t lastRssi
Definition: ble5.h:609
uint8_t pduHeader
Definition: ble5.h:643
uint32_t crcInit
Definition: ble5.h:578
RCL_Command_TxPower txPower
Definition: ble5.h:757
uint8_t nRxFifoFull
Definition: ble5.h:738
uint8_t anchorValid
Definition: ble5.h:608
RCL_Command_TxPower txPower
Definition: ble5.h:209
Statistics structure for connection.
Definition: ble5.h:601
Definition: ble5.h:85
uint32_t accessAddress
Definition: ble5.h:322
RCL_Command common
Definition: ble5.h:207
RCL_Command_TxPower txPower
Definition: ble5.h:239
uint32_t accessAddress
Definition: ble5.h:493
RCL_StatsAdvScanInit * stats
Definition: ble5.h:214
Definition: ble5.h:82
uint16_t maxAuxPtrWaitTime
Definition: ble5.h:461
Advertiser context.
Definition: ble5.h:261
RCL_Ble5Channel channel
Definition: ble5.h:756
RCL_Ble5Channel channel
Definition: ble5.h:458
Filter list entry.
Definition: ble5.h:143
uint8_t cteInfo
Definition: ble5.h:645
RCL_Command common
Definition: ble5.h:834
uint8_t nRxIgnored
Definition: ble5.h:617
Connection command.
Definition: ble5.h:547
RCL_Command_TxPower txPower
Definition: ble5.h:376
Advertiser command.
Definition: ble5.h:206
uint8_t backoffUpper
Definition: ble5.h:419
RCL_Command_TxPower txPower
Definition: ble5.h:798
RCL_CtxAdvertiser * ctx
Definition: ble5.h:241
RCL_Ble5Channel channel
Definition: ble5.h:671
uint16_t nRxNok
Definition: ble5.h:736
Scanner and initiator context.
Definition: ble5.h:405
RCL_FilterList * filterList
Definition: ble5.h:406
uint32_t lastTimestamp
Definition: ble5.h:526
uint8_t maxPktLen
Definition: ble5.h:695
Definition: ble5.h:83
uint8_t nRxFifoFull
Definition: ble5.h:619
RCL_StatsAdvScanInit * stats
Definition: ble5.h:382
uint16_t localClockAccuracy
Definition: ble5.h:492
uint8_t nTxCtlAck
Definition: ble5.h:613
Periodic scanner context.
Definition: ble5.h:486
Channel Assessment command.
Definition: ble5.h:833
Initiator command.
Definition: ble5.h:339
Connection parameters.
Definition: ble5.h:186
uint8_t RCL_Ble5Channel
Type for BLE channels.
Definition: ble5.h:75
uint16_t numPackets
Definition: ble5.h:647