aboutsummaryrefslogtreecommitdiff
path: root/spaghetti-monster/fsm-random.h
diff options
context:
space:
mode:
authorSelene ToyKeeper2018-06-23 02:10:12 -0600
committerSelene ToyKeeper2018-06-23 02:10:12 -0600
commite2f73d62df6e7b79483b571cd744701e233cf94a (patch)
tree9404bf0c3b815c333c06c73ec1f93c28a7a6ea57 /spaghetti-monster/fsm-random.h
parentDon't auto-shutoff indicator LED when entering standby mode. (diff)
downloadanduril-e2f73d62df6e7b79483b571cd744701e233cf94a.tar.gz
anduril-e2f73d62df6e7b79483b571cd744701e233cf94a.tar.bz2
anduril-e2f73d62df6e7b79483b571cd744701e233cf94a.zip
Moved pseudo_rand() into its own header, and made it gather entropy from ADC readings to improve randomness.
Adjusted candle mode to use lower bits instead of upper bits, because the lower bits are more random. (also, the lower-bit method is slightly smaller in ROM)
Diffstat (limited to 'spaghetti-monster/fsm-random.h')
-rw-r--r--spaghetti-monster/fsm-random.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/spaghetti-monster/fsm-random.h b/spaghetti-monster/fsm-random.h
new file mode 100644
index 0000000..720f6f2
--- /dev/null
+++ b/spaghetti-monster/fsm-random.h
@@ -0,0 +1,29 @@
+/*
+ * fsm-random.h: Random number generator 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 <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef FSM_RANDOM_H
+#define FSM_RANDOM_H
+
+#ifdef USE_PSEUDO_RAND
+uint8_t pseudo_rand();
+// TODO: test without "volatile", in case it's not needed
+volatile uint8_t pseudo_rand_seed = 0;
+#endif
+
+#endif