foxBMS  1.1.0
The foxBMS Battery Management System API Documentation
os.h File Reference

Implementation of the tasks used by the system, headers. More...

#include "general.h"
#include "FreeRTOS.h"
#include "event_groups.h"
#include "semphr.h"
#include "task.h"
Include dependency graph for os.h:
This graph shows which files directly or indirectly include this file:

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_NUM_OF_MUTEXES   0
 Number of mutexes for the engine TODO engine what?! More...
 
#define OS_NUM_OF_EVENTS   0
 Number of events for the engine TODO engine what?! More...
 

Typedefs

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_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 vApplicationGetIdleTaskMemory (StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize)
 Supplies the memory for the idle task. More...
 
void vApplicationIdleHook (void)
 Hook function for the idle task. More...
 
void vApplicationStackOverflowHook (TaskHandle_t xTask, char *pcTaskName)
 Hook function for StackOverflowHandling. 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_TriggerTimer (volatile OS_TIMER_s *timer)
 Increments the system timer os_timer. More...
 
uint32_t OS_GetTickCount (void)
 Returns OS based system tick value. More...
 
void OS_DelayTask (uint32_t delay_ms)
 Delays a task in milliseconds. 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...
 

Variables

volatile OS_BOOT_STATE_e os_boot
 
volatile OS_TIMER_s os_timer
 
uint32_t os_schedulerStartTime
 Scheduler "zero" time for task phase control. More...
 
SemaphoreHandle_t os_mutexes []
 
EventGroupHandle_t os_events []
 

Detailed Description

Implementation of the tasks used by the system, headers.

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
2019-08-27 (date of creation)
Updated
2021-07-23 (date of last update)
Prefix
OS

Definition in file os.h.

Macro Definition Documentation

◆ OS_NUM_OF_EVENTS

#define OS_NUM_OF_EVENTS   0

Number of events for the engine TODO engine what?!

Definition at line 70 of file os.h.

◆ OS_NUM_OF_MUTEXES

#define OS_NUM_OF_MUTEXES   0

Number of mutexes for the engine TODO engine what?!

Definition at line 68 of file os.h.

Typedef Documentation

◆ OS_BOOT_STATE_e

enum of OS boot states

◆ OS_PRIORITY_e

typedef enum OS_PRIORITY OS_PRIORITY_e

typedef for thread priority. The higher the value, the higher the priority.

◆ OS_TASK_DEFINITION_s

struct for FreeRTOS task definition

◆ OS_TIMER_s

typedef struct OS_TIMER OS_TIMER_s

OS timer.

Enumeration Type Documentation

◆ OS_BOOT_STATE

enum of OS boot states

Enumerator
OS_OFF 

system is off

OS_CREATE_QUEUES 

state right before queues are created

OS_CREATE_TASKS 

state right before tasks are created

OS_INIT_PRE_OS 

state right after tasks are created

OS_SCHEDULER_RUNNING 

scheduler is running

OS_ENGINE_RUNNING 

state right after scheduler is started and engine is initalized

OS_PRECYCLIC_INIT_HAS_FINISHED 

state after the precyclic init has finished

OS_SYSTEM_RUNNING 

system is running

OS_INIT_OS_FATALERROR_SCHEDULER 

error in scheduler

OS_INIT_OS_FATALERROR 

fatal error

OS_BOOT_STATE_MAX 

DO NOT CHANGE, MUST BE THE LAST ENTRY

Definition at line 90 of file os.h.

◆ OS_PRIORITY

typedef for thread priority. The higher the value, the higher the priority.

Enumerator
OS_PRIORITY_IDLE 

priority: idle (lowest)

OS_PRIORITY_LOW 

priority: low

OS_PRIORITY_BELOW_NORMAL 

priority: below normal

OS_PRIORITY_NORMAL 

priority: normal (default)

OS_PRIORITY_ABOVE_NORMAL 

priority: above normal

OS_PRIORITY_HIGH 

priority: high

OS_PRIORITY_ABOVE_HIGH 

priority: above high

OS_PRIORITY_VERY_HIGH 

priority: very high

OS_PRIORITY_BELOW_REALTIME 

priority: below realtime

OS_PRIORITY_REAL_TIME 

priority: realtime (highest)

Definition at line 76 of file os.h.

Function Documentation

◆ OS_DelayTask()

void OS_DelayTask ( uint32_t  delay_ms)

Delays a task in milliseconds.

TODO

Parameters
delay_mstime delay value

Definition at line 186 of file os.c.

◆ 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 196 of file os.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 174 of file os.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 178 of file os.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 182 of file os.c.

◆ OS_InitializeOperatingSystem()

void OS_InitializeOperatingSystem ( void  )

Initialization the RTOS interface.

This function initializes the mutexes, eventgroups and tasks.

Definition at line 104 of file os.c.

Here is the call graph for this function:

◆ OS_StartScheduler()

void OS_StartScheduler ( void  )

Starts the operating system scheduler.

Definition at line 100 of file os.c.

◆ OS_SystemTickHandler()

void OS_SystemTickHandler ( void  )

Handles the tick increment of operating systick timer.

TODO

Definition at line 206 of file os.c.

◆ OS_TriggerTimer()

void OS_TriggerTimer ( volatile OS_TIMER_s timer)

Increments the system timer os_timer.

The os_timer is a runtime-counter, counting the time since the last reset.

Parameters
timerTODO

Definition at line 141 of file os.c.

◆ vApplicationGetIdleTaskMemory()

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

Supplies the memory for the idle task.

This is needed due to the usage of configSUPPORT_STATIC_ALLOCATION. This is an FreeRTOS function an does not adhere to foxBMS function naming convetions.

Parameters
ppxIdleTaskTCBBufferTODO
ppxIdleTaskStackBufferTODO
pulIdleTaskStackSizeTODO

Definition at line 113 of file os.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 133 of file os.c.

Here is the call graph for this function:

◆ vApplicationStackOverflowHook()

void vApplicationStackOverflowHook ( TaskHandle_t  xTask,
char *  pcTaskName 
)

Hook function for StackOverflowHandling.

This handler is used when the operation system encounters a stackoverflow in a task. This is an FreeRTOS function an does not adhere to foxBMS function naming convetions

Parameters
xTaskTODO
pcTaskNameTODO

Definition at line 137 of file os.c.

Variable Documentation

◆ os_boot

volatile OS_BOOT_STATE_e os_boot
extern

boot state of the system

boot state of the OS

Definition at line 72 of file os.c.

◆ os_events

EventGroupHandle_t os_events[]
extern

handles for OS objects

◆ os_mutexes

SemaphoreHandle_t os_mutexes[]
extern

handles for OS objects

◆ os_schedulerStartTime

uint32_t os_schedulerStartTime
extern

Scheduler "zero" time for task phase control.

timestamp of the scheduler start

Definition at line 76 of file os.c.

◆ os_timer

volatile OS_TIMER_s os_timer
extern

os timer for counting the system ticks

system timer variable

Definition at line 74 of file os.c.