foxBMS  1.6.0
The foxBMS Battery Management System API Documentation
ftask_freertos.c
Go to the documentation of this file.
1 /**
2  *
3  * @copyright © 2010 - 2023, Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V.
4  * All rights reserved.
5  *
6  * SPDX-License-Identifier: BSD-3-Clause
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions are met:
10  *
11  * 1. Redistributions of source code must retain the above copyright notice, this
12  * list of conditions and the following disclaimer.
13  *
14  * 2. Redistributions in binary form must reproduce the above copyright notice,
15  * this list of conditions and the following disclaimer in the documentation
16  * and/or other materials provided with the distribution.
17  *
18  * 3. Neither the name of the copyright holder nor the names of its
19  * contributors may be used to endorse or promote products derived from
20  * this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
25  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
26  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  *
33  * We kindly request you to use one or more of the following phrases to refer to
34  * foxBMS in your hardware, software, documentation or advertising materials:
35  *
36  * - ″This product uses parts of foxBMS®″
37  * - ″This product includes parts of foxBMS®″
38  * - ″This product is derived from foxBMS®″
39  *
40  */
41 
42 /**
43  * @file ftask_freertos.c
44  * @author foxBMS Team
45  * @date 2019-08-27 (date of creation)
46  * @updated 2023-10-12 (date of last update)
47  * @version v1.6.0
48  * @ingroup TASK
49  * @prefix FTSK
50  *
51  * @brief OS specific, i.e., FreeRTOS specific, creation of the tasks
52  * @details TODO
53  */
54 
55 /*========== Includes =======================================================*/
56 #include "general.h"
57 
58 #include "can_cfg.h"
59 
60 #include "FreeRTOS.h"
61 #include "task.h"
62 
63 #include "afe.h"
64 #include "database.h"
65 #include "ftask.h"
66 
67 #include <stdint.h>
68 
69 /*========== Macros and Definitions =========================================*/
70 /** helper macro to translate the stack sizes from bytes into words as FreeRTOS requires words and not bytes */
71 #define FTSK_BYTES_TO_WORDS(VARIABLE_IN_BYTES) ((VARIABLE_IN_BYTES) / GEN_BYTES_PER_WORD)
72 /** Stack size of engine task in words */
73 #define FTSK_TASK_ENGINE_STACK_SIZE_IN_WORDS FTSK_BYTES_TO_WORDS(FTSK_TASK_ENGINE_STACK_SIZE_IN_BYTES)
74 /** @brief Stack size of cyclic 1 ms task in words */
75 #define FTSK_TASK_CYCLIC_1MS_STACK_SIZE_IN_WORDS FTSK_BYTES_TO_WORDS(FTSK_TASK_CYCLIC_1MS_STACK_SIZE_IN_BYTES)
76 /** @brief Stack size of cyclic 10 ms task in words */
77 #define FTSK_TASK_CYCLIC_10MS_STACK_SIZE_IN_WORDS FTSK_BYTES_TO_WORDS(FTSK_TASK_CYCLIC_10MS_STACK_SIZE_IN_BYTES)
78 /** @brief Stack size of cyclic 100 ms task in words */
79 #define FTSK_TASK_CYCLIC_100MS_STACK_SIZE_IN_WORDS FTSK_BYTES_TO_WORDS(FTSK_TASK_CYCLIC_100MS_STACK_SIZE_IN_BYTES)
80 /** @brief Stack size of cyclic 100 ms task for algorithms in words */
81 #define FTSK_TASK_CYCLIC_ALGORITHM_100MS_STACK_SIZE_IN_WORDS \
82  FTSK_BYTES_TO_WORDS(FTSK_TASK_CYCLIC_ALGORITHM_100MS_STACK_SIZE_IN_BYTES)
83 /** @brief Stack size of continuously running task for AFEs */
84 #define FTSK_TASK_AFE_STACK_SIZE_IN_WORDS FTSK_BYTES_TO_WORDS(FTSK_TASK_AFE_STACK_SIZE_IN_BYTES)
85 
86 /** size of storage area for the database queue */
87 #define FTSK_DATABASE_QUEUE_STORAGE_AREA (FTSK_DATABASE_QUEUE_LENGTH * FTSK_DATABASE_QUEUE_ITEM_SIZE_IN_BYTES)
88 
89 /** size of storage area for the IMD queue*/
90 #define FTSK_IMD_QUEUE_STORAGE_AREA (FTSK_IMD_QUEUE_LENGTH * FTSK_IMD_QUEUE_ITEM_SIZE_IN_BYTES)
91 
92 /** size of storage area for the CAN Rx queue*/
93 #define FTSK_CAN_RX_QUEUE_STORAGE_AREA (FTSK_CAN_RX_QUEUE_LENGTH * FTSK_CAN_RX_QUEUE_ITEM_SIZE_IN_BYTES)
94 
95 /** size of storage area for the CAN Tx unsent messages queue*/
96 #define FTSK_CAN_TX_UNSENT_MESSAGES_QUEUE_STORAGE_AREA \
97  (FTSK_CAN_TX_UNSENT_MESSAGES_QUEUE_LENGTH * FTSK_CAN_TX_UNSENT_MESSAGES_QUEUE_ITEM_SIZE_IN_BYTES)
98 
99 /** size of storage area for the RTC set time queue*/
100 #define FTSK_RTC_QUEUE_STORAGE_AREA (FTSK_RTC_QUEUE_LENGTH * FTSK_RTC_QUEUE_ITEM_SIZE_IN_BYTES)
101 
102 /** size of storage area for the I2C over AFE slave queue*/
103 #define FTSK_AFEI2C_QUEUE_STORAGE_AREA (FTSK_AFEI2C_QUEUE_LENGTH * FTSK_AFEI2C_QUEUE_ITEM_SIZE_IN_BYTES)
104 
105 /*========== Static Constant and Variable Definitions =======================*/
106 
107 /*========== Extern Constant and Variable Definitions =======================*/
108 /** @brief Definition of task handle for the AFE task */
109 OS_TASK_HANDLE ftsk_taskHandleAfe;
110 OS_TASK_HANDLE ftsk_taskHandleI2c;
111 
112 volatile bool ftsk_allQueuesCreated = false;
113 
115 
117 
118 /* INCLUDE MARKER FOR THE DOCUMENTATION; DO NOT MOVE can-documentation-rx-queue-handle-start-include */
120 /* INCLUDE MARKER FOR THE DOCUMENTATION; DO NOT MOVE can-documentation-rx-queue-handle-stop-include */
121 
123 
126 
129 
130 /*========== Static Function Prototypes =====================================*/
131 
132 /*========== Static Function Implementations ================================*/
133 
134 /*========== Extern Function Implementations ================================*/
135 
136 extern void FTSK_CreateQueues(void) {
137  /* usage of 'StaticQueue_t' and 'vQueueAddToRegistry' here is okay (no
138  wrapper in 'os.h' needed) as it is only used in the internals of the
139  'ftask_freertos.c' implementation and not exposed to the BMS
140  application. */
141 
142  /* structure and array for static database queue */
143  static uint8_t ftsk_databaseQueueStorageArea[FTSK_DATABASE_QUEUE_STORAGE_AREA] = {0};
144  static StaticQueue_t ftsk_databaseQueueStructure = {0};
145 
146  /* Create a queue capable of containing a pointer of type DATA_QUEUE_MESSAGE_s
147  Data of Messages are passed by pointer as they contain a lot of data. */
148  ftsk_databaseQueue = xQueueCreateStatic(
151  ftsk_databaseQueueStorageArea,
152  &ftsk_databaseQueueStructure);
154  vQueueAddToRegistry(ftsk_databaseQueue, "Database Queue");
155 
156  /* structure and array for static IMD queue */
157  static uint8_t ftsk_imdQueueStorageArea[FTSK_IMD_QUEUE_STORAGE_AREA] = {0};
158  static StaticQueue_t ftsk_imdQueueStructure = {0};
159 
160  ftsk_imdCanDataQueue = xQueueCreateStatic(
161  FTSK_IMD_QUEUE_LENGTH, FTSK_IMD_QUEUE_ITEM_SIZE_IN_BYTES, ftsk_imdQueueStorageArea, &ftsk_imdQueueStructure);
162  vQueueAddToRegistry(ftsk_imdCanDataQueue, "IMD CAN Data Queue");
164 
165  /* INCLUDE MARKER FOR THE DOCUMENTATION; DO NOT MOVE can-documentation-rx-queue-vars-start-include */
166  /* structure and array for static CAN RX queue */
167  static uint8_t ftsk_canRxQueueStorageArea[FTSK_CAN_RX_QUEUE_STORAGE_AREA] = {0};
168  static StaticQueue_t ftsk_canRxQueueStructure = {0};
169  /* INCLUDE MARKER FOR THE DOCUMENTATION; DO NOT MOVE can-documentation-rx-queue-vars-stop-include */
170 
171  ftsk_canRxQueue = xQueueCreateStatic(
174  ftsk_canRxQueueStorageArea,
175  &ftsk_canRxQueueStructure);
176  vQueueAddToRegistry(ftsk_canRxQueue, "CAN Receive Queue");
178 
179  /* structure and array for static CAN TX unsent messages queue */
180  static uint8_t ftsk_canTxUnsentMessagesQueueStorageArea[FTSK_CAN_TX_UNSENT_MESSAGES_QUEUE_STORAGE_AREA] = {0};
181  static StaticQueue_t ftsk_canTxUnsentMessagesQueueStructure = {0};
182 
183  ftsk_canTxUnsentMessagesQueue = xQueueCreateStatic(
186  ftsk_canTxUnsentMessagesQueueStorageArea,
187  &ftsk_canTxUnsentMessagesQueueStructure);
189  vQueueAddToRegistry(ftsk_canTxUnsentMessagesQueue, "CAN Transmit Unsent Messages Queue");
190 
191  /**
192  * @brief size of storage area for the AFE request queue
193  * @details The array that is used for the queue's storage area.
194  * This must be at least
195  * #FTSK_AFE_REQUEST_QUEUE_LENGTH * #FTSK_AFE_REQUEST_QUEUE_ITEM_SIZE
196  */
197  static uint8_t ftsk_afeRequestQueueStorageArea[FTSK_AFE_REQUEST_QUEUE_LENGTH * FTSK_AFE_REQUEST_QUEUE_ITEM_SIZE] = {
198  0};
199  static StaticQueue_t ftsk_afeRequestQueueStructure = {0}; /*!< structure for static database queue */
200 
201  /* Create a queue capable of containing a pointer of type DATA_QUEUE_MESSAGE_s
202  Data of Messages are passed by pointer as they contain a lot of data. */
203  ftsk_afeRequestQueue = xQueueCreateStatic(
206  ftsk_afeRequestQueueStorageArea,
207  &ftsk_afeRequestQueueStructure);
209  vQueueAddToRegistry(ftsk_afeRequestQueue, "LTC Request Queue");
210 
211  /* structure and array for static RTC queue */
212  static uint8_t ftsk_rtcQueueStorageArea[FTSK_RTC_QUEUE_STORAGE_AREA] = {0};
213  static StaticQueue_t ftsk_rtcQueueStructure = {0};
214 
215  ftsk_rtcSetTimeQueue = xQueueCreateStatic(
216  FTSK_RTC_QUEUE_LENGTH, FTSK_RTC_QUEUE_ITEM_SIZE_IN_BYTES, ftsk_rtcQueueStorageArea, &ftsk_rtcQueueStructure);
217  vQueueAddToRegistry(ftsk_rtcSetTimeQueue, "RTC set time Queue");
219 
220  /* structure and array for static I2C over AFE slave queue */
221  static uint8_t ftsk_afeToI2cQueueStorageArea[FTSK_AFEI2C_QUEUE_STORAGE_AREA] = {0};
222  static StaticQueue_t ftsk_afeToI2cQueueStructure = {0};
223 
224  ftsk_afeToI2cQueue = xQueueCreateStatic(
227  ftsk_afeToI2cQueueStorageArea,
228  &ftsk_afeToI2cQueueStructure);
229  vQueueAddToRegistry(ftsk_afeToI2cQueue, "I2C over AFE slave");
231 
232  /* structure and array for static I2C over AFE slave queue */
233  static uint8_t ftsk_afeFromI2cQueueStorageArea[FTSK_AFEI2C_QUEUE_STORAGE_AREA] = {0};
234  static StaticQueue_t ftsk_afeFromI2cQueueStructure = {0};
235 
236  ftsk_afeFromI2cQueue = xQueueCreateStatic(
239  ftsk_afeFromI2cQueueStorageArea,
240  &ftsk_afeFromI2cQueueStructure);
241  vQueueAddToRegistry(ftsk_afeFromI2cQueue, "I2C over AFE slave");
243 
245  ftsk_allQueuesCreated = true;
247 }
248 
249 extern void FTSK_CreateTasks(void) {
250  /* usage of the FreeRTOS internals here is okay (no wrapper in 'os.h'
251  needed) as it is only used in the internals of the 'ftask_freertos.c'
252  implementation and not exposed to the BMS application.
253  The only exception is the AFE task handle (ftsk_taskHandleAfe), see
254  below */
255 
256  /* Engine Task */
257  static StaticTask_t ftsk_taskEngine = {0};
258  static StackType_t ftsk_stackEngine[FTSK_TASK_ENGINE_STACK_SIZE_IN_WORDS] = {0};
259 
260  const TaskHandle_t ftsk_taskHandleEngine = xTaskCreateStatic(
261  (TaskFunction_t)FTSK_CreateTaskEngine,
262  (const portCHAR *)"TaskEngine",
265  (UBaseType_t)ftsk_taskDefinitionEngine.priority,
266  ftsk_stackEngine,
267  &ftsk_taskEngine);
268  FAS_ASSERT(ftsk_taskHandleEngine != NULL); /* Trap if initialization failed */
269 
270  /* Cyclic Task 1ms */
271  static StaticTask_t ftsk_taskCyclic1ms = {0};
272  static StackType_t ftsk_stackCyclic1ms[FTSK_TASK_CYCLIC_1MS_STACK_SIZE_IN_WORDS] = {0};
273 
274  const TaskHandle_t ftsk_taskHandleCyclic1ms = xTaskCreateStatic(
275  (TaskFunction_t)FTSK_CreateTaskCyclic1ms,
276  (const portCHAR *)"TaskCyclic1ms",
280  ftsk_stackCyclic1ms,
281  &ftsk_taskCyclic1ms);
282  FAS_ASSERT(ftsk_taskHandleCyclic1ms != NULL); /* Trap if initialization failed */
283 
284  /* Cyclic Task 10ms */
285  static StaticTask_t ftsk_taskCyclic10ms = {0};
286  static StackType_t ftsk_stackCyclic10ms[FTSK_TASK_CYCLIC_10MS_STACK_SIZE_IN_WORDS] = {0};
287 
288  const TaskHandle_t ftsk_taskHandleCyclic10ms = xTaskCreateStatic(
289  (TaskFunction_t)FTSK_CreateTaskCyclic10ms,
290  (const portCHAR *)"TaskCyclic10ms",
294  ftsk_stackCyclic10ms,
295  &ftsk_taskCyclic10ms);
296  FAS_ASSERT(ftsk_taskHandleCyclic10ms != NULL); /* Trap if initialization failed */
297 
298  /* Cyclic Task 100ms */
299  static StaticTask_t ftsk_taskCyclic100ms = {0};
300  static StackType_t ftsk_stackCyclic100ms[FTSK_TASK_CYCLIC_100MS_STACK_SIZE_IN_WORDS] = {0};
301 
302  const TaskHandle_t ftsk_taskHandleCyclic100ms = xTaskCreateStatic(
303  (TaskFunction_t)FTSK_CreateTaskCyclic100ms,
304  (const portCHAR *)"TaskCyclic100ms",
308  ftsk_stackCyclic100ms,
309  &ftsk_taskCyclic100ms);
310  FAS_ASSERT(ftsk_taskHandleCyclic100ms != NULL); /* Trap if initialization failed */
311 
312  /* Cyclic Task 100ms for algorithms */
313  static StaticTask_t ftsk_taskCyclicAlgorithm100ms = {0};
314  static StackType_t ftsk_stackCyclicAlgorithm100ms[FTSK_TASK_CYCLIC_ALGORITHM_100MS_STACK_SIZE_IN_WORDS] = {0};
315 
316  const TaskHandle_t ftsk_taskHandleCyclicAlgorithm100ms = xTaskCreateStatic(
317  (TaskFunction_t)FTSK_CreateTaskCyclicAlgorithm100ms,
318  (const portCHAR *)"TaskCyclicAlgorithm100ms",
322  ftsk_stackCyclicAlgorithm100ms,
323  &ftsk_taskCyclicAlgorithm100ms);
324  FAS_ASSERT(ftsk_taskHandleCyclicAlgorithm100ms != NULL); /* Trap if initialization failed */
325 
326  /* Continuously running Task for I2C */
327  static StaticTask_t ftsk_taskI2c = {0};
328  static StackType_t ftsk_stackSizeI2c[FTSK_TASK_AFE_STACK_SIZE_IN_WORDS] = {0};
329 
330  ftsk_taskHandleI2c = xTaskCreateStatic(
331  (TaskFunction_t)FTSK_CreateTaskI2c,
332  (const portCHAR *)"TaskI2c",
335  (UBaseType_t)ftsk_taskDefinitionI2c.priority,
336  ftsk_stackSizeI2c,
337  &ftsk_taskI2c);
338  FAS_ASSERT(ftsk_taskHandleI2c != NULL); /* Trap if initialization failed */
339 
340  /* This task is required in the BMS application and therefore declared by
341  the public name as defined in 'os.h'. The details how this task is
342  declared is however only important for the implementation and therefore
343  the FreeRTOS specific names can be used. */
344  /* Continuously running Task for AFE */
345  static StaticTask_t ftsk_taskAfe = {0};
346  static StackType_t ftsk_stackSizeAfe[FTSK_TASK_AFE_STACK_SIZE_IN_WORDS] = {0};
347 
348  ftsk_taskHandleAfe = xTaskCreateStatic(
349  (TaskFunction_t)FTSK_CreateTaskAfe,
350  (const portCHAR *)"TaskAfe",
353  (UBaseType_t)ftsk_taskDefinitionAfe.priority,
354  ftsk_stackSizeAfe,
355  &ftsk_taskAfe);
356  FAS_ASSERT(ftsk_taskHandleAfe != NULL); /* Trap if initialization failed */
357 }
358 
359 /*========== Externalized Static Function Implementations (Unit Test) =======*/
360 #ifdef UNITY_UNIT_TEST
361 #endif
AFE driver header.
Headers for the configuration for the CAN module.
Database module header.
#define FAS_ASSERT(x)
Assertion macro that asserts that x is true.
Definition: fassert.h:255
#define NULL
NULL definition.
Definition: fstd_types.h:67
#define NULL_PTR
Null pointer.
Definition: fstd_types.h:77
void FTSK_CreateTaskEngine(void *const pvParameters)
Database-Task.
Definition: ftask.c:76
void FTSK_CreateTaskCyclicAlgorithm100ms(void *const pvParameters)
Creation of cyclic 100 ms algorithm task.
Definition: ftask.c:188
void FTSK_CreateTaskCyclic100ms(void *const pvParameters)
Creation of cyclic 100 ms task.
Definition: ftask.c:159
void FTSK_CreateTaskCyclic10ms(void *const pvParameters)
Creation of cyclic 10 ms task.
Definition: ftask.c:130
void FTSK_CreateTaskAfe(void *const pvParameters)
Creation of continuously running task for AFEs.
Definition: ftask.c:239
void FTSK_CreateTaskCyclic1ms(void *const pvParameters)
Creation of cyclic 1 ms task.
Definition: ftask.c:98
void FTSK_CreateTaskI2c(void *const pvParameters)
Creation of continuously running task for I2c.
Definition: ftask.c:219
Header of task driver implementation.
#define FTSK_DATABASE_QUEUE_LENGTH
Definition: ftask.h:71
#define FTSK_DATABASE_QUEUE_ITEM_SIZE_IN_BYTES
Definition: ftask.h:74
#define FTSK_AFE_REQUEST_QUEUE_ITEM_SIZE
Definition: ftask.h:92
#define FTSK_CAN_RX_QUEUE_ITEM_SIZE_IN_BYTES
Definition: ftask.h:84
#define FTSK_CAN_TX_UNSENT_MESSAGES_QUEUE_ITEM_SIZE_IN_BYTES
Definition: ftask.h:89
#define FTSK_AFEI2C_QUEUE_LENGTH
Definition: ftask.h:100
#define FTSK_CAN_RX_QUEUE_LENGTH
Definition: ftask.h:82
#define FTSK_CAN_TX_UNSENT_MESSAGES_QUEUE_LENGTH
Definition: ftask.h:87
#define FTSK_AFEI2C_QUEUE_ITEM_SIZE_IN_BYTES
Definition: ftask.h:102
#define FTSK_IMD_QUEUE_ITEM_SIZE_IN_BYTES
Definition: ftask.h:79
#define FTSK_RTC_QUEUE_ITEM_SIZE_IN_BYTES
Definition: ftask.h:97
#define FTSK_RTC_QUEUE_LENGTH
Definition: ftask.h:95
#define FTSK_AFE_REQUEST_QUEUE_LENGTH
Definition: ftask.h:91
#define FTSK_IMD_QUEUE_LENGTH
Definition: ftask.h:77
OS_TASK_DEFINITION_s ftsk_taskDefinitionAfe
Task configuration of the continuously running task for AFEs.
Definition: ftask_cfg.c:145
OS_TASK_DEFINITION_s ftsk_taskDefinitionCyclic100ms
Task configuration of the cyclic 100 ms task.
Definition: ftask_cfg.c:127
OS_TASK_DEFINITION_s ftsk_taskDefinitionEngine
Definition of the engine task.
Definition: ftask_cfg.c:109
OS_TASK_DEFINITION_s ftsk_taskDefinitionCyclic1ms
Task configuration of the cyclic 1 ms task.
Definition: ftask_cfg.c:115
OS_TASK_DEFINITION_s ftsk_taskDefinitionCyclicAlgorithm100ms
Task configuration of the cyclic 100 ms task for algorithms.
Definition: ftask_cfg.c:133
OS_TASK_DEFINITION_s ftsk_taskDefinitionI2c
Task configuration of the continuously running task for MCU I2C communication.
Definition: ftask_cfg.c:139
OS_TASK_DEFINITION_s ftsk_taskDefinitionCyclic10ms
Task configuration of the cyclic 10 ms task.
Definition: ftask_cfg.c:121
OS_QUEUE ftsk_afeFromI2cQueue
#define FTSK_TASK_CYCLIC_1MS_STACK_SIZE_IN_WORDS
Stack size of cyclic 1 ms task in words.
OS_QUEUE ftsk_rtcSetTimeQueue
#define FTSK_IMD_QUEUE_STORAGE_AREA
#define FTSK_CAN_RX_QUEUE_STORAGE_AREA
#define FTSK_BYTES_TO_WORDS(VARIABLE_IN_BYTES)
OS_QUEUE ftsk_imdCanDataQueue
#define FTSK_RTC_QUEUE_STORAGE_AREA
OS_QUEUE ftsk_canTxUnsentMessagesQueue
volatile bool ftsk_allQueuesCreated
#define FTSK_AFEI2C_QUEUE_STORAGE_AREA
#define FTSK_TASK_ENGINE_STACK_SIZE_IN_WORDS
#define FTSK_TASK_AFE_STACK_SIZE_IN_WORDS
Stack size of continuously running task for AFEs.
#define FTSK_TASK_CYCLIC_ALGORITHM_100MS_STACK_SIZE_IN_WORDS
Stack size of cyclic 100 ms task for algorithms in words.
OS_TASK_HANDLE ftsk_taskHandleAfe
Definition of task handle for the AFE task.
#define FTSK_TASK_CYCLIC_10MS_STACK_SIZE_IN_WORDS
Stack size of cyclic 10 ms task in words.
#define FTSK_CAN_TX_UNSENT_MESSAGES_QUEUE_STORAGE_AREA
OS_QUEUE ftsk_afeToI2cQueue
void FTSK_CreateTasks(void)
Creates all tasks of the group.
OS_QUEUE ftsk_canRxQueue
#define FTSK_DATABASE_QUEUE_STORAGE_AREA
#define FTSK_TASK_CYCLIC_100MS_STACK_SIZE_IN_WORDS
Stack size of cyclic 100 ms task in words.
OS_QUEUE ftsk_afeRequestQueue
OS_QUEUE ftsk_databaseQueue
void FTSK_CreateQueues(void)
Creates all queues.
OS_TASK_HANDLE ftsk_taskHandleI2c
Definition of task handles.
General macros and definitions for the whole platform.
void OS_ExitTaskCritical(void)
Exit Critical interface function for use in FreeRTOS-Tasks and FreeRTOS-ISR.
Definition: os_freertos.c:154
void OS_EnterTaskCritical(void)
Enter Critical interface function for use in FreeRTOS-Tasks and FreeRTOS-ISR.
Definition: os_freertos.c:150
uint32_t stackSize_B
Definition: os.h:139
void * pvParameters
Definition: os.h:140
OS_PRIORITY_e priority
Definition: os.h:136