Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Revision:
62:07e5bdc9f8f7
Parent:
61:06e77dff6f00
Child:
63:0d95da692bb4
--- a/prompt.cpp	Fri Oct 24 16:38:47 2014 +0000
+++ b/prompt.cpp	Tue Oct 28 11:32:06 2014 +0000
@@ -32,9 +32,11 @@
 bool debug_telemetry = false;
 bool main_test = false;
 bool flood_silence = false;
+bool list = false;
+bool rx = false;
 
 uint8_t test_debug = 1;
-#define PVERSION 4          // Sempre atualizar a versao do prompt
+#define PVERSION 5          // Sempre atualizar a versao do prompt
 
 char __debug_buf__[ DEBUGBUFSIZE ];
 char * debug_buf = __debug_buf__;
@@ -47,14 +49,14 @@
 uint8_t bufptr = 0;
 uint8_t last_bufptr = 0;
  
-uint8_t xmemmatch(const uint8_t * s1, const uint8_t * s2, uint16_t size) {      // presente da lib.h pode retirar da versao final
+uint8_t xmemmatch(const uint8_t * s1, const uint8_t * s2, uint16_t size) {      
   while (size--) {
     if (*s1++ != *s2++) return 0; /* does not match */
   }
   return 1; /* matches */
 }
 
-uint8_t xstrmatch(const uint8_t * s1, const uint8_t * s2) {                     // presente na lib.h pode retirar da versao final
+uint8_t xstrmatch(const uint8_t * s1, const uint8_t * s2) {
   while (*s1) {
     if (*s1++ != *s2++) return 0; /* does not match */
   }
@@ -64,7 +66,7 @@
     return 0; /* does not match */
 }
 
-void xmemcpy(uint8_t * dest, const uint8_t * src, uint16_t size) {              // presente na lib.h pode retirar da versao final
+void xmemcpy(uint8_t * dest, const uint8_t * src, uint16_t size){
   while (size--) *dest++ = *src++;
 }
 
@@ -270,10 +272,10 @@
         strcpy( last_cmd, tmp_cmd );
         debug_buf[ 0 ] = 0;
         bufptr = 0;
-        if( tcp_session ) tcp_client.send_all( "\n\r>" , strlen( "\n\r>" ) );
+        if( tcp_session ) tcp_client.send_all( "\n\r> " , strlen( "\n\r> " ) );
         
         else if( udp_request ){
-            udp_server.sendTo( udp_client, "\n\r>", strlen( "\n\r>" ) );
+            udp_server.sendTo( udp_client, "\n\r> ", strlen( "\n\r> " ) );
         }
     }
     
@@ -557,7 +559,7 @@
                 if( ( n == 1 ) && eth_buffer[ 0 ] == 0x0A ) strcpy( eth_buffer, "\r" );
                 
                 //if( eth_buffer[ 0 ] == '\r' || eth_buffer[ 1 ] == '\n' || eth_buffer[ 2 ] == 'r' || eth_buffer[ 2 ] == '\n'   ) strcpy( eth_buffer, "\r" );
-                
+
                 bufptr = strlen( eth_buffer );
                 debug_buf = eth_buffer;
                 from_eth = true;
@@ -710,23 +712,24 @@
             pc.printf("\n\r");
             files('s');
         }
+        
+        if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "rx" ) ){
+            miss_match = false;
+            rx = true;
+        }
+        
         else if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "format" ) ){
             miss_match = false;
             pc.printf("\n\rFormatando o sistema de arquivos... espere o sistema reiniciar\n\r");
+                        
             if( from_eth ){
-                snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Formatando o sistema de arquivos... espere o sistema reiniciar\n\r");
-                debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
-                if( tcp_session ){ 
-                    tcp_client.send_all( debug_buf, strlen( debug_buf ) );
-                    tcp_client.close();
-                }else if( udp_request ){
-                    udp_server.sendTo( udp_client, debug_buf, strlen( debug_buf ) );
-                }
+                snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Not Allowed\n\r");
+            }else{
+                files('e');
+                files('w');
+                __disable_irq();
+                NVIC_SystemReset();
             }
-            files('e');
-            files('w');
-            __disable_irq();
-            NVIC_SystemReset();
         }
 
         else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "ipset ", 6 )) {
@@ -822,9 +825,14 @@
             }
         }
         
+        else if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "ls" ) ){
+            miss_match = false;
+            list = true;
+        }
+        
         else if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "tt" ) ){
             miss_match = false;
-            main_test = true;
+            main_test = !main_test;
         }
         
         else if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "reset_cks" ) ){
@@ -1025,12 +1033,9 @@
             int ext,port;
             char *split, *ref, *cmd;
             
-            pc.printf("\n\r%s\n\r", debug_buf );
+            ref = debug_buf;
             
-            ref = debug_buf;
-            //debug_buf[ bufptr++ ] = 0x0D;
             debug_buf[ strlen( debug_buf ) ] = 0x0D;
-            //debug_buf[ bufptr++ ] = 0x00;
             debug_buf[ strlen( debug_buf ) + 1 ] = 0x00;
             
             split = strtok( debug_buf + 4, " " );
@@ -1042,49 +1047,29 @@
             
             promptcb_last_ext = ext;
             promptcb_last_port = port;
+            
+            int tmp = strlen( cmd );
+            cmd[ tmp ] = 0x0D;
+            cmd[ tmp + 1 ] = 0x00;
             strcpy( promptcb_last_cmd, cmd );
             
             pc.printf("\r\next=%d port=%d\r\ncmd=%s\r\n", ext, port, cmd );
             __send_to_cb__( __build_cb_package__( ext, port, __PROMPT__, cmd, id_msg++, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
             pc.printf("\n\rComando enviado\n\r");
             
-            for( register int i = 0; i < 32; i++ )
-                pc.printf("%0x ", write_buffer[ i ] );
-            pc.printf("\n\r");
-            
             if( from_eth ){
-                snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\r\next=%d port=%d\r\ncmd=%s\r\n\n\rComando enviado\n\r", ext, port, cmd );
-                //debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
+                char eth_msg[ 512 ];
+                snprintf( eth_msg, 512 - 1, "\r\next=%d port=%d\r\ncmd=%s\r\n\n\rComando enviado\n\r", ext, port, cmd );
+                if( tcp_session ){ 
+                    tcp_client.send_all( eth_msg, strlen( eth_msg ) );
+                }else if( udp_request ){
+                    udp_server.sendTo( udp_client, eth_msg, strlen( eth_msg ) );
+                }
             }
             
             debug_buf = ref;
-            //bufptr = 0;
-            //debug_buf[ 0 ] = 0;
-            
-            /*
-
-            unsigned int ext,port;
-            int ant1,ant2;
-
-            debug_buf[ bufptr++ ] = 0x0D;
-            debug_buf[ bufptr++ ] = 0x00;
-            
-            ant1 = str2uint( ( debug_buf + 4 ), &ext );
-            ant2 = str2uint( ( ( debug_buf + 4 ) + ant1 + 1 ), &port );
-
-            promptcb_last_ext = ext;
-            promptcb_last_port = port;
-            
-            pc.printf("\r\next=%d port=%d\r\ncmd=%s\r\n", ext, port, debug_buf + 4 + ant1 + 2 + ant2 );
-            __send_to_cb__( __build_cb_package__( ext, port, __PROMPT__, debug_buf + 4 + ant1 + 2 + ant2, id_msg++, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
-            pc.printf("\n\rComando enviado\n\r");
-            
-            for( register int i = 0; i < 300; i++ ){
-                pc.printf("%x ", write_buffer[ i ] );
-                if( i % 23 == 0 ) pc.printf("\n\r");
-            }
-            pc.printf("\n\r");
-            */
+            bufptr = 0;
+            debug_buf[ 0 ] = 0;
         }
         
         else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "_pcb",4 )) {
@@ -1096,21 +1081,7 @@
             __send_to_cb__( __build_cb_package__( promptcb_last_ext, promptcb_last_port, __PROMPT__, debug_buf + 4, id_msg++, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
             pc.printf("\n\rComando enviado\n\r");
         }
-        /*
-        if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "flood kill ", 11 ) ){
-            miss_match = false;
-            
-            split = strtok( debug_buf + 11, " " );
-            int ext_init = atoi( split );
-            split = strtok( NULL, " " );
-            int ext_end = atoi( split );
-            pc.printf("\n\r MUUUUUUUuuuuUUUUUU - I'm not a dog!!!! \n\r");
-            if( from_eth ){
-                snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "MUUUUUUUuuuuUUUUUU - I'm not a dog!!!!\n\r");
-                debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
-            }
-        }
-        */
+
         else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "cks",3 )) {
             miss_match = false;
             pcks_s = 1;
@@ -1233,6 +1204,8 @@
                 }
             }
             pc.printf("format                          - formata o sistema de arquivos\n\r");
+            //desabilitado via eth
+            /*
             if( from_eth ){
                 snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "format                          - formata o sistema de arquivos\n\r" );
                 if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) );
@@ -1241,6 +1214,7 @@
                     udp_server.sendTo( udp_client, debug_buf, strlen( debug_buf ) );
                 }
             }
+            */
             pc.printf("reset                           - resta o sistema\n\r");
             if( from_eth ){
                 snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "reset                           - resta o sistema\n\r" );
@@ -1331,9 +1305,9 @@
                     udp_server.sendTo( udp_client, debug_buf, strlen( debug_buf ) );
                 }
             }
-            pc.printf("telemetry_iport                 - Configura a port do servidor de telemetria\n\r");
+            pc.printf("telemetry_port                  - Configura a port do servidor de telemetria\n\r");
             if( from_eth ){
-                snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "telemetry_iport                 - Configura a port do servidor de telemetria\n\r" );
+                snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "telemetry_port                  - Configura a port do servidor de telemetria\n\r" );
                 if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) );
                 
                 else if( udp_request ){
@@ -1397,9 +1371,18 @@
                     udp_server.sendTo( udp_client, debug_buf, strlen( debug_buf ) );
                 }
             }
-            pc.printf("flood [on|off]                  - simula envio de pacotes de audio\n\r");
+            pc.printf("{ flood [ on | off ] | [+|-] }  - simula envio de pacotes de audio\n\r");
             if( from_eth ){
-                snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "flood [on|off]                  - simula envio de pacotes de audio\n\r");
+                snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "{ flood [ on | off ] | [+|-] }  - simula envio de pacotes de audio\n\r");
+                if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) );
+                
+                else if( udp_request ){
+                    udp_server.sendTo( udp_client, debug_buf, strlen( debug_buf ) );
+                }
+            }
+            pc.printf("++ ext                          - Header flood on, ext flood on\n\r");
+            if( from_eth ){
+                snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "++ ext                          - Header flood on, ext flood on\n\r");
                 if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) );
                 
                 else if( udp_request ){
@@ -1417,24 +1400,36 @@
             char cmd[ 16 ];
             strcpy( cmd, "call init " );
             
-            debug_buf[ bufptr++ ] = 0x0D;
-            debug_buf[ bufptr++ ] = 0x00;
-            
             ext = atoi( debug_buf + 7 );
             port = convert_ext_to_port( ext );
             
-            strcat( cmd, ( ext % 2 ) ? "B\n\r" : "A\n\r" );
+            if( ext % 2 ){
+                ext--;
+                strcat( cmd, "B\r\r" );
+            }else{
+                strcat( cmd, "A\r\r" );
+            }
             
             promptcb_last_ext = ext;
             promptcb_last_port = port;
             
+            int tmp = strlen( cmd );
+            cmd[ tmp ] = 0x0D;
+            cmd[ tmp + 1 ] = 0x00;
+            strcpy( promptcb_last_cmd, cmd );
+            
             pc.printf("\r\next=%d port=%d\r\ncmd=%s\r\n", ext, port, cmd );
             __send_to_cb__( __build_cb_package__( ext, port, __PROMPT__, cmd, id_msg++, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
-            pc.printf("Comando enviado\n\r");
+            pc.printf("\n\rComando enviado\n\r");
             
             if( from_eth ){
-                snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\r\next=%d port=%d\r\ncmd=%s\r\n\n\rComando enviado\n\r", ext, port, cmd );
-                debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
+                char eth_msg[ 512 ];
+                snprintf( eth_msg, 512 - 1, "\r\next=%d port=%d\r\ncmd=%s\r\n\n\rComando enviado\n\r", ext, port, cmd );
+                if( tcp_session ){ 
+                    tcp_client.send_all( eth_msg, strlen( eth_msg ) );
+                }else if( udp_request ){
+                    udp_server.sendTo( udp_client, eth_msg, strlen( eth_msg ) );
+                }
             }
             
             bufptr = 0;