~gabe/flashlight-firmware/anduril2

« back to all changes in this revision

Viewing changes to ToyKeeper/spaghetti-monster/darkhorse/darkhorse.c

merged recent fsm branch updates

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
#include "spaghetti-monster.h"
33
33
 
34
34
// FSM states
35
 
uint8_t off_state(EventPtr event, uint16_t arg);
36
 
uint8_t low_mode_state(EventPtr event, uint16_t arg);
37
 
uint8_t med_mode_state(EventPtr event, uint16_t arg);
38
 
uint8_t hi_mode_state(EventPtr event, uint16_t arg);
39
 
uint8_t strobe_beacon_state(EventPtr event, uint16_t arg);
 
35
uint8_t off_state(Event event, uint16_t arg);
 
36
uint8_t low_mode_state(Event event, uint16_t arg);
 
37
uint8_t med_mode_state(Event event, uint16_t arg);
 
38
uint8_t hi_mode_state(Event event, uint16_t arg);
 
39
uint8_t strobe_beacon_state(Event event, uint16_t arg);
40
40
#ifdef USE_BATTCHECK
41
 
uint8_t battcheck_state(EventPtr event, uint16_t arg);
 
41
uint8_t battcheck_state(Event event, uint16_t arg);
42
42
#endif
43
43
// Not a FSM state, just handles stuff common to all low/med/hi states
44
 
uint8_t any_mode_state(EventPtr event, uint16_t arg, uint8_t *primary, uint8_t *secondary, uint8_t *modes);
 
44
uint8_t any_mode_state(Event event, uint16_t arg, uint8_t *primary, uint8_t *secondary, uint8_t *modes);
45
45
 
46
46
void load_config();
47
47
void save_config();
89
89
inline void set_hi_mode()  { set_any_mode(H1, H2, hi_modes); }
90
90
 
91
91
 
92
 
uint8_t off_state(EventPtr event, uint16_t arg) {
 
92
uint8_t off_state(Event event, uint16_t arg) {
93
93
    // turn emitter off when entering state
94
94
    if (event == EV_enter_state) {
95
95
        set_level(0);
163
163
}
164
164
 
165
165
 
166
 
uint8_t any_mode_state(EventPtr event, uint16_t arg, uint8_t *primary, uint8_t *secondary, uint8_t *modes) {
 
166
uint8_t any_mode_state(Event event, uint16_t arg, uint8_t *primary, uint8_t *secondary, uint8_t *modes) {
167
167
    // turn on LED when entering the mode
168
168
    if (event == EV_enter_state) {
169
169
        set_any_mode(*primary, *secondary, modes);
236
236
    return EVENT_NOT_HANDLED;
237
237
}
238
238
 
239
 
uint8_t low_mode_state(EventPtr event, uint16_t arg) {
 
239
uint8_t low_mode_state(Event event, uint16_t arg) {
240
240
    return any_mode_state(event, arg, &L1, &L2, low_modes);
241
241
}
242
242
 
243
 
uint8_t med_mode_state(EventPtr event, uint16_t arg) {
 
243
uint8_t med_mode_state(Event event, uint16_t arg) {
244
244
    return any_mode_state(event, arg, &M1, &M2, med_modes);
245
245
}
246
246
 
247
 
uint8_t hi_mode_state(EventPtr event, uint16_t arg) {
 
247
uint8_t hi_mode_state(Event event, uint16_t arg) {
248
248
    return any_mode_state(event, arg, &H1, &H2, hi_modes);
249
249
}
250
250
 
251
251
 
252
252
#ifdef USE_BATTCHECK
253
 
uint8_t battcheck_state(EventPtr event, uint16_t arg) {
 
253
uint8_t battcheck_state(Event event, uint16_t arg) {
254
254
    return EVENT_NOT_HANDLED;
255
255
}
256
256
#endif
257
257
 
258
258
 
259
 
uint8_t strobe_beacon_state(EventPtr event, uint16_t arg) {
 
259
uint8_t strobe_beacon_state(Event event, uint16_t arg) {
260
260
    // 1 click: off
261
261
    if (event == EV_1click) {
262
262
        set_state(off_state, 0);