summaryrefslogtreecommitdiffstats
path: root/movement/lib/morsecalc/mc.h
diff options
context:
space:
mode:
authorChristian Chapman <1360262+enthdegree@users.noreply.github.com>2023-01-20 20:15:28 -0500
committerGitHub <noreply@github.com>2023-01-20 19:15:28 -0600
commit027e3bb42ed0f0e0f6c2bacbc0c896d721e7cd63 (patch)
treed0e144ddffe1ce31c25dd192d815296fd0974781 /movement/lib/morsecalc/mc.h
parent7ef2d6541ad74f6eee96fbc89f2bc8d004d33ed0 (diff)
downloadSensor-Watch-027e3bb42ed0f0e0f6c2bacbc0c896d721e7cd63.tar.gz
Sensor-Watch-027e3bb42ed0f0e0f6c2bacbc0c896d721e7cd63.tar.bz2
Sensor-Watch-027e3bb42ed0f0e0f6c2bacbc0c896d721e7cd63.zip
Morse-code based RPN calculator (#164)
* Added Morse code based RPN calculator * added manual and memory register * fixed morsecalc negative indicator, edited header comment * adjusted stack display controls * Fixed warnings. Added calculator token aliasing ability. Added binary shorthand for numeral entry. Extended morse code binary tree. * ui tweaks * Update movement_config.h * silence warning Co-authored-by: Christian Chapman <user@debian> Co-authored-by: joeycastillo <joeycastillo@utexas.edu>
Diffstat (limited to 'movement/lib/morsecalc/mc.h')
-rw-r--r--movement/lib/morsecalc/mc.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/movement/lib/morsecalc/mc.h b/movement/lib/morsecalc/mc.h
new file mode 100644
index 00000000..0daa470e
--- /dev/null
+++ b/movement/lib/morsecalc/mc.h
@@ -0,0 +1,51 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2023 Christian Chapman
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+
+/* mc Morse code reading methods
+*/
+#include "stdint.h"
+
+#define BUFFLEN 5
+typedef struct {
+ char b[BUFFLEN];
+ uint8_t bidx;
+} mc_state_t;
+
+// MC_DEC_KEY represents a binary tree of International Morse Code.
+// where '.' = 0 and '-' = 1. Levels of the tree are concatenated.
+//
+// Capitals denote special characters:
+// C = Ch digraph
+// V = VERIFY (ITU-R "UNDERSTOOD")
+// R = REPEAT
+// W = WAIT
+// S = START TRANSMISSION
+// E = END OF WORK
+static const char MC_DEC_KEY[] = " etianmsurwdkgohvf\0l\0pjbxcyzq\0C\x35\x34V\x33\0R\0\x32W\0+\0\0\0\0\x31\x36=/\0\0S(\0\x37\0\0\0\x38\0\x39\x30\0\0\0\0\0E\0\0\0\0\0\0?_\0\0\0\0\"\0\0.\0\0\0\0@\0\0\0'\0\0-\0\0\0\0\0\0\0\0;!\0)\0\0\0\0\0,\0\0\0\0:\0\0\0\0\0\0\0";
+
+void mc_reset(mc_state_t * mcb);
+void mc_input(mc_state_t * mc, char c);
+char mc_dec(char b[BUFFLEN]);
+