Mercurial > louis > kiibohd-controller
annotate Debug/cli/cli.c @ 395:e581daa76a14
Write whole debug cli command to history
Previously the command was being modified in place in order
to find the command name. This was happening before saving
to the history.
Fixes #70
author | Eric Mertens <emertens@gmail.com> |
---|---|
date | Mon, 26 Oct 2015 17:55:41 -0700 |
parents | d8f61e15aca1 |
children |
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 // Project Includes |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
25 #include <buildvars.h> |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
26 #include "cli.h" |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
27 #include <led.h> |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
28 #include <print.h> |
385
d8f61e15aca1
Adding jump to bootloader key
Jacob Alexander <haata@kiibohd.com>
parents:
358
diff
changeset
|
29 #include <kll_defs.h> |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
30 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
31 |
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 // ----- Variables ----- |
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 // Basic command dictionary |
316 | 36 CLIDict_Entry( clear, "Clear the screen."); |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
37 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
|
38 CLIDict_Entry( help, "You're looking at it :P" ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
39 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
|
40 CLIDict_Entry( reload, "Signals microcontroller to reflash/reload." ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
41 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
|
42 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
|
43 CLIDict_Entry( version, "Version information about this firmware." ); |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
44 |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
45 CLIDict_Def( basicCLIDict, "General Commands" ) = { |
316 | 46 CLIDict_Item( clear ), |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
47 CLIDict_Item( cliDebug ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
48 CLIDict_Item( help ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
49 CLIDict_Item( led ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
50 CLIDict_Item( reload ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
51 CLIDict_Item( reset ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
52 CLIDict_Item( restart ), |
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
53 CLIDict_Item( version ), |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
54 { 0, 0, 0 } // Null entry for dictionary end |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
55 }; |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
56 |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
57 |
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 // ----- Functions ----- |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
60 |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
61 inline void prompt() |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
62 { |
114
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
63 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
|
64 print("\033[1;34m:\033[0m "); // Blue bold prompt |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
65 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
66 |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
67 // Initialize the CLI |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
68 inline void CLI_init() |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
69 { |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
70 // Reset the Line Buffer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
71 CLILineBufferCurrent = 0; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
72 |
318 | 73 // History starts empty |
74 CLIHistoryHead = 0; | |
75 CLIHistoryCurrent = 0; | |
76 CLIHistoryTail = 0; | |
77 | |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
78 // Set prompt |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
79 prompt(); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
80 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
81 // Register first dictionary |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
82 CLIDictionariesUsed = 0; |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
83 CLI_registerDictionary( basicCLIDict, basicCLIDictName ); |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
84 |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
85 // Initialize main LED |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
86 init_errorLED(); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
87 CLILEDState = 0; |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
88 |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
89 // Hex debug mode is off by default |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
90 CLIHexDebugMode = 0; |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
91 } |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
92 |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
93 // 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
|
94 void CLI_process() |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
95 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
96 // Current buffer position |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
97 uint8_t prev_buf_pos = CLILineBufferCurrent; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
98 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
99 // Process each character while available |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
100 while ( 1 ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
101 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
102 // 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
|
103 if ( Output_availablechar() == 0 ) |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
104 break; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
105 |
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
|
106 // Retrieve from output module |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
107 char cur_char = (char)Output_getchar(); |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
108 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
109 // Make sure buffer isn't full |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
110 if ( CLILineBufferCurrent >= CLILineBufferMaxSize ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
111 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
112 print( NL ); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
113 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
|
114 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
115 // Clear buffer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
116 CLILineBufferCurrent = 0; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
117 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
118 // Reset the prompt |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
119 prompt(); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
120 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
121 return; |
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 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
124 // Place into line buffer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
125 CLILineBuffer[CLILineBufferCurrent++] = cur_char; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
126 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
127 |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
128 // Display Hex Key Input if enabled |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
129 if ( CLIHexDebugMode && CLILineBufferCurrent > prev_buf_pos ) |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
130 { |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
131 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
|
132 print("\033[2K"); // Erases the current line |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
133 |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
134 uint8_t pos = prev_buf_pos; |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
135 while ( CLILineBufferCurrent > pos ) |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
136 { |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
137 printHex( CLILineBuffer[pos++] ); |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
138 print(" "); |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
139 } |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
140 |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
141 print("\033[u"); // Restore cursor position |
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 |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
144 // 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
|
145 while ( CLILineBufferCurrent > prev_buf_pos ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
146 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
147 // Check for control characters |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
148 switch ( CLILineBuffer[prev_buf_pos] ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
149 { |
328
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
150 // Enter |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
151 case 0x0A: // LF |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
152 case 0x0D: // CR |
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 ) |
328
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
157 { |
121
71430b08fe81
Force curve gauge is feature complete!!
Jacob Alexander <haata@kiibohd.com>
parents:
114
diff
changeset
|
158 CLILineBufferCurrent--; |
328
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
159 } |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
160 else |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
161 { |
395
e581daa76a14
Write whole debug cli command to history
Eric Mertens <emertens@gmail.com>
parents:
385
diff
changeset
|
162 // Add the command to the history |
e581daa76a14
Write whole debug cli command to history
Eric Mertens <emertens@gmail.com>
parents:
385
diff
changeset
|
163 CLI_saveHistory( CLILineBuffer ); |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
164 |
328
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
165 // 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
|
166 CLI_commandLookup(); |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
167 |
328
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
168 // 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
|
169 if ( CLIHistoryTail < CLIHistoryHead ) |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
170 CLIHistoryHead = ( CLIHistoryHead + 1 ) % CLIMaxHistorySize; |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
171 CLIHistoryTail++; |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
172 if ( CLIHistoryTail == CLIMaxHistorySize ) |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
173 { |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
174 CLIHistoryTail = 0; |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
175 CLIHistoryHead = 1; |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
176 } |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
177 |
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
178 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
|
179 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
|
180 |
318 | 181 } |
182 | |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
183 // Reset the buffer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
184 CLILineBufferCurrent = 0; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
185 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
186 // Reset the prompt after processing has finished |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
187 print( NL ); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
188 prompt(); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
189 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
190 // 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
|
191 // 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
|
192 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
193 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
194 case 0x09: // Tab |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
195 // 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
|
196 CLI_tabCompletion(); |
114
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
197 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
198 CLILineBufferCurrent--; // Remove the Tab |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
199 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
200 // 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
|
201 // 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
|
202 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
203 |
318 | 204 case 0x1B: // Esc / Escape codes |
205 // Check for other escape sequence | |
206 | |
328
9dd55aa71d76
Avoid putting blank entries in history, allow linefeed for enter
Matt Ventura <mattventura@mattventura.net>
parents:
321
diff
changeset
|
207 // \e[ is an escape code in vt100 compatible terminals |
319 | 208 if ( CLILineBufferCurrent >= prev_buf_pos + 3 |
209 && CLILineBuffer[ prev_buf_pos ] == 0x1B | |
210 && CLILineBuffer[ prev_buf_pos + 1] == 0x5B ) | |
318 | 211 { |
212 // Arrow Keys: A (0x41) = Up, B (0x42) = Down, C (0x43) = Right, D (0x44) = Left | |
213 | |
319 | 214 if ( CLILineBuffer[ prev_buf_pos + 2 ] == 0x41 ) // Hist prev |
318 | 215 { |
319 | 216 if ( CLIHistoryCurrent == CLIHistoryTail ) |
318 | 217 { |
218 // Is first time pressing arrow. Save the current buffer | |
319 | 219 CLILineBuffer[ prev_buf_pos ] = '\0'; |
321
18c3c4924f20
Code cleanup from cli changes.
Jacob Alexander <haata@kiibohd.com>
parents:
319
diff
changeset
|
220 CLI_saveHistory( CLILineBuffer ); |
318 | 221 } |
222 | |
223 // Grab the previus item from the history if there is one | |
319 | 224 if ( RING_PREV( CLIHistoryCurrent ) != RING_PREV( CLIHistoryHead ) ) |
225 CLIHistoryCurrent = RING_PREV( CLIHistoryCurrent ); | |
321
18c3c4924f20
Code cleanup from cli changes.
Jacob Alexander <haata@kiibohd.com>
parents:
319
diff
changeset
|
226 CLI_retreiveHistory( CLIHistoryCurrent ); |
318 | 227 } |
319 | 228 if ( CLILineBuffer[ prev_buf_pos + 2 ] == 0x42 ) // Hist next |
318 | 229 { |
230 // Grab the next item from the history if it exists | |
319 | 231 if ( RING_NEXT( CLIHistoryCurrent ) != RING_NEXT( CLIHistoryTail ) ) |
232 CLIHistoryCurrent = RING_NEXT( CLIHistoryCurrent ); | |
321
18c3c4924f20
Code cleanup from cli changes.
Jacob Alexander <haata@kiibohd.com>
parents:
319
diff
changeset
|
233 CLI_retreiveHistory( CLIHistoryCurrent ); |
318 | 234 } |
235 } | |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
236 return; |
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 case 0x08: |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
239 case 0x7F: // Backspace |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
240 // 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
|
241 CLILineBufferCurrent--; // Remove the backspace |
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 // If there are characters in the buffer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
244 if ( CLILineBufferCurrent > 0 ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
245 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
246 // Remove character from current position in the line buffer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
247 CLILineBufferCurrent--; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
248 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
249 // Remove character from tty |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
250 print("\b \b"); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
251 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
252 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
253 break; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
254 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
255 default: |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
256 // 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
|
257 CLILineBuffer[CLILineBufferCurrent] = '\0'; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
258 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
259 // Output buffer to screen |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
260 dPrint( &CLILineBuffer[prev_buf_pos] ); |
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 // Buffer reset |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
263 prev_buf_pos++; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
264 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
265 break; |
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 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
268 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
269 |
108
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
270 // Takes a string, returns two pointers |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
271 // 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
|
272 // 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
|
273 // 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
|
274 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
|
275 { |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
276 // Mark out the first argument |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
277 // 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
|
278 char* cmdPtr = string - 1; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
279 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
|
280 |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
281 // Locates first space delimiter |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
282 char* argPtr = cmdPtr + 1; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
283 while ( *argPtr != ' ' && *argPtr != '\0' ) |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
284 argPtr++; |
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 // 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
|
287 (++argPtr)[-1] = '\0'; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
288 |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
289 // Set return variables |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
290 *first = cmdPtr; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
291 *second = argPtr; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
292 } |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
293 |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
294 // 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
|
295 void CLI_commandLookup() |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
296 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
297 // Ignore command if buffer is 0 length |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
298 if ( CLILineBufferCurrent == 0 ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
299 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
300 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
301 // 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
|
302 CLILineBuffer[CLILineBufferCurrent] = '\0'; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
303 |
108
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
304 // 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
|
305 // 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
|
306 char* cmdPtr; |
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
307 char* argPtr; |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
308 CLI_argumentIsolation( CLILineBuffer, &cmdPtr, &argPtr ); |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
309 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
310 // Scan array of dictionaries for a valid command match |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
311 for ( uint8_t dict = 0; dict < CLIDictionariesUsed; dict++ ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
312 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
313 // 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
|
314 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
|
315 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
316 // Compare the first argument and each command entry |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
317 if ( eqStr( cmdPtr, (char*)CLIDict[dict][cmd].name ) == -1 ) |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
318 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
319 // Run the specified command function pointer |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
320 // 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
|
321 (*(void (*)(char*))CLIDict[dict][cmd].function)( argPtr ); |
106
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 return; |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
324 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
325 } |
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 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
328 // No match for the command... |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
329 print( NL ); |
108
ecb57880e3bc
Added help command and function'ized the arugmentIsolator.
Jacob Alexander <haata@kiibohd.com>
parents:
107
diff
changeset
|
330 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
|
331 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
332 |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
333 // 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
|
334 void CLI_registerDictionary( const CLIDictItem *cmdDict, const char* dictName ) |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
335 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
336 // 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
|
337 if ( CLIDictionariesUsed >= CLIMaxDictionaries ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
338 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
339 erro_print("Max number of dictionaries defined already..."); |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
340 return; |
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 |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
343 // Add dictionary |
192
6ac92b8614c0
Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents:
126
diff
changeset
|
344 CLIDictNames[CLIDictionariesUsed] = (char*)dictName; |
6ac92b8614c0
Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents:
126
diff
changeset
|
345 CLIDict[CLIDictionariesUsed++] = (CLIDictItem*)cmdDict; |
106
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 |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
348 inline void CLI_tabCompletion() |
114
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
349 { |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
350 // Ignore command if buffer is 0 length |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
351 if ( CLILineBufferCurrent == 0 ) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
352 return; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
353 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
354 // 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
|
355 CLILineBuffer[CLILineBufferCurrent] = '\0'; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
356 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
357 // Retrieve pointers to command and beginning of arguments |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
358 // Places a NULL at the first space after the command |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
359 char* cmdPtr; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
360 char* argPtr; |
125
8dab4014c398
Major code cleanup and preparation for PartialMap Macro Module
Jacob Alexander <haata@kiibohd.com>
parents:
123
diff
changeset
|
361 CLI_argumentIsolation( CLILineBuffer, &cmdPtr, &argPtr ); |
114
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
362 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
363 // Tab match pointer |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
364 char* tabMatch = 0; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
365 uint8_t matches = 0; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
366 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
367 // Scan array of dictionaries for a valid command match |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
368 for ( uint8_t dict = 0; dict < CLIDictionariesUsed; dict++ ) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
369 { |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
370 // 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
|
371 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
|
372 { |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
373 // 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
|
374 // 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
|
375 // 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
|
376 // Also ignores full matches |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
377 if ( eqStr( cmdPtr, (char*)CLIDict[dict][cmd].name ) == 0 ) |
114
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 // TODO Make list of commands if multiple matches |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
380 matches++; |
239
2a4c99da1276
HUGE AVR RAM optimization (~28%).
Jacob Alexander <haata@kiibohd.com>
parents:
192
diff
changeset
|
381 tabMatch = (char*)CLIDict[dict][cmd].name; |
114
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
382 } |
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 } |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
385 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
386 // Only tab complete if there was 1 match |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
387 if ( matches == 1 ) |
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 // Reset the buffer |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
390 CLILineBufferCurrent = 0; |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
391 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
392 // Reprint the prompt (automatically clears the line) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
393 prompt(); |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
394 |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
395 // Display the command |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
396 dPrint( 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 // 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
|
399 while ( *tabMatch != '\0' ) |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
400 { |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
401 CLILineBuffer[CLILineBufferCurrent++] = *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 } |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
404 } |
c57ec00a0abc
Adding basic Tab completion.
Jacob Alexander <haata@kiibohd.com>
parents:
113
diff
changeset
|
405 |
319 | 406 inline int CLI_wrap( int kX, int const kLowerBound, int const kUpperBound ) |
318 | 407 { |
408 int range_size = kUpperBound - kLowerBound + 1; | |
409 | |
319 | 410 if ( kX < kLowerBound ) |
318 | 411 kX += range_size * ((kLowerBound - kX) / range_size + 1); |
412 | |
413 return kLowerBound + (kX - kLowerBound) % range_size; | |
414 } | |
415 | |
319 | 416 inline void CLI_saveHistory( char *buff ) |
417 { | |
418 if ( buff == NULL ) | |
419 { | |
318 | 420 //clear the item |
319 | 421 CLIHistoryBuffer[ CLIHistoryTail ][ 0 ] = '\0'; |
318 | 422 return; |
423 } | |
424 | |
395
e581daa76a14
Write whole debug cli command to history
Eric Mertens <emertens@gmail.com>
parents:
385
diff
changeset
|
425 // Don't write empty lines to the history |
e581daa76a14
Write whole debug cli command to history
Eric Mertens <emertens@gmail.com>
parents:
385
diff
changeset
|
426 const char *cursor = buff; |
e581daa76a14
Write whole debug cli command to history
Eric Mertens <emertens@gmail.com>
parents:
385
diff
changeset
|
427 while (*cursor == ' ') { cursor++; } // advance past the leading whitespace |
e581daa76a14
Write whole debug cli command to history
Eric Mertens <emertens@gmail.com>
parents:
385
diff
changeset
|
428 if (*cursor == '\0') { return ; } |
e581daa76a14
Write whole debug cli command to history
Eric Mertens <emertens@gmail.com>
parents:
385
diff
changeset
|
429 |
318 | 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 { |
385
d8f61e15aca1
Adding jump to bootloader key
Jacob Alexander <haata@kiibohd.com>
parents:
358
diff
changeset
|
520 if ( flashModeEnabled_define == 0 ) |
d8f61e15aca1
Adding jump to bootloader key
Jacob Alexander <haata@kiibohd.com>
parents:
358
diff
changeset
|
521 { |
d8f61e15aca1
Adding jump to bootloader key
Jacob Alexander <haata@kiibohd.com>
parents:
358
diff
changeset
|
522 print( NL ); |
d8f61e15aca1
Adding jump to bootloader key
Jacob Alexander <haata@kiibohd.com>
parents:
358
diff
changeset
|
523 warn_print("flashModeEnabled not set, cancelling firmware reload..."); |
d8f61e15aca1
Adding jump to bootloader key
Jacob Alexander <haata@kiibohd.com>
parents:
358
diff
changeset
|
524 info_msg("Set flashModeEnabled to 1 in your kll configuration."); |
d8f61e15aca1
Adding jump to bootloader key
Jacob Alexander <haata@kiibohd.com>
parents:
358
diff
changeset
|
525 return; |
d8f61e15aca1
Adding jump to bootloader key
Jacob Alexander <haata@kiibohd.com>
parents:
358
diff
changeset
|
526 } |
d8f61e15aca1
Adding jump to bootloader key
Jacob Alexander <haata@kiibohd.com>
parents:
358
diff
changeset
|
527 |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
528 // 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
|
529 Output_firmwareReload(); |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
530 } |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
531 |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
532 void cliFunc_reset( char* args ) |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
533 { |
110
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
534 print("\033c"); // Resets the terminal |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
535 } |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
536 |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
537 void cliFunc_restart( char* args ) |
98d940b60d12
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
109
diff
changeset
|
538 { |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
539 // 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
|
540 Output_softReset(); |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
541 } |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
542 |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
543 void cliFunc_version( char* args ) |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
544 { |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
545 print( NL ); |
109
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
546 print( " \033[1mRevision:\033[0m " CLI_Revision NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
547 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
|
548 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
|
549 print( " \033[1mRepo Origin:\033[0m " CLI_RepoOrigin NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
550 print( " \033[1mCommit Date:\033[0m " CLI_CommitDate NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
551 print( " \033[1mCommit Author:\033[0m " CLI_CommitAuthor NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
552 print( " \033[1mBuild Date:\033[0m " CLI_BuildDate NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
553 print( " \033[1mBuild OS:\033[0m " CLI_BuildOS NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
554 print( " \033[1mArchitecture:\033[0m " CLI_Arch NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
555 print( " \033[1mChip:\033[0m " CLI_Chip NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
556 print( " \033[1mCPU:\033[0m " CLI_CPU NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
557 print( " \033[1mDevice:\033[0m " CLI_Device NL ); |
2c1a9e6ae70e
Added more CLI commands.
Jacob Alexander <haata@kiibohd.com>
parents:
108
diff
changeset
|
558 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
|
559 #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
|
560 print( " \033[1mUnique Id:\033[0m " ); |
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
561 printHex32_op( SIM_UIDH, 4 ); |
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
562 printHex32_op( SIM_UIDMH, 4 ); |
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
563 printHex32_op( SIM_UIDML, 4 ); |
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
564 printHex32_op( SIM_UIDL, 4 ); |
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
565 #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
|
566 #else |
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
567 #error "No unique id defined." |
32dfab699fc0
Add Unique Id to version information
Jacob Alexander <haata@kiibohd.com>
parents:
328
diff
changeset
|
568 #endif |
106
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
569 } |
15961894eaeb
Adding basic CLI functionality.
Jacob Alexander <haata@kiibohd.com>
parents:
105
diff
changeset
|
570 |