diff options
author | Edward Shin <contact@edwardsh.in> | 2023-10-15 00:36:49 -0400 |
---|---|---|
committer | Edward Shin <contact@edwardsh.in> | 2024-01-07 00:20:20 -0500 |
commit | 5b762d016841acb3cefa60f05e963711f0a3eb2b (patch) | |
tree | 8bea5eb0443df8cbe9cd2e402d2df8dfe7445b0b /movement/shell.h | |
parent | 63d6bc6aa0ddf4cc1ce1918ef7650852a25e581b (diff) | |
download | Sensor-Watch-5b762d016841acb3cefa60f05e963711f0a3eb2b.tar.gz Sensor-Watch-5b762d016841acb3cefa60f05e963711f0a3eb2b.tar.bz2 Sensor-Watch-5b762d016841acb3cefa60f05e963711f0a3eb2b.zip |
USB Improvements
* Introduce shell module for basic serial shell with argument parsing
* Introduce shell_cmd_list module for basic compile-time command
registration
* Harden USB handling to hang less and drop fewer inputs
- Service tud_task() with periodic TC0 timer interrupt
- Service cdc_task() with periodic TC1 timer interrupt
- Handle shell servicing in main app loop
- Add a circular buffering layer for reads/writes
* Change newline prints to also send carriage return
* Refactor filesystem commands for shell subsystem
* Introduce new shell commands:
- 'help' command
- 'flash' command to reset into bootloader
- 'stress' command to stress CDC writes
Testing:
* Shell validated on Sensor Watch Blue w/ Linux host
* Shell validated in emscripten emulator
* Tuned by spamming inputs during `stress` cmd until stack didn't crash
Diffstat (limited to 'movement/shell.h')
-rw-r--r-- | movement/shell.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/movement/shell.h b/movement/shell.h new file mode 100644 index 00000000..27dbf672 --- /dev/null +++ b/movement/shell.h @@ -0,0 +1,34 @@ +/* + * MIT License + * + * Copyright (c) 2023 Edward Shin + * + * 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. + */ + +#ifndef SHELL_H_ +#define SHELL_H_ + +/** @brief Called periodically from the app loop to handle shell commands. + * When a full command is complete, parses and executes its matching + * callback. + */ +void shell_task(void); + +#endif |