AutosarOS
App.c
Go to the documentation of this file.
1 
14 #include "assert.h"
15 
16 #include "OS_API.h"
17 
18 #include <avr/io.h>
19 #include <util/delay.h>
20 
21 #if defined (OS_CONFIG_SIM) && OS_CONFIG_SIM == true
22 #define DELAY_MS(ms)
23 #else
24 #define DELAY_MS(ms) _delay_ms(ms)
25 #endif /* defined (OS_CONFIG_SIM) && OS_CONFIG_SIM == true */
26 
27 volatile bool isrFlag = false;
28 
29 TASK(Idle)
30 {
31  while (1);
32 }
33 
34 TASK(Task1)
35 {
36  StatusType stat = ActivateTask(Task2);
37  assert(stat == E_OK);
38 
39  stat = ActivateTask(Task3);
40  assert(stat == E_OK);
41 
42  stat = ActivateTask(Task4);
43  assert(stat == E_OK);
44 
45  stat = ActivateTask(Task5);
46  assert(stat == E_OK);
47 
48  stat = ActivateTask(Task6);
49  assert(stat == E_OK);
50 
51  stat = ActivateTask(Task7);
52  assert(stat == E_OK);
53 
54  stat = ActivateTask(Task8);
55  assert(stat == E_OK);
56 
57  stat = TerminateTask();
58  assert(stat == E_OK);
59 }
60 
61 TASK(Task2)
62 {
63  StatusType stat = TerminateTask();
64  assert(stat == E_OK);
65 }
66 
67 TASK(Task3)
68 {
69  StatusType stat = TerminateTask();
70  assert(stat == E_OK);
71 }
72 
73 TASK(Task4)
74 {
75  StatusType stat = TerminateTask();
76  assert(stat == E_OK);
77 }
78 
79 TASK(Task5)
80 {
81  StatusType stat = TerminateTask();
82  assert(stat == E_OK);
83 }
84 
85 TASK(Task6)
86 {
87  StatusType stat = TerminateTask();
88  assert(stat == E_OK);
89 }
90 
91 TASK(Task7)
92 {
93  StatusType stat = TerminateTask();
94  assert(stat == E_OK);
95 }
96 
97 TASK(Task8)
98 {
99  StatusType stat = TerminateTask();
100  assert(stat == E_OK);
101 }
102 
103 extern void StartupHook(void)
104 {
105  DDRB = 0xFF; // PB as output
106  PORTB = 0xFF; // keep all LEDs off
107 
108  DDRD = 0x00; // PD as input
109  PORTD = 0xFF; // enable PU on PD
110 
111 #if defined (__AVR_ATmega32__)
112 
113 #elif defined (__AVR_ATmega128__) || defined (__AVR_ATmega1284__)
114  /* Timer 2 */
115 #if defined (OS_CONFIG_SIM) && OS_CONFIG_SIM == true
116 #if defined (__AVR_ATmega128__)
117  TCCR2 = (1 << CS20); // Enable Timer2 with Prescaler 1
118  TIMSK |= 1 << TOIE2; // Enable Overflow Interrupt (Timer2)
119 #else /* defined (__AVR_ATmega128__) */
120  TCCR2B = (1 << CS20); // Enable Timer2 with Prescaler 1
121  TIMSK2 |= 1 << TOIE2; // Enable Overflow Interrupt (Timer2)
122 #endif /* defined (__AVR_ATmega128__) */
123 #endif /* defined (OS_CONFIG_SIM) && OS_CONFIG_SIM == true */
124 #else /* defined (__AVR_ATmega32__) */
125 #error Unknown CPU defined!
126 #endif /* defined (__AVR_ATmega32__) */
127 
128  uint8_t t = 0;
129 
130  while (t < 6) {
131  uint8_t r = PORTB;
132  r ^= (1 << 7);
133  PORTB = r;
134  DELAY_MS(50);
135  t++;
136  }
137 }
138 
139 extern void ShutdownHook(StatusType error)
140 {
141  DDRB = 0xFF; // PB as output
142  PORTB = 0xFF; // keep all LEDs off
143 
144  for (uint8_t i = 0; i < 11; i++) {
145  PORTB ^= 0xFF;
146  DELAY_MS(1000);
147  }
148 }
149 
150 extern void PreTaskHook(void)
151 {
152  TaskType task;
153  GetTaskID(&task);
154  TaskStateType state = SUSPENDED;
155  GetTaskState(task, &state);
156 }
157 
158 extern void PostTaskHook(void)
159 {
160  TaskType task;
161  GetTaskID(&task);
162  TaskStateType state = SUSPENDED;
163  GetTaskState(task, &state);
164 }
165 
166 extern void ErrorHook(StatusType error)
167 {
168 
169 }
170 
171 ISR(TIMER2_OVF_vect)
172 {
173 
174 }
TaskType
enum tasks_e TaskType
Type for task reference.
Definition: TaskTypes.h:29
StatusType
enum StatusType_e StatusType
Type for status.
ErrorHook
void ErrorHook(StatusType error)
PostTask hook function.
Definition: App.c:784
StartupHook
void StartupHook(void)
Definition: App.c:702
GetTaskState
#define GetTaskState
Definition: OS_API.h:83
assert.h
Assert macros and functions.
TASK
TASK(Idle)
Definition: App.c:33
E_OK
@ E_OK
Definition: Types.h:40
ISR
ISR(INT0_vect)
Definition: App.c:806
PreTaskHook
void PreTaskHook(void)
PreTask hook function.
Definition: App.c:768
ActivateTask
#define ActivateTask
Definition: OS_API.h:78
assert
#define assert(expression)
Definition: assert.h:37
SUSPENDED
@ SUSPENDED
The task is suspended and will not be scheduled.
Definition: TaskTypes.h:58
TerminateTask
#define TerminateTask
Definition: OS_API.h:80
OS_API.h
Operating System API.
GetTaskID
#define GetTaskID
Definition: OS_API.h:82
isrFlag
volatile bool isrFlag
Definition: App.c:27
PostTaskHook
void PostTaskHook(void)
PostTask hook function.
Definition: App.c:776
ShutdownHook
void ShutdownHook(StatusType error)
Definition: App.c:757
TaskStateType
enum OsTaskState_e TaskStateType
Task state.
DELAY_MS
#define DELAY_MS(ms)
Definition: App.c:24