Radio Control Layer (RCL)
RCL.h File Reference
#include <stdint.h>
#include <stddef.h>
#include <ti/drivers/rcl/LRF.h>
#include <ti/drivers/rcl/RCL_Types.h>
#include <ti/drivers/rcl/RCL_Client.h>
#include <ti/drivers/rcl/RCL_Event.h>
#include <ti/drivers/rcl/RCL_Command.h>
#include <ti/drivers/rcl/RCL_Buffer.h>
#include <ti/drivers/rcl/RCL_Scheduler.h>
#include <ti/drivers/rcl/hal/hal.h>
#include <ti/drivers/dpl/SemaphoreP.h>
+ Include dependency graph for RCL.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  RCL
 Global shared driver state. More...
 

Enumerations

enum  RCL_PowerState { RCL_standbyAllow = 0, RCL_standbyDisallow }
 RCL power state. More...
 

Functions

void RCL_init (void)
 Initializes the RCL driver state. More...
 
RCL_Handle RCL_open (RCL_Client *c, const LRF_Config *lrfConfig)
 Initializes an RCL client instance. More...
 
void RCL_close (RCL_Handle h)
 Closes client instance and deallocates open resources. More...
 
void RCL_openPowerNotifications (void)
 Request RCL power notifications. More...
 
void RCL_closePowerNotifications (void)
 Remove RCL power notification request. More...
 
RCL_CommandStatus RCL_Command_submit (RCL_Handle h, RCL_Command_Handle c)
 Submit RCL command object to be scheduled for execution. More...
 
RCL_CommandStatus RCL_Command_pend (RCL_Command_Handle c)
 Wait for a submitted command to complete. More...
 
RCL_CommandStatus RCL_Command_stop (RCL_Command_Handle c, RCL_StopType stopType)
 Stop a command. More...
 
int8_t RCL_readRssi (void)
 Get the last valid RSSI value. More...
 
void RCL_triggerScheduler (void)
 Trigger the RCL Scheduler. More...
 
uint32_t RCL_getPhySwitchingTime (void)
 Get Phy RCL Switching time. More...
 

Data Structure Documentation

§ RCL

struct RCL

Global shared driver state.

+ Collaboration diagram for RCL:
Data Fields
uint8_t numClients
uint8_t powerNotifyEnableCount
LRF_RadioState lrfState
RCL_PowerState powerState
const LRF_Config * lrfConfig

Enumeration Type Documentation

§ RCL_PowerState

RCL power state.

Tracks when the RCL core has requested standby to be disallowed to the power driver.

Enumerator
RCL_standbyAllow 
RCL_standbyDisallow 

Function Documentation

§ RCL_init()

void RCL_init ( void  )

Initializes the RCL driver state.

Resets global state and initialize hardware.

Note
Must be called before using any other RCL API

References hal_init_fsm(), hal_temperature_init(), isInitialized, RCL::numClients, RadioState_Down, rclCommandHwi(), rclDispatchHwi(), and rclSchedulerHwi().

Referenced by RCL_AdcNoise_get_samples_blocking(), and RCL_AdcNoise_get_samples_callback().

§ RCL_open()

RCL_Handle RCL_open ( RCL_Client *  c,
const LRF_Config lrfConfig 
)

Initializes an RCL client instance.

Parameters
[in]c- Client object struct to be initialized
[in]lrfConfig- Radio configuration to be used by client
Returns
Instance RCL_Handle handle or NULL

References hal_enable_clk_buffer(), LRF_rclEnableRadioClocks(), RCL::numClients, RCL_GPIO_enable(), RCL_openPowerNotifications(), RCL_VERSION, RCL_VERSION_CHANNEL_NUMBER, and RCL_VERSION_SHA.

Referenced by RCL_AdcNoise_get_samples_blocking(), and RCL_AdcNoise_get_samples_callback().

§ RCL_close()

§ RCL_openPowerNotifications()

void RCL_openPowerNotifications ( void  )

Request RCL power notifications.

References hal_power_open(), RCL::powerNotifyEnableCount, RCL_Debug_assert, and rclPowerNotify().

Referenced by RCL_open().

§ RCL_closePowerNotifications()

void RCL_closePowerNotifications ( void  )

Remove RCL power notification request.

References hal_power_close(), RCL::powerNotifyEnableCount, and RCL_Debug_assert.

Referenced by RCL_close().

§ RCL_Command_submit()

RCL_CommandStatus RCL_Command_submit ( RCL_Handle  h,
RCL_Command_Handle  c 
)

Submit RCL command object to be scheduled for execution.

This API returns immediately with either RCL_CommandStatus_Error or the asynchronous current state of the command.

Parameters
[in]h- Client handle
[in]c- Command handle
Returns
RCL_CommandStatus result of the submission

References RCL_SchedulerState::currCmd, hal_trigger_scheduler_fsm(), RCL_CommandStatus_Error_AlreadySubmitted, RCL_CommandStatus_Finished, RCL_CommandStatus_Idle, RCL_CommandStatus_Scheduled, and RCL_getNextCommandHook().

Referenced by RCL_AdcNoise_get_samples_blocking(), and RCL_AdcNoise_get_samples_callback().

§ RCL_Command_pend()

RCL_CommandStatus RCL_Command_pend ( RCL_Command_Handle  c)

Wait for a submitted command to complete.

Uses SemaphoreP_pend to block in the callers context.

Precondition
This function must be called from a task context, with interrupts enabled.
Parameters
[in]c- Client handle

References RCL_CommandStatus_Active, and RCL_Debug_assert.

Referenced by RCL_AdcNoise_get_samples_blocking().

§ RCL_Command_stop()

RCL_CommandStatus RCL_Command_stop ( RCL_Command_Handle  c,
RCL_StopType  stopType 
)

Stop a command.

Sends the message to try to stop a command. When the function returns, the command may still be running. Depending on the stop type, the command may stop after some time. RCL_Command_pend may be used to wait for the command to finish.

Parameters
c[in] - Command handle
stopType[in] - Stop type; telling which situations the command will stop
Returns
Status of the command; if the command is not finished, a wait is needed.

References RCL_SchedulerStopReason_Api, and rclStop().

§ RCL_readRssi()

int8_t RCL_readRssi ( void  )

Get the last valid RSSI value.

This API returns the last valid RSSI value or a specific error status if the last obtained RSSI value is no longer valid.

Returns
Returns RSSI value, or LRF_RSSI_INVALID if the last obtained RSSI value is no longer valid or if the radio is unavailable (e.g. in the middle of a Tx operation).

References LRF_readRssi(), LRF_RSSI_INVALID, RCL::lrfState, and RadioState_Configured.

§ RCL_triggerScheduler()

void RCL_triggerScheduler ( void  )

Trigger the RCL Scheduler.

This API is meant to be used when there is an update in the command queue by DMM due to change in order of priority. RCL will update nextCmd based on this.

References hal_trigger_scheduler_fsm().

§ RCL_getPhySwitchingTime()

uint32_t RCL_getPhySwitchingTime ( void  )

Get Phy RCL Switching time.

This API will return the phy switching time for the radio including the wakeup margin, configuration time, buffer preparation time and phy load time.

Returns
Returns the phy switching time in microseconds

References RCL_SCHEDULER_MARGIN_ARM, RCL_SCHEDULER_MARGIN_CONFIGURE, RCL_SCHEDULER_MARGIN_LOAD, and RCL_SCHEDULER_WAKEUP_MARGIN.