summaryrefslogtreecommitdiffstats
path: root/movement/shell.h
diff options
context:
space:
mode:
authorEdward Shin <contact@edwardsh.in>2023-10-15 00:36:49 -0400
committerEdward Shin <contact@edwardsh.in>2024-01-07 00:20:20 -0500
commit5b762d016841acb3cefa60f05e963711f0a3eb2b (patch)
tree8bea5eb0443df8cbe9cd2e402d2df8dfe7445b0b /movement/shell.h
parent63d6bc6aa0ddf4cc1ce1918ef7650852a25e581b (diff)
downloadSensor-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.h34
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