Fix doc path
[opentx.git] / radio / src / tasks_arm.h
blobabd0e66d75e53ff8d3de54d3104c772a57a6ee7c
1 /*
2 * Copyright (C) OpenTX
4 * Based on code named
5 * th9x - http://code.google.com/p/th9x
6 * er9x - http://code.google.com/p/er9x
7 * gruvin9x - http://code.google.com/p/gruvin9x
9 * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
21 #ifndef _TASKS_ARM_H_
22 #define _TASKS_ARM_H_
24 #if !defined(SIMU)
25 extern "C" {
26 #include <CoOS.h>
28 #endif
30 #define MENUS_STACK_SIZE 2000
31 #define MIXER_STACK_SIZE 500
32 #define AUDIO_STACK_SIZE 500
33 #define BLUETOOTH_STACK_SIZE 500
35 #if defined(_MSC_VER)
36 #define _ALIGNED(x) __declspec(align(x))
37 #elif defined(__GNUC__)
38 #define _ALIGNED(x) __attribute__ ((aligned(x)))
39 #endif
41 uint16_t getStackAvailable(void * address, uint16_t size);
43 template<int SIZE>
44 class TaskStack
46 public:
47 TaskStack() { }
48 void paint();
49 uint16_t size()
51 return SIZE * 4;
53 uint16_t available()
55 return getStackAvailable(stack, SIZE);
57 OS_STK stack[SIZE];
60 void stackPaint();
61 uint16_t stackSize();
62 uint16_t stackAvailable();
64 extern OS_TID menusTaskId;
65 // menus stack must be aligned to 8 bytes otherwise printf for %f does not work!
66 extern TaskStack<MENUS_STACK_SIZE> _ALIGNED(8) menusStack;
68 extern OS_TID mixerTaskId;
69 extern TaskStack<MIXER_STACK_SIZE> mixerStack;
71 extern OS_TID audioTaskId;
72 extern TaskStack<AUDIO_STACK_SIZE> audioStack;
74 void tasksStart();
76 extern volatile uint16_t timeForcePowerOffPressed;
77 inline void resetForcePowerOffRequest() {timeForcePowerOffPressed = 0; }
79 #endif // _TASKS_ARM_H_