X-Git-Url: https://git.donarmstrong.com/?p=kiibohd-controller.git;a=blobdiff_plain;f=Debug%2Fcli%2Fcli.c;h=5c83ee64c98ce4bf60a39c01b80d1f76a8110020;hp=83bdfdc8f175b0a401a9d1ccd536c2644f69bccd;hb=ccf4f34e928afd88ee3dd34e8248ce04d48dad63;hpb=1db716ce53fbc37075f54f3ece119993e4dbbe71 diff --git a/Debug/cli/cli.c b/Debug/cli/cli.c index 83bdfdc..5c83ee6 100644 --- a/Debug/cli/cli.c +++ b/Debug/cli/cli.c @@ -21,14 +21,12 @@ // ----- Includes ----- -// Compiler Includes -//#include - // Project Includes #include #include "cli.h" #include #include +#include @@ -149,31 +147,38 @@ void CLI_process() // Check for control characters switch ( CLILineBuffer[prev_buf_pos] ) { - case 0x0D: // Enter + // Enter + case 0x0A: // LF + case 0x0D: // CR CLILineBuffer[CLILineBufferCurrent - 1] = ' '; // Replace Enter with a space (resolves a bug in args) // Remove the space if there is no command if ( CLILineBufferCurrent == 1 ) + { CLILineBufferCurrent--; + } + else + { + // Add the command to the history + CLI_saveHistory( CLILineBuffer ); - // Process the current line buffer - CLI_commandLookup(); + // Process the current line buffer + CLI_commandLookup(); - // Add the command to the history - CLI_saveHistory( CLILineBuffer ); + // Keep the array circular, discarding the older entries + if ( CLIHistoryTail < CLIHistoryHead ) + CLIHistoryHead = ( CLIHistoryHead + 1 ) % CLIMaxHistorySize; + CLIHistoryTail++; + if ( CLIHistoryTail == CLIMaxHistorySize ) + { + CLIHistoryTail = 0; + CLIHistoryHead = 1; + } - // Keep the array circular, discarding the older entries - if ( CLIHistoryTail < CLIHistoryHead ) - CLIHistoryHead = ( CLIHistoryHead + 1 ) % CLIMaxHistorySize; - CLIHistoryTail++; - if ( CLIHistoryTail == CLIMaxHistorySize ) - { - CLIHistoryTail = 0; - CLIHistoryHead = 1; - } + CLIHistoryCurrent = CLIHistoryTail; // 'Up' starts at the last item + CLI_saveHistory( NULL ); // delete the old temp buffer - CLIHistoryCurrent = CLIHistoryTail; // 'Up' starts at the last item - CLI_saveHistory( NULL ); // delete the old temp buffer + } // Reset the buffer CLILineBufferCurrent = 0; @@ -199,7 +204,7 @@ void CLI_process() case 0x1B: // Esc / Escape codes // Check for other escape sequence - // \e[ is an escape code in vt100 compatable terminals + // \e[ is an escape code in vt100 compatible terminals if ( CLILineBufferCurrent >= prev_buf_pos + 3 && CLILineBuffer[ prev_buf_pos ] == 0x1B && CLILineBuffer[ prev_buf_pos + 1] == 0x5B ) @@ -417,6 +422,11 @@ inline void CLI_saveHistory( char *buff ) return; } + // Don't write empty lines to the history + const char *cursor = buff; + while (*cursor == ' ') { cursor++; } // advance past the leading whitespace + if (*cursor == '\0') { return ; } + // Copy the line to the history int i; for (i = 0; i < CLILineBufferCurrent; i++) @@ -507,6 +517,14 @@ void cliFunc_led( char* args ) void cliFunc_reload( char* args ) { + if ( flashModeEnabled_define == 0 ) + { + print( NL ); + warn_print("flashModeEnabled not set, cancelling firmware reload..."); + info_msg("Set flashModeEnabled to 1 in your kll configuration."); + return; + } + // Request to output module to be set into firmware reload mode Output_firmwareReload(); } @@ -538,5 +556,15 @@ void cliFunc_version( char* args ) print( " \033[1mCPU:\033[0m " CLI_CPU NL ); print( " \033[1mDevice:\033[0m " CLI_Device NL ); print( " \033[1mModules:\033[0m " CLI_Modules NL ); +#if defined(_mk20dx128_) || defined(_mk20dx128vlf5_) || defined(_mk20dx256_) || defined(_mk20dx256vlh7_) + print( " \033[1mUnique Id:\033[0m " ); + printHex32_op( SIM_UIDH, 4 ); + printHex32_op( SIM_UIDMH, 4 ); + printHex32_op( SIM_UIDML, 4 ); + printHex32_op( SIM_UIDL, 4 ); +#elif defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_) +#else +#error "No unique id defined." +#endif }