Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Diff: SerialConsole.h
- Revision:
- 2:04d8e2ad8cff
- Parent:
- 0:ece62a42511f
--- a/SerialConsole.h Sun Aug 31 06:46:52 2014 +0000 +++ b/SerialConsole.h Sun Aug 31 08:34:56 2014 +0000 @@ -1,3 +1,4 @@ +#pragma once #include "mbed.h" #include "Command.h" #include <vector> @@ -9,145 +10,42 @@ { const char* prompt_str; char buffer[100]; - vector<Cmd*> cmds; + int param; - int param; + //command list + vector<Cmd*> cmds; //available commands Led_On_Cmd cmd1; Led_Off_Cmd cmd2; + Help_cmd cmd3; Cmd null_cmd; - -public: - SerialConsole() { - prompt_str = "p542% "; - init(); - }; - - SerialConsole(char* pr) { - prompt_str = pr; - init(); - }; - void start() { - //start with prompt - prompt(); - // - int count = 0 ; - while(1) { - char ch = pc.getc(); - buffer[count++] = ch ; - //check for carriage return or new line - if(ch == 0x0a || ch == 0x0d ) { - //for each new line parse command then execute command - Cmd* in_cmd = parse_command(count); - in_cmd->execute(param); - //reset count/buffer - count = 0; - //go to a new command line - newline(); - prompt(); - continue ; - } else if (ch == 'q') { - //exit - newline(); - prompt(); - return; - } - pc.putc(ch); - } - }; - +public: + SerialConsole(); + SerialConsole(char* pr) ; + void start() ; + void newline() ; + private: - void init() { - //default param - param = 1 ; - //default commands - cmds.push_back(&cmd1); - cmds.push_back(&cmd2); - } + void init() ; + Cmd* parse_command(int count); + void prompt(); + - Cmd* parse_command(int count) { - //parse command from buffer - int curr_pos = 0; - //loop until a space is encounterred - //discard any leading spaces - bool check_leading_spaces = true; - bool check_cmd_str = true; - bool check_arg_str = false; - char cmd_str[100]; - char arg_str[100]; - int cmd_str_idx = 0; - int arg_str_idx = 0; - while (curr_pos < count) { - if(buffer[curr_pos] == '\0') { - break; - } - if (check_leading_spaces && buffer[curr_pos] == ' ') { - curr_pos++; - continue; - } else if (check_cmd_str && buffer[curr_pos] != ' ') { - //we have come to the command string start - check_leading_spaces = false; - cmd_str[cmd_str_idx++] = buffer[curr_pos]; - } else if (check_arg_str && buffer[curr_pos] != ' ') { - //we have come to the arg string start - check_leading_spaces = false; - arg_str[arg_str_idx++] = buffer[curr_pos]; - } else if (buffer[curr_pos] == ' ') { - if(check_arg_str) break; - // we have come to the spaces after cmd string - check_cmd_str = false; - check_leading_spaces = true; - check_arg_str = true; - } - curr_pos++; - }; - - //make valid C string for comparison - cmd_str[cmd_str_idx]= '\0'; - arg_str[arg_str_idx]= '\0'; - - //find any command matching input - for(vector<Cmd*>::iterator it = cmds.begin(); it != cmds.end(); it++){ - Cmd* curr_cmd = *it; - if(strcmp(curr_cmd->get_name(), cmd_str) == 0){ - //success : command found for given input - param = atoi(arg_str); - //todo remove - newline(); - pc.puts("CMD SUCCESS param : "); - pc.printf("%d", param); - newline(); - return curr_cmd; - } - } - return &null_cmd; - } - - void prompt() { - pc.puts(prompt_str); - }; - - void newline() { - pc.putc(0x0d); - pc.putc(0x0a); - }; + /* STARTUP MESSAGE + ************************************************ + *************Simple LED Console***************** + ************************************************ + *A Console Application to manage LED Digital**** + *ouput for ARM cortex M4 - LPC1768, covered by** + *Apache General Public License **************** + ************************************************ + ***Author : U.S. Wickramasinghe***************** + ***Corperation : Indiana University************* + *Please email uswickra@umail.iu.edu for source** + ************************************************ + */ + void print_startup_msg() ; + }; - -/* - newline(); - pc.puts("DEBUG CMD : "); - pc.putc(char(cmd_str_idx+'0')); - newline(); - for(int i = 0 ; i < cmd_str_idx ; i++ ){ - pc.putc(cmd_str[i]); - } - newline(); - pc.puts("DEBUG ARG: "); - pc.putc(char(arg_str_idx+ '0')); - newline(); - for(int i = 0 ; i < arg_str_idx ; i++ ){ - pc.putc(arg_str[i]); - } - newline();*/ \ No newline at end of file