From 73a5a6974a98aa73ab392272b4d69d285c85dee5 Mon Sep 17 00:00:00 2001
From: Selene ToyKeeper
Date: Sat, 19 Aug 2017 17:20:46 -0600
Subject: Completely reorganized SpaghettiMonster code into smaller logical
pieces: fsm-*.c and fsm-*.h.
---
spaghetti-monster/fsm-standby.c | 53 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 53 insertions(+)
create mode 100644 spaghetti-monster/fsm-standby.c
(limited to 'spaghetti-monster/fsm-standby.c')
diff --git a/spaghetti-monster/fsm-standby.c b/spaghetti-monster/fsm-standby.c
new file mode 100644
index 0000000..bef0533
--- /dev/null
+++ b/spaghetti-monster/fsm-standby.c
@@ -0,0 +1,53 @@
+/*
+ * fsm-standby.c: standby mode functions for SpaghettiMonster.
+ *
+ * Copyright (C) 2017 Selene ToyKeeper
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifndef FSM_STANDBY_C
+#define FSM_STANDBY_C
+
+#include
+#include
+
+#include "fsm-adc.h"
+#include "fsm-wdt.h"
+#include "fsm-pcint.h"
+
+// low-power standby mode used while off but power still connected
+#define standby_mode sleep_until_eswitch_pressed
+void sleep_until_eswitch_pressed()
+{
+ WDT_off();
+ ADC_off();
+
+ // make sure switch isn't currently pressed
+ while (button_is_pressed()) {}
+
+ PCINT_on(); // wake on e-switch event
+
+ sleep_enable();
+ sleep_bod_disable();
+ sleep_cpu(); // wait here
+
+ // something happened; wake up
+ sleep_disable();
+ PCINT_on();
+ ADC_on();
+ WDT_on();
+}
+
+#endif
--
cgit v1.2.3