|
Radio Control Layer (RCL)
|
#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... | |
| 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 | |
| enum RCL_PowerState |
| void RCL_init | ( | void | ) |
Initializes the RCL driver state.
Resets global state and initialize hardware.
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_Handle RCL_open | ( | RCL_Client * | c, |
| const LRF_Config * | lrfConfig | ||
| ) |
Initializes an RCL client instance.
| [in] | c | - Client object struct to be initialized |
| [in] | lrfConfig | - Radio configuration to be used by client |
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().
| void RCL_close | ( | RCL_Handle | h | ) |
Closes client instance and deallocates open resources.
| [in] | h | - Client handle |
References __attribute__(), LRF_rclDisableRadioClocks(), RCL::lrfConfig, RCL::numClients, RCL_closePowerNotifications(), RCL_CommandStatus_Error_CommandQueueFull, RCL_CommandStatus_Scheduled, RCL_getNextCommandHook(), RCL_GPIO_disable(), and rclNextCmd.
Referenced by adcNoiseCallback(), and RCL_AdcNoise_get_samples_blocking().
| void RCL_openPowerNotifications | ( | void | ) |
Request RCL power notifications.
References hal_power_open(), RCL::powerNotifyEnableCount, RCL_Debug_assert, and rclPowerNotify().
Referenced by RCL_open().
| void RCL_closePowerNotifications | ( | void | ) |
Remove RCL power notification request.
References hal_power_close(), RCL::powerNotifyEnableCount, and RCL_Debug_assert.
Referenced by RCL_close().
| 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.
| [in] | h | - Client handle |
| [in] | c | - Command handle |
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_CommandStatus RCL_Command_pend | ( | RCL_Command_Handle | c | ) |
Wait for a submitted command to complete.
Uses SemaphoreP_pend to block in the callers context.
| [in] | c | - Client handle |
References RCL_CommandStatus_Active, and RCL_Debug_assert.
Referenced by RCL_AdcNoise_get_samples_blocking().
| 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.
| c | [in] - Command handle |
| stopType | [in] - Stop type; telling which situations the command will stop |
References RCL_SchedulerStopReason_Api, and rclStop().
| 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.
References LRF_readRssi(), LRF_RSSI_INVALID, RCL::lrfState, and RadioState_Configured.
| 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().
| 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.
References RCL_SCHEDULER_MARGIN_ARM, RCL_SCHEDULER_MARGIN_CONFIGURE, RCL_SCHEDULER_MARGIN_LOAD, and RCL_SCHEDULER_WAKEUP_MARGIN.