Added more CLI commands.
- Hex debug for debugging VT100 control characters from the keyboard - Renamed reset to restart (software reset) - Added reset command (same as bash reset, which resets the VT100 variables) - Cleaned up the version module field
This commit is contained in:
parent
6ac1482862
commit
38847b7841
@ -40,7 +40,8 @@ CLIDictItem basicCLIDict[] = {
|
||||
{ "help", "You're looking at it :P", cliFunc_help },
|
||||
{ "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...", cliFunc_led },
|
||||
{ "reload", "Signals microcontroller to reflash/reload.", cliFunc_reload },
|
||||
{ "reset", "Sends a software reset, should be similar to powering on the device.", cliFunc_reset },
|
||||
{ "reset", "Resets the terminal back to initial settings.", cliFunc_reset },
|
||||
{ "restart", "Sends a software restart, should be similar to powering on the device.", cliFunc_restart },
|
||||
{ "version", "Version information about this firmware.", cliFunc_version },
|
||||
{ 0, 0, 0 } // Null entry for dictionary end
|
||||
};
|
||||
@ -51,9 +52,11 @@ CLIDictItem basicCLIDict[] = {
|
||||
|
||||
inline void prompt()
|
||||
{
|
||||
print("\033[2K"); // Erases the current line
|
||||
print(": ");
|
||||
}
|
||||
|
||||
// Initialize the CLI
|
||||
inline void init_cli()
|
||||
{
|
||||
// Reset the Line Buffer
|
||||
@ -69,8 +72,12 @@ inline void init_cli()
|
||||
// Initialize main LED
|
||||
init_errorLED();
|
||||
CLILEDState = 0;
|
||||
|
||||
// Hex debug mode is off by default
|
||||
CLIHexDebugMode = 0;
|
||||
}
|
||||
|
||||
// Query the serial input buffer for any new characters
|
||||
void process_cli()
|
||||
{
|
||||
// Current buffer position
|
||||
@ -106,6 +113,22 @@ void process_cli()
|
||||
CLILineBuffer[CLILineBufferCurrent++] = cur_char;
|
||||
}
|
||||
|
||||
// Display Hex Key Input if enabled
|
||||
if ( CLIHexDebugMode && CLILineBufferCurrent > prev_buf_pos )
|
||||
{
|
||||
print("\033[s\r\n"); // Save cursor position, and move to the next line
|
||||
print("\033[2K"); // Erases the current line
|
||||
|
||||
uint8_t pos = prev_buf_pos;
|
||||
while ( CLILineBufferCurrent > pos )
|
||||
{
|
||||
printHex( CLILineBuffer[pos++] );
|
||||
print(" ");
|
||||
}
|
||||
|
||||
print("\033[u"); // Restore cursor position
|
||||
}
|
||||
|
||||
// If buffer has changed, output to screen while there are still characters in the buffer not displayed
|
||||
while ( CLILineBufferCurrent > prev_buf_pos )
|
||||
{
|
||||
@ -168,17 +191,6 @@ void process_cli()
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
/* TODO Enable via option
|
||||
uint8_t pos = prev_buf_pos;
|
||||
while ( CLILineBuffer[pos] != 0 )
|
||||
{
|
||||
printHex( CLILineBuffer[pos++] );
|
||||
print(" ");
|
||||
}
|
||||
|
||||
print( NL );
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
@ -206,6 +218,7 @@ inline void argumentIsolation_cli( char* string, char** first, char** second )
|
||||
*second = argPtr;
|
||||
}
|
||||
|
||||
// Scans the CLILineBuffer for any valid commands
|
||||
void commandLookup_cli()
|
||||
{
|
||||
// Ignore command if buffer is 0 length
|
||||
@ -244,6 +257,7 @@ void commandLookup_cli()
|
||||
erro_dPrint("\"", CLILineBuffer, "\" is not a valid command...type \033[35mhelp\033[0m");
|
||||
}
|
||||
|
||||
// Registers a command dictionary with the CLI
|
||||
inline void registerDictionary_cli( CLIDictItem *cmdDict )
|
||||
{
|
||||
// Make sure this max limit of dictionaries hasn't been reached
|
||||
@ -263,6 +277,19 @@ inline void registerDictionary_cli( CLIDictItem *cmdDict )
|
||||
|
||||
void cliFunc_cliDebug( char* args )
|
||||
{
|
||||
// Toggle Hex Debug Mode
|
||||
if ( CLIHexDebugMode )
|
||||
{
|
||||
print( NL );
|
||||
info_print("Hex debug mode disabled...");
|
||||
CLIHexDebugMode = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
print( NL );
|
||||
info_print("Hex debug mode enabled...");
|
||||
CLIHexDebugMode = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void cliFunc_help( char* args )
|
||||
@ -303,6 +330,11 @@ void cliFunc_reload( char* args )
|
||||
}
|
||||
|
||||
void cliFunc_reset( char* args )
|
||||
{
|
||||
print("\033c"); // Resets the terminal
|
||||
}
|
||||
|
||||
void cliFunc_restart( char* args )
|
||||
{
|
||||
// Trigger an overall software reset
|
||||
SOFTWARE_RESET();
|
||||
|
@ -59,7 +59,7 @@ CLIDictItem *CLIDict[CLIMaxDictionaries];
|
||||
uint8_t CLIDictionariesUsed;
|
||||
|
||||
uint8_t CLILEDState;
|
||||
|
||||
uint8_t CLIHexDebugMode;
|
||||
|
||||
|
||||
|
||||
@ -81,6 +81,7 @@ void cliFunc_help ( char* args );
|
||||
void cliFunc_led ( char* args );
|
||||
void cliFunc_reload ( char* args );
|
||||
void cliFunc_reset ( char* args );
|
||||
void cliFunc_restart ( char* args );
|
||||
void cliFunc_version ( char* args );
|
||||
|
||||
|
||||
|
@ -41,7 +41,7 @@
|
||||
#define CLI_RepoOrigin "@Git_Origin_URL@"
|
||||
#define CLI_CommitDate "@Git_Date_INFO@"
|
||||
#define CLI_CommitAuthor @Git_Commit_Author@
|
||||
#define CLI_Modules "@OutputModule@ @DebugModule@"
|
||||
#define CLI_Modules "Output(@OutputModule@) Debug(@DebugModule@)"
|
||||
#define CLI_BuildDate "@Build_Date@"
|
||||
#define CLI_BuildOS "@CMAKE_SYSTEM@"
|
||||
#define CLI_Arch "@COMPILER_FAMILY@"
|
||||
|
Reference in New Issue
Block a user