foxBMS
1.2.1
The foxBMS Battery Management System API Documentation
|
Declaration of the OS wrapper interface. More...
#include "general.h"
Go to the source code of this file.
Data Structures | |
struct | OS_TIMER |
OS timer. More... | |
struct | OS_TASK_DEFINITION |
struct for FreeRTOS task definition More... | |
Macros | |
#define | OS_IDLE_TASK_STACK_SIZE configMINIMAL_STACK_SIZE |
Typedefs | |
typedef enum OS_STD_RETURN | OS_STD_RETURN_e |
typedef enum OS_PRIORITY | OS_PRIORITY_e |
typedef for thread priority. The higher the value, the higher the priority. More... | |
typedef enum OS_BOOT_STATE | OS_BOOT_STATE_e |
enum of OS boot states More... | |
typedef struct OS_TIMER | OS_TIMER_s |
OS timer. More... | |
typedef struct OS_TASK_DEFINITION | OS_TASK_DEFINITION_s |
struct for FreeRTOS task definition More... | |
Enumerations | |
enum | OS_STD_RETURN { OS_SUCCESS , OS_FAIL } |
enum | OS_PRIORITY { OS_PRIORITY_IDLE , OS_PRIORITY_LOW , OS_PRIORITY_BELOW_NORMAL , OS_PRIORITY_NORMAL , OS_PRIORITY_ABOVE_NORMAL , OS_PRIORITY_HIGH , OS_PRIORITY_ABOVE_HIGH , OS_PRIORITY_VERY_HIGH , OS_PRIORITY_BELOW_REALTIME , OS_PRIORITY_REAL_TIME } |
typedef for thread priority. The higher the value, the higher the priority. More... | |
enum | OS_BOOT_STATE { OS_OFF , OS_CREATE_QUEUES , OS_CREATE_TASKS , OS_INIT_PRE_OS , OS_SCHEDULER_RUNNING , OS_ENGINE_RUNNING , OS_PRECYCLIC_INIT_HAS_FINISHED , OS_SYSTEM_RUNNING , OS_INIT_OS_FATALERROR_SCHEDULER , OS_INIT_OS_FATALERROR , OS_BOOT_STATE_MAX } |
enum of OS boot states More... | |
Functions | |
void | OS_StartScheduler (void) |
Starts the operating system scheduler. More... | |
void | OS_InitializeOperatingSystem (void) |
Initialization the RTOS interface. More... | |
void | vApplicationIdleHook (void) |
Hook function for the idle task. More... | |
void | OS_EnterTaskCritical (void) |
Enter Critical interface function for use in FreeRTOS-Tasks and FreeRTOS-ISR. More... | |
void | OS_ExitTaskCritical (void) |
Exit Critical interface function for use in FreeRTOS-Tasks and FreeRTOS-ISR. More... | |
void | OS_IncrementTimer (void) |
Increments the system timer os_timer. More... | |
uint32_t | OS_GetTickCount (void) |
Returns OS based system tick value. More... | |
void | OS_DelayTaskUntil (uint32_t *pPreviousWakeTime, uint32_t milliseconds) |
Delay a task until a specified time. More... | |
void | OS_SystemTickHandler (void) |
Handles the tick increment of operating systick timer. More... | |
void | OS_MarkTaskAsRequiringFpuContext (void) |
Marks the current task as requiring FPU context. More... | |
OS_STD_RETURN_e | OS_ReceiveFromQueue (OS_QUEUE xQueue, void *const pvBuffer, uint32_t ticksToWait) |
Receive an item from a queue. More... | |
OS_STD_RETURN_e | OS_SendToBackOfQueue (OS_QUEUE xQueue, const void *const pvItemToQueue, TickType_t ticksToWait) |
Post an item to the back the provided queue. More... | |
OS_STD_RETURN_e | OS_SendToBackOfQueueFromIsr (OS_QUEUE xQueue, const void *const pvItemToQueue, long *const pxHigherPriorityTaskWoken) |
Post an item to the back the provided queue during an ISR. More... | |
bool | OS_CheckTimeHasPassed (uint32_t oldTimeStamp_ms, uint32_t timeToPass_ms) |
This function checks if timeToPass has passed since the last timestamp to now. More... | |
bool | OS_CheckTimeHasPassedWithTimestamp (uint32_t oldTimeStamp_ms, uint32_t currentTimeStamp_ms, uint32_t timeToPass_ms) |
This function checks if timeToPass has passed since the last timestamp to now. More... | |
STD_RETURN_TYPE_e | OS_CheckTimeHasPassedSelfTest (void) |
Does a self check if the OS_CheckTimeHasPassedWithTimestamp works as expected. More... | |
Variables | |
volatile OS_BOOT_STATE_e | os_boot |
uint32_t | os_schedulerStartTime |
Scheduler "zero" time for task phase control. More... | |
Declaration of the OS wrapper interface.
SPDX-License-Identifier: BSD-3-Clause
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
We kindly request you to use one or more of the following phrases to refer to foxBMS in your hardware, software, documentation or advertising materials:
This module describes the interface to different operating systems
Definition in file os.h.
#define OS_IDLE_TASK_STACK_SIZE configMINIMAL_STACK_SIZE |
typedef enum OS_BOOT_STATE OS_BOOT_STATE_e |
enum of OS boot states
typedef enum OS_PRIORITY OS_PRIORITY_e |
typedef for thread priority. The higher the value, the higher the priority.
typedef enum OS_STD_RETURN OS_STD_RETURN_e |
enum to encapsulate function returns from the OS-wrapper layer
typedef struct OS_TASK_DEFINITION OS_TASK_DEFINITION_s |
struct for FreeRTOS task definition
typedef struct OS_TIMER OS_TIMER_s |
OS timer.
enum OS_BOOT_STATE |
enum of OS boot states
enum OS_PRIORITY |
typedef for thread priority. The higher the value, the higher the priority.
enum OS_STD_RETURN |
bool OS_CheckTimeHasPassed | ( | uint32_t | oldTimeStamp_ms, |
uint32_t | timeToPass_ms | ||
) |
This function checks if timeToPass has passed since the last timestamp to now.
This function retrieves the current time stamp with OS_GetTickCount(), compares it to the oldTimestamp_ms and checks if more or equal of timetoPass_ms timer increments have passed.
[in] | oldTimeStamp_ms | timestamp that shall be compared to the current time in ms |
[in] | timeToPass_ms | timer increments (in ms) that shall pass between oldTimeStamp_ms and now |
Definition at line 140 of file os.c.
STD_RETURN_TYPE_e OS_CheckTimeHasPassedSelfTest | ( | void | ) |
Does a self check if the OS_CheckTimeHasPassedWithTimestamp works as expected.
This functions tests some values with OS_CheckTimeHasPassedWithTimestamp(). It is intended to be side-effect free and to be callable any time to verify from the running program if this portion of the software is working as expected. returns STD_OK if the self check passes successfully, STD_NOT_OK otherwise
Definition at line 144 of file os.c.
bool OS_CheckTimeHasPassedWithTimestamp | ( | uint32_t | oldTimeStamp_ms, |
uint32_t | currentTimeStamp_ms, | ||
uint32_t | timeToPass_ms | ||
) |
This function checks if timeToPass has passed since the last timestamp to now.
This function is passed the current time stamp as argument currentTimeStamp_ms, compares it to the oldTimestamp_ms and checks if more or equal of timetoPass_ms timer increments have passed.
[in] | oldTimeStamp_ms | timestamp that shall be compared to the current time in ms |
[in] | currentTimeStamp_ms | timestamp of the current time in ms |
[in] | timeToPass_ms | timer increments (in ms) that shall pass between oldTimeStamp_ms and now |
void OS_DelayTaskUntil | ( | uint32_t * | pPreviousWakeTime, |
uint32_t | milliseconds | ||
) |
Delay a task until a specified time.
TODO
pPreviousWakeTime | Pointer to a variable that holds the time at which the task was last unblocked. PreviousWakeTime must be initialized with the current time prior to its first use (PreviousWakeTime = OS_osSysTick()). |
milliseconds | time delay value in milliseconds |
Definition at line 133 of file os_freertos.c.
void OS_EnterTaskCritical | ( | void | ) |
Enter Critical interface function for use in FreeRTOS-Tasks and FreeRTOS-ISR.
checks the function context (task/thread mode or interrupt (handler) mode) and calls the corresponding enter-critical function
Definition at line 121 of file os_freertos.c.
void OS_ExitTaskCritical | ( | void | ) |
Exit Critical interface function for use in FreeRTOS-Tasks and FreeRTOS-ISR.
Checks the function context (task/thread mode or interrupt (handler) mode) and calls the corresponding exit-critical function
Definition at line 125 of file os_freertos.c.
uint32_t OS_GetTickCount | ( | void | ) |
Returns OS based system tick value.
TODO
Definition at line 129 of file os_freertos.c.
void OS_IncrementTimer | ( | void | ) |
void OS_InitializeOperatingSystem | ( | void | ) |
void OS_MarkTaskAsRequiringFpuContext | ( | void | ) |
Marks the current task as requiring FPU context.
In order to avoid corruption of the registers of the floating point unit during a task switch, every task that uses the FPU has to call this function at its start.
This instructs the underlying operating system to store the context of the FPU when switching a task.
This function has to be called from within a task.
Definition at line 159 of file os_freertos.c.
OS_STD_RETURN_e OS_ReceiveFromQueue | ( | OS_QUEUE | xQueue, |
void *const | pvBuffer, | ||
uint32_t | ticksToWait | ||
) |
Receive an item from a queue.
This function needs to implement the wrapper to OS specfic queue posting. The queue needs to be implement in a FreeRTOS compatible way. This function must not be called from within an interrupt service routine (due to the FreeRTOS compatibility of the the wrapper).
xQueue | FreeRTOS compatible queue handle that should be posted to |
pvBuffer | Pointer to the buffer into which the received item is posted to. |
ticksToWait | ticks to wait |
Definition at line 163 of file os_freertos.c.
OS_STD_RETURN_e OS_SendToBackOfQueue | ( | OS_QUEUE | xQueue, |
const void *const | pvItemToQueue, | ||
TickType_t | ticksToWait | ||
) |
Post an item to the back the provided queue.
This function needs to implement the wrapper to OS specfic queue posting. The queue needs to be implement in a FreeRTOS compatible way.
xQueue | FreeRTOS compatible queue handle that should be posted to. |
pvItemToQueue | Pointer to the item to be posted in the queue. |
ticksToWait | ticks to wait |
Definition at line 176 of file os_freertos.c.
OS_STD_RETURN_e OS_SendToBackOfQueueFromIsr | ( | OS_QUEUE | xQueue, |
const void *const | pvItemToQueue, | ||
long *const | pxHigherPriorityTaskWoken | ||
) |
Post an item to the back the provided queue during an ISR.
This function needs to implement the wrapper to OS specfic queue posting. The queue needs to be implement in a FreeRTOS compatible way.
xQueue | FreeRTOS compatible queue handle that should be posted to. |
pvItemToQueue | Pointer to the item to be posted in the queue. |
pxHigherPriorityTaskWoken | Indicates whether a context switch is required or not. If the parameter is a NULL_PTR, the context switch will happen at the next tick. |
Definition at line 188 of file os_freertos.c.
void OS_StartScheduler | ( | void | ) |
Starts the operating system scheduler.
Definition at line 71 of file os_freertos.c.
void OS_SystemTickHandler | ( | void | ) |
Handles the tick increment of operating systick timer.
TODO
Definition at line 148 of file os_freertos.c.
void vApplicationIdleHook | ( | void | ) |
Hook function for the idle task.
This is an FreeRTOS function an does not adhere to foxBMS function naming convetions
Definition at line 111 of file os_freertos.c.
|
extern |