29
30
#define DONT_DELAY_AFTER_BATTCHECK
30
31
//#define USE_EEPROM
31
32
//#define EEPROM_BYTES 5
33
33
#include "spaghetti-monster.h"
36
uint8_t base_off_state(EventPtr event, uint16_t arg);
37
uint8_t ui1_off_state(EventPtr event, uint16_t arg);
38
uint8_t ui2_off_state(EventPtr event, uint16_t arg);
39
uint8_t ui3_off_state(EventPtr event, uint16_t arg);
40
uint8_t base_on_state(EventPtr event, uint16_t arg, uint8_t *mode, uint8_t *group);
41
uint8_t ui1_on_state(EventPtr event, uint16_t arg);
42
uint8_t ui2_on_state(EventPtr event, uint16_t arg);
43
uint8_t ui3_on_state(EventPtr event, uint16_t arg);
44
uint8_t beacon_state(EventPtr event, uint16_t arg);
45
uint8_t battcheck_state(EventPtr event, uint16_t arg);
46
uint8_t strobe_state(EventPtr event, uint16_t arg);
47
uint8_t biking_state(EventPtr event, uint16_t arg);
48
uint8_t lockout_state(EventPtr event, uint16_t arg);
49
uint8_t momentary_state(EventPtr event, uint16_t arg);
36
uint8_t base_off_state(Event event, uint16_t arg);
37
uint8_t ui1_off_state(Event event, uint16_t arg);
38
uint8_t ui2_off_state(Event event, uint16_t arg);
39
uint8_t ui3_off_state(Event event, uint16_t arg);
40
uint8_t base_on_state(Event event, uint16_t arg, uint8_t *mode, uint8_t *group);
41
uint8_t ui1_on_state(Event event, uint16_t arg);
42
uint8_t ui2_on_state(Event event, uint16_t arg);
43
uint8_t ui3_on_state(Event event, uint16_t arg);
44
uint8_t beacon_state(Event event, uint16_t arg);
45
uint8_t battcheck_state(Event event, uint16_t arg);
46
uint8_t strobe_state(Event event, uint16_t arg);
47
uint8_t biking_state(Event event, uint16_t arg);
48
uint8_t lockout_state(Event event, uint16_t arg);
49
uint8_t momentary_state(Event event, uint16_t arg);
50
50
// Not a FSM state, just handles stuff common to all low/med/hi states
51
uint8_t any_mode_state(EventPtr event, uint16_t arg, uint8_t *primary, uint8_t *secondary, uint8_t *modes);
51
uint8_t any_mode_state(Event event, uint16_t arg, uint8_t *primary, uint8_t *secondary, uint8_t *modes);
54
54
void load_config();
259
259
return base_off_state(event, arg);
262
uint8_t base_on_state(EventPtr event, uint16_t arg, uint8_t *mode, uint8_t *group) {
262
uint8_t base_on_state(Event event, uint16_t arg, uint8_t *mode, uint8_t *group) {
264
264
if (event == EV_1click) {
265
265
set_state(base_off_state, 0);
328
328
return base_on_state(event, arg, mode, group);
331
uint8_t ui2_on_state(EventPtr event, uint16_t arg) {
331
uint8_t ui2_on_state(Event event, uint16_t arg) {
332
332
// turn on LED when entering the mode
333
333
static uint8_t *mode = &UI2_mode1;
334
334
static uint8_t *group = UI2_group1;
377
377
return base_on_state(event, arg, mode, group);
380
uint8_t ui3_on_state(EventPtr event, uint16_t arg) {
380
uint8_t ui3_on_state(Event event, uint16_t arg) {
381
381
// turn on LED when entering the mode
382
382
static uint8_t *mode = &UI3_mode1;
383
383
if (event == EV_enter_state) {
433
433
return EVENT_NOT_HANDLED;
436
uint8_t beacon_state(EventPtr event, uint16_t arg) {
436
uint8_t beacon_state(Event event, uint16_t arg) {
437
437
return blinky_base_state(event, arg);
440
uint8_t battcheck_state(EventPtr event, uint16_t arg) {
440
uint8_t battcheck_state(Event event, uint16_t arg) {
441
441
return EVENT_NOT_HANDLED;
444
uint8_t strobe_state(EventPtr event, uint16_t arg) {
445
return blinky_base_state(event, arg);
448
uint8_t biking_state(EventPtr event, uint16_t arg) {
449
return blinky_base_state(event, arg);
452
uint8_t lockout_state(EventPtr event, uint16_t arg) {
453
return blinky_base_state(event, arg);
456
uint8_t momentary_state(EventPtr event, uint16_t arg) {
444
uint8_t strobe_state(Event event, uint16_t arg) {
445
return blinky_base_state(event, arg);
448
uint8_t biking_state(Event event, uint16_t arg) {
449
return blinky_base_state(event, arg);
452
uint8_t lockout_state(Event event, uint16_t arg) {
453
return blinky_base_state(event, arg);
456
uint8_t momentary_state(Event event, uint16_t arg) {
457
457
return blinky_base_state(event, arg);