foxBMS  1.2.1
The foxBMS Battery Management System API Documentation
os_freertos.c File Reference

FreeRTOS specific implementation of the tasks and resources used by the system. More...

#include "os.h"
#include "ftask.h"
Include dependency graph for os_freertos.c:

Go to the source code of this file.

Functions

void OS_StartScheduler (void)
 Starts the operating system scheduler. More...
 
void vApplicationGetIdleTaskMemory (StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize)
 
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...
 
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...
 

Detailed Description

FreeRTOS specific implementation of the tasks and resources used by the system.

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:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

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 product uses parts of foxBMS®″
  • ″This product includes parts of foxBMS®″
  • ″This product is derived from foxBMS®″
Author
foxBMS Team
Date
2021-11-18 (date of creation)
Updated
2021-12-01 (date of last update)
Prefix
OS

Definition in file os_freertos.c.

Function Documentation

◆ OS_DelayTaskUntil()

void OS_DelayTaskUntil ( uint32_t *  pPreviousWakeTime,
uint32_t  milliseconds 
)

Delay a task until a specified time.

TODO

Parameters
pPreviousWakeTimePointer 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()).
millisecondstime delay value in milliseconds

Definition at line 133 of file os_freertos.c.

◆ OS_EnterTaskCritical()

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.

◆ OS_ExitTaskCritical()

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.

◆ OS_GetTickCount()

uint32_t OS_GetTickCount ( void  )

Returns OS based system tick value.

TODO

Returns
time stamp in milliseconds, based on the operating system time.

Definition at line 129 of file os_freertos.c.

◆ OS_MarkTaskAsRequiringFpuContext()

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_ReceiveFromQueue()

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).

Parameters
xQueueFreeRTOS compatible queue handle that should be posted to
pvBufferPointer to the buffer into which the received item is posted to.
ticksToWaitticks to wait
Returns
OS_SUCCESS if an item was successfully received, otherwise OS_FAIL.

Definition at line 163 of file os_freertos.c.

◆ OS_SendToBackOfQueue()

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.

Parameters
xQueueFreeRTOS compatible queue handle that should be posted to.
pvItemToQueuePointer to the item to be posted in the queue.
ticksToWaitticks to wait
Returns
OS_SUCCESS if the item was successfully posted, otherwise OS_FAIL.

Definition at line 176 of file os_freertos.c.

◆ OS_SendToBackOfQueueFromIsr()

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.

Parameters
xQueueFreeRTOS compatible queue handle that should be posted to.
pvItemToQueuePointer to the item to be posted in the queue.
pxHigherPriorityTaskWokenIndicates whether a context switch is required or not. If the parameter is a NULL_PTR, the context switch will happen at the next tick.
Returns
OS_SUCCESS if the item was successfully posted, otherwise OS_FAIL.

Definition at line 188 of file os_freertos.c.

◆ OS_StartScheduler()

void OS_StartScheduler ( void  )

Starts the operating system scheduler.

Definition at line 71 of file os_freertos.c.

◆ OS_SystemTickHandler()

void OS_SystemTickHandler ( void  )

Handles the tick increment of operating systick timer.

TODO

Definition at line 148 of file os_freertos.c.

◆ vApplicationGetIdleTaskMemory()

void vApplicationGetIdleTaskMemory ( StaticTask_t **  ppxIdleTaskTCBBuffer,
StackType_t **  ppxIdleTaskStackBuffer,
uint32_t *  pulIdleTaskStackSize 
)

Buffer for the Idle Task's structure

Stack for the Idle task

Definition at line 75 of file os_freertos.c.

◆ vApplicationIdleHook()

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.

Here is the call graph for this function: