diff options
author | Christian Chapman <1360262+enthdegree@users.noreply.github.com> | 2023-01-20 20:15:28 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-20 19:15:28 -0600 |
commit | 027e3bb42ed0f0e0f6c2bacbc0c896d721e7cd63 (patch) | |
tree | d0e144ddffe1ce31c25dd192d815296fd0974781 /movement/lib/morsecalc/mc.h | |
parent | 7ef2d6541ad74f6eee96fbc89f2bc8d004d33ed0 (diff) | |
download | Sensor-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.h | 51 |
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]); + |