Mercurial > public > ostc4
comparison Discovery/Src/demo.c @ 38:5f11787b4f42
include in ostc4 repository
author | heinrichsweikamp |
---|---|
date | Sat, 28 Apr 2018 11:52:34 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
37:ccc45c0e1ea2 | 38:5f11787b4f42 |
---|---|
1 /** | |
2 ****************************************************************************** | |
3 * @copyright heinrichs weikamp gmbh | |
4 * @file demo.c | |
5 * @author heinrichs weikamp gmbh | |
6 * @date 26-Nov-2015 | |
7 * @version 0.1 | |
8 * @since 26-Nov-2015 | |
9 * @brief f�r die Messe und die Vitrine | |
10 * @bug | |
11 * @warning | |
12 @verbatim | |
13 ============================================================================== | |
14 | |
15 | |
16 ============================================================================== | |
17 @endverbatim | |
18 ****************************************************************************** | |
19 * @attention | |
20 * | |
21 * <h2><center>© COPYRIGHT(c) 2015 heinrichs weikamp</center></h2> | |
22 * | |
23 ****************************************************************************** | |
24 */ | |
25 | |
26 #include "demo.h" | |
27 #include "base.h" // for BUTTON_BACK, ... | |
28 #include "data_exchange_main.h" // for time_elapsed_ms() | |
29 #include "settings.h" | |
30 #include "ostc.h" | |
31 | |
32 #ifndef DEMOMODE | |
33 | |
34 /* Exported functions --------------------------------------------------------*/ | |
35 | |
36 uint8_t demoGetCommand(void) { return 0; } | |
37 uint8_t demoModeActive(void) { return 0; } | |
38 void demoSendCommand(uint8_t action) { return; } | |
39 | |
40 | |
41 #else | |
42 | |
43 /* Private variables with external access ------------------------------------*/ | |
44 | |
45 uint8_t demoModeActiveStatus = 1; | |
46 uint32_t systickDemoMode; | |
47 | |
48 uint16_t demoModeActual = 0; | |
49 | |
50 #define BUTTON_BACK (BUTTON_BACK_PIN | 0x80) | |
51 #define BUTTON_NEXT (BUTTON_NEXT_PIN | 0x80) | |
52 #define BUTTON_ENTER (BUTTON_ENTER_PIN | 0x80) | |
53 | |
54 /* Private typedef -----------------------------------------------------------*/ | |
55 | |
56 #define MAXCOMMANDS 200 | |
57 | |
58 #ifdef SHOWCCRMODE | |
59 const uint8_t commandlist[MAXCOMMANDS][3] = | |
60 { | |
61 /* Button, deci-seconds to wait */ | |
62 | |
63 // start for both | |
64 {0, 40}, | |
65 // start OC, activate CC | |
66 {BUTTON_NEXT, 0}, | |
67 {BUTTON_NEXT, 0}, | |
68 {BUTTON_ENTER, 0}, | |
69 {BUTTON_ENTER, 0}, | |
70 {BUTTON_NEXT, 0}, | |
71 {BUTTON_ENTER, 0}, // Change to CC | |
72 {BUTTON_ENTER, 0}, // Leave Edit | |
73 {BUTTON_BACK, 0}, // Cursor | |
74 {BUTTON_NEXT, 0}, | |
75 {BUTTON_NEXT, 0}, | |
76 {BUTTON_NEXT, 0}, | |
77 {BUTTON_NEXT, 0}, | |
78 {BUTTON_BACK, 0}, | |
79 {0, 0}, | |
80 {0, 0}, | |
81 {0, 0}, | |
82 {0, 0}, | |
83 {0, 0}, | |
84 {0, 0}, | |
85 // start CC @ 20, set cursor to Sim Menu | |
86 {BUTTON_NEXT, 0}, | |
87 {BUTTON_NEXT, 0}, | |
88 {BUTTON_NEXT, 0}, | |
89 {BUTTON_NEXT, 0}, | |
90 {BUTTON_NEXT, 0}, | |
91 {BUTTON_NEXT, 0}, | |
92 {BUTTON_NEXT, 0}, | |
93 {BUTTON_NEXT, 0}, | |
94 {BUTTON_BACK, 50}, | |
95 {0, 0}, | |
96 // re-loop @ 30 | |
97 {0, 3}, | |
98 // Logbook | |
99 {BUTTON_BACK, 0}, | |
100 {BUTTON_ENTER, 20}, | |
101 {BUTTON_NEXT, 20}, | |
102 {BUTTON_BACK, 0}, | |
103 {BUTTON_BACK, 0}, | |
104 {BUTTON_BACK, 0}, | |
105 // surface screen | |
106 {0, 2}, | |
107 // menu | |
108 {BUTTON_NEXT, 0}, | |
109 {BUTTON_NEXT, 0}, | |
110 {BUTTON_NEXT, 0}, | |
111 {BUTTON_NEXT, 0}, | |
112 {BUTTON_NEXT, 0}, | |
113 {BUTTON_NEXT, 0}, | |
114 {BUTTON_NEXT, 0}, | |
115 {BUTTON_NEXT, 0}, | |
116 {BUTTON_NEXT, 0}, | |
117 {BUTTON_ENTER, 30}, | |
118 {BUTTON_ENTER, 0}, | |
119 // simulator | |
120 {0, 10}, | |
121 {BUTTON_ENTER, 10}, | |
122 {BUTTON_ENTER, 10}, | |
123 {BUTTON_ENTER, 10}, | |
124 {BUTTON_ENTER, 10}, | |
125 {BUTTON_ENTER, 10}, | |
126 | |
127 {BUTTON_NEXT, 0}, | |
128 {BUTTON_NEXT, 0}, | |
129 {BUTTON_ENTER, 0}, | |
130 {BUTTON_ENTER, 0}, | |
131 // the end, repeat from start | |
132 {255, 0} | |
133 }; | |
134 #else // OC Mode Demo | |
135 const uint8_t commandlist[MAXCOMMANDS][2] = | |
136 { | |
137 /* Button, seconds to wait */ | |
138 | |
139 // start for both | |
140 {0, 50}, // wait IS IMPORTANT | |
141 // start CC, activate OC | |
142 {BUTTON_NEXT, 0}, | |
143 {BUTTON_NEXT, 0}, | |
144 {BUTTON_NEXT, 0}, | |
145 {BUTTON_NEXT, 0}, | |
146 {BUTTON_ENTER, 0}, | |
147 {BUTTON_ENTER, 0}, | |
148 {BUTTON_ENTER, 0}, | |
149 {BUTTON_ENTER, 0}, | |
150 {BUTTON_BACK, 0}, // Leave Cursor Mode | |
151 {BUTTON_NEXT, 0}, | |
152 {BUTTON_NEXT, 0}, | |
153 {BUTTON_NEXT, 0}, | |
154 {BUTTON_NEXT, 0}, | |
155 {BUTTON_NEXT, 0}, // OC | |
156 {BUTTON_BACK, 0}, | |
157 {0, 0}, | |
158 {0, 0}, | |
159 {0, 0}, | |
160 {0, 0}, | |
161 // start OC @ line 20 | |
162 {BUTTON_NEXT, 0}, | |
163 {BUTTON_NEXT, 0}, | |
164 {BUTTON_NEXT, 0}, | |
165 {BUTTON_NEXT, 0}, | |
166 {BUTTON_NEXT, 0}, | |
167 {BUTTON_NEXT, 0}, // OC -> SIM | |
168 {BUTTON_BACK, 0}, // Exit Menu | |
169 {0, 0}, | |
170 {0, 0}, | |
171 {0, 0}, | |
172 // re-loop @ 30 | |
173 {0, 10}, | |
174 // Logbook | |
175 {BUTTON_BACK, 4}, | |
176 {BUTTON_NEXT, 0}, | |
177 {BUTTON_NEXT, 10}, | |
178 {BUTTON_ENTER, 20}, | |
179 {BUTTON_NEXT, 20}, | |
180 {BUTTON_NEXT, 20}, | |
181 {BUTTON_BACK, 0}, | |
182 {BUTTON_BACK, 5}, | |
183 {BUTTON_BACK, 0}, // Exit Logbook Mode | |
184 // surface screen | |
185 {0, 10}, | |
186 {BUTTON_ENTER, 10}, | |
187 {BUTTON_ENTER, 10}, | |
188 | |
189 // menu | |
190 // activate Configure Deco Gas | |
191 {BUTTON_NEXT, 0}, // Start Menu | |
192 {BUTTON_NEXT, 2}, // SIM -> OC | |
193 {BUTTON_ENTER, 2}, | |
194 {BUTTON_NEXT, 1}, | |
195 {BUTTON_ENTER, 0}, | |
196 {BUTTON_ENTER, 0}, | |
197 // Mix 30 -> 90 | |
198 {BUTTON_NEXT, 0}, | |
199 {BUTTON_NEXT, 0}, | |
200 {BUTTON_NEXT, 0}, | |
201 {BUTTON_NEXT, 0}, | |
202 {BUTTON_NEXT, 0}, | |
203 {BUTTON_NEXT, 0}, | |
204 {BUTTON_ENTER, 0}, | |
205 // Mix 90 -> 99 | |
206 {BUTTON_BACK, 0}, | |
207 {BUTTON_ENTER, 0}, | |
208 {BUTTON_ENTER, 0}, | |
209 {BUTTON_ENTER, 5}, | |
210 // First -> Deco | |
211 {BUTTON_NEXT, 2}, | |
212 {BUTTON_ENTER, 2}, | |
213 {BUTTON_NEXT, 2}, | |
214 {BUTTON_ENTER, 2}, | |
215 {BUTTON_ENTER, 10}, | |
216 {BUTTON_BACK, 0}, | |
217 {BUTTON_BACK, 30}, | |
218 /* | |
219 // OC -> SIM | |
220 {BUTTON_NEXT, 2}, | |
221 {BUTTON_NEXT, 2}, | |
222 {BUTTON_NEXT, 2}, | |
223 {BUTTON_NEXT, 2}, | |
224 {BUTTON_NEXT, 1}, | |
225 {BUTTON_ENTER, 10}, | |
226 */ | |
227 // SYS2 Layout | |
228 {BUTTON_NEXT, 2}, | |
229 {BUTTON_NEXT, 2}, | |
230 {BUTTON_NEXT, 2}, | |
231 {BUTTON_NEXT, 2}, | |
232 {BUTTON_ENTER, 2}, | |
233 {BUTTON_NEXT, 2}, | |
234 {BUTTON_NEXT, 2}, | |
235 {BUTTON_ENTER, 2}, | |
236 {BUTTON_NEXT, 2}, | |
237 {BUTTON_ENTER, 2}, | |
238 {BUTTON_BACK, 2}, | |
239 {BUTTON_BACK, 10}, | |
240 // SYS2 -> SIM | |
241 {BUTTON_NEXT, 2}, | |
242 {BUTTON_ENTER, 10}, | |
243 // simulator | |
244 {BUTTON_ENTER, 40}, // Start Simulator | |
245 {BUTTON_ENTER, 10}, | |
246 {BUTTON_ENTER, 10}, | |
247 {BUTTON_ENTER, 10}, | |
248 {BUTTON_ENTER, 10}, | |
249 {BUTTON_ENTER, 10}, | |
250 {BUTTON_ENTER, 10}, | |
251 {BUTTON_ENTER, 90}, | |
252 | |
253 {BUTTON_NEXT, 5}, // Quit | |
254 {BUTTON_NEXT, 5}, | |
255 {BUTTON_ENTER, 5}, | |
256 {BUTTON_ENTER, 50}, | |
257 // surface screen | |
258 {0, 10}, | |
259 // Logbook | |
260 {BUTTON_BACK, 20}, | |
261 {BUTTON_ENTER, 20}, | |
262 {BUTTON_NEXT, 20}, | |
263 {BUTTON_NEXT, 20}, | |
264 {BUTTON_BACK, 0}, | |
265 {BUTTON_BACK, 5}, | |
266 {BUTTON_BACK, 0}, // Exit Logbook Mode | |
267 // surface screen | |
268 {0, 10}, | |
269 // activate Configure Deco Gas, go to Gas 2 | |
270 {BUTTON_NEXT, 0}, // Start Menu | |
271 {BUTTON_NEXT, 2}, // SIM -> OC | |
272 {BUTTON_ENTER, 2}, | |
273 {BUTTON_NEXT, 1}, | |
274 {BUTTON_ENTER, 0}, | |
275 {BUTTON_ENTER, 0}, | |
276 // Mix Decogas 99 -> EAN30 First | |
277 {BUTTON_BACK, 0}, | |
278 {BUTTON_BACK, 0}, | |
279 {BUTTON_BACK, 0}, | |
280 {BUTTON_BACK, 0}, | |
281 {BUTTON_BACK, 0}, | |
282 {BUTTON_BACK, 0}, | |
283 {BUTTON_ENTER, 0}, | |
284 {BUTTON_NEXT, 0}, | |
285 {BUTTON_ENTER, 0}, | |
286 {BUTTON_ENTER, 0}, | |
287 {BUTTON_ENTER, 2}, | |
288 {BUTTON_NEXT, 2}, | |
289 {BUTTON_ENTER, 5}, | |
290 {BUTTON_ENTER, 5}, | |
291 {BUTTON_ENTER, 10}, // Now EAN 30 First | |
292 {BUTTON_BACK, 0}, // Exit Edit Mode | |
293 {BUTTON_BACK, 30}, // Exit Cursor Mode | |
294 /* | |
295 // OC -> SIM | |
296 {BUTTON_NEXT, 2}, | |
297 {BUTTON_NEXT, 2}, | |
298 {BUTTON_NEXT, 2}, | |
299 {BUTTON_NEXT, 2}, | |
300 {BUTTON_NEXT, 1}, | |
301 {BUTTON_ENTER, 10}, | |
302 */ | |
303 // SYS2 Layout | |
304 {BUTTON_NEXT, 2}, | |
305 {BUTTON_NEXT, 2}, | |
306 {BUTTON_NEXT, 2}, | |
307 {BUTTON_NEXT, 2}, | |
308 {BUTTON_ENTER, 2}, | |
309 {BUTTON_NEXT, 2}, | |
310 {BUTTON_NEXT, 2}, | |
311 {BUTTON_ENTER, 2}, | |
312 {BUTTON_NEXT, 2}, | |
313 {BUTTON_ENTER, 2}, | |
314 {BUTTON_BACK, 2}, | |
315 {BUTTON_BACK, 10}, | |
316 // SYS -> SIM | |
317 {BUTTON_NEXT, 2}, | |
318 {BUTTON_ENTER, 10}, | |
319 // simulator | |
320 {BUTTON_ENTER, 40}, // Start Simulator | |
321 {BUTTON_ENTER, 5}, | |
322 {BUTTON_ENTER, 10}, | |
323 {BUTTON_ENTER, 10}, | |
324 {BUTTON_ENTER, 10}, | |
325 {BUTTON_ENTER, 10}, | |
326 {BUTTON_ENTER, 10}, | |
327 {BUTTON_ENTER, 90}, | |
328 {BUTTON_NEXT, 5}, // Menu? | |
329 {BUTTON_NEXT, 5}, // Quit? | |
330 {BUTTON_ENTER, 10}, | |
331 {BUTTON_ENTER, 50}, | |
332 // the end, repeat from start | |
333 {255, 0} | |
334 }; | |
335 #endif | |
336 | |
337 | |
338 /* Exported functions --------------------------------------------------------*/ | |
339 | |
340 uint8_t demoModeActive(void) | |
341 { | |
342 return demoModeActiveStatus; | |
343 } | |
344 | |
345 uint8_t demoGetCommand(void) | |
346 { | |
347 if(!demoModeActiveStatus) | |
348 return 0; | |
349 | |
350 uint32_t milliSecondsSinceLast; | |
351 uint32_t systick_now; | |
352 | |
353 | |
354 systick_now = HAL_GetTick(); | |
355 milliSecondsSinceLast = time_elapsed_ms(systickDemoMode, systick_now); | |
356 | |
357 #ifdef SHOWCCRMODE | |
358 if((demoModeActual == 1) && (settingsGetPointer()->dive_mode == DIVEMODE_CCR)) | |
359 demoModeActual = 20; | |
360 #else | |
361 if((demoModeActual == 1) && (settingsGetPointer()->dive_mode == DIVEMODE_OC)) | |
362 demoModeActual = 20; | |
363 #endif | |
364 | |
365 if(demoModeActual > MAXCOMMANDS - 2) | |
366 demoModeActual = 30; | |
367 | |
368 | |
369 uint32_t actualDelay = ((commandlist[demoModeActual][1]) * 100) + 15; | |
370 | |
371 if(milliSecondsSinceLast < actualDelay) | |
372 return 0; | |
373 | |
374 systickDemoMode = systick_now; | |
375 | |
376 if(commandlist[demoModeActual][0] == 255) | |
377 demoModeActual = 30; | |
378 else | |
379 demoModeActual++; | |
380 | |
381 return commandlist[demoModeActual][0]; | |
382 } | |
383 | |
384 | |
385 void demoSendCommand(uint8_t action) | |
386 { | |
387 demoModeActiveStatus = 0; | |
388 | |
389 } | |
390 | |
391 void demoConfigureSettings(void) | |
392 { | |
393 settingsGetPointer()->gas[1].oxygen_percentage = 21; | |
394 settingsGetPointer()->gas[1].helium_percentage = 0; | |
395 settingsGetPointer()->gas[1].depth_meter = 0; | |
396 settingsGetPointer()->gas[1].note.ub.first = 0; | |
397 settingsGetPointer()->gas[1].note.ub.active = 0; | |
398 settingsGetPointer()->gas[1].note.ub.deco = 0; | |
399 settingsGetPointer()->gas[1].note.ub.travel = 0; | |
400 | |
401 settingsGetPointer()->gas[2].oxygen_percentage = 30; | |
402 settingsGetPointer()->gas[2].helium_percentage = 0; | |
403 settingsGetPointer()->gas[2].depth_meter = 0; | |
404 settingsGetPointer()->gas[2].note.ub.first = 1; | |
405 settingsGetPointer()->gas[2].note.ub.active = 1; | |
406 settingsGetPointer()->gas[2].note.ub.deco = 0; | |
407 settingsGetPointer()->gas[2].note.ub.travel = 0; | |
408 | |
409 settingsGetPointer()->ButtonResponsiveness[0] = 90; | |
410 settingsGetPointer()->ButtonResponsiveness[1] = 90; | |
411 settingsGetPointer()->ButtonResponsiveness[2] = 90; | |
412 settingsGetPointer()->ButtonResponsiveness[3] = 90; | |
413 } | |
414 | |
415 /* Includes ------------------------------------------------------------------*/ | |
416 | |
417 /* Private function prototypes -----------------------------------------------*/ | |
418 | |
419 /* Private variables with external access ------------------------------------*/ | |
420 | |
421 /* Exported functions --------------------------------------------------------*/ | |
422 | |
423 /* Private functions ---------------------------------------------------------*/ | |
424 | |
425 | |
426 #endif // DEMO | |
427 | |
428 | |
429 /************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/ |