Fix missing documentation for many clock faces:
* Move from .c to .h as needed for consistency. * When missing from both, copy from pull request or wiki. * When missing entirely, infer functionality from source code.
This commit is contained in:
@@ -25,6 +25,96 @@
|
||||
#ifndef MORSECALC_FACE_H_
|
||||
#define MORSECALC_FACE_H_
|
||||
|
||||
/*
|
||||
* MORSECALC face
|
||||
* Morse-code-based RPN calculator
|
||||
*
|
||||
* The calculator is operated by first composing a **token** in Morse code,
|
||||
* then submitting it to the calculator. A token specifies either a calculator
|
||||
* operation or a float value.
|
||||
*
|
||||
* These two parts of the codebase are totally independent:
|
||||
* 1. The Morse-code reader (`mc.h`, `mc.c`)
|
||||
* 2. The RPN calculator (`calc.h`, `calc.c`, `calc_fn.h`, `calc_fn.c`, `small_strtod.c`)
|
||||
*
|
||||
* The user interface (`morsecalc_face.h`, `morsecalc_face.c`) lets you talk
|
||||
* to the RPN calculator through Morse code.
|
||||
*
|
||||
* ## Controls
|
||||
* - `light` is dash
|
||||
* - `alarm` is dot
|
||||
* - `mode` is "finish character"
|
||||
* - long-press `mode` or submit a blank token to switch faces
|
||||
* - long-press `alarm` to show stack
|
||||
* - long-press `light` to toggle the light
|
||||
*
|
||||
* ## Morse code token entry
|
||||
* As you enter `.`s and `-`s, the morse code char you've entered will
|
||||
* appear in the top center digit. At the top right is the # of morse code
|
||||
* `.`/`-` you've input so far. The character resets at the 6th `.`/`-`.
|
||||
*
|
||||
* Once you have the character you want to enter, push `mode` to enter it.
|
||||
*
|
||||
* The character will be appended to the current token, whose 6 trailing
|
||||
* chars are shown on the main display. Once you've typed in the token you
|
||||
* want, enter a blank Morse code character and then push `mode`.
|
||||
* This submits it to the calculator.
|
||||
*
|
||||
* Special characters:
|
||||
* - Backspace is `(` (`-.--.`).
|
||||
* - Clear token input without submitting to calculator is `Start
|
||||
* transmission` (`-.-.-`).
|
||||
*
|
||||
* ## Writing commands
|
||||
* First the calculator will try to interpret the token as a command/stack operation.
|
||||
* Commands are defined in `calc_dict[]` in `movement/lib/morsecalc/calc_fns.h`.
|
||||
* If the command doesn't appear in the dictionary, the calculator tries to interpret the token as a number.
|
||||
*
|
||||
* ## Writing numbers
|
||||
* Numbers are written like floating point strings.
|
||||
* Entering a number pushes it to the top of the stack if there's room.
|
||||
* This can get long, so for convenience numerals can also be written in binary with .- = 01.
|
||||
*
|
||||
* 0 1 2 3 4 5 6 7 8 9
|
||||
* . - -. -- -.. -.- --. --- -... -..-
|
||||
* e t n m d k g o b x
|
||||
*
|
||||
* - Exponent signs must be entered as "p".
|
||||
* - Decimal place "." can be entered as "h" (code ....)
|
||||
* - Sign "-" can be entered as "Ch digraph" (code ----)
|
||||
*
|
||||
* For example: "4.2e-3" can be entered directly, or as "4h2pC3"
|
||||
* similarly, "0.0042" can also be entered as "eheedn"
|
||||
* Once you submit a number to the watch face, it pushes it to the top of the stack if there's room.
|
||||
*
|
||||
* ## Number display
|
||||
* After a command runs, the top of the stack is displayed in this format:
|
||||
*
|
||||
* - Main 4 digits = leading 4 digits
|
||||
* - Last 2 digits = exponent
|
||||
* - Top middle = [Stack location, Sign of number]
|
||||
* - Top right = [Stack exponent, Sign of exponent]
|
||||
*
|
||||
* Blank sign digit means positive.
|
||||
* So for example, the watch face might look like this:
|
||||
*
|
||||
* [ 0 -5]
|
||||
* [4200 03]
|
||||
*
|
||||
* ... representing `+4.200e-3` is in stack location 0 (the top) and it's one of five items in the stack.
|
||||
*
|
||||
* ## Looking at the stack
|
||||
* To show the top of the stack, push and hold `light`/`alarm` or submit a blank token by pushing `mode` a bunch of times.
|
||||
* To show the N-th stack item (0 through 9):
|
||||
*
|
||||
* - Put in the Morse code for N without pushing the mode button.
|
||||
* - Push and hold `alarm`.
|
||||
*
|
||||
* To show the memory register, use `m` instead of a number.
|
||||
*
|
||||
* To see all the calculator operations and their token aliases, see the `calc_dict[]` struct in `calc_fns.h`
|
||||
*/
|
||||
|
||||
#define MORSECALC_TOKEN_LEN 32
|
||||
#define MORSECODE_LEN 5
|
||||
|
||||
@@ -34,7 +124,7 @@
|
||||
/*
|
||||
* MC International Morse Code binary tree
|
||||
* Levels of the tree are concatenated.
|
||||
* '.' = 0 and '-' = 1.
|
||||
* '.' = 0 and '-' = 1.
|
||||
*
|
||||
* Capitals denote special characters:
|
||||
* C = Ch digraph
|
||||
|
||||
Reference in New Issue
Block a user