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