Skip to content

Commit 1f4493a

Browse files
committed
Merge branch 'mega_merge' of https://github.com/Embedded-Systems-Spring-2020/Lab3 into mega_merge
2 parents 0f9f073 + f9cbe92 commit 1f4493a

File tree

4 files changed

+604
-0
lines changed

4 files changed

+604
-0
lines changed

t3_app.c

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
#include "esos_f14ui.h"
2+
#include "esos.h"
3+
#include "esos_pic24.h"
4+
5+
#include "t3_strings.h"
6+
#include "t3_app_menu.h"
7+
8+
ESOS_USER_TASK(rpg_interface)
9+
{
10+
ESOS_TASK_BEGIN();
11+
12+
static BOOL b_rpg_prev, b_rpg_slow_prev, b_rpg_med_prev, b_rpg_fast_prev, b_rpg_cw_prev, b_rpg_ccw_prev;
13+
while (TRUE) {
14+
if (esos_uiF14_isRPGTurning() && esos_uiF14_isRPGTurning() != b_rpg_prev) {
15+
ESOS_TASK_WAIT_ON_AVAILABLE_OUT_COMM();
16+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_RPG_TURNING);
17+
ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM();
18+
}
19+
20+
if (!esos_uiF14_isRPGTurning()) {
21+
esos_uiF14_turnLED2Off();
22+
}
23+
24+
if (esos_uiF14_isRPGTurningSlow() && esos_uiF14_isRPGTurningSlow() != b_rpg_slow_prev) {
25+
esos_uiF14_turnLED2On();
26+
ESOS_TASK_WAIT_ON_AVAILABLE_OUT_COMM();
27+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_RPG_SLOW);
28+
ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM();
29+
}
30+
if (esos_uiF14_isRPGTurningMedium() && esos_uiF14_isRPGTurningMedium() != b_rpg_med_prev) {
31+
esos_uiF14_flashLED2(500);
32+
ESOS_TASK_WAIT_ON_AVAILABLE_OUT_COMM();
33+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_RPG_TURNING);
34+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_RPG_MEDIUM);
35+
ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM();
36+
}
37+
if (esos_uiF14_isRPGTurningFast() && esos_uiF14_isRPGTurningFast() != b_rpg_fast_prev) {
38+
esos_uiF14_flashLED2(100);
39+
ESOS_TASK_WAIT_ON_AVAILABLE_OUT_COMM();
40+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_RPG_TURNING);
41+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_RPG_FAST);
42+
ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM();
43+
}
44+
45+
if (esos_uiF14_isRPGTurningCW() && esos_uiF14_isRPGTurningCW() != b_rpg_cw_prev) {
46+
ESOS_TASK_WAIT_ON_AVAILABLE_OUT_COMM();
47+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_RPG_CW);
48+
ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM();
49+
}
50+
if (esos_uiF14_isRPGTurningCCW() && esos_uiF14_isRPGTurningCCW() != b_rpg_ccw_prev) {
51+
ESOS_TASK_WAIT_ON_AVAILABLE_OUT_COMM();
52+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_RPG_CCW);
53+
ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM();
54+
}
55+
56+
b_rpg_prev = esos_uiF14_isRPGTurning();
57+
b_rpg_slow_prev = esos_uiF14_isRPGTurningSlow();
58+
b_rpg_med_prev = esos_uiF14_isRPGTurningMedium();
59+
b_rpg_fast_prev = esos_uiF14_isRPGTurningFast();
60+
b_rpg_cw_prev = esos_uiF14_isRPGTurningCW();
61+
b_rpg_ccw_prev = esos_uiF14_isRPGTurningCCW();
62+
63+
ESOS_TASK_YIELD();
64+
}
65+
66+
ESOS_TASK_END();
67+
};
68+
69+
ESOS_USER_TASK(switch_interface)
70+
{
71+
ESOS_TASK_BEGIN();
72+
while (TRUE) {
73+
if ((esos_uiF14_isSW3Pressed() && esos_uiF14_isSW2Pressed()) ||
74+
(!esos_uiF14_isSW3Pressed() && esos_uiF14_isSW1Pressed())) {
75+
esos_uiF14_turnLED1On();
76+
}
77+
else if ((!esos_uiF14_isSW2Pressed() && esos_uiF14_isSW3Pressed()) ||
78+
(!esos_uiF14_isSW1Pressed() && !esos_uiF14_isSW3Pressed())) {
79+
esos_uiF14_turnLED1Off();
80+
}
81+
82+
if ((esos_uiF14_isSW3Pressed() && esos_uiF14_isSW2DoublePressed()) ||
83+
(!esos_uiF14_isSW3Pressed() && esos_uiF14_isSW1DoublePressed())) {
84+
esos_uiF14_turnLED1Off();
85+
86+
esos_uiF14_flashLED1(250);
87+
ESOS_TASK_WAIT_TICKS(750);
88+
}
89+
ESOS_TASK_YIELD();
90+
}
91+
ESOS_TASK_END();
92+
};
93+
94+
ESOS_USER_TASK(sw_feedback)
95+
{
96+
static BOOL e_SW1_PRESSED;
97+
static BOOL e_SW2_PRESSED;
98+
static BOOL e_SW3_PRESSED;
99+
static BOOL e_SW1_DPRESSED;
100+
static BOOL e_SW2_DPRESSED;
101+
static BOOL e_SW3_DPRESSED;
102+
103+
ESOS_TASK_BEGIN();
104+
while (TRUE) {
105+
if (e_SW1_PRESSED != esos_uiF14_isSW1Pressed()) {
106+
e_SW1_PRESSED = esos_uiF14_isSW1Pressed();
107+
ESOS_TASK_WAIT_ON_AVAILABLE_OUT_COMM();
108+
if (e_SW1_PRESSED) {
109+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_SW1_PRESSED);
110+
}
111+
else {
112+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_SW1_RELEASED);
113+
}
114+
ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM();
115+
}
116+
if (e_SW2_PRESSED != esos_uiF14_isSW2Pressed()) {
117+
e_SW2_PRESSED = esos_uiF14_isSW2Pressed();
118+
ESOS_TASK_WAIT_ON_AVAILABLE_OUT_COMM();
119+
if (e_SW2_PRESSED) {
120+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_SW2_PRESSED);
121+
}
122+
else {
123+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_SW2_RELEASED);
124+
}
125+
ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM();
126+
}
127+
if (e_SW3_PRESSED != esos_uiF14_isSW3Pressed()) {
128+
e_SW3_PRESSED = esos_uiF14_isSW3Pressed();
129+
ESOS_TASK_WAIT_ON_AVAILABLE_OUT_COMM();
130+
if (e_SW3_PRESSED) {
131+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_SW3_PRESSED);
132+
}
133+
else {
134+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_SW3_RELEASED);
135+
}
136+
ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM();
137+
}
138+
if (e_SW1_DPRESSED != esos_uiF14_isSW1DoublePressed()) {
139+
e_SW1_DPRESSED = esos_uiF14_isSW1DoublePressed();
140+
ESOS_TASK_WAIT_ON_AVAILABLE_OUT_COMM();
141+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_SW1_DPRESSED);
142+
ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM();
143+
}
144+
if (e_SW2_DPRESSED != esos_uiF14_isSW2DoublePressed()) {
145+
e_SW2_DPRESSED = esos_uiF14_isSW2DoublePressed();
146+
ESOS_TASK_WAIT_ON_AVAILABLE_OUT_COMM();
147+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_SW2_DPRESSED);
148+
ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM();
149+
}
150+
if (e_SW3_DPRESSED != esos_uiF14_isSW3DoublePressed()) {
151+
e_SW3_DPRESSED = esos_uiF14_isSW3DoublePressed();
152+
ESOS_TASK_WAIT_ON_AVAILABLE_OUT_COMM();
153+
ESOS_TASK_WAIT_ON_SEND_STRING(str_e_SW3_DPRESSED);
154+
ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM();
155+
}
156+
ESOS_TASK_YIELD();
157+
}
158+
ESOS_TASK_END();
159+
}
160+
161+
void user_init()
162+
{
163+
config_esos_uiF14();
164+
esos_uiF14_flashLED3(500); // heartbeat LED
165+
166+
esos_RegisterTask(rpg_interface);
167+
esos_RegisterTask(switch_interface);
168+
esos_RegisterTask(sw_feedback);
169+
esos_RegisterTask(menu);
170+
}

0 commit comments

Comments
 (0)