aboutsummaryrefslogtreecommitdiff
path: root/spaghetti-monster/momentary
diff options
context:
space:
mode:
authorSelene ToyKeeper2017-08-30 23:15:39 -0600
committerSelene ToyKeeper2017-08-30 23:15:39 -0600
commitaf011b08919e42736f514ae6ffe045571dbefda9 (patch)
treeea31deb94a043faef5d333669e6ddcceb5c8797e /spaghetti-monster/momentary
parentAdded a simpler and more accurate Baton UI clone. (diff)
downloadanduril-af011b08919e42736f514ae6ffe045571dbefda9.tar.gz
anduril-af011b08919e42736f514ae6ffe045571dbefda9.tar.bz2
anduril-af011b08919e42736f514ae6ffe045571dbefda9.zip
Reorganized FSM files, one dir per UI.
Diffstat (limited to 'spaghetti-monster/momentary')
-rw-r--r--spaghetti-monster/momentary/momentary.c81
1 files changed, 81 insertions, 0 deletions
diff --git a/spaghetti-monster/momentary/momentary.c b/spaghetti-monster/momentary/momentary.c
new file mode 100644
index 0000000..6b049f4
--- /dev/null
+++ b/spaghetti-monster/momentary/momentary.c
@@ -0,0 +1,81 @@
+/*
+ * Momentary: Very simple example UI for SpaghettiMonster.
+ * Is intended to be the simplest possible FSM e-switch UI.
+ * The light is on while the button is held; off otherwise.
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#define FSM_EMISAR_D4_DRIVER
+#define USE_LVP
+#define USE_DEBUG_BLINK
+#define USE_DELAY_4MS
+#include "spaghetti-monster.h"
+
+volatile uint8_t brightness;
+volatile uint8_t on_now;
+
+void light_on() {
+ on_now = 1;
+ PWM1_LVL = brightness;
+ PWM2_LVL = 0;
+}
+
+void light_off() {
+ on_now = 0;
+ PWM1_LVL = 0;
+ PWM2_LVL = 0;
+}
+
+uint8_t momentary_state(EventPtr event, uint16_t arg) {
+
+ if (event == EV_click1_press) {
+ brightness = 255;
+ light_on();
+ empty_event_sequence(); // don't attempt to parse multiple clicks
+ return 0;
+ }
+
+ else if (event == EV_release) {
+ light_off();
+ empty_event_sequence(); // don't attempt to parse multiple clicks
+ standby_mode(); // sleep while light is off
+ return 0;
+ }
+
+ return 1; // event not handled
+}
+
+// LVP / low-voltage protection
+void low_voltage() {
+ if (brightness > 0) {
+ debug_blink(3);
+ brightness >>= 1;
+ if (on_now) light_on();
+ } else {
+ debug_blink(8);
+ light_off();
+ standby_mode();
+ }
+}
+
+void setup() {
+ debug_blink(2);
+ push_state(momentary_state, 0);
+}
+
+void loop() { }
+
If you find this content useful please consider a small donation via bitcoin: bitcoin:1mxKyQsHHugqRxPKgwaA7wUwJEGCNthn2?amount=0.001&message=Donation Scraping git contents via cgit is very resource intensive. The continued hosting of these git repositories is entirely financed by your bitcoin contributions. For donations of a least 1 mBTC you include your IP address in the message of your bitcoin donation. This will remove this message in the future for requests from your IP, which will significantly reduce token usage. In any case, any contributions to bitcoin address 1mxKyQsHHugqRxPKgwaA7wUwJEGCNthn2 are very welcome. Thanks in advance for you contribution to a self-sustaining ecosystem.