]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - test_src/cli-stub.c
some minor improvments and bug fixes
[avr-crypto-lib.git] / test_src / cli-stub.c
index ec6ac1d21277f69ef4fcd5c3bfaff8dacf66e160..cb3d27103c0df6fc075db3c96e482bcd73a87705 100644 (file)
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 /**
- * 
+ *
  * author: Daniel Otte
  * email:  daniel.otte@rub.de
  * license: GPLv3 or later
- * 
+ *
  * components to help implementing simple command based interaction
- * 
+ *
  **/
-#include <stdlib.h> 
+
+#include <stdlib.h>
 #include <stdint.h>
 #include <ctype.h>
 #include <string.h>
 
 cli_rx_fpt cli_rx = NULL;
 cli_tx_fpt cli_tx = NULL;
-uint8_t cli_echo=1;
+uint8_t    cli_echo = 1;
 
-void echo_ctrl(char* s);
+void     echo_ctrl(char* s);
 uint16_t max_cmd_length(PGM_VOID_P cmdlist);
-int8_t search_and_call(char* cmd, uint16_t maxcmdlength, PGM_VOID_P cmdlist);
-void cli_option_listing(char* buffer, PGM_VOID_P cmdlist);
-       
+int8_t   search_and_call(char* cmd, uint16_t maxcmdlength, PGM_VOID_P cmdlist);
+void     cli_option_listing(char* buffer, PGM_VOID_P cmdlist);
+void     cli_auto_help(uint16_t maxcmdlength, PGM_VOID_P cmdlist);
 
-void cli_auto_help(uint16_t maxcmdlength, PGM_VOID_P cmdlist);/*
-{
-       cmdlist_entry_t item;
-       uint16_t i;
-       if(!cli_tx)
-               return;
-       
-       cli_putstr_P(PSTR("\r\n[auto help] available commands:\r\n"
-                         " <command> - <params> - <address>\r\n"));
-       for(;;){
-               item.cmd_name      = (void*)pgm_read_word(cmdlist+0);
-               item.cmd_param_str = (void*)pgm_read_word(cmdlist+2);
-               item.cmd_function  = (void_fpt)pgm_read_word(cmdlist+4);
-               cmdlist = (uint8_t*)cmdlist+CMDLIST_ENTRY_SIZE;
-               if(item.cmd_name==NULL){
-                       return;
-               }
-               cli_tx(' ');
-               cli_putstr_P(item.cmd_name);
-               i=maxcmdlength-strlen_P(item.cmd_name);
-               while(i--)
-                       cli_tx(' ');
-               cli_putstr_P(PSTR(" - "));
-               if(item.cmd_param_str==NULL){
-                       cli_putstr_P(PSTR("none \t- 0x"));
-               } else {
-                       if(item.cmd_param_str==(void*)1){
-                               cli_putstr_P(PSTR("yes  \t- 0x"));
-                       } else {
-                               cli_putstr_P(item.cmd_param_str);
-                               cli_putstr_P(PSTR(" \t- 0x"));
-                       }
-               }
-               cli_hexdump_rev(&item.cmd_function, 2); 
-               cli_putstr_P(PSTR("\r\n"));
-       }
-}
-*/
 typedef void(*str_fpt)(char*);
 #define CLI_ENTER     13
 #define CLI_BACKSPACE  8
@@ -136,12 +98,15 @@ int8_t cmd_interface(PGM_VOID_P cmd_desc){
                c = cli_rx();
                switch (c){
                case CLI_ENTER:
-                       if((exit_code=search_and_call(cli_buffer, maxcmdlength, cmd_desc))<=0){
+                       if((exit_code = search_and_call(cli_buffer, maxcmdlength, cmd_desc)) <=0 ){
                                free(cli_buffer);
                                return exit_code;
                        }
+                       /* cli_putstr(cli_buffer); */
+
                        memset(cli_buffer, 0, cli_buffer_size);
                        cli_buffer_index=0;
+                       /* cli_putstr_P(PSTR(" DONE\r\n>")); */
                        cli_putstr_P(PSTR("\r\n>"));
                        completion_failed=0;
                        break;
@@ -161,7 +126,7 @@ int8_t cmd_interface(PGM_VOID_P cmd_desc){
                                        cli_option_listing(cli_buffer, cmd_desc);
                        } else {
                                uint16_t old_idx = cli_buffer_index;
-                               completion_failed = 
+                               completion_failed =
                                        ~cli_completion(cli_buffer, maxcmdlength, cmd_desc);
                                cli_buffer_index = strlen(cli_buffer);
                                if(cli_echo && cli_tx){