Mercurial > louis > kiibohd-controller
annotate Debug/cli/cli.c @ 358:32dfab699fc0
Add Unique Id to version information
author | Jacob Alexander <haata@kiibohd.com> |
---|---|
date | Wed, 05 Aug 2015 10:18:35 -0700 |
parents | 9dd55aa71d76 |
children | d8f61e15aca1 |
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 { |
328
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
152 // Enter |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
153 case 0x0A: // LF |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
154 case 0x0D: // CR |
121
71430b08fe81
Force curve gauge is feature complete!!
Jacob Alexander <haata@kiibohd.com>
parents:
114
diff
changeset
|
155 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
|
156 |
71430b08fe81
Force curve gauge is feature complete!!
Jacob Alexander <haata@kiibohd.com>
parents:
114
diff
changeset
|
157 // Remove the space if there is no command |
71430b08fe81
Force curve gauge is feature complete!!
Jacob Alexander <haata@kiibohd.com>
parents:
114
diff
changeset
|
158 if ( CLILineBufferCurrent == 1 ) |
328
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
159 { |
121
71430b08fe81
Force curve gauge is feature complete!!
Jacob Alexander <haata@kiibohd.com>
parents:
114
diff
changeset
|
160 CLILineBufferCurrent--; |
328
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
161 } |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
162 else |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
163 { |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
164 // Only do command-related stuff if there was actually a command |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
165 // Avoids clogging command history with blanks |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
166 |
328
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
167 // Process the current line buffer |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
168 CLI_commandLookup(); |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
169 |
328
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
170 // Add the command to the history |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
171 CLI_saveHistory( CLILineBuffer ); |
318 | 172 |
328
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
173 // Keep the array circular, discarding the older entries |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
174 if ( CLIHistoryTail < CLIHistoryHead ) |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
175 CLIHistoryHead = ( CLIHistoryHead + 1 ) % CLIMaxHistorySize; |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
176 CLIHistoryTail++; |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
177 if ( CLIHistoryTail == CLIMaxHistorySize ) |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
178 { |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
179 CLIHistoryTail = 0; |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
180 CLIHistoryHead = 1; |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
181 } |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
182 |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
183 CLIHistoryCurrent = CLIHistoryTail; // 'Up' starts at the last item |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
184 CLI_saveHistory( NULL ); // delete the old temp buffer |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
185 |
318 | 186 } |
187 | |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
188 // Reset the buffer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
189 CLILineBufferCurrent = 0; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
190 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
191 // Reset the prompt after processing has finished |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
192 print( NL ); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
193 prompt(); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
194 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
195 // 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
|
196 // 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
|
197 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
198 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
199 case 0x09: // Tab |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
200 // 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
|
201 CLI_tabCompletion(); |
114
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
202 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
203 CLILineBufferCurrent--; // Remove the Tab |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
204 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
205 // 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
|
206 // 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
|
207 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
208 |
318 | 209 case 0x1B: // Esc / Escape codes |
210 // Check for other escape sequence | |
211 | |
328
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
212 // \e[ is an escape code in vt100 compatible terminals |
319 | 213 if ( CLILineBufferCurrent >= prev_buf_pos + 3 |
214 && CLILineBuffer[ prev_buf_pos ] == 0x1B | |
215 && CLILineBuffer[ prev_buf_pos + 1] == 0x5B ) | |
318 | 216 { |
217 // Arrow Keys: A (0x41) = Up, B (0x42) = Down, C (0x43) = Right, D (0x44) = Left | |
218 | |
319 | 219 if ( CLILineBuffer[ prev_buf_pos + 2 ] == 0x41 ) // Hist prev |
318 | 220 { |
319 | 221 if ( CLIHistoryCurrent == CLIHistoryTail ) |
318 | 222 { |
223 // Is first time pressing arrow. Save the current buffer | |
319 | 224 CLILineBuffer[ prev_buf_pos ] = '\0'; |
321
18c3c4924f20
Code cleanup from cli changes.
Jacob Alexander <haata@kiibohd.com>
parents:
319
diff
changeset
|
225 CLI_saveHistory( CLILineBuffer ); |
318 | 226 } |
227 | |
228 // Grab the previus item from the history if there is one | |
319 | 229 if ( RING_PREV( CLIHistoryCurrent ) != RING_PREV( CLIHistoryHead ) ) |
230 CLIHistoryCurrent = RING_PREV( CLIHistoryCurrent ); | |
321
18c3c4924f20
Code cleanup from cli changes.
Jacob Alexander <haata@kiibohd.com>
parents:
319
diff
changeset
|
231 CLI_retreiveHistory( CLIHistoryCurrent ); |
318 | 232 } |
319 | 233 if ( CLILineBuffer[ prev_buf_pos + 2 ] == 0x42 ) // Hist next |
318 | 234 { |
235 // Grab the next item from the history if it exists | |
319 | 236 if ( RING_NEXT( CLIHistoryCurrent ) != RING_NEXT( CLIHistoryTail ) ) |
237 CLIHistoryCurrent = RING_NEXT( CLIHistoryCurrent ); | |
321
18c3c4924f20
Code cleanup from cli changes.
Jacob Alexander <haata@kiibohd.com>
parents:
319
diff
changeset
|
238 CLI_retreiveHistory( CLIHistoryCurrent ); |
318 | 239 } |
240 } | |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
241 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
242 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
243 case 0x08: |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
244 case 0x7F: // Backspace |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
245 // 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
|
246 CLILineBufferCurrent--; // Remove the backspace |
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 // If there are characters in the buffer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
249 if ( CLILineBufferCurrent > 0 ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
250 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
251 // Remove character from current position in the line buffer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
252 CLILineBufferCurrent--; |
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 // Remove character from tty |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
255 print("\b \b"); |
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 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
258 break; |
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 default: |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
261 // 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
|
262 CLILineBuffer[CLILineBufferCurrent] = '\0'; |
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 // Output buffer to screen |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
265 dPrint( &CLILineBuffer[prev_buf_pos] ); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
266 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
267 // Buffer reset |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
268 prev_buf_pos++; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
269 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
270 break; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
271 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
272 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
273 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
274 |
108
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
275 // Takes a string, returns two pointers |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
276 // 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
|
277 // 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
|
278 // 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
|
279 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
|
280 { |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
281 // Mark out the first argument |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
282 // 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
|
283 char* cmdPtr = string - 1; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
284 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
|
285 |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
286 // Locates first space delimiter |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
287 char* argPtr = cmdPtr + 1; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
288 while ( *argPtr != ' ' && *argPtr != '\0' ) |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
289 argPtr++; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
290 |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
291 // 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
|
292 (++argPtr)[-1] = '\0'; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
293 |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
294 // Set return variables |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
295 *first = cmdPtr; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
296 *second = argPtr; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
297 } |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
298 |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
299 // 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
|
300 void CLI_commandLookup() |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
301 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
302 // Ignore command if buffer is 0 length |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
303 if ( CLILineBufferCurrent == 0 ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
304 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
305 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
306 // 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
|
307 CLILineBuffer[CLILineBufferCurrent] = '\0'; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
308 |
108
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
309 // 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
|
310 // 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
|
311 char* cmdPtr; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
312 char* argPtr; |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
313 CLI_argumentIsolation( CLILineBuffer, &cmdPtr, &argPtr ); |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
314 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
315 // Scan array of dictionaries for a valid command match |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
316 for ( uint8_t dict = 0; dict < CLIDictionariesUsed; dict++ ) |
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 // 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
|
319 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
|
320 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
321 // Compare the first argument and each command entry |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
322 if ( eqStr( cmdPtr, (char*)CLIDict[dict][cmd].name ) == -1 ) |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
323 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
324 // Run the specified command function pointer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
325 // 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
|
326 (*(void (*)(char*))CLIDict[dict][cmd].function)( argPtr ); |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
327 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
328 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
329 } |
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 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
332 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
333 // No match for the command... |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
334 print( NL ); |
108
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
335 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
|
336 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
337 |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
338 // 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
|
339 void CLI_registerDictionary( const CLIDictItem *cmdDict, const char* dictName ) |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
340 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
341 // 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
|
342 if ( CLIDictionariesUsed >= CLIMaxDictionaries ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
343 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
344 erro_print("Max number of dictionaries defined already..."); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
345 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
346 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
347 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
348 // Add dictionary |
192
6ac92b8614c0
Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents:
126
diff
changeset
|
349 CLIDictNames[CLIDictionariesUsed] = (char*)dictName; |
6ac92b8614c0
Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents:
126
diff
changeset
|
350 CLIDict[CLIDictionariesUsed++] = (CLIDictItem*)cmdDict; |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
351 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
352 |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
353 inline void CLI_tabCompletion() |
114
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
354 { |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
355 // Ignore command if buffer is 0 length |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
356 if ( CLILineBufferCurrent == 0 ) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
357 return; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
358 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
359 // 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
|
360 CLILineBuffer[CLILineBufferCurrent] = '\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 // Retrieve pointers to command and beginning of arguments |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
363 // Places a NULL at the first space after the command |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
364 char* cmdPtr; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
365 char* argPtr; |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
366 CLI_argumentIsolation( CLILineBuffer, &cmdPtr, &argPtr ); |
114
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 // Tab match pointer |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
369 char* tabMatch = 0; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
370 uint8_t matches = 0; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
371 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
372 // Scan array of dictionaries for a valid command match |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
373 for ( uint8_t dict = 0; dict < CLIDictionariesUsed; dict++ ) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
374 { |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
375 // 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
|
376 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
|
377 { |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
378 // 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
|
379 // 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
|
380 // 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
|
381 // Also ignores full matches |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
382 if ( eqStr( cmdPtr, (char*)CLIDict[dict][cmd].name ) == 0 ) |
114
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 // TODO Make list of commands if multiple matches |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
385 matches++; |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
386 tabMatch = (char*)CLIDict[dict][cmd].name; |
114
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
387 } |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
388 } |
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 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
391 // Only tab complete if there was 1 match |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
392 if ( matches == 1 ) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
393 { |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
394 // Reset the buffer |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
395 CLILineBufferCurrent = 0; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
396 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
397 // Reprint the prompt (automatically clears the line) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
398 prompt(); |
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 // Display the command |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
401 dPrint( tabMatch ); |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
402 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
403 // 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
|
404 while ( *tabMatch != '\0' ) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
405 { |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
406 CLILineBuffer[CLILineBufferCurrent++] = *tabMatch++; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
407 } |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
408 } |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
409 } |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
410 |
319 | 411 inline int CLI_wrap( int kX, int const kLowerBound, int const kUpperBound ) |
318 | 412 { |
413 int range_size = kUpperBound - kLowerBound + 1; | |
414 | |
319 | 415 if ( kX < kLowerBound ) |
318 | 416 kX += range_size * ((kLowerBound - kX) / range_size + 1); |
417 | |
418 return kLowerBound + (kX - kLowerBound) % range_size; | |
419 } | |
420 | |
319 | 421 inline void CLI_saveHistory( char *buff ) |
422 { | |
423 if ( buff == NULL ) | |
424 { | |
318 | 425 //clear the item |
319 | 426 CLIHistoryBuffer[ CLIHistoryTail ][ 0 ] = '\0'; |
318 | 427 return; |
428 } | |
429 | |
430 // Copy the line to the history | |
431 int i; | |
319 | 432 for (i = 0; i < CLILineBufferCurrent; i++) |
318 | 433 { |
319 | 434 CLIHistoryBuffer[ CLIHistoryTail ][ i ] = CLILineBuffer[ i ]; |
318 | 435 } |
436 } | |
437 | |
319 | 438 void CLI_retreiveHistory( int index ) |
439 { | |
440 char *histMatch = CLIHistoryBuffer[ index ]; | |
318 | 441 |
442 // Reset the buffer | |
443 CLILineBufferCurrent = 0; | |
444 | |
445 // Reprint the prompt (automatically clears the line) | |
446 prompt(); | |
447 | |
448 // Display the command | |
449 dPrint( histMatch ); | |
450 | |
451 // There are no index counts, so just copy the whole string to the input buffe | |
452 CLILineBufferCurrent = 0; | |
453 while ( *histMatch != '\0' ) | |
454 { | |
319 | 455 CLILineBuffer[ CLILineBufferCurrent++ ] = *histMatch++; |
318 | 456 } |
457 } | |
458 | |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
459 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
460 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
461 // ----- CLI Command Functions ----- |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
462 |
316 | 463 void cliFunc_clear( char* args) |
464 { | |
465 print("\033[2J\033[H\r"); // Erases the whole screen | |
466 } | |
467 | |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
468 void cliFunc_cliDebug( char* args ) |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
469 { |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
470 // Toggle Hex Debug Mode |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
471 if ( CLIHexDebugMode ) |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
472 { |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
473 print( NL ); |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
474 info_print("Hex debug mode disabled..."); |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
475 CLIHexDebugMode = 0; |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
476 } |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
477 else |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
478 { |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
479 print( NL ); |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
480 info_print("Hex debug mode enabled..."); |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
481 CLIHexDebugMode = 1; |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
482 } |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
483 } |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
484 |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
485 void cliFunc_help( char* args ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
486 { |
108
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
487 // 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
|
488 // (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
|
489 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
|
490 { |
112
0cb43cb8f683
Adding dictionary titles.
Jacob Alexander <haata@kiibohd.com>
parents:
110
diff
changeset
|
491 // 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
|
492 print( NL "\033[1;32m" ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
493 _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
|
494 print( "\033[0m" NL ); |
108
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
495 |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
496 // 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
|
497 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
|
498 { |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
499 dPrintStrs(" \033[35m", CLIDict[dict][cmd].name, "\033[0m"); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
500 |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
501 // 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
|
502 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
|
503 while ( padLength-- > 0 ) |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
504 print(" "); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
505 |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
506 _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
|
507 print( NL ); |
108
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
508 } |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
509 } |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
510 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
511 |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
512 void cliFunc_led( char* args ) |
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 CLILEDState ^= 1 << 1; // Toggle between 0 and 1 |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
515 errorLED( CLILEDState ); // Enable/Disable error LED |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
516 } |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
517 |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
518 void cliFunc_reload( char* args ) |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
519 { |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
520 // 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
|
521 Output_firmwareReload(); |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
522 } |
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 void cliFunc_reset( char* args ) |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
525 { |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
526 print("\033c"); // Resets the terminal |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
527 } |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
528 |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
529 void cliFunc_restart( char* args ) |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
530 { |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
531 // 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
|
532 Output_softReset(); |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
533 } |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
534 |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
535 void cliFunc_version( char* args ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
536 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
537 print( NL ); |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
538 print( " \033[1mRevision:\033[0m " CLI_Revision NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
539 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
|
540 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
|
541 print( " \033[1mRepo Origin:\033[0m " CLI_RepoOrigin NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
542 print( " \033[1mCommit Date:\033[0m " CLI_CommitDate NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
543 print( " \033[1mCommit Author:\033[0m " CLI_CommitAuthor NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
544 print( " \033[1mBuild Date:\033[0m " CLI_BuildDate NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
545 print( " \033[1mBuild OS:\033[0m " CLI_BuildOS NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
546 print( " \033[1mArchitecture:\033[0m " CLI_Arch NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
547 print( " \033[1mChip:\033[0m " CLI_Chip NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
548 print( " \033[1mCPU:\033[0m " CLI_CPU NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
549 print( " \033[1mDevice:\033[0m " CLI_Device NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
550 print( " \033[1mModules:\033[0m " CLI_Modules NL ); |
358
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
551 #if defined(_mk20dx128_) || defined(_mk20dx128vlf5_) || defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
552 print( " \033[1mUnique Id:\033[0m " ); |
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
553 printHex32_op( SIM_UIDH, 4 ); |
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
554 printHex32_op( SIM_UIDMH, 4 ); |
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
555 printHex32_op( SIM_UIDML, 4 ); |
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
556 printHex32_op( SIM_UIDL, 4 ); |
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
557 #elif defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_) |
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
558 #else |
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
559 #error "No unique id defined." |
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
560 #endif |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
561 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
562 |