Mercurial > louis > kiibohd-controller
annotate Debug/cli/cli.c @ 321:18c3c4924f20
Code cleanup from cli changes.
author | Jacob Alexander <haata@kiibohd.com> |
---|---|
date | Tue, 07 Apr 2015 22:11:04 -0700 |
parents | 3994a5a68793 |
children | 9dd55aa71d76 |
rev | line source |
---|---|
294
834d69d22d47
Adding list of modified files to the cli version command.
Jacob Alexander <haata@kiibohd.com>
parents:
239
diff
changeset
|
1 /* Copyright (C) 2014-2015 by Jacob Alexander |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
2 * |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
3 * Permission is hereby granted, free of charge, to any person obtaining a copy |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
4 * of this software and associated documentation files (the "Software"), to deal |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
5 * in the Software without restriction, including without limitation the rights |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
7 * copies of the Software, and to permit persons to whom the Software is |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
8 * furnished to do so, subject to the following conditions: |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
9 * |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
10 * The above copyright notice and this permission notice shall be included in |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
11 * all copies or substantial portions of the Software. |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
12 * |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
19 * THE SOFTWARE. |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
20 */ |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
21 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
22 // ----- Includes ----- |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
23 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
24 // Compiler Includes |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
25 //#include <stdarg.h> |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
26 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
27 // Project Includes |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
28 #include <buildvars.h> |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
29 #include "cli.h" |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
30 #include <led.h> |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
31 #include <print.h> |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
32 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
33 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
34 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
35 // ----- Variables ----- |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
36 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
37 // Basic command dictionary |
316 | 38 CLIDict_Entry( clear, "Clear the screen."); |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
39 CLIDict_Entry( cliDebug, "Enables/Disables hex output of the most recent cli input." ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
40 CLIDict_Entry( help, "You're looking at it :P" ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
41 CLIDict_Entry( led, "Enables/Disables indicator LED. Try a couple times just in case the LED is in an odd state.\r\n\t\t\033[33mWarning\033[0m: May adversely affect some modules..." ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
42 CLIDict_Entry( reload, "Signals microcontroller to reflash/reload." ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
43 CLIDict_Entry( reset, "Resets the terminal back to initial settings." ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
44 CLIDict_Entry( restart, "Sends a software restart, should be similar to powering on the device." ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
45 CLIDict_Entry( version, "Version information about this firmware." ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
46 |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
47 CLIDict_Def( basicCLIDict, "General Commands" ) = { |
316 | 48 CLIDict_Item( clear ), |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
49 CLIDict_Item( cliDebug ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
50 CLIDict_Item( help ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
51 CLIDict_Item( led ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
52 CLIDict_Item( reload ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
53 CLIDict_Item( reset ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
54 CLIDict_Item( restart ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
55 CLIDict_Item( version ), |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
56 { 0, 0, 0 } // Null entry for dictionary end |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
57 }; |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
58 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
59 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
60 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
61 // ----- Functions ----- |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
62 |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
63 inline void prompt() |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
64 { |
114
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
65 print("\033[2K\r"); // Erases the current line and resets cursor to beginning of line |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
66 print("\033[1;34m:\033[0m "); // Blue bold prompt |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
67 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
68 |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
69 // Initialize the CLI |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
70 inline void CLI_init() |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
71 { |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
72 // Reset the Line Buffer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
73 CLILineBufferCurrent = 0; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
74 |
318 | 75 // History starts empty |
76 CLIHistoryHead = 0; | |
77 CLIHistoryCurrent = 0; | |
78 CLIHistoryTail = 0; | |
79 | |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
80 // Set prompt |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
81 prompt(); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
82 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
83 // Register first dictionary |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
84 CLIDictionariesUsed = 0; |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
85 CLI_registerDictionary( basicCLIDict, basicCLIDictName ); |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
86 |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
87 // Initialize main LED |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
88 init_errorLED(); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
89 CLILEDState = 0; |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
90 |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
91 // Hex debug mode is off by default |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
92 CLIHexDebugMode = 0; |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
93 } |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
94 |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
95 // Query the serial input buffer for any new characters |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
96 void CLI_process() |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
97 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
98 // Current buffer position |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
99 uint8_t prev_buf_pos = CLILineBufferCurrent; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
100 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
101 // Process each character while available |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
102 while ( 1 ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
103 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
104 // No more characters to process |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
105 if ( Output_availablechar() == 0 ) |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
106 break; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
107 |
123
0c5d1fe99302
Adding CLI and CDC Serial support for Teensy 2.0 and Teensy 2.0++
Jacob Alexander <haata@kiibohd.com>
parents:
121
diff
changeset
|
108 // Retrieve from output module |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
109 char cur_char = (char)Output_getchar(); |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
110 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
111 // Make sure buffer isn't full |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
112 if ( CLILineBufferCurrent >= CLILineBufferMaxSize ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
113 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
114 print( NL ); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
115 erro_print("Serial line buffer is full, dropping character and resetting..."); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
116 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
117 // Clear buffer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
118 CLILineBufferCurrent = 0; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
119 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
120 // Reset the prompt |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
121 prompt(); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
122 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
123 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
124 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
125 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
126 // Place into line buffer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
127 CLILineBuffer[CLILineBufferCurrent++] = cur_char; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
128 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
129 |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
130 // Display Hex Key Input if enabled |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
131 if ( CLIHexDebugMode && CLILineBufferCurrent > prev_buf_pos ) |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
132 { |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
133 print("\033[s\r\n"); // Save cursor position, and move to the next line |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
134 print("\033[2K"); // Erases the current line |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
135 |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
136 uint8_t pos = prev_buf_pos; |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
137 while ( CLILineBufferCurrent > pos ) |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
138 { |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
139 printHex( CLILineBuffer[pos++] ); |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
140 print(" "); |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
141 } |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
142 |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
143 print("\033[u"); // Restore cursor position |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
144 } |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
145 |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
146 // If buffer has changed, output to screen while there are still characters in the buffer not displayed |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
147 while ( CLILineBufferCurrent > prev_buf_pos ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
148 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
149 // Check for control characters |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
150 switch ( CLILineBuffer[prev_buf_pos] ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
151 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
152 case 0x0D: // Enter |
121
71430b08fe81
Force curve gauge is feature complete!!
Jacob Alexander <haata@kiibohd.com>
parents:
114
diff
changeset
|
153 CLILineBuffer[CLILineBufferCurrent - 1] = ' '; // Replace Enter with a space (resolves a bug in args) |
71430b08fe81
Force curve gauge is feature complete!!
Jacob Alexander <haata@kiibohd.com>
parents:
114
diff
changeset
|
154 |
71430b08fe81
Force curve gauge is feature complete!!
Jacob Alexander <haata@kiibohd.com>
parents:
114
diff
changeset
|
155 // Remove the space if there is no command |
71430b08fe81
Force curve gauge is feature complete!!
Jacob Alexander <haata@kiibohd.com>
parents:
114
diff
changeset
|
156 if ( CLILineBufferCurrent == 1 ) |
71430b08fe81
Force curve gauge is feature complete!!
Jacob Alexander <haata@kiibohd.com>
parents:
114
diff
changeset
|
157 CLILineBufferCurrent--; |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
158 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
159 // Process the current line buffer |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
160 CLI_commandLookup(); |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
161 |
318 | 162 // Add the command to the history |
321
18c3c4924f20
Code cleanup from cli changes.
Jacob Alexander <haata@kiibohd.com>
parents:
319
diff
changeset
|
163 CLI_saveHistory( CLILineBuffer ); |
318 | 164 |
165 // Keep the array circular, discarding the older entries | |
319 | 166 if ( CLIHistoryTail < CLIHistoryHead ) |
167 CLIHistoryHead = ( CLIHistoryHead + 1 ) % CLIMaxHistorySize; | |
318 | 168 CLIHistoryTail++; |
319 | 169 if ( CLIHistoryTail == CLIMaxHistorySize ) |
318 | 170 { |
171 CLIHistoryTail = 0; | |
172 CLIHistoryHead = 1; | |
173 } | |
174 | |
175 CLIHistoryCurrent = CLIHistoryTail; // 'Up' starts at the last item | |
321
18c3c4924f20
Code cleanup from cli changes.
Jacob Alexander <haata@kiibohd.com>
parents:
319
diff
changeset
|
176 CLI_saveHistory( NULL ); // delete the old temp buffer |
318 | 177 |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
178 // Reset the buffer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
179 CLILineBufferCurrent = 0; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
180 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
181 // Reset the prompt after processing has finished |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
182 print( NL ); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
183 prompt(); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
184 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
185 // XXX There is a potential bug here when resetting the buffer (losing valid keypresses) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
186 // Doesn't look like it will happen *that* often, so not handling it for now -HaaTa |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
187 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
188 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
189 case 0x09: // Tab |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
190 // Tab completion for the current command |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
191 CLI_tabCompletion(); |
114
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
192 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
193 CLILineBufferCurrent--; // Remove the Tab |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
194 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
195 // XXX There is a potential bug here when resetting the buffer (losing valid keypresses) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
196 // Doesn't look like it will happen *that* often, so not handling it for now -HaaTa |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
197 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
198 |
318 | 199 case 0x1B: // Esc / Escape codes |
200 // Check for other escape sequence | |
201 | |
202 // \e[ is an escape code in vt100 compatable terminals | |
319 | 203 if ( CLILineBufferCurrent >= prev_buf_pos + 3 |
204 && CLILineBuffer[ prev_buf_pos ] == 0x1B | |
205 && CLILineBuffer[ prev_buf_pos + 1] == 0x5B ) | |
318 | 206 { |
207 // Arrow Keys: A (0x41) = Up, B (0x42) = Down, C (0x43) = Right, D (0x44) = Left | |
208 | |
319 | 209 if ( CLILineBuffer[ prev_buf_pos + 2 ] == 0x41 ) // Hist prev |
318 | 210 { |
319 | 211 if ( CLIHistoryCurrent == CLIHistoryTail ) |
318 | 212 { |
213 // Is first time pressing arrow. Save the current buffer | |
319 | 214 CLILineBuffer[ prev_buf_pos ] = '\0'; |
321
18c3c4924f20
Code cleanup from cli changes.
Jacob Alexander <haata@kiibohd.com>
parents:
319
diff
changeset
|
215 CLI_saveHistory( CLILineBuffer ); |
318 | 216 } |
217 | |
218 // Grab the previus item from the history if there is one | |
319 | 219 if ( RING_PREV( CLIHistoryCurrent ) != RING_PREV( CLIHistoryHead ) ) |
220 CLIHistoryCurrent = RING_PREV( CLIHistoryCurrent ); | |
321
18c3c4924f20
Code cleanup from cli changes.
Jacob Alexander <haata@kiibohd.com>
parents:
319
diff
changeset
|
221 CLI_retreiveHistory( CLIHistoryCurrent ); |
318 | 222 } |
319 | 223 if ( CLILineBuffer[ prev_buf_pos + 2 ] == 0x42 ) // Hist next |
318 | 224 { |
225 // Grab the next item from the history if it exists | |
319 | 226 if ( RING_NEXT( CLIHistoryCurrent ) != RING_NEXT( CLIHistoryTail ) ) |
227 CLIHistoryCurrent = RING_NEXT( CLIHistoryCurrent ); | |
321
18c3c4924f20
Code cleanup from cli changes.
Jacob Alexander <haata@kiibohd.com>
parents:
319
diff
changeset
|
228 CLI_retreiveHistory( CLIHistoryCurrent ); |
318 | 229 } |
230 } | |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
231 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
232 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
233 case 0x08: |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
234 case 0x7F: // Backspace |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
235 // TODO - Does not handle case for arrow editing (arrows disabled atm) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
236 CLILineBufferCurrent--; // Remove the backspace |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
237 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
238 // If there are characters in the buffer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
239 if ( CLILineBufferCurrent > 0 ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
240 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
241 // Remove character from current position in the line buffer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
242 CLILineBufferCurrent--; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
243 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
244 // Remove character from tty |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
245 print("\b \b"); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
246 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
247 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
248 break; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
249 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
250 default: |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
251 // Place a null on the end (to use with string print) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
252 CLILineBuffer[CLILineBufferCurrent] = '\0'; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
253 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
254 // Output buffer to screen |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
255 dPrint( &CLILineBuffer[prev_buf_pos] ); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
256 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
257 // Buffer reset |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
258 prev_buf_pos++; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
259 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
260 break; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
261 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
262 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
263 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
264 |
108
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
265 // Takes a string, returns two pointers |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
266 // One to the first non-space character |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
267 // The second to the next argument (first NULL if there isn't an argument). delimited by a space |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
268 // Places a NULL at the first space after the first argument |
126
670fc9c3a739
Added CLI DefaultMap lookup command.
Jacob Alexander <haata@kiibohd.com>
parents:
125
diff
changeset
|
269 void CLI_argumentIsolation( char* string, char** first, char** second ) |
108
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
270 { |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
271 // Mark out the first argument |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
272 // This is done by finding the first space after a list of non-spaces and setting it NULL |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
273 char* cmdPtr = string - 1; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
274 while ( *++cmdPtr == ' ' ); // Skips leading spaces, and points to first character of cmd |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
275 |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
276 // Locates first space delimiter |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
277 char* argPtr = cmdPtr + 1; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
278 while ( *argPtr != ' ' && *argPtr != '\0' ) |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
279 argPtr++; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
280 |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
281 // Point to the first character of args or a NULL (no args) and set the space delimiter as a NULL |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
282 (++argPtr)[-1] = '\0'; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
283 |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
284 // Set return variables |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
285 *first = cmdPtr; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
286 *second = argPtr; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
287 } |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
288 |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
289 // Scans the CLILineBuffer for any valid commands |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
290 void CLI_commandLookup() |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
291 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
292 // Ignore command if buffer is 0 length |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
293 if ( CLILineBufferCurrent == 0 ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
294 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
295 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
296 // Set the last+1 character of the buffer to NULL for string processing |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
297 CLILineBuffer[CLILineBufferCurrent] = '\0'; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
298 |
108
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
299 // Retrieve pointers to command and beginning of arguments |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
300 // Places a NULL at the first space after the command |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
301 char* cmdPtr; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
302 char* argPtr; |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
303 CLI_argumentIsolation( CLILineBuffer, &cmdPtr, &argPtr ); |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
304 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
305 // Scan array of dictionaries for a valid command match |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
306 for ( uint8_t dict = 0; dict < CLIDictionariesUsed; dict++ ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
307 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
308 // Parse each cmd until a null command entry is found, or an argument match |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
309 for ( uint8_t cmd = 0; CLIDict[dict][cmd].name != 0; cmd++ ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
310 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
311 // Compare the first argument and each command entry |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
312 if ( eqStr( cmdPtr, (char*)CLIDict[dict][cmd].name ) == -1 ) |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
313 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
314 // Run the specified command function pointer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
315 // argPtr is already pointing at the first character of the arguments |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
316 (*(void (*)(char*))CLIDict[dict][cmd].function)( argPtr ); |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
317 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
318 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
319 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
320 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
321 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
322 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
323 // No match for the command... |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
324 print( NL ); |
108
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
325 erro_dPrint("\"", CLILineBuffer, "\" is not a valid command...type \033[35mhelp\033[0m"); |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
326 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
327 |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
328 // Registers a command dictionary with the CLI |
192
6ac92b8614c0
Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents:
126
diff
changeset
|
329 void CLI_registerDictionary( const CLIDictItem *cmdDict, const char* dictName ) |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
330 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
331 // Make sure this max limit of dictionaries hasn't been reached |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
332 if ( CLIDictionariesUsed >= CLIMaxDictionaries ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
333 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
334 erro_print("Max number of dictionaries defined already..."); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
335 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
336 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
337 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
338 // Add dictionary |
192
6ac92b8614c0
Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents:
126
diff
changeset
|
339 CLIDictNames[CLIDictionariesUsed] = (char*)dictName; |
6ac92b8614c0
Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents:
126
diff
changeset
|
340 CLIDict[CLIDictionariesUsed++] = (CLIDictItem*)cmdDict; |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
341 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
342 |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
343 inline void CLI_tabCompletion() |
114
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
344 { |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
345 // Ignore command if buffer is 0 length |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
346 if ( CLILineBufferCurrent == 0 ) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
347 return; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
348 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
349 // Set the last+1 character of the buffer to NULL for string processing |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
350 CLILineBuffer[CLILineBufferCurrent] = '\0'; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
351 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
352 // Retrieve pointers to command and beginning of arguments |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
353 // Places a NULL at the first space after the command |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
354 char* cmdPtr; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
355 char* argPtr; |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
356 CLI_argumentIsolation( CLILineBuffer, &cmdPtr, &argPtr ); |
114
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
357 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
358 // Tab match pointer |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
359 char* tabMatch = 0; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
360 uint8_t matches = 0; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
361 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
362 // Scan array of dictionaries for a valid command match |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
363 for ( uint8_t dict = 0; dict < CLIDictionariesUsed; dict++ ) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
364 { |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
365 // Parse each cmd until a null command entry is found, or an argument match |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
366 for ( uint8_t cmd = 0; CLIDict[dict][cmd].name != 0; cmd++ ) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
367 { |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
368 // Compare the first argument piece to each command entry to see if it is "like" |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
369 // NOTE: To save on processing, we only care about the commands and ignore the arguments |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
370 // If there are arguments, and a valid tab match is found, buffer is cleared (args lost) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
371 // Also ignores full matches |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
372 if ( eqStr( cmdPtr, (char*)CLIDict[dict][cmd].name ) == 0 ) |
114
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
373 { |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
374 // TODO Make list of commands if multiple matches |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
375 matches++; |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
376 tabMatch = (char*)CLIDict[dict][cmd].name; |
114
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
377 } |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
378 } |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
379 } |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
380 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
381 // Only tab complete if there was 1 match |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
382 if ( matches == 1 ) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
383 { |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
384 // Reset the buffer |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
385 CLILineBufferCurrent = 0; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
386 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
387 // Reprint the prompt (automatically clears the line) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
388 prompt(); |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
389 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
390 // Display the command |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
391 dPrint( tabMatch ); |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
392 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
393 // There are no index counts, so just copy the whole string to the input buffer |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
394 while ( *tabMatch != '\0' ) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
395 { |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
396 CLILineBuffer[CLILineBufferCurrent++] = *tabMatch++; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
397 } |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
398 } |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
399 } |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
400 |
319 | 401 inline int CLI_wrap( int kX, int const kLowerBound, int const kUpperBound ) |
318 | 402 { |
403 int range_size = kUpperBound - kLowerBound + 1; | |
404 | |
319 | 405 if ( kX < kLowerBound ) |
318 | 406 kX += range_size * ((kLowerBound - kX) / range_size + 1); |
407 | |
408 return kLowerBound + (kX - kLowerBound) % range_size; | |
409 } | |
410 | |
319 | 411 inline void CLI_saveHistory( char *buff ) |
412 { | |
413 if ( buff == NULL ) | |
414 { | |
318 | 415 //clear the item |
319 | 416 CLIHistoryBuffer[ CLIHistoryTail ][ 0 ] = '\0'; |
318 | 417 return; |
418 } | |
419 | |
420 // Copy the line to the history | |
421 int i; | |
319 | 422 for (i = 0; i < CLILineBufferCurrent; i++) |
318 | 423 { |
319 | 424 CLIHistoryBuffer[ CLIHistoryTail ][ i ] = CLILineBuffer[ i ]; |
318 | 425 } |
426 } | |
427 | |
319 | 428 void CLI_retreiveHistory( int index ) |
429 { | |
430 char *histMatch = CLIHistoryBuffer[ index ]; | |
318 | 431 |
432 // Reset the buffer | |
433 CLILineBufferCurrent = 0; | |
434 | |
435 // Reprint the prompt (automatically clears the line) | |
436 prompt(); | |
437 | |
438 // Display the command | |
439 dPrint( histMatch ); | |
440 | |
441 // There are no index counts, so just copy the whole string to the input buffe | |
442 CLILineBufferCurrent = 0; | |
443 while ( *histMatch != '\0' ) | |
444 { | |
319 | 445 CLILineBuffer[ CLILineBufferCurrent++ ] = *histMatch++; |
318 | 446 } |
447 } | |
448 | |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
449 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
450 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
451 // ----- CLI Command Functions ----- |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
452 |
316 | 453 void cliFunc_clear( char* args) |
454 { | |
455 print("\033[2J\033[H\r"); // Erases the whole screen | |
456 } | |
457 | |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
458 void cliFunc_cliDebug( char* args ) |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
459 { |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
460 // Toggle Hex Debug Mode |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
461 if ( CLIHexDebugMode ) |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
462 { |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
463 print( NL ); |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
464 info_print("Hex debug mode disabled..."); |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
465 CLIHexDebugMode = 0; |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
466 } |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
467 else |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
468 { |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
469 print( NL ); |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
470 info_print("Hex debug mode enabled..."); |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
471 CLIHexDebugMode = 1; |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
472 } |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
473 } |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
474 |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
475 void cliFunc_help( char* args ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
476 { |
108
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
477 // Scan array of dictionaries and print every description |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
478 // (no alphabetical here, too much processing/memory to sort...) |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
479 for ( uint8_t dict = 0; dict < CLIDictionariesUsed; dict++ ) |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
480 { |
112
0cb43cb8f683
Adding dictionary titles.
Jacob Alexander <haata@kiibohd.com>
parents:
110
diff
changeset
|
481 // Print the name of each dictionary as a title |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
482 print( NL "\033[1;32m" ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
483 _print( CLIDictNames[dict] ); // This print is requride by AVR (flash) |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
484 print( "\033[0m" NL ); |
108
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
485 |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
486 // Parse each cmd/description until a null command entry is found |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
487 for ( uint8_t cmd = 0; CLIDict[dict][cmd].name != 0; cmd++ ) |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
488 { |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
489 dPrintStrs(" \033[35m", CLIDict[dict][cmd].name, "\033[0m"); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
490 |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
491 // Determine number of spaces to tab by the length of the command and TabAlign |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
492 uint8_t padLength = CLIEntryTabAlign - lenStr( (char*)CLIDict[dict][cmd].name ); |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
493 while ( padLength-- > 0 ) |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
494 print(" "); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
495 |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
496 _print( CLIDict[dict][cmd].description ); // This print is required by AVR (flash) |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
497 print( NL ); |
108
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
498 } |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
499 } |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
500 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
501 |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
502 void cliFunc_led( char* args ) |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
503 { |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
504 CLILEDState ^= 1 << 1; // Toggle between 0 and 1 |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
505 errorLED( CLILEDState ); // Enable/Disable error LED |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
506 } |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
507 |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
508 void cliFunc_reload( char* args ) |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
509 { |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
510 // Request to output module to be set into firmware reload mode |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
511 Output_firmwareReload(); |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
512 } |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
513 |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
514 void cliFunc_reset( char* args ) |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
515 { |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
516 print("\033c"); // Resets the terminal |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
517 } |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
518 |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
519 void cliFunc_restart( char* args ) |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
520 { |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
521 // Trigger an overall software reset |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
522 Output_softReset(); |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
523 } |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
524 |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
525 void cliFunc_version( char* args ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
526 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
527 print( NL ); |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
528 print( " \033[1mRevision:\033[0m " CLI_Revision NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
529 print( " \033[1mBranch:\033[0m " CLI_Branch NL ); |
294
834d69d22d47
Adding list of modified files to the cli version command.
Jacob Alexander <haata@kiibohd.com>
parents:
239
diff
changeset
|
530 print( " \033[1mTree Status:\033[0m " CLI_ModifiedStatus CLI_ModifiedFiles NL ); |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
531 print( " \033[1mRepo Origin:\033[0m " CLI_RepoOrigin NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
532 print( " \033[1mCommit Date:\033[0m " CLI_CommitDate NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
533 print( " \033[1mCommit Author:\033[0m " CLI_CommitAuthor NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
534 print( " \033[1mBuild Date:\033[0m " CLI_BuildDate NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
535 print( " \033[1mBuild OS:\033[0m " CLI_BuildOS NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
536 print( " \033[1mArchitecture:\033[0m " CLI_Arch NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
537 print( " \033[1mChip:\033[0m " CLI_Chip NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
538 print( " \033[1mCPU:\033[0m " CLI_CPU NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
539 print( " \033[1mDevice:\033[0m " CLI_Device NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
540 print( " \033[1mModules:\033[0m " CLI_Modules NL ); |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
541 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
542 |