Radio Control Layer (RCL)
|
Go to the documentation of this file.
40 #if defined(DeviceFamily_CC23X0R5) || defined(DeviceFamily_CC23X0R2)
41 # include <ti/devices/DeviceFamily.h>
42 # include DeviceFamily_constructPath(driverlib/pbe_regs.h)
46 #ifdef DeviceFamily_CC1308
47 # define BUFFER_SPLIT_SUPPORT
48 # include "LRFCC1308.h"
55 #define LRF_TxPower_Use_Min ((LRF_TxPowerTable_Index){.rawValue = -128})
60 #define LRF_TxPower_Use_Max ((LRF_TxPowerTable_Index){.rawValue = 125})
65 #define LRF_TxPower_Use_Raw ((LRF_TxPowerTable_Index){.rawValue = 126})
71 #define LRF_TxPower_None ((LRF_TxPowerTable_Index){.rawValue = 127})
77 #define LRF_SETTINGS_BUFFER_UNLIMITED 0x3FFF
83 #define LRF_RSSI_INVALID (127)
86 typedef enum LRF_RadioState_e {
95 typedef enum LRF_SetupResult_e {
114 uint32_t lengthMinus1 : 12;
116 uint32_t startAddress : 16;
129 uint32_t length : 14;
130 uint32_t invertedFeatureMask : 1;
131 uint32_t compoundSegment : 1;
132 uint32_t featureMask : 16;
168 #ifdef BUFFER_SPLIT_SUPPORT
172 uint32_t segmentLength;
177 uint32_t regionLength;
178 uint32_t regionStart;
182 #define LRF_PhyFeatures_Default 0
184 #define LRF_NUM_CLK_ENA 2
185 #define LRF_CLK_ENA_APP 0
186 #define LRF_CLK_ENA_RCL 1
189 #define __ERROR_Address_is_in_an_invalid_range_for_LRF_setup 0x00040000
191 #define _ADDRESS_REGION_BIT(_address) \
192 ((((((uintptr_t)(_address)) >= (LRF_BASE_ADDR)) && \
193 ((uintptr_t)(_address)) < ((LRF_BASE_ADDR) + 0x10000)) ? 0 : \
194 ((((uintptr_t)(_address)) >= (PBE_RAM_BASE_ADDR)) && \
195 (((uintptr_t)(_address)) < ((PBE_RAM_BASE_ADDR) + 0x10000)) ? \
197 (((((uintptr_t)(_address)) >= 0) && \
198 (((uintptr_t)(_address)) < 0x10000)) ? \
200 (__ERROR_Address_is_in_an_invalid_range_for_LRF_setup)))) << 14)
202 #define LRF_SETTINGS_CLEAR(_startAddress, _numWords) \
203 ((((_numWords) - 1) & 0x0FFF) | \
204 _ADDRESS_REGION_BIT(_startAddress) | \
205 ((((uintptr_t)(_startAddress)) & 0xFFFF) << 16))
207 #define LRF_SETTINGS_16BIT_BLOCK(_startAddress, _numWords) \
208 ((((_numWords) - 1) & 0x0FFF) | \
209 _ADDRESS_REGION_BIT(_startAddress) | (1 << 12) | \
210 ((((uintptr_t)(_startAddress)) & 0xFFFF) << 16))
212 #define LRF_SETTINGS_16BIT_DUAL_ENTRY(_value0, _value1) \
213 (((_value0) & 0xFFFF) | (((_value1) & 0xFFFF) << 16))
215 #define LRF_SETTINGS_32BIT_BLOCK(_startAddress, _numWords) \
216 ((((_numWords) - 1) & 0x0FFF) | \
217 _ADDRESS_REGION_BIT(_startAddress) | (2 << 12) | \
218 ((((uintptr_t)(_startAddress)) & 0xFFFF) << 16))
220 #define LRF_SETTINGS_16BIT_SPARSE_BLOCK(_startAddress, _numWords) \
221 ((((_numWords) - 1) & 0x0FFF) | \
222 _ADDRESS_REGION_BIT(_startAddress) | (3 << 12)) \
224 #define LRF_SETTINGS_16BIT_SPARSE_ENTRY(_address, _value) \
225 (((((uintptr_t)(_address)) & 0xFFFF) << 16) | ((_value) & 0xFFFF))
227 #define LRF_SETTINGS_16BIT_MASKED_BLOCK(_startAddress, _numWords) \
228 ((((_numWords) - 1) & 0x0FFF) | (11 << 12) | \
229 ((((uintptr_t)(_startAddress)) & 0xFFFF) << 16))
231 #define LRF_SETTINGS_16BIT_MASKED_ENTRY(_mask, _value) \
232 ((((_mask) & 0xFFFF) << 16) | ((_value) & 0xFFFF))
240 #ifdef BUFFER_SPLIT_SUPPORT
241 state->totalLength = 0;
249 uint16_t phyFeatures);
252 int32_t bufferAvailWords);
#define PBE_RAM_BASE_ADDR
Definition: LRFCC23X0.h:464
void LRF_readRxFifoWords(uint32_t *data32, uint32_t wordLength)
Definition: LRFCC23X0.c:716
void LRF_disableSynthRefsys(void)
Definition: LRFCC23X0.c:1198
void LRF_clearClockEnable(uint16_t mask, uint8_t entryNumber)
Definition: LRFCC23X0.c:1213
const size_t swParamListSz
Definition: LRFCC23X0.c:73
@ RadioState_Down
Definition: LRF.h:87
@ Par_Reference_32bit
Definition: LRF.h:151
@ LRF_RegionOperation_Invalid
Definition: LRF.h:155
#define TOPSM_RAM_SZ
Definition: LRFCC23X0.h:469
static void LRF_clearAppClockEnable(uint16_t mask)
Definition: LRF.h:303
uint32_t LRF_peekRxFifo(int32_t offset)
Definition: LRFCC23X0.c:657
#define LRF_TxPower_Use_Min
Definition: LRF.h:55
@ Par_Write_32bit
Definition: LRF.h:152
static void LRF_setAppClockEnable(uint16_t mask)
Definition: LRF.h:298
LRF_TxPowerTable_Entry LRF_TxPowerTable_findValue(const LRF_TxPowerTable *table, LRF_TxPowerTable_Index powerLevel)
Search for settings corresponding to the highest tx power lower than specified value in the tx power ...
Definition: LRF.c:668
#define LRF_BASE_ADDR
Definition: LRFCC23X0.h:463
Index of the tx power table.
Definition: LRFCC23X0.h:153
@ SW_Write_32bit
Definition: LRF.h:148
uint32_t numEntries
Definition: LRFCC23X0.h:185
uint32_t imageLen
Definition: LRF.h:108
void LRF_enable(void)
Definition: LRFCC23X0.c:572
bool LRF_imagesNeedUpdate(const LRF_Config *lrfConfig)
Definition: LRFCC23X0.c:184
uint32_t LRF_prepareRxFifo(void)
Definition: LRFCC23X0.c:627
LRF_SetupResult LRF_loadImage(const LRF_TOPsmImage *image, uint32_t destinationAddress)
Definition: LRF.c:46
static void LRF_resetSettingsState(LRF_ApplySettingsState *state)
Definition: LRF.h:238
uint8_t * LRF_getTxFifoWrAddr(int32_t offset)
Definition: LRFCC23X0.c:681
@ SetupResult_ErrorImageLen
Definition: LRF.h:98
@ HW_Write_16bit_sparse
Definition: LRF.h:145
LRF_TxPowerTable_Index power
Definition: LRFCC23X0.h:166
LRF_SetupResult
Setup operation result.
Definition: LRF.h:95
@ HW_Region_Clear
Definition: LRF.h:142
void LRF_sendGracefulStop(void)
void LRF_disable(void)
Definition: LRFCC23X0.c:594
void LRF_discardRxFifoWords(uint32_t wordLength)
Definition: LRFCC23X0.c:703
#define LRF_CLK_ENA_APP
Definition: LRF.h:185
@ SetupResult_Ok
Definition: LRF.h:96
uint32_t LRF_enableSynthRefsys(void)
Definition: LRFCC23X0.c:1173
LRF_TxPowerTable_Entry powerTable[]
Definition: LRFCC23X0.h:186
#define RCL_Debug_assert(expr)
Definition: RCL_Debug.h:39
struct LRF_ConfigWord::@58 sparse
LRF_SetupResult LRF_applySettings(LRF_ConfigWord *config, LRF_ApplySettingsState *state, int32_t bufferAvailWords)
Definition: LRF.c:118
struct LRF_ConfigWord::@60 segment
uint16_t value16[2]
Definition: LRF.h:119
void LRF_writeTxFifoWords(const uint32_t *data32, uint32_t wordLength)
Definition: LRFCC23X0.c:723
@ SetupResult_ErrorElemAddrAlign
Definition: LRF.h:102
#define LRF_TxPowerEntry_INVALID_VALUE
Definition: LRFCC23X0.h:172
@ Par_Region_Clear
Definition: LRF.h:150
#define LRF_TxPower_Use_Raw
Definition: LRF.h:65
@ HW_Write_16bit
Definition: LRF.h:143
uint32_t swParamList[]
Definition: LRFCC23X0.c:72
@ RadioState_ImagesLoaded
Definition: LRF.h:88
LRF_RadioState
Definition: LRF.h:86
uint32_t value32
Definition: LRF.h:118
void LRF_setRxFifoEffSz(uint32_t maxSz)
Definition: LRFCC23X0.c:731
uint32_t image[]
Definition: LRF.h:109
#define MAX_REG_CONFIG_LEN
Definition: LRFCC23X0.h:470
Tx power table, containing all characterized dBm to register settings mappings.
Definition: LRFCC23X0.h:184
@ SW_Write_16bit
Definition: LRF.h:147
LRF_SetupResult LRF_setupRadio(const LRF_Config *lrfConfig, uint16_t phyFeatures, LRF_RadioState lrfState)
Definition: LRFCC23X0.c:88
void LRF_setRawTxPower(uint32_t value, uint32_t temperatureCoefficient)
Definition: LRFCC23X0.c:1266
LRF_ApplySettingsBase
Definition: LRF.h:158
@ SetupResult_ErrorParRange
Definition: LRF.h:103
int8_t LRF_readRssi(void)
Definition: LRFCC23X0.c:1261
@ LRF_ApplySettings_IncludeBase
Definition: LRF.h:160
@ SetupResult_ErrorElemType
Definition: LRF.h:101
LRF_TxPowerTable_Entry LRF_getRawTxPower(void)
Definition: LRFCC23X0.c:1273
LRF_ConfigWord * entries[]
Definition: LRF.h:138
void LRF_initSettingsState(LRF_ApplySettingsState *state, LRF_ApplySettingsBase includeBase, uint16_t phyFeatures)
Definition: LRF.c:109
@ HW_Write_16bit_masked
Definition: LRF.h:153
@ SetupResult_ErrorElemLen
Definition: LRF.h:100
void LRF_rclDisableRadioClocks(void)
Definition: LRFCC23X0.c:1248
void LRF_skipTxFifoWords(uint32_t wordLength)
Definition: LRFCC23X0.c:692
void LRF_rclEnableRadioClocks(void)
Definition: LRFCC23X0.c:1235
LRF_TxPowerTable_Entry LRF_TxPowerTable_findValue(const LRF_TxPowerTable *table, LRF_TxPowerTable_Index powerLevel)
Search for settings corresponding to the highest tx power lower than specified value in the tx power ...
Definition: LRF.c:668
@ HW_Write_32bit
Definition: LRF.h:144
void LRF_setClockEnable(uint16_t mask, uint8_t entryNumber)
Definition: LRFCC23X0.c:1204
@ SetupResult_Ok_Partial
Definition: LRF.h:97
uint16_t phyFeatures
Definition: LRF.h:165
struct LRF_ConfigWord::@59 masked
uint32_t LRF_prepareTxFifo(void)
Definition: LRFCC23X0.c:643
struct LRF_ConfigWord::@57 region
@ LRF_RegionOperation_Skip
Definition: LRF.h:154
void LRF_waitForTopsmReady(void)
Definition: LRFCC23X0.c:618
void LRF_programFrequency(uint32_t frequency, bool tx)
Definition: LRFCC23X0.c:1084
@ LRF_ApplySettings_NoBase
Definition: LRF.h:159
uint32_t numEntries
Definition: LRF.h:137
@ RadioState_Configured
Definition: LRF.h:89
LRF_RegionOperation
Definition: LRF.h:141
int8_t rawValue
Definition: LRFCC23X0.h:158
LRF_ApplySettingsBase includeBase
Definition: LRF.h:166
void LRF_sendHardStop(void)
uint32_t LRF_peekTxFifo(int32_t offset)
Definition: LRFCC23X0.c:670
@ SetupResult_ErrorSwConfig
Definition: LRF.h:104
void LRF_initSettingsState(LRF_ApplySettingsState *state, LRF_ApplySettingsBase includeBase, uint16_t phyFeatures)
Definition: LRF.c:109
@ SetupResult_ErrorConfigLen
Definition: LRF.h:99
#define LRF_TxPower_Use_Max
Definition: LRF.h:60
Radio configuration structure.
Definition: LRFCC23X0.h:456
Single entry of the tx power table. Maps power in dBm to specific register settings.
Definition: LRFCC23X0.h:165
LRF_SetupResult LRF_applySettings(LRF_ConfigWord *config, LRF_ApplySettingsState *state, int32_t bufferAvailWords)
Definition: LRF.c:118
@ SW_Region_Clear
Definition: LRF.h:146
@ SW_Write_16bit_sparse
Definition: LRF.h:149
LRF_SetupResult LRF_loadImage(const LRF_TOPsmImage *image, uint32_t destinationAddress)
Definition: LRF.c:46