rflib
RFCC26X2.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016-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 @file RFCC26X2.h
34 @brief Radio Frequency (RF) Core Driver for the CC13X2 and CC26X2 device
35  family.
36 
37 To use the RF driver, ensure that the correct driver library for your device
38 is linked in and include the top-level header file as follows:
39 
40 @code
41 #include <ti/drivers/rf/RF.h>
42 @endcode
43 
44 <hr>
45 @anchor rf_overview
46 Overview
47 ========
48 
49 The RF driver provides access to the radio core on the CC13x2/CC26x2 device
50 family. It offers a high-level interface for command execution and to the
51 radio timer (RAT). The RF driver ensures the lowest possible power consumption
52 by providing automatic power management that is fully transparent for the
53 application.
54 
55 @note This document describes the features and usage of the RF driver API. For a
56 detailed explanation of the RF core, please refer to the
57 <a href='../../proprietary-rf/technical-reference-manual.html'><b>Technical
58 Reference Manual</b></a> or the
59 <a href='../../proprietary-rf/proprietary-rf-users-guide.html'><b>Proprietary
60 RF User Guide</b></a>.
61 
62 <b>Key features are:</b>
63 
64 @li @ref rf_command_execution "Synchronous execution of direct and immediate radio commands"
65 @li @ref rf_command_execution "Synchronous and asynchronous execution of radio operation commands"
66 @li Various @ref rf_event_callbacks "event hooks" to interact with RF commands and the RF driver
67 @li Automatic @ref rf_power_management "power management"
68 @li @ref rf_scheduling "Preemptive scheduler for RF operations" of different RF driver instances
69 @li Convenient @ref rf_rat "Access to the radio timer" (RAT)
70 @li @ref rf_tx_power "Programming the TX power level"
71 @li @ref rf_temperature_compensation "Temperature Compensation"
72 
73 @anchor rf_setup_and_configuration
74 Setup and configuration
75 =======================
76 
77 The RF driver can be configured at 4 different places:
78 
79 1. In the build configuration by choosing either the single-client or
80  multi-client driver version.
81 
82 2. At compile-time by setting hardware and software interrupt priorities
83  in the board support file.
84 
85 3. During run-time initialization by setting #RF_Params when calling
86  #RF_open().
87 
88 4. At run-time via #RF_control().
89 
90 
91 Build configuration
92 -------------------
93 
94 The RF driver comes in two versions: single-client and multi-client. The
95 single-client version allows only one driver instance to access the RF core at
96 a time. The multi-client driver version allows concurrent access to the RF
97 core with different RF settings. The multi-client driver has a slightly larger
98 footprint and is not needed for many proprietary applications. The driver
99 version can be selected in the build configuration by linking against a
100 RFCC26X2_multiMode pre-built library. The multi-client driver is the default
101 configuration in the SimpleLink SDKs.
102 
103 
104 Board configuration
105 -------------------
106 
107 The RF driver handles RF core hardware interrupts and uses software interrupts
108 for its internal state machine. For managing the interrupt priorities, it
109 expects the existence of a global #RFCC26XX_HWAttrsV2 object. This object is configured
110 in SysConfig and defined in the generated file `ti_drivers_config.c`.
111 By default, the priorities are set to the lowest possible value:
112 
113 @code
114 const RFCC26XX_HWAttrsV2 RFCC26XX_hwAttrs = {
115  .hwiPriority = INT_PRI_LEVEL7, // Lowest HWI priority: INT_PRI_LEVEL7
116  // Highest HWI priority: INT_PRI_LEVEL1
117 
118  .swiPriority = 0, // Lowest SWI priority: 0
119  // Highest SWI priority: Swi.numPriorities - 1
120 
121  .xoscHfAlwaysNeeded = true // Power driver always starts XOSC-HF: true
122  // RF driver will request XOSC-HF if needed: false
123 };
124 @endcode
125 
126 
127 Initialization
128 --------------
129 
130 When initiating an RF driver instance, the function #RF_open() accepts a
131 pointer to a #RF_Params object which might set several driver parameters. In
132 addition, it expects an #RF_Mode object and a setup command which is usually
133 generated by SmartRF Studio:
134 
135 @code
136 RF_Params rfParams;
137 RF_Params_init(&rfParams);
138 rfParams.nInactivityTimeout = 2000;
139 
140 RF_Handle rfHandle = RF_open(&rfObject, &RF_prop,
141  (RF_RadioSetup*)&RF_cmdPropRadioDivSetup, &rfParams);
142 @endcode
143 
144 The function #RF_open() returns a driver handle that is used for accessing the
145 correct driver instance. Please note that the first RF operation command
146 before an RX or TX operation command must be a `CMD_FS` to set the synthesizer
147 frequency. The RF driver caches both, the pointer to the setup command and the
148 physical `CMD_FS` for automatic power management.
149 
150 
151 Run-time configuration
152 ----------------------
153 
154 While a driver instance is opened, it can be re-configured with the function
155 #RF_control(). Various configuration parameters @ref RF_CTRL are available.
156 Example:
157 
158 @code
159 uint32_t timeoutUs = 2000;
160 RF_control(rfHandle, RF_CTRL_SET_INACTIVITY_TIMEOUT, &timeoutUs);
161 @endcode
162 
163 <hr>
164 @anchor rf_command_execution
165 Command execution
166 =================
167 
168 The RF core supports 3 different kinds of commands:
169 
170 1. Direct commands
171 2. Immediate commands
172 3. Radio operation commands
173 
174 Direct and immediate commands are dispatched via #RF_runDirectCmd() and
175 #RF_runImmediateCmd() respectively. These functions block until the command
176 has completed and return a status code of the type #RF_Stat when done.
177 
178 @code
179 #include <ti/devices/${DEVICE_FAMILY}/driverlib/rf_common_cmd.h>
180 
181 RF_Stat status = RF_runDirectCmd(rfHandle, CMD_ABORT);
182 assert(status == RF_StatCmdDoneSuccess);
183 @endcode
184 
185 Radio operation commands are potentially long-running commands and support
186 different triggers as well as conditional execution. Only one command can be
187 executed at a time, but the RF driver provides an internal queue that stores
188 commands until the RF core is free. Two interfaces are provided for radio
189 operation commands:
190 
191 1. Asynchronous: #RF_postCmd() and #RF_pendCmd()
192 2. Synchronous: #RF_runCmd()
193 
194 The asynchronous function #RF_postCmd() posts a radio operation into the
195 driver's internal command queue and returns a command handle of the type
196 #RF_CmdHandle which is an index in the command queue. The command is
197 dispatched as soon as the RF core has completed any previous radio operation
198 command.
199 
200 @code
201 #include <ti/devices/${DEVICE_FAMILY}/driverlib/rf_common_cmd.h>
202 
203 RF_Callback callback = NULL;
204 RF_EventMask subscribedEvents = 0;
205 RF_CmdHandle rxCommandHandle = RF_postCmd(rfHandle, (RF_Op*)&RF_cmdRx,
206  RF_PriorityNormal, callback, subscribedEvents);
207 
208 assert(rxCommandHandle != RF_ALLOC_ERROR); // The command queue is full.
209 @endcode
210 
211 Command execution happens in background. The calling task may proceed with
212 other work or execute direct and immediate commands to interact with the
213 posted radio operation. But beware that the posted command might not have
214 started, yet. By calling the function #RF_pendCmd() and subscribing events of
215 the type #RF_EventMask, it is possible to re-synchronize to a posted command:
216 
217 @code
218 // RF_EventRxEntryDone must have been subscribed in RF_postCmd().
219 RF_EventMask events = RF_pendCmd(rfHandle, rxCommandHandle,
220  RF_EventRxEntryDone);
221 
222 // Program proceeds after RF_EventRxEntryDone or after a termination event.
223 @endcode
224 
225 The function #RF_runCmd() is a combination of both, #RF_postCmd() and
226 #RF_pendCmd() and allows synchronous execution.
227 
228 A pending or already running command might be aborted at any time by calling
229 the function #RF_cancelCmd() or #RF_flushCmd(). These functions take command
230 handles as parameters, but can also just abort anything in the RF driver's
231 queue:
232 
233 @code
234 uint8_t abortGraceful = 1;
235 
236 // Abort a single command
237 RF_cancelCmd(rfHandle, rxCommandHandle, abortGraceful);
238 
239 // Abort anything
240 RF_flushCmd(rfHandle, RF_CMDHANDLE_FLUSH_ALL, abortGraceful);
241 @endcode
242 
243 When aborting a command, the return value of #RF_runCmd() or #RF_pendCmd()
244 will contain the termination reason in form of event flags. If the command is
245 in the RF driver queue, but has not yet start, the #RF_EventCmdCancelled event is
246 raised.
247 
248 <hr>
249 @anchor rf_event_callbacks
250 Event callbacks
251 ===============
252 
253 The RF core generates multiple interrupts during command execution. The RF
254 driver maps these interrupts 1:1 to callback events of the type #RF_EventMask.
255 Hence, it is unnecessary to implement own interrupt handlers. Callback events
256 are divided into 3 groups:
257 
258 - Command-specific events, documented for each radio operation command. An example
259  is the #RF_EventRxEntryDone for the `CMD_PROP_RX`.
260 
261 - Generic events, defined for all radio operations and originating on the RF core.
262  These are for instance #RF_EventCmdDone and #RF_EventLastCmdDone. Both events
263  indicate the termination of one or more RF operations.
264 
265 - Generic events, defined for all radio operations and originating in the RF driver,
266  for instance #RF_EventCmdCancelled.
267 
268 @sa @ref RF_Core_Events, @ref RF_Driver_Events.
269 
270 How callback events are subscribed was shown in the previous section. The
271 following snippet shows a typical event handler callback for a proprietary RX
272 operation:
273 
274 @code
275 void rxCallback(RF_Handle handle, RF_CmdHandle command, RF_EventMask events)
276 {
277  if (events & RF_EventRxEntryDone)
278  {
279  Semaphore_post(rxPacketSemaphore);
280  }
281  if (events & RF_EventLastCmdDone)
282  {
283  // ...
284  }
285 }
286 @endcode
287 
288 In addition, the RF driver can generate error and power-up events that do not
289 relate directly to the execution of a radio command. Such events can be
290 subscribed by specifying the callback function pointers #RF_Params::pErrCb and
291 #RF_Params::pPowerCb.
292 
293 All callback functions run in software interrupt (SWI) context. Therefore,
294 only a minimum amount of code should be executed. When using absolute timed
295 commands with tight timing constraints, then it is recommended to set the RF
296 driver SWIs to a high priority.
297 See @ref rf_setup_and_configuration "Setup and configuration" for more details.
298 
299 <hr>
300 @anchor rf_power_management
301 Power management
302 ================
303 
304 The RF core is a hardware peripheral and can be switched on and off. The RF
305 driver handles that automatically and provides the following power
306 optimization features:
307 
308 - Lazy power-up and radio setup caching
309 - Power-down on inactivity
310 - Deferred dispatching of commands with absolute timing
311 
312 
313 Lazy power-up and radio setup caching
314 -------------------------------------
315 
316 The RF core optimizes the power consumption by enabling the RF core as late as
317 possible. For instance does #RF_open() not power up the RF core immediately.
318 Instead, it waits until the first radio operation command is dispatched by
319 #RF_postCmd() or #RF_runCmd().
320 
321 The function #RF_open() takes a radio setup command as parameter and expects a
322 `CMD_FS` command to follow. The pointer to the radio setup command and the
323 whole `CMD_FS` command are cached internally in the RF driver. They will be
324 used for every proceeding power-up procedure. Whenever the client re-runs a
325 setup command, the driver updates its internal cache with the new settings.
326 RF driver also caches the first CMD_FS from the list of done commands. Please
327 refer #RF_postCmd() for limitations of command chains.
328 
329 By default, the RF driver measures the time that it needs for the power-up
330 procedure and uses that as an estimate for the next power cycle. On the
331 CC13x0/CC26x0 devices, power-up takes usually 1.6 ms. Automatic measurement
332 can be suppressed by specifying a custom power-up time with
333 #RF_Params::nPowerUpDuration. In addition, the client might set
334 #RF_Params::nPowerUpDurationMargin to cover any uncertainty when doing
335 automatic measurements. This is necessary in applications with a high hardware
336 interrupt load which can delay the RF driver's internal state machine
337 execution.
338 
339 
340 Power-down on inactivity
341 ------------------------
342 
343 Whenever a radio operation completes and there is no other radio operation in
344 the queue, the RF core might be powered down. There are two options in the RF
345 driver:
346 
347 - **Automatic power-down** by setting the parameter
348  #RF_Params::nInactivityTimeout. The RF core will then start a timer after
349  the last command in the queue has completed. The default timeout is "forever"
350  and this feature is disabled.
351 
352 - **Manual power-down** by calling #RF_yield(). The client should do this
353  whenever it knows that no further radio operation will be executed for a
354  couple of milliseconds.
355 
356 During the power-down procedure the RF driver stops the radio timer and saves
357 a synchronization timestamp for the next power-up. This keeps the radio timer
358 virtually in sync with the RTC even though it is not running all the time. The
359 synchronization is done in hardware.
360 
361 
362 Deferred dispatching of commands with absolute timing
363 -----------------------------------------------------
364 
365 When dispatching a radio operation command with an absolute start trigger that
366 is ahead in the future, the RF driver defers the execution and powers the RF
367 core down until the command is due. It does that only, when:
368 
369 1. `cmd.startTrigger.triggerType` is set to `TRIG_ABSTIME`
370 
371 2. The difference between #RF_getCurrentTime() and `cmd.startTime`
372  is at not more than 3/4 of a full RAT cycle. Otherwise the driver assumes
373  that `cmd.startTime` is in the past.
374 
375 3. There is enough time to run a full power cycle before `cmd.startTime` is
376  due. That includes:
377 
378  - the power-down time (fixed value, 1 ms) if the RF core is already
379  powered up,
380 
381  - the measured power-up duration or the value specified by
382  #RF_Params::nPowerUpDuration,
383 
384  - the power-up safety margin #RF_Params::nPowerUpDurationMargin
385  (the default is 282 microseconds).
386 
387 If one of the conditions are not fulfilled, the RF core is kept up and
388 running and the command is dispatched immediately. This ensures, that the
389 command will execute on-time and not miss the configured start trigger.
390 
391 <hr>
392 @anchor rf_scheduling
393 Preemptive scheduling of RF commands in multi-client applications
394 =================================================================
395 
396 Schedule BLE and proprietary radio commands.
397 
398 @code
399 RF_Object rfObject_ble;
400 RF_Object rfObject_prop;
401 
402 RF_Handle rfHandle_ble, rfHandle_prop;
403 RF_Params rfParams_ble, rfParams_prop;
404 RF_ScheduleCmdParams schParams_ble, schParams_prop;
405 
406 RF_Mode rfMode_ble =
407 {
408  .rfMode = RF_MODE_MULTIPLE, // rfMode for dual mode
409  .cpePatchFxn = &rf_patch_cpe_ble,
410  .mcePatchFxn = 0,
411  .rfePatchFxn = &rf_patch_rfe_ble,
412 };
413 
414 RF_Mode rfMode_prop =
415 {
416  .rfMode = RF_MODE_MULTIPLE, // rfMode for dual mode
417  .cpePatchFxn = &rf_patch_cpe_genfsk,
418  .mcePatchFxn = 0,
419  .rfePatchFxn = 0,
420 };
421 
422 // Init RF and specify non-default parameters
423 RF_Params_init(&rfParams_ble);
424 rfParams_ble.nInactivityTimeout = 200; // 200us
425 
426 RF_Params_init(&rfParams_prop);
427 rfParams_prop.nInactivityTimeout = 200; // 200us
428 
429 // Configure RF schedule command parameters directly.
430 schParams_ble.priority = RF_PriorityNormal;
431 schParams_ble.endTime = 0;
432 schParams_ble.allowDelay = RF_AllowDelayAny;
433 
434 // Alternatively, use the helper function to configure the default behavior
435 RF_ScheduleCmdParams_init(&schParams_prop);
436 
437 // Open BLE and proprietary RF handles
438 rfHandle_ble = RF_open(rfObj_ble, &rfMode_ble, (RF_RadioSetup*)&RF_cmdRadioSetup, &rfParams_ble);
439 rfHandle_prop = RF_open(rfObj_prop, &rfMode_prop, (RF_RadioSetup*)&RF_cmdPropRadioDivSetup, &rfParams_prop);
440 
441 // Run a proprietary Fs command
442 RF_runCmd(rfHandle_pro, (RF_Op*)&RF_cmdFs, RF_PriorityNormal, NULL, NULL);
443 
444 // Schedule a proprietary RX command
445 RF_scheduleCmd(rfHandle_pro, (RF_Op*)&RF_cmdPropRx, &schParams_prop, &prop_callback, RF_EventRxOk);
446 
447 // Schedule a BLE advertiser command
448 RF_scheduleCmd(rfHandle_ble, (RF_Op*)&RF_cmdBleAdv, &schParams_ble, &ble_callback,
449  (RF_EventLastCmdDone | RF_EventRxEntryDone | RF_EventTxEntryDone));
450 
451 @endcode
452 
453 <hr>
454 @anchor rf_rat
455 Accessing the Radio Timer (RAT)
456 ==============================
457 
458 The Radio Timer on the RF core is an independent 32 bit timer running at a
459 tick rate of 4 ticks per microsecond. It is only physically active while the
460 RF core is on. But because the RF driver resynchronizes the RAT to the RTC on
461 every power-up, it appears to the application as the timer is always running.
462 The RAT accuracy depends on the system HF clock while the RF core is active
463 and on the LF clock while the RF core is powered down.
464 
465 The current RAT time stamp can be obtained by #RF_getCurrentTime():
466 
467 @code
468 uint32_t now = RF_getCurrentTime();
469 @endcode
470 
471 The RAT has 8 independent channels that can be set up in capture and compare
472 mode by #RF_ratCapture() and #RF_ratCompare() respectively. Three of these
473 channels are accessible by the RF driver. Each channel may be connected to
474 physical hardware signals for input and output or may trigger a callback
475 function.
476 
477 In order to allocate a RAT channel and trigger a callback function at a
478 certain time stamp, use #RF_ratCompare():
479 
480 @code
481 RF_Handle rfDriver;
482 RF_RatConfigCompare config;
483 RF_RatConfigCompare_init(&config);
484 config.callback = &onRatTriggered;
485 config.channel = RF_RatChannelAny;
486 config.timeout = RF_getCurrentTime() + RF_convertMsToRatTicks(1701);
487 
488 RF_RatHandle ratHandle = RF_ratCompare(rfDriver, &config, nullptr);
489 assert(ratHandle != RF_ALLOC_ERROR);
490 
491 void onRatTriggered(RF_Handle h, RF_RatHandle rh, RF_EventMask e, uint32_t compareCaptureTime)
492 {
493  if (e & RF_EventError)
494  {
495  // RF driver failed to trigger the callback on time.
496  }
497  printf("RAT has triggered at %u.", compareCaptureTime);
498 
499  // Trigger precisely with the same period again
500  config.timeout = compareCaptureTime + RF_convertMsToRatTicks(1701);
501  ratHandle = RF_ratCompare(rfDriver, &config, nullptr);
502  assert(ratHandle != RF_ALLOC_ERROR);
503 }
504 @endcode
505 
506 The RAT may be used to capture a time stamp on an edge of a physical pin. This
507 can be achieved with #RF_ratCapture().
508 
509 @code
510 #include <ti/devices/DeviceFamily.h>
511 #include DeviceFamily_constructPath(driverlib/ioc.h)
512 #include <ti/drivers/GPIO.h>
513 #include <ti/drivers/gpio/GPIOCC26XX.h>
514 // Map IO 26 to RFC_GPI0
515 GPIO_setConfigAndMux(IOID_26, GPIO_CFG_NO_DIR, IOC_PORT_RFC_GPI0);
516 
517 RF_Handle rfDriver;
518 RF_RatConfigCapture config;
519 RF_RatConfigCapture_init(&config);
520 config.callback = &onSignalTriggered;
521 config.channel = RF_RatChannelAny;
522 config.source = RF_RatCaptureSourceRfcGpi0;
523 config.captureMode = RF_RatCaptureModeRising;
524 config.repeat = RF_RatCaptureRepeat;
525 
526 RF_RatHandle ratHandle = RF_ratCapture(rfDriver, &config, nullptr);
527 assert(ratHandle != RF_ALLOC_ERROR);
528 
529 void onSignalTriggered(RF_Handle h, RF_RatHandle rh, RF_EventMask e, uint32_t compareCaptureTime)
530 {
531  if (e & RF_EventError)
532  {
533  // An internal error has occurred
534  }
535  printf("Rising edge detected on IO 26 at %u.", compareCaptureTime);
536 }
537 @endcode
538 
539 In both cases, the RAT may generate an output signal when being triggered. The
540 signal can be routed to a physical IO pin:
541 
542 @code
543 // Generate a pulse on an internal RAT output signal
544 RF_RatConfigOutput output;
545 RF_RatConfigOutput_init(&output);
546 output.mode = RF_RatOutputModePulse;
547 output.select = RF_RatOutputSelectRatGpo3;
548 RF_ratCompare(...);
549 
550 // Map RatGpo3 to one of four intermediate doorbell signals.
551 // This has to be done in the override list in order to take permanent effect.
552 // The override list can be found in the RF settings .c file exported from
553 // SmartRF Studio.
554 // Attention: This will change the default mapping of the PA and LNA signal as well.
555 #include <ti/devices/[DEVICE_FAMILY]/inc/hw_rfc_dbell.h>
556 static uint32_t pOverrides[] =
557 {
558  HW_REG_OVERRIDE(0x1110, RFC_DBELL_SYSGPOCTL_GPOCTL2_RATGPO3),
559  // ...
560 }
561 
562 // Finally, route the intermediate doorbell signal to a physical pin.
563 #include <ti/devices/DeviceFamily.h>
564 #include DeviceFamily_constructPath(driverlib/ioc.h)
565 #include <ti/drivers/GPIO.h>
566 #include <ti/drivers/gpio/GPIOCC26XX.h>
567 GPIO_setConfigAndMux(IOID_17, GPIO_CFG_NO_DIR, IOC_PORT_RFC_GPO2);
568 @endcode
569 
570 <hr>
571 @anchor rf_tx_power
572 Programming the TX power level
573 ==============================
574 
575 The application can program a TX power level for each RF client with the function
576 #RF_setTxPower(). The new value takes immediate effect if the RF core is up and
577 running. Otherwise, it is stored in the RF driver client configuration.
578 
579 TX power may be stored in a lookup table in ascending order. This table is usually
580 generated and exported from SmartRF Studio together with the rest of the PHY configuration.
581 A typical power table my look as follows:
582 @code
583 RF_TxPowerTable_Entry txPowerTable[] = {
584  { .power = 11, .value = { 0x1233, RF_TxPowerTable_DefaultPA }},
585  { .power = 13, .value = { 0x1234, RF_TxPowerTable_DefaultPA }},
586  // ...
587  RF_TxPowerTable_TERMINATION_ENTRY
588 };
589 @endcode
590 
591 @note Some devices offer a high-power PA in addition to the default PA.
592 A client must not mix configuration values in the same power table and must
593 not hop from a default PA configuration to a high-power PA configuration unless it
594 can guarantee that the RF setup command is re-executed in between.
595 
596 Given this power table format, the application may program a new power level in multiple
597 ways. It can use convenience functions to search a certain power level
598 in the power table or may access the table index-based:
599 @code
600 // Set a certain power level. Search a matching level.
601 RF_setTxPower(h, RF_TxPowerTable_findValue(txPowerTable, 17));
602 
603 // Set a certain power level with a known level.
604 RF_setTxPower(h, txPowerTable[3].value);
605 
606 // Set a certain power without using a human readable level.
607 RF_setTxPower(h, value);
608 
609 // Set maximum power. Search the value.
610 RF_setTxPower(h, RF_TxPowerTable_findValue(txPowerTable, RF_TxPowerTable_MAX_DBM));
611 
612 // Set minimum power without searching.
613 RF_setTxPower(h, txPowerTable[0].value);
614 
615 // Set minimum power. Search the value.
616 RF_setTxPower(h, RF_TxPowerTable_findValue(txPowerTable, RF_TxPowerTable_MIN_DBM));
617 
618 // Set maximum power without searching.
619 int32_t lastIndex = sizeof(txPowerTable) / sizeof(RF_TxPowerTable_Entry) - 2;
620 RF_setTxPower(h, txPowerTable[lastIndex].value);
621 @endcode
622 
623 The current configured power level for a client can be retrieved by #RF_getTxPower().
624 @code
625 // Get the current configured power level.
626 int8_t power = RF_TxPowerTable_findPowerLevel(txPowerTable, RF_getTxPower(h));
627 @endcode
628 
629 <hr>
630 @anchor rf_temperature_compensation
631 Temperature Compensation
632 ==============================
633 
634 The RF driver improves the accuracy of XOSC_HF by performing temperature
635 dependent compensation. This is commonly done in the BAW/SIP devices where the
636 compensation parameters are already available inside the package.
637 
638 When temperature compensation is enabled, RF_enableHPOSCTemperatureCompensation()
639 is called during the board initialization(in Board_init()). This function enables
640 the RF driver to update HPOSC_OVERRIDE with the correct frequency offset according
641 to the ambient temperature at radio setup.
642 
643 @code
644 // Enable RF Temperature Compensation
645 status = RF_enableHPOSCTemperatureCompensation(void)
646 @endcode
647 
648 The RF driver also subscribes to a temperature notification event that triggers
649 for 3 degree Celsius change in temperature. At every 3 degree Celsius change in
650 temperature, it updates the RF core with the new frequency offset and re-subscribes
651 to the temperature notification with updated thresholds.
652 
653 @warning At the moment, temperature compensation is only supported on BAW or SIP
654 device variants.
655 
656 Error Handling
657 --------------
658 When temperature compensation is enabled, but HPOSC_OVERRIDE is not found, then
659 RF_open() returns a NULL handle.
660 
661 RF_enableHPOSCTemperatureCompensation() returns #RF_StatInvalidParamsError if
662 the temperature notification fails to register.
663 
664 When the temperature notification fails to register, a global callback can be
665 executed by subscribing to the event #RF_GlobalEventTempNotifyFail defined in
666 #RF_GlobalEvent.
667 
668 @note The #RF_Handle in the global callback function will belong to the current
669 active client and this client is not causing the failure, since neither the
670 temperature event nor the failure is client specific.
671 
672 <hr>
673 @anchor rf_convenience_features
674 Convenience features
675 ====================
676 
677 The RF driver simplifies often needed tasks and provides additional functions.
678 For instance, it can read the RSSI while the RF core is in RX mode using the
679 function :tidrivers_api:`RF_getRssi`:
680 
681 @code
682 int8_t rssi = RF_getRssi(rfHandle);
683 assert (rssi != RF_GET_RSSI_ERROR_VAL); // Could not read the RSSI
684 @endcode
685 
686 <hr>
687  ******************************************************************************
688  */
689 
690 //*****************************************************************************
691 //
696 //
697 //*****************************************************************************
698 
699 #ifndef ti_drivers_rfcc26x2__include
700 #define ti_drivers_rfcc26x2__include
701 
702 #ifdef __cplusplus
703 extern "C" {
704 #endif
705 
706 #include <stdint.h>
707 #include <stdbool.h>
708 
709 #include <ti/drivers/dpl/ClockP.h>
710 #include <ti/drivers/dpl/SemaphoreP.h>
711 #include <ti/drivers/utils/List.h>
712 
713 #include <ti/devices/DeviceFamily.h>
714 #include DeviceFamily_constructPath(driverlib/rf_common_cmd.h)
715 #include DeviceFamily_constructPath(driverlib/rf_prop_cmd.h)
716 #include DeviceFamily_constructPath(driverlib/rf_ble_cmd.h)
717 #include DeviceFamily_constructPath(driverlib/rf_ieee_cmd.h)
718 
730 #define RF_EventCmdDone (1 << 0)
731 #define RF_EventLastCmdDone (1 << 1)
732 #define RF_EventFGCmdDone (1 << 2)
733 #define RF_EventLastFGCmdDone (1 << 3)
734 #define RF_EventTxDone (1 << 4)
735 #define RF_EventTXAck (1 << 5)
736 #define RF_EventTxCtrl (1 << 6)
737 #define RF_EventTxCtrlAck (1 << 7)
738 #define RF_EventTxCtrlAckAck (1 << 8)
739 #define RF_EventTxRetrans (1 << 9)
740 #define RF_EventTxEntryDone (1 << 10)
741 #define RF_EventTxBufferChange (1 << 11)
742 #define RF_EventPaChanged (1 << 14)
743 #define RF_EventSamplesEntryDone (1 << 15)
744 #define RF_EventRxOk (1 << 16)
745 #define RF_EventRxNOk (1 << 17)
746 #define RF_EventRxIgnored (1 << 18)
747 #define RF_EventRxEmpty (1 << 19)
748 #define RF_EventRxCtrl (1 << 20)
749 #define RF_EventRxCtrlAck (1 << 21)
750 #define RF_EventRxBufFull (1 << 22)
751 #define RF_EventRxEntryDone (1 << 23)
752 #define RF_EventDataWritten (1 << 24)
753 #define RF_EventNDataWritten (1 << 25)
754 #define RF_EventRxAborted (1 << 26)
755 #define RF_EventRxCollisionDetected (1 << 27)
756 #define RF_EventModulesUnlocked (1 << 29)
757 #define RF_EventInternalError (uint32_t)(1 << 31)
758 #define RF_EventMdmSoft 0x0000002000000000
759 
768 #define RF_EventCmdCancelled 0x1000000000000000
769 #define RF_EventCmdAborted 0x2000000000000000
770 #define RF_EventCmdStopped 0x4000000000000000
771 #define RF_EventRatCh 0x0800000000000000
772 #define RF_EventPowerUp 0x0400000000000000
773 #define RF_EventError 0x0200000000000000
774 #define RF_EventCmdPreempted 0x0100000000000000
775 
793 #define RF_CTRL_SET_INACTIVITY_TIMEOUT 0
794 
803 #define RF_CTRL_UPDATE_SETUP_CMD 1
804 
809 #define RF_CTRL_SET_POWERUP_DURATION_MARGIN 2
810 
817 #define RF_CTRL_SET_PHYSWITCHING_DURATION_MARGIN 3
818 
825 #define RF_CTRL_SET_RAT_RTC_ERR_TOL_VAL 4
826 
837 #define RF_CTRL_SET_POWER_MGMT 5
838 
859 #define RF_CTRL_SET_HWI_PRIORITY 6
860 
881 #define RF_CTRL_SET_SWI_PRIORITY 7
882 
891 #define RF_CTRL_SET_AVAILABLE_RAT_CHANNELS_MASK 8
892 
906 #define RF_CTRL_COEX_CONTROL 9
907 
920 #define RF_TxPowerTable_MIN_DBM -128
921 
928 #define RF_TxPowerTable_MAX_DBM 126
929 
935 #define RF_TxPowerTable_INVALID_DBM 127
936 
954 #define RF_TxPowerTable_INVALID_VALUE 0x3fffff
955 
971 #define RF_TxPowerTable_TERMINATION_ENTRY \
972  { .power = RF_TxPowerTable_INVALID_DBM, .value = { .rawValue = RF_TxPowerTable_INVALID_VALUE, .paType = RF_TxPowerTable_DefaultPA } }
973 
980 #define RF_TxPowerTable_DEFAULT_PA_ENTRY(bias, gain, boost, coefficient) \
981  { .rawValue = ((bias) << 0) | ((gain) << 6) | ((boost) << 8) | ((coefficient) << 9), .paType = RF_TxPowerTable_DefaultPA }
982 
989 #define RF_TxPowerTable_CC13x4Sub1GHz_DEFAULT_PA_ENTRY(bias, gain, boost, coefficient, gain2) \
990  { .rawValue = ((bias) << 0) | ((gain) << 6) | ((boost) << 8) | ((coefficient) << 9) | ((gain2) << 16), .paType = RF_TxPowerTable_DefaultPA }
991 
998 #define RF_TxPowerTable_HIGH_PA_ENTRY(bias, ibboost, boost, coefficient, ldotrim) \
999  { .rawValue = ((bias) << 0) | ((ibboost) << 6) | ((boost) << 8) | ((coefficient) << 9) | ((ldotrim) << 16), .paType = RF_TxPowerTable_HighPA }
1000 
1001 
1008 #define RF_GET_RSSI_ERROR_VAL (-128)
1009 #define RF_CMDHANDLE_FLUSH_ALL (-1)
1010 #define RF_ALLOC_ERROR (-2)
1011 #define RF_SCHEDULE_CMD_ERROR (-3)
1012 #define RF_ERROR_RAT_PROG (-255)
1013 #define RF_ERROR_INVALID_RFMODE (-256)
1014 #define RF_ERROR_CMDFS_SYNTH_PROG (-257)
1015 
1016 #define RF_NUM_SCHEDULE_ACCESS_ENTRIES 2
1017 #define RF_NUM_SCHEDULE_COMMAND_ENTRIES 8
1018 #define RF_NUM_SCHEDULE_MAP_ENTRIES (RF_NUM_SCHEDULE_ACCESS_ENTRIES + RF_NUM_SCHEDULE_COMMAND_ENTRIES)
1019 #define RF_SCH_MAP_CURRENT_CMD_OFFSET RF_NUM_SCHEDULE_ACCESS_ENTRIES
1020 #define RF_SCH_MAP_PENDING_CMD_OFFSET (RF_SCH_MAP_CURRENT_CMD_OFFSET + 2)
1021 
1022 #define RF_ABORT_PREEMPTION (1<<2)
1023 #define RF_ABORT_GRACEFULLY (1<<0)
1024 
1025 #define RF_SCH_CMD_EXECUTION_TIME_UNKNOWN 0
1026 
1027 #define RF_RAT_ANY_CHANNEL (-1)
1028 #define RF_RAT_TICKS_PER_US 4
1029 
1030 #define RF_LODIVIDER_MASK 0x7F
1031 
1032 
1039 #define RF_STACK_ID_DEFAULT 0x00000000
1040 #define RF_STACK_ID_154 0x8000F154
1041 #define RF_STACK_ID_BLE 0x8000FB1E
1042 #define RF_STACK_ID_EASYLINK 0x8000FEA2
1043 #define RF_STACK_ID_THREAD 0x8000FEAD
1044 #define RF_STACK_ID_TOF 0x8000F00F
1045 #define RF_STACK_ID_CUSTOM 0x0000FC00
1046 
1051 #define RF_convertUsToRatTicks(microseconds) \
1052  ((microseconds) * (RF_RAT_TICKS_PER_US))
1053 
1057 #define RF_convertMsToRatTicks(milliseconds) \
1058  ((milliseconds) * 1000 * (RF_RAT_TICKS_PER_US))
1059 
1063 #define RF_convertRatTicksToUs(ticks) \
1064  ((ticks) / (RF_RAT_TICKS_PER_US))
1065 
1069 #define RF_convertRatTicksToMs(ticks) \
1070  ((ticks) / (1000 * (RF_RAT_TICKS_PER_US)))
1071 
1072 
1084 typedef struct {
1085  uint32_t rawValue:22;
1086  uint32_t __dummy:9;
1090  uint32_t paType:1;
1095 
1114 typedef struct
1115 {
1116  int8_t power;
1117 
1120 } __attribute__((packed)) RF_TxPowerTable_Entry;
1121 
1122 
1129 typedef enum {
1133 
1134 
1149 
1150 
1159 typedef struct {
1160  uint8_t rfMode;
1161  void (*cpePatchFxn)(void);
1162  void (*mcePatchFxn)(void);
1163  void (*rfePatchFxn)(void);
1164 } RF_Mode;
1165 
1176 typedef enum {
1180 } RF_Priority;
1181 
1192 typedef enum {
1196 } RF_PriorityCoex;
1197 
1208 typedef enum {
1212 } RF_RequestCoex;
1213 
1220 typedef struct {
1223 } RF_CoexOverride;
1224 
1231 typedef struct {
1237 
1246 typedef enum {
1252  RF_StatError = 0x80,
1256 } RF_Stat;
1257 
1262 typedef uint64_t RF_EventMask;
1263 
1273 typedef union {
1275  rfc_CMD_RADIO_SETUP_t common;
1284 } RF_RadioSetup;
1285 
1314 typedef enum {
1317 
1321 } RF_ClientEvent;
1322 
1384 typedef enum {
1386 
1390 
1393  RF_GlobalEventInit = (1 << 2),
1394 
1398 
1402 
1406 
1410 
1414 } RF_GlobalEvent;
1415 
1416 
1420 typedef uint32_t RF_ClientEventMask;
1421 
1425 typedef uint32_t RF_GlobalEventMask;
1426 
1439 typedef int16_t RF_CmdHandle;
1440 
1461 typedef struct RF_ObjectMultiMode RF_Object;
1462 
1466 struct RF_ObjectMultiMode{
1468  struct {
1469  uint32_t nInactivityTimeout;
1470  RF_Mode* pRfMode;
1471  RF_RadioSetup* pRadioSetup;
1472  uint32_t nPhySwitchingDuration;
1473  uint32_t nPowerUpDuration;
1474  uint32_t nPowerUpDurationFs;
1475  bool bMeasurePowerUpDuration;
1476  bool bUpdateSetup;
1477  uint16_t nPowerUpDurationMargin;
1478  void* pPowerCb;
1479  void* pErrCb;
1480  void* pClientEventCb;
1481  RF_ClientEventMask nClientEventMask;
1482  uint16_t nPhySwitchingDurationMargin;
1483  uint32_t nID;
1484  } clientConfig;
1486  struct {
1487  struct {
1488  rfc_CMD_FS_t cmdFs;
1489  } mode_state;
1490  SemaphoreP_Struct semSync;
1491  RF_EventMask volatile eventSync;
1492  void* pCbSync;
1493  RF_EventMask unpendCause;
1494  ClockP_Struct clkReqAccess;
1495  bool bYielded;
1496  } state;
1497 };
1498 
1507 
1508 
1517 typedef int8_t RF_RatHandle;
1518 
1522 typedef enum {
1529 } RF_InfoType;
1530 
1536 typedef union {
1537  RF_CmdHandle ch;
1538  uint16_t availRatCh;
1540  RF_Handle pClientList[2];
1541  uint32_t phySwitchingTimeInUs[2];
1543 } RF_InfoVal;
1544 
1548 typedef struct {
1549  RF_CmdHandle ch;
1550  RF_Handle pClient;
1551  uint32_t startTime;
1552  uint32_t endTime;
1555 
1559 typedef struct {
1562 } RF_ScheduleMap;
1563 
1589 typedef void (*RF_Callback)(RF_Handle h, RF_CmdHandle ch, RF_EventMask e);
1590 
1604 typedef void (*RF_RatCallback)(RF_Handle h, RF_RatHandle rh, RF_EventMask e, uint32_t compareCaptureTime);
1605 
1621 typedef void (*RF_ClientCallback)(RF_Handle h, RF_ClientEvent event, void* arg);
1622 
1636 typedef void (*RF_GlobalCallback)(RF_Handle h, RF_GlobalEvent event, void* arg);
1637 
1646 typedef struct {
1648 
1650  uint32_t nPowerUpDuration;
1651 
1655 
1658 
1660 
1665 
1667 
1669  RF_ClientEventMask nClientEventMask;
1670 
1672  uint32_t nID;
1673 } RF_Params;
1674 
1678 typedef enum {
1681 } RF_StartType;
1682 
1686 typedef enum {
1691  } RF_EndType;
1692 
1693 /* RF command. */
1694 typedef struct RF_Cmd_s RF_Cmd;
1695 
1696 /* RF command . */
1697 struct RF_Cmd_s {
1698  List_Elem _elem; /* Pointer to next and previous elements. */
1699  RF_Callback volatile pCb; /* Pointer to callback function */
1700  RF_Op* pOp; /* Pointer to (chain of) RF operations(s) */
1701  RF_Object* pClient; /* Pointer to client */
1702  RF_EventMask bmEvent; /* Enable mask for interrupts from the command */
1703  RF_EventMask pastifg; /* Accumulated value of events happened within a command chain */
1704  RF_EventMask rfifg; /* Return value for callback 0:31 - RF_CPE0_INT, 32:63 - RF_HW_INT */
1705  RF_CmdHandle ch; /* Command handle */
1706  RF_Priority ePri; /* Priority of RF command */
1707  uint8_t volatile flags; /* [0: Aborted, 1: Stopped, 2: canceled] */
1708  uint32_t startTime; /* Command start time (in RAT ticks) */
1709  RF_StartType startType; /* Command start time type */
1710  uint32_t allowDelay; /* Delay allowed if the start time cannot be met. */
1711  uint32_t endTime; /* Command end time (in RAT ticks) */
1712  RF_EndType endType; /* Command end type */
1713  uint32_t duration; /* Command duration (in RAT ticks) */
1714  uint32_t activityInfo; /* General value supported by user */
1715  RF_PriorityCoex coexPriority; /* Command priority to use for coexistence request. */
1716  RF_RequestCoex coexRequest; /* Command REQUEST line behavior to use for coexistence request. */
1717 };
1718 
1724 typedef struct {
1725  uint8_t hwiPriority;
1726  uint8_t swiPriority;
1729  RF_GlobalEventMask globalEventMask;
1731 
1736 typedef enum
1737 {
1742 
1745 typedef enum
1746 {
1754 
1773 typedef RF_ScheduleStatus (*RF_SubmitHook)(RF_Cmd* pCmdNew, RF_Cmd* pCmdBg, RF_Cmd* pCmdFg, List_List* pPendQueue, List_List* pDoneQueue);
1774 
1792 typedef RF_ExecuteAction (*RF_ExecuteHook)(RF_Cmd* pCmdBg, RF_Cmd* pCmdFg, List_List* pPendQueue, List_List* pDoneQueue, bool bConflict, RF_Cmd* conflictCmd);
1793 
1799 typedef struct {
1803 
1807 typedef enum {
1809  RF_AllowDelayAny = UINT32_MAX
1810 } RF_AllowDelay;
1811 
1812 /* @brief RF schedule command parameter struct
1813  *
1814  * RF schedule command parameters are used with the RF_scheduleCmd() call.
1815  */
1816 typedef struct {
1817  uint32_t startTime;
1819  uint32_t allowDelay;
1820  uint32_t endTime;
1825  uint32_t duration;
1826  uint32_t activityInfo;
1830 
1835 typedef struct {
1836  uint32_t duration;
1837  uint32_t startTime;
1839 } RF_AccessParams;
1840 
1847 typedef enum {
1853 
1859 typedef enum {
1869 
1875 typedef enum {
1881 
1888 typedef enum {
1892 
1907 typedef enum {
1915 
1925 typedef enum {
1934 
1939 typedef struct {
1941  RF_RatHandle channel;
1946 
1951 typedef struct {
1953  RF_RatHandle channel;
1954  uint32_t timeout;
1957 
1962 typedef struct {
1966 
1999 extern RF_Handle RF_open(RF_Object *pObj, RF_Mode *pRfMode, RF_RadioSetup *pRadioSetup, RF_Params *params);
2000 
2014 extern void RF_close(RF_Handle h);
2015 
2026 extern uint32_t RF_getCurrentTime(void);
2027 
2082 extern RF_CmdHandle RF_postCmd(RF_Handle h, RF_Op *pOp, RF_Priority ePri, RF_Callback pCb, RF_EventMask bmEvent);
2083 
2094 extern RF_ScheduleStatus RF_defaultSubmitPolicy(RF_Cmd* pCmdNew, RF_Cmd* pCmdBg, RF_Cmd* pCmdFg, List_List* pPendQueue, List_List* pDoneQueue);
2095 
2107 extern RF_ExecuteAction RF_defaultExecutionPolicy(RF_Cmd* pCmdBg, RF_Cmd* pCmdFg, List_List* pPendQueue, List_List* pDoneQueue, bool bConflict, RF_Cmd* conflictCmd);
2108 
2109 
2118 extern void RF_ScheduleCmdParams_init(RF_ScheduleCmdParams *pSchParams);
2119 
2146 extern RF_CmdHandle RF_scheduleCmd(RF_Handle h, RF_Op *pOp, RF_ScheduleCmdParams *pSchParams, RF_Callback pCb, RF_EventMask bmEvent);
2147 
2207 extern RF_EventMask RF_pendCmd(RF_Handle h, RF_CmdHandle ch, RF_EventMask bmEvent);
2208 
2236 extern RF_EventMask RF_runCmd(RF_Handle h, RF_Op *pOp, RF_Priority ePri, RF_Callback pCb, RF_EventMask bmEvent);
2237 
2257 extern RF_EventMask RF_runScheduleCmd(RF_Handle h, RF_Op *pOp, RF_ScheduleCmdParams *pSchParams, RF_Callback pCb, RF_EventMask bmEvent);
2258 
2278 extern RF_Stat RF_cancelCmd(RF_Handle h, RF_CmdHandle ch, uint8_t mode);
2279 
2298 extern RF_Stat RF_flushCmd(RF_Handle h, RF_CmdHandle ch, uint8_t mode);
2299 
2313 extern RF_Stat RF_runImmediateCmd(RF_Handle h, uint32_t *pCmdStruct);
2314 
2328 extern RF_Stat RF_runDirectCmd(RF_Handle h, uint32_t cmd);
2329 
2344 extern void RF_yield(RF_Handle h);
2345 
2356 extern void RF_Params_init(RF_Params *params);
2357 
2368 extern RF_Stat RF_getInfo(RF_Handle h, RF_InfoType type, RF_InfoVal *pValue);
2369 
2378 extern int8_t RF_getRssi(RF_Handle h);
2379 
2389 extern RF_Op* RF_getCmdOp(RF_Handle h, RF_CmdHandle cmdHnd);
2390 
2399 extern void RF_RatConfigCompare_init(RF_RatConfigCompare* channelConfig);
2400 
2409 extern void RF_RatConfigCapture_init(RF_RatConfigCapture* channelConfig);
2410 
2419 extern void RF_RatConfigOutput_init(RF_RatConfigOutput* ioConfig);
2420 
2462 extern RF_RatHandle RF_ratCompare(RF_Handle rfHandle, RF_RatConfigCompare* channelConfig, RF_RatConfigOutput* ioConfig);
2463 
2503 extern RF_RatHandle RF_ratCapture(RF_Handle rfHandle, RF_RatConfigCapture* channelConfig, RF_RatConfigOutput* ioConfig);
2504 
2522 extern RF_Stat RF_ratDisableChannel(RF_Handle rfHandle, RF_RatHandle ratHandle);
2523 
2534 extern RF_Stat RF_control(RF_Handle h, int8_t ctrl, void *args);
2535 
2554 extern RF_Stat RF_requestAccess(RF_Handle h, RF_AccessParams *pParams);
2555 
2575 extern RF_TxPowerTable_Value RF_getTxPower(RF_Handle h);
2576 
2596 extern RF_Stat RF_setTxPower(RF_Handle h, RF_TxPowerTable_Value value);
2597 
2617 
2642 extern RF_TxPowerTable_Value RF_TxPowerTable_findValue(RF_TxPowerTable_Entry table[], int8_t powerLevel);
2643 
2644 
2653 extern RF_Stat RF_enableHPOSCTemperatureCompensation(void);
2654 
2655 #ifdef __cplusplus
2656 }
2657 #endif
2658 
2659 #endif /* ti_drivers_rfcc26x2__include */
2660 
2661 //*****************************************************************************
2662 //
2666 //
2667 //*****************************************************************************
RF Hardware attributes.
Definition: RFCC26X2.h:1724
Definition: RFCC26X2.h:1688
uint32_t allowDelay
Definition: RFCC26X2.h:1819
RF_RatCaptureMode captureMode
Configuration of the mode of event to cause a capture event.
Definition: RFCC26X2.h:1943
Default PA.
Definition: RFCC26X2.h:1130
Generates a one-clock period width pulse.
Definition: RFCC26X2.h:1908
RF_CmdHandle ch
Command handle (RF_GET_CURR_CMD).
Definition: RFCC26X2.h:1537
Definition: RFCC26X2.h:1409
RF_StartType startType
Definition: RFCC26X2.h:1709
Definition: RFCC26X2.h:1405
RF_EventMask RF_pendCmd(RF_Handle h, RF_CmdHandle ch, RF_EventMask bmEvent)
Synchronizes the calling task to an RF operation command ch and returns accumulated event flags...
Highest priority. Only use this for urgent commands.
Definition: RFCC26X2.h:1177
Configure RAT_CHANNEL[x] to interface with RAT_GPO[4].
Definition: RFCC26X2.h:1929
RF driver configuration parameters.
Definition: RFCC26X2.h:1646
rfc_CMD_RADIO_SETUP_PA_t common_pa
Radio setup command for BLE and IEEE modes with High Gain PA.
Definition: RFCC26X2.h:1280
RF_TxPowerTable_Value RF_TxPowerTable_findValue(RF_TxPowerTable_Entry table[], int8_t powerLevel)
Retrieves a power configuration value for a given power level in dBm.
uint32_t startTime
Start time window in RAT Time for radio access.
Definition: RFCC26X2.h:1837
RF_Callback volatile pCb
Definition: RFCC26X2.h:1699
RF_RatCallback callback
Callback function to be invoked upon a capture event (optional).
Definition: RFCC26X2.h:1952
Definition: RFCC26X2.h:1687
#define RF_NUM_SCHEDULE_ACCESS_ENTRIES
Number of access request entries.
Definition: RFCC26X2.h:1016
Use RAT user channel 0.
Definition: RFCC26X2.h:1849
void RF_RatConfigOutput_init(RF_RatConfigOutput *ioConfig)
Initialize the configuration structure to be used to set up a RAT IO.
uint32_t RF_getCurrentTime(void)
Return current radio timer value.
Definition: RFCC26X2.h:1809
Function was called with an invalid parameter.
Definition: RFCC26X2.h:1250
void(* RF_GlobalCallback)(RF_Handle h, RF_GlobalEvent event, void *arg)
Handles global events as part of PHY configuration.
Definition: RFCC26X2.h:1636
uint16_t nPowerUpDurationMargin
Definition: RFCC26X2.h:1659
Definition: RFCC26X2.h:1865
RF_ExecuteHook executeHook
Function hook implements the runtime last second go-no-go execute decision.
Definition: RFCC26X2.h:1801
Frequency Synthesizer Programming Command.
Definition: cc13x2_cc26x2/driverlib/rf_common_cmd.h:237
Create a bitmask showing available RAT channels.
Definition: RFCC26X2.h:1524
int8_t RF_getRssi(RF_Handle h)
Get RSSI value.
rfc_CMD_PROP_RADIO_SETUP_PA_t prop_pa
Radio setup command for PROPRIETARY mode on 2.4 GHz with High Gain PA.
Definition: RFCC26X2.h:1282
uint8_t rfMode
Specifies which PHY modes should be activated. Must be set to RF_MODE_MULTIPLE for dual-mode operatio...
Definition: RFCC26X2.h:1160
void RF_close(RF_Handle h)
Close client connection to RF driver.
Definition: RFCC26X2.h:1393
RF_AllowDelay
Controls the behavior of the RF_scheduleCmd() API.
Definition: RFCC26X2.h:1807
Coexistence override settings for BLE5 application scenarios.
Definition: RFCC26X2.h:1231
Definition: RFCC26X2.h:1808
Command finished with an error.
Definition: RFCC26X2.h:1249
RF_ClientEventMask nClientEventMask
Definition: RFCC26X2.h:1669
RF_EndType endType
Definition: RFCC26X2.h:1712
Free the channel after the first capture event.
Definition: RFCC26X2.h:1889
RF_Stat RF_enableHPOSCTemperatureCompensation(void)
Enables temperature monitoring and temperature based drift compensation.
Configure RAT_CHANNEL[x] to interface with RAT_GPO[5].
Definition: RFCC26X2.h:1930
RF_ScheduleStatus
Describes the location within the pend queue where the new command was inserted by the scheduler...
Definition: RFCC26X2.h:1745
RF schedule map entry structure.
Definition: RFCC26X2.h:1548
RF_ExecuteAction
Controls the behavior of the state machine of the RF driver when a conflict is identified run-time be...
Definition: RFCC26X2.h:1736
Chose the first available channel.
Definition: RFCC26X2.h:1848
RF_EventMask RF_runCmd(RF_Handle h, RF_Op *pOp, RF_Priority ePri, RF_Callback pCb, RF_EventMask bmEvent)
Runs synchronously an RF operation command or a chain of commands and returns the termination reason...
void RF_ScheduleCmdParams_init(RF_ScheduleCmdParams *pSchParams)
Initialize the configuration structure to default values to be used with the RF_scheduleCmd() API...
RF_Stat RF_requestAccess(RF_Handle h, RF_AccessParams *pParams)
Request radio access.
uint32_t allowDelay
Definition: RFCC26X2.h:1710
Cmd is found in the pool but was already ended.
Definition: RFCC26X2.h:1251
Selects the RTC update signal source.
Definition: RFCC26X2.h:1860
Configure RAT_CHANNEL[x] to interface with RAT_GPO[2].
Definition: RFCC26X2.h:1927
RF_EventMask rfifg
Definition: RFCC26X2.h:1704
Definition: RFCC26X2.h:1697
Definition: RFCC26X2.h:1689
RF_RatHandle channel
RF_RatHandle identifies the channel to be allocated.
Definition: RFCC26X2.h:1941
RF_PriorityCoex priority
Priority level for coexistence priority signal.
Definition: RFCC26X2.h:1221
Low priority. Override default value configured by setup command.
Definition: RFCC26X2.h:1194
RF_Handle RF_open(RF_Object *pObj, RF_Mode *pRfMode, RF_RadioSetup *pRadioSetup, RF_Params *params)
Creates a a new client instance of the RF driver.
uint32_t nPowerUpDuration
Definition: RFCC26X2.h:1650
Retrieve a command handle of the current command.
Definition: RFCC26X2.h:1523
High priority. Override default value configured by setup command.
Definition: RFCC26X2.h:1195
Execute if no conflict, let current command finish if conflict.
Definition: RFCC26X2.h:1738
uint8_t swiPriority
Priority for SWIs belong to the RF driver.
Definition: RFCC26X2.h:1726
RF_ExecuteAction(* RF_ExecuteHook)(RF_Cmd *pCmdBg, RF_Cmd *pCmdFg, List_List *pPendQueue, List_List *pDoneQueue, bool bConflict, RF_Cmd *conflictCmd)
Defines the execution and conflict resolution hook at runtime.
Definition: RFCC26X2.h:1792
Rising edge of the selected source will trigger a capture event.
Definition: RFCC26X2.h:1876
RF_Stat RF_setTxPower(RF_Handle h, RF_TxPowerTable_Value value)
Updates the transmit power configuration of the RF core.
Definition: RFCC26X2.h:1385
uint8_t volatile flags
Definition: RFCC26X2.h:1707
uint32_t duration
Duration in RAT Ticks for the radio command.
Definition: RFCC26X2.h:1825
rfc_CMD_PROP_RADIO_DIV_SETUP_t prop_div
Radio setup command for PROPRIETARY mode on Sub-1 Ghz.
Definition: RFCC26X2.h:1279
List_Elem _elem
Definition: RFCC26X2.h:1698
RF_GlobalEventMask globalEventMask
Event mask which the globalCallback is invoked upon.
Definition: RFCC26X2.h:1729
RF_RatOutputSelect
Selects GPO to be used with RF_ratCompare() or RF_ratCapture().
Definition: RFCC26X2.h:1925
RF_Op * RF_getCmdOp(RF_Handle h, RF_CmdHandle cmdHnd)
Get command structure pointer.
Stores output parameters for RF_getInfo().
Definition: RFCC26X2.h:1536
RF_Handle pClient
Pointer to client object.
Definition: RFCC26X2.h:1550
RF_CmdHandle RF_postCmd(RF_Handle h, RF_Op *pOp, RF_Priority ePri, RF_Callback pCb, RF_EventMask bmEvent)
Appends RF operation commands to the driver&#39;s command queue and returns a command handle...
RF_RatHandle RF_ratCapture(RF_Handle rfHandle, RF_RatConfigCapture *channelConfig, RF_RatConfigOutput *ioConfig)
Setup a Radio Timer (RAT) channel in capture mode.
Default priority. Use this in single-client applications.
Definition: RFCC26X2.h:1179
RF_CmdHandle ch
Definition: RFCC26X2.h:1705
Provide the client list.
Definition: RFCC26X2.h:1527
RF_Priority ePri
Definition: RFCC26X2.h:1706
RF_EndType endType
End type for the end time.
Definition: RFCC26X2.h:1824
RF_CoexOverride bleObserver
Definition: RFCC26X2.h:1235
Definition: cc13x2_cc26x2/driverlib/rf_common_cmd.h:112
RF_RatOutputMode
Selects the mode of the RAT_GPO[x] for RF_ratCompare() or RF_ratCapture().
Definition: RFCC26X2.h:1907
RAT related IO parameter structure.
Definition: RFCC26X2.h:1962
High-power PA.
Definition: RFCC26X2.h:1131
RF_CmdHandle ch
Command handle.
Definition: RFCC26X2.h:1549
Inverts the polarity of the output.
Definition: RFCC26X2.h:1911
RF_RequestCoex request
Behavior for coexistence request signal.
Definition: RFCC26X2.h:1222
RF_InfoType
Selects the entry of interest in RF_getInfo().
Definition: RFCC26X2.h:1522
uint32_t startTime
Start time in RAT Ticks for the radio command.
Definition: RFCC26X2.h:1817
RF_Priority priority
Priority of the command or access request.
Definition: RFCC26X2.h:1553
Definition: RFCC26X2.h:1316
RF_Stat RF_flushCmd(RF_Handle h, RF_CmdHandle ch, uint8_t mode)
Abort/stop/cancel command and any subsequent commands in command queue.
RF_StartType
Controls the behavior of the RF_scheduleCmd() API.
Definition: RFCC26X2.h:1678
void RF_RatConfigCompare_init(RF_RatConfigCompare *channelConfig)
Initialize the configuration structure to be used to set up a RAT compare event.
Definition: RFCC26X2.h:1750
RF_ratCapture parameter structure.
Definition: RFCC26X2.h:1939
Definition: cc13x2_cc26x2/driverlib/rf_prop_cmd.h:902
Runtime coexistence override parameters.
Definition: RFCC26X2.h:1220
Falling edge of the selected source will trigger a capture event.
Definition: RFCC26X2.h:1877
bool bRadioState
Current RF core power state (RF_GET_RADIO_STATE).
Definition: RFCC26X2.h:1539
RF_RatCaptureMode
Selects the mode of RF_ratCapture().
Definition: RFCC26X2.h:1875
RF_RatOutputSelect select
The signal which shall be connected to the GPO.
Definition: RFCC26X2.h:1964
RF_EndType
Controls the behavior of the RF_scheduleCmd() API.
Definition: RFCC26X2.h:1686
void(* RF_Callback)(RF_Handle h, RF_CmdHandle ch, RF_EventMask e)
Handles events related to RF command execution.
Definition: RFCC26X2.h:1589
RF_CmdHandle RF_scheduleCmd(RF_Handle h, RF_Op *pOp, RF_ScheduleCmdParams *pSchParams, RF_Callback pCb, RF_EventMask bmEvent)
Schedule an RF operation (chain) to the command queue.
Proprietary Mode Radio Setup Command for 2.4 GHz.
Definition: cc13x2_cc26x2/driverlib/rf_prop_cmd.h:455
#define RF_NUM_SCHEDULE_COMMAND_ENTRIES
Number of scheduled command entries.
Definition: RFCC26X2.h:1017
Definition: cc13x2_cc26x2/driverlib/rf_common_cmd.h:681
uint32_t endTime
Definition: RFCC26X2.h:1711
uint32_t activityInfo
Activity info provided by user.
Definition: RFCC26X2.h:1826
RF_ScheduleStatus RF_defaultSubmitPolicy(RF_Cmd *pCmdNew, RF_Cmd *pCmdBg, RF_Cmd *pCmdFg, List_List *pPendQueue, List_List *pDoneQueue)
Sorts and adds commands to the RF driver internal command queue.
uint32_t duration
Radio access duration in RAT Ticks requested by the client.
Definition: RFCC26X2.h:1836
Command successfully scheduled for execution.
Definition: RFCC26X2.h:1254
RF_RatCaptureSource source
Configuration of the event source to cause a capture event.
Definition: RFCC26X2.h:1942
Configure RAT_CHANNEL[x] to interface with RAT_GPO[6].
Definition: RFCC26X2.h:1931
Radio Setup Command for Pre-Defined Schemes.
Definition: cc13x2_cc26x2/driverlib/rf_common_cmd.h:176
RF_RatCaptureRepetition repeat
Configuration of the channel to be used in single or repeated mode.
Definition: RFCC26X2.h:1944
Proprietary Mode Radio Setup Command for All Frequency Bands.
Definition: cc13x2_cc26x2/driverlib/rf_prop_cmd.h:561
Command not executed because RF core is powered down.
Definition: RFCC26X2.h:1248
uint32_t startTime
Start time (in RAT tick) of the command or access request.
Definition: RFCC26X2.h:1551
Do not assert REQUEST in RX. Override default value configured by setup command.
Definition: RFCC26X2.h:1211
RF_GlobalCallback globalCallback
Pointer to a callback function serving client independent events listed in RF_GlobalEvent.
Definition: RFCC26X2.h:1728
RF_TxPowerTable_PAType
Selects a power amplifier path in a TX power value.
Definition: RFCC26X2.h:1129
RF_RequestCoex coexRequest
REQUEST line behavior to use for coexistence request.
Definition: RFCC26X2.h:1828
RF_CoexOverride bleBroadcaster
Definition: RFCC26X2.h:1234
RF_Stat RF_control(RF_Handle h, int8_t ctrl, void *args)
Set RF control parameters.
Definition: RFCC26X2.h:1679
Selects the Generic event of Event Fabric as source.
Definition: RFCC26X2.h:1861
void RF_yield(RF_Handle h)
Signal that radio client is not going to issue more commands in a while.
Definition: RFCC26X2.h:1816
Definition: RFCC26X2.h:1747
Definition: RFCC26X2.h:1749
The RF core has been powered up the radio setup has been finished.
Definition: RFCC26X2.h:1315
void(* RF_ClientCallback)(RF_Handle h, RF_ClientEvent event, void *arg)
Handles events related to a driver instance.
Definition: RFCC26X2.h:1621
Deprecated. Not supported.
Definition: RFCC26X2.h:1526
Signals the client that the RF driver is about to switch over from another client.
Definition: RFCC26X2.h:1320
RF_PriorityCoex coexPriority
Priority to use for coexistence request.
Definition: RFCC26X2.h:1827
RF_Callback pPowerCb
Definition: RFCC26X2.h:1654
RF_StartType startType
Start type for the start time.
Definition: RFCC26X2.h:1818
RF_Stat RF_getInfo(RF_Handle h, RF_InfoType type, RF_InfoVal *pValue)
Get value for some RF driver parameters.
rfc_radioOp_t RF_Op
Base type for all radio operation commands.
Definition: RFCC26X2.h:1148
High priority. Use this for time-critical commands in synchronous protocols.
Definition: RFCC26X2.h:1178
int16_t RF_CmdHandle
Command handle that is returned by RF_postCmd().
Definition: RFCC26X2.h:1439
General error specifier.
Definition: RFCC26X2.h:1252
Definition: RFCC26X2.h:1752
RF_ClientCallback pClientEventCb
Definition: RFCC26X2.h:1666
void RF_RatConfigCapture_init(RF_RatConfigCapture *channelConfig)
Initialize the configuration structure to be used to set up a RAT capture event.
RF_Stat RF_runDirectCmd(RF_Handle h, uint32_t cmd)
Send any Direct command.
Definition: RFCC26X2.h:1401
uint16_t availRatCh
Available RAT channels (RF_GET_AVAIL_RAT_CH).
Definition: RFCC26X2.h:1538
RF_GlobalEvent
Global RF driver events.
Definition: RFCC26X2.h:1384
RF_Object * RF_Handle
A handle that is returned by to RF_open().
Definition: RFCC26X2.h:1506
rfc_CMD_BLE5_RADIO_SETUP_PA_t ble5_pa
Radio setup command for BLE5 mode with High Gain PA.
Definition: RFCC26X2.h:1281
RF_Priority
Scheduling priority of RF operation commands.
Definition: RFCC26X2.h:1176
RF_PriorityCoex coexPriority
Definition: RFCC26X2.h:1715
Definition: RFCC26X2.h:1690
RF_Stat
Status codes for various RF driver functions.
Definition: RFCC26X2.h:1246
Definition: cc13x2_cc26x2/driverlib/rf_ble_cmd.h:1644
Definition: RFCC26X2.h:1748
RF_Stat RF_cancelCmd(RF_Handle h, RF_CmdHandle ch, uint8_t mode)
Abort/stop/cancel single command in command queue.
Definition: RFCC26X2.h:1862
uint32_t timeout
Definition: RFCC26X2.h:1954
Definition: RFCC26X2.h:1397
uint32_t startTime
Definition: RFCC26X2.h:1708
uint32_t endTime
End time (in RAT tick) of the command or access request.
Definition: RFCC26X2.h:1552
Definition: cc13x2_cc26x2/driverlib/rf_prop_cmd.h:1013
Use RAT user channel 1.
Definition: RFCC26X2.h:1850
RF_RatCaptureRepetition
Selects the repetition of RF_ratCapture().
Definition: RFCC26X2.h:1888
int8_t power
Definition: RFCC26X2.h:1116
RF_ClientEvent
Client-related RF driver events.
Definition: RFCC26X2.h:1314
RF_RatCaptureSource
Selects the source signal for RF_ratCapture().
Definition: RFCC26X2.h:1859
Provide the client to client switching times.
Definition: RFCC26X2.h:1528
RF request access parameter struct.
Definition: RFCC26X2.h:1835
Bluetooth 5 Radio Setup Command for all PHYs.
Definition: cc13x2_cc26x2/driverlib/rf_ble_cmd.h:706
int8_t RF_RatHandle
RAT handle that is returned by RF_ratCompare() or RF_ratCapture().
Definition: RFCC26X2.h:1517
Use RAT user channel 2.
Definition: RFCC26X2.h:1851
RF_RatOutputMode mode
The mode the GPO should operate in.
Definition: RFCC26X2.h:1963
RF_CoexOverride bleConnected
Definition: RFCC26X2.h:1233
Default priority. Use value configured by setup command.
Definition: RFCC26X2.h:1193
uint32_t RF_ClientEventMask
Event mask for combining RF_ClientEvent event flags in RF_Params::nClientEventMask.
Definition: RFCC26X2.h:1420
RF_EventMask RF_runScheduleCmd(RF_Handle h, RF_Op *pOp, RF_ScheduleCmdParams *pSchParams, RF_Callback pCb, RF_EventMask bmEvent)
Runs synchronously a (chain of) RF operation(s) for dual or single-mode.
Configure RAT_CHANNEL[x] to interface with RAT_GPO[7].
Definition: RFCC26X2.h:1932
Definition: RFCC26X2.h:1389
Sets the output low independently of any RAT events.
Definition: RFCC26X2.h:1912
TX power configuration entry in a TX power table.
Definition: RFCC26X2.h:1114
Sets the output high independently of any RAT events.
Definition: RFCC26X2.h:1913
uint32_t activityInfo
Definition: RFCC26X2.h:1714
RF_Stat RF_runImmediateCmd(RF_Handle h, uint32_t *pCmdStruct)
Send any Immediate command.
A unified type for radio setup commands of different PHYs.
Definition: RFCC26X2.h:1273
void(* RF_RatCallback)(RF_Handle h, RF_RatHandle rh, RF_EventMask e, uint32_t compareCaptureTime)
Handles events related to the Radio Timer (RAT).
Definition: RFCC26X2.h:1604
RF_TxPowerTable_Value value
PA hardware configuration for that power level.
Definition: RFCC26X2.h:1119
RF_Op * pOp
Definition: RFCC26X2.h:1700
uint32_t nInactivityTimeout
Definition: RFCC26X2.h:1647
Abort the incoming command, letting the ongoing command finish.
Definition: RFCC26X2.h:1739
RF schedule map structure.
Definition: RFCC26X2.h:1559
RF_ScheduleStatus(* RF_SubmitHook)(RF_Cmd *pCmdNew, RF_Cmd *pCmdBg, RF_Cmd *pCmdFg, List_List *pPendQueue, List_List *pDoneQueue)
Handles the queue sorting algorithm when a new command is submitted to the driver from any of the act...
Definition: RFCC26X2.h:1773
RF_ratCompare parameter structure.
Definition: RFCC26X2.h:1951
RF_EventMask pastifg
Definition: RFCC26X2.h:1703
RF_SubmitHook submitHook
Function hook implements the scheduling policy to be executed at the time of RF_scheduleCmd API call...
Definition: RFCC26X2.h:1800
Sets the output low on a RAT event.
Definition: RFCC26X2.h:1910
uint32_t duration
Definition: RFCC26X2.h:1713
Configure RAT_CHANNEL[x] to interface with RAT_GPO[3].
Definition: RFCC26X2.h:1928
RF_CoexOverride bleInitiator
Definition: RFCC26X2.h:1232
rfc_CMD_PROP_RADIO_DIV_SETUP_PA_t prop_div_pa
Radio setup command for PROPRIETARY mode on Sub-1 Ghz with High Gain PA.
Definition: RFCC26X2.h:1283
Assert REQUEST in RX. Override default value configured by setup command.
Definition: RFCC26X2.h:1210
RF_RequestCoex
Behavior for coexistence request signal.
Definition: RFCC26X2.h:1208
Command finished with success.
Definition: RFCC26X2.h:1253
Function finished with success.
Definition: RFCC26X2.h:1255
int8_t RF_TxPowerTable_findPowerLevel(RF_TxPowerTable_Entry table[], RF_TxPowerTable_Value value)
Retrieves a power level in dBm for a given power configuration value.
Definition: RFCC26X2.h:1878
RF_RatHandle RF_ratCompare(RF_Handle rfHandle, RF_RatConfigCompare *channelConfig, RF_RatConfigOutput *ioConfig)
Setup a Radio Timer (RAT) channel in compare mode.
RF_RatHandle channel
RF_RatHandle identifies the channel to be allocated.
Definition: RFCC26X2.h:1953
Abort the ongoing command and run dispatcher again.
Definition: RFCC26X2.h:1740
bool xoscHfAlwaysNeeded
Indicate that the XOSC HF should be turned on by the power driver.
Definition: RFCC26X2.h:1727
Rearm the channel after each capture events.
Definition: RFCC26X2.h:1890
Sets the output high on a RAT event.
Definition: RFCC26X2.h:1909
Configure RAT_CHANNEL[x] to interface with RAT_GPO[1].
Definition: RFCC26X2.h:1926
Show the current RF core power state. 0: Radio OFF, 1: Radio ON.
Definition: RFCC26X2.h:1525
RF_ExecuteAction RF_defaultExecutionPolicy(RF_Cmd *pCmdBg, RF_Cmd *pCmdFg, List_List *pPendQueue, List_List *pDoneQueue, bool bConflict, RF_Cmd *conflictCmd)
Makes a final decision before dispatching a scheduled command.
RF_RequestCoex coexRequest
Definition: RFCC26X2.h:1716
RF_RatSelectChannel
Select the preferred RAT channel through the configuration of RF_ratCompare() or RF_ratCapture().
Definition: RFCC26X2.h:1847
RF scheduler policy.
Definition: RFCC26X2.h:1799
void RF_Params_init(RF_Params *params)
Function to initialize the RF_Params struct to its defaults.
Definition: cc13x2_cc26x2/driverlib/rf_common_cmd.h:122
Specifies a RF core firmware configuration.
Definition: RFCC26X2.h:1159
uint32_t nID
RF handle identifier.
Definition: RFCC26X2.h:1672
RF_Object * pClient
Definition: RFCC26X2.h:1701
rfc_command_t commandId
Definition: RFCC26X2.h:1274
Definition: RFCC26X2.h:1751
rfc_CMD_PROP_RADIO_SETUP_t prop
Radio setup command for PROPRIETARY mode on 2.4 GHz.
Definition: RFCC26X2.h:1278
rfc_CMD_BLE5_RADIO_SETUP_t ble5
Radio setup command for BLE5 mode.
Definition: RFCC26X2.h:1277
PA configuration value for a certain power level.
Definition: RFCC26X2.h:1084
RF_RatCallback callback
Callback function to be invoked upon a capture event (optional).
Definition: RFCC26X2.h:1940
Definition: RFCC26X2.h:1680
Command not executed because RF driver is busy.
Definition: RFCC26X2.h:1247
RF_Stat RF_ratDisableChannel(RF_Handle rfHandle, RF_RatHandle ratHandle)
Disable a RAT channel.
RF_Callback pErrCb
Definition: RFCC26X2.h:1657
uint8_t hwiPriority
Priority for HWIs belong to the RF driver.
Definition: RFCC26X2.h:1725
RF_TxPowerTable_Value RF_getTxPower(RF_Handle h)
Returns the currently configured transmit power configuration.
uint16_t nPhySwitchingDurationMargin
An additional safety margin to be used to calculate when conflicts shall be evaluated run-time...
Definition: RFCC26X2.h:1664
RF_EventMask bmEvent
Definition: RFCC26X2.h:1702
uint32_t RF_GlobalEventMask
Event mask for combining RF_GlobalEvent event flags in RFCC26XX_HWAttrsV2::globalEventMask.
Definition: RFCC26X2.h:1425
Stores the client&#39;s internal configuration and states.
RF_Priority priority
Access priority.
Definition: RFCC26X2.h:1838
uint64_t RF_EventMask
Data type for events during command execution.
Definition: RFCC26X2.h:1262
void * pScheduleMap
Deprecated. Not supported.
Definition: RFCC26X2.h:1542
RF_PriorityCoex
Priority level for coexistence priority signal.
Definition: RFCC26X2.h:1192
Default request line behavior. Use value configured by setup command.
Definition: RFCC26X2.h:1209
© Copyright 1995-2024, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale