From c24f86b0eaf9f51fbcc6235b02e5dc647cbfe945 Mon Sep 17 00:00:00 2001 From: Jacob Alexander Date: Wed, 16 Apr 2014 00:20:45 -0700 Subject: [PATCH] Adding example CLI command to DPH module. --- Scan/DPH/scan_loop.c | 45 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/Scan/DPH/scan_loop.c b/Scan/DPH/scan_loop.c index 838aad4..bf939a7 100644 --- a/Scan/DPH/scan_loop.c +++ b/Scan/DPH/scan_loop.c @@ -21,6 +21,7 @@ #include // Project Includes +#include #include #include @@ -119,6 +120,12 @@ +// ----- Function Declarations ----- + +void cliFunc_echo ( char* args ); + + + // ----- Variables ----- // Buffer used to inform the macro processing module which keys have been detected as pressed @@ -126,6 +133,14 @@ volatile uint8_t KeyIndex_Buffer[KEYBOARD_BUFFER]; volatile uint8_t KeyIndex_BufferUsed; +// Scan Module command dictionary +char* scanCLIDictName = "DPH Module Commands"; +CLIDictItem scanCLIDict[] = { + { "echo", "Example command, echos the arguments.", cliFunc_echo }, + { 0, 0, 0 } // Null entry for dictionary end +}; + + // TODO dfj variables...needs cleaning up and commenting // Variables used to calculate the starting sense value (averaging) @@ -195,6 +210,9 @@ uint8_t testColumn( uint8_t strobe ); // Initial setup for cap sense controller inline void Scan_setup() { + // Register Scan CLI dictionary + CLI_registerDictionary( scanCLIDict, scanCLIDictName ); + // TODO dfj code...needs cleanup + commenting... setup_ADC(); @@ -972,3 +990,30 @@ void dump(void) { dump_count &= 0x0f; } + +// ----- CLI Command Functions ----- + +// XXX Just an example command showing how to parse arguments (more complex than generally needed) +void cliFunc_echo( char* args ) +{ + char* curArgs; + char* arg1Ptr; + char* arg2Ptr = args; + + // Parse args until a \0 is found + while ( 1 ) + { + print( NL ); // No \r\n by default after the command is entered + + curArgs = arg2Ptr; // Use the previous 2nd arg pointer to separate the next arg from the list + CLI_argumentIsolation( curArgs, &arg1Ptr, &arg2Ptr ); + + // Stop processing args if no more are found + if ( *arg1Ptr == '\0' ) + break; + + // Print out the arg + dPrint( arg1Ptr ); + } +} +