Browse Source

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
simple
Jacob Alexander 10 years ago
parent
commit
38847b7841
3 changed files with 47 additions and 14 deletions
  1. 44
    12
      Debug/cli/cli.c
  2. 2
    1
      Debug/cli/cli.h
  3. 1
    1
      Lib/_buildvars.h

+ 44
- 12
Debug/cli/cli.c View File

@@ -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();

+ 2
- 1
Debug/cli/cli.h View File

@@ -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 );



+ 1
- 1
Lib/_buildvars.h View File

@@ -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@"