Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Revision:
99:e80850c51106
Parent:
98:43b45f26b430
Child:
100:09a23fcd3bdf
--- a/prompt.cpp	Sun Jan 11 03:30:47 2015 +0000
+++ b/prompt.cpp	Mon Jan 19 18:00:42 2015 +0000
@@ -12,7 +12,7 @@
 char tmp_cmd[ DEBUGBUFSIZE ] = "help";
 char last_debug_buf[ DEBUGBUFSIZE ] = "help";
 
-FILE *fip, *fmask, *fgate, *fport, *fsip, *fsport, *fext, *fserext, *fudpport, *ftcpport, *ftip, *ftport, *fmax, *fmin;
+FILE *fip, *fmask, *fgate, *fport, *fsip, *fsport, *fext, *fserext, *fudpport, *ftcpport, *ftip, *ftport, *ffwip, *ffwport, *fmax, *fmin;
 
 uint8_t bufptr = 0;
 uint8_t last_bufptr = 0;
@@ -176,6 +176,56 @@
     
         cat("/qspi/telemetry_port.txt");
         
+        /*
+        pc.printf("FW Server IP ");
+        if( from_eth ){
+            snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "FW Server IP " );
+            if( tcp_session ) while( !( tcp_client.send_all( debug_buf, strlen( debug_buf ) ) ) );
+            
+            else if( udp_request ){
+                udp_server.sendTo( udp_client, debug_buf, strlen( debug_buf ) );
+            }
+        }
+        
+        cat("/qspi/fw_ip.txt");
+        
+        pc.printf("FW Server Port ");
+        if( from_eth ){
+            snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Fw Server Port " );
+            if( tcp_session ) while( !( tcp_client.send_all( debug_buf, strlen( debug_buf ) ) ) );
+            
+            else if( udp_request ){
+                udp_server.sendTo( udp_client, debug_buf, strlen( debug_buf ) );
+            }
+        }
+    
+        cat("/qspi/fw_port.txt");
+        */
+        
+        pc.printf("FW Server IP ");
+        if( from_eth ){
+            snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "FW Server IP " );
+            if( tcp_session ) while( !( tcp_client.send_all( debug_buf, strlen( debug_buf ) ) ) );
+            
+            else if( udp_request ){
+                udp_server.sendTo( udp_client, debug_buf, strlen( debug_buf ) );
+            }
+        }
+        
+        cat("/qspi/fw_ip.txt");
+        
+        pc.printf("FW Server Port ");
+        if( from_eth ){
+            snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "FW Server Port " );
+            if( tcp_session ) while( !( tcp_client.send_all( debug_buf, strlen( debug_buf ) ) ) );
+            
+            else if( udp_request ){
+                udp_server.sendTo( udp_client, debug_buf, strlen( debug_buf ) );
+            }
+        }
+    
+        cat("/qspi/fw_port.txt");
+        
         pc.printf("Max Ext ");
         if( from_eth ){
             snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Max Ext " );
@@ -215,21 +265,28 @@
     
     if (type == 'c' ){                
         // close all files
-        fclose( fip );
-        fclose( fmask );
-        fclose( fgate );
-        fclose( fport );
-        fclose( fsip );
-        fclose( fsport );
-        fclose( fext );
-        fclose( fserext );
-        fclose( fudpport );
-        fclose( ftcpport );
-        fclose( fmax );
-        fclose( fmin );
+        debug_msg("");
+        if( fip ) fclose( fip );
+        if( fmask ) fclose( fmask );
+        if( fgate ) fclose( fgate );
+        if( fport )fclose( fport );
+        if( fsip ) fclose( fsip );
+        if( fsport ) fclose( fsport );
+        if( fext ) fclose( fext );
+        if( fserext ) fclose( fserext );
+        if( fudpport ) fclose( fudpport );
+        if( ftcpport ) fclose( ftcpport );
+        if( fmax ) fclose( fmax );
+        if( fmin ) fclose( fmin );
+        if( ftip ) fclose( ftip );
+        if( ftport ) fclose( ftport );
+        if( ffwip ) fclose( ffwip );
+        if( ffwport) fclose( ffwport );
+        debug_msg("");
     }    
     
     if (type == 'i' ){
+        debug_msg("");
         // Check if files exist, if not create the files
         //fixme criar um bool pra cada file
         bool exists = true;
@@ -239,80 +296,119 @@
             set_ip( __MY_IP__ );
             exists = false;
         }
+        //fclose( fip );
         
         fserext = fopen("/qspi/myext.txt", "r");
         if( fserext == NULL ){
             set_header_ext( __MY_EXT__ );
             exists = false;
         }
+        //fclose( fserext );
         
         fport = fopen("/qspi/mysipport.txt", "r");
         if (fport == NULL){
             set_header_sip_port( __MY_PORT__ );
             exists = false;
         }
+        //fclose( fport );
+        
         fsip = fopen("/qspi/serverip.txt", "r");
         if (fsip == NULL){
              set_server_ip( __SERVER_IP__ );
              exists = false;
         }
+        //fclose( fsip );
         
         fext = fopen("/qspi/peerext.txt", "r");
         if ( fext == NULL ){
              set_server_ext( __PEER_EXT__ );
              exists = false;
         }
+        //fclose( fext );
+        
         fsport = fopen("/qspi/serverport.txt", "r");
         if (fsport == NULL){
             set_server_port( __SERVER_PORT__ );
             exists = false;
         }
+        //fclose( fsport );
         
         fmask = fopen("/qspi/mymask.txt", "r");
         if (fmask == NULL){
             set_mask( __MY_MSK__ );
             exists = false;
         }
+        //fclose( fmask );
+        
         fgate = fopen("/qspi/mygateway.txt", "r");
         if (fgate == NULL){
             set_gateway( __MY_GTW__ );
             exists = false;
         }
+        //fclose( fgate );
+        
         fudpport = fopen("/qspi/udpport.txt", "r" );
         if( fudpport == NULL ){
             set_udp_port_listener( UDP_PORT_LISTENER );
             exists = false;
         }
+        //fclose( fudpport );
+        
         ftcpport = fopen("/qspi/tcpport.txt", "r" );
         if( ftcpport == NULL ){
             set_tcp_port_listener( TCP_PORT_LISTENER );
             exists = false;
         }
+        //fclose( ftcpport );
         
         ftip = fopen("/qspi/telemetry_ip.txt", "r" );
         if( ftip == NULL ){
             set_telemetry_ip( __TELEMETRY_SERVER_IP__ );
             exists = false;
         }
+        //fclose( ftip );
         
         ftport = fopen("/qspi/telemetry_port.txt", "r" );
         if( ftport == NULL ){
             set_telemetry_port( __TELEMETRY_SERVER_PORT__ );
             exists = false;
         }
+        //fclose( ftport );
         
-        fmax = fopen("/qspi/maxext.txt", "r" );
-        if( fmax == NULL ){
-            set_max_ext( MAX_EXT );
+        debug_msg("");
+        ffwip = fopen("/qspi/fw_ip.txt", "r" );
+        if( ffwip == NULL ){
+            set_fw_ip( __FW_SERVER_IP__ );
             exists = false;
         }
-        
+        debug_msg("");
+        //fclose( ffwip );
+        debug_msg("");
+        ffwport = fopen("/qspi/fw_port.txt", "r" );
+        if( ffwport == NULL ){
+            set_fw_port( __FW_SERVER_PORT__ );
+            exists = false;
+        }
+        //fclose( ffwport );
+        debug_msg("");
+        fmax = fopen("/qspi/maxext.txt", "r" );
+        debug_msg("");
+        if( fmax == NULL ){
+            debug_msg("");
+            set_max_ext( MAX_EXT );
+            debug_msg("");
+            exists = false;
+            debug_msg("");
+        }
+        //fclose( fmax );
+        debug_msg("");
         fmin = fopen("/qspi/minext.txt", "r" );
         if( fmin == NULL ){
             set_min_ext( MIN_EXT );
             exists = false;
         }
-        
+        //fclose( fmin );
+        debug_msg("");
         if( !exists ){ 
             pc.printf("\n\rDefault configurations set!\n\r");
             if( from_eth ){
@@ -320,13 +416,13 @@
                 debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
                 if( tcp_session ){
                     tcp_client.send_all( debug_buf, strlen( debug_buf ) );
-                    //debug_buf[ 0 ] = 0;
-                    //bufptr = 0;
                     bufptr = 0;
                     for( uint8_t i = 0; i < DEBUGBUFSIZE; i++ ) debug_buf[ i ] = 0;
                 }
             }
         }
+        debug_msg("");
+        reset_leds();
     }
     
     if (type == 'r' ){
@@ -343,6 +439,8 @@
         ftcpport = fopen( "/qspi/tcpport.txt", "r" );
         ftip = fopen("/qspi/telemetry_ip.txt", "r" );
         ftport = fopen("/qspi/telemetry_port.txt", "r" );
+        ffwip = fopen("/qspi/fw_ip.txt", "r" );
+        ffwport = fopen("/qspi/fw_port.txt", "r" );
         fmax = fopen("/qspi/maxext.txt", "r" );
         fmin = fopen("/qspi/minext.txt", "r" );
     }
@@ -374,6 +472,10 @@
             
         set_telemetry_port( __TELEMETRY_SERVER_PORT__ );
         
+        set_fw_ip( __FW_SERVER_IP__ );
+            
+        set_fw_port( __FW_SERVER_PORT__ );
+        
         set_max_ext( MAX_EXT );
             
         set_min_ext( MIN_EXT );
@@ -389,8 +491,6 @@
             }else if( udp_request ){
                 udp_server.sendTo( udp_client, debug_buf, strlen( debug_buf ) );
             }
-            //debug_buf[ 0 ] = 0;
-            //bufptr = 0;
             bufptr = 0;
             for( uint8_t i = 0; i < DEBUGBUFSIZE; i++ ) debug_buf[ i ] = 0;
         } 
@@ -410,6 +510,8 @@
         ftcpport = fopen( "/qspi/tcpport.txt", "w" );
         ftip = fopen("/qspi/telemetry_ip.txt", "w" );
         ftport = fopen("/qspi/telemetry_port.txt", "w" );
+        ffwip = fopen("/qspi/fw_ip.txt", "w" );
+        ffwport = fopen("/qspi/fw_port.txt", "w" );
         fmax = fopen("/qspi/maxext.txt", "w" );
         fmin = fopen("/qspi/minext.txt", "w" );
         
@@ -431,6 +533,9 @@
         fprintf( ftip, "%s\n\r","" );
         fprintf( ftport, "%i\n\r",0 );
         
+        fprintf( ffwip, "%s\n\r","" );
+        fprintf( ffwport, "%i\n\r",0 );
+        
         fprintf( fmax, "%i\n\r", 0 );
         fprintf( fmin, "%i\n\r", 0 );
         
@@ -804,6 +909,18 @@
             set_telemetry_port( atoi( debug_buf + 15 ) );
             files('s');
         }
+        
+        else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "fw_ip ", 6 ) ){
+            miss_match = false;
+            set_fw_ip( debug_buf + 6 );
+            files('s');
+        }
+        
+        else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "fw_port ", 8 ) ){
+            miss_match = false;
+            set_fw_port( atoi( debug_buf + 8 ) );
+            files('s');
+        }
 
         else if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "dconfig" ) ){
             miss_match = false;
@@ -1488,10 +1605,6 @@
             strcpy( promptcb_last_cmd, cmd );
             strcat( cmd, "\r\r\r\n" );
             
-            //send_msg( "Tamanho do cmd == %d", strlen( cmd ) );
-            
-            //for( register uint16_t i = strlen( cmd ); i < __CB_BUFFER_SIZE__; i++ ) cmd[ i ] = 0;
-            
             pc.printf("\r\next=%d port=%d cmd=%s", ext, port, cmd );
             send2callboxes( __build_cb_package__( ext, port, __PROMPT__, cmd, id_msg++, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
             pc.printf("\n\rComando enviado");
@@ -1507,12 +1620,54 @@
             }
             
             debug_buf = ref;
-            //bufptr = 0;
-            //debug_buf[ 0 ] = 0;
             bufptr = 0;
             for( uint8_t i = 0; i < DEBUGBUFSIZE; i++ ) debug_buf[ i ] = 0;
         }
         
+        else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "rush ", 5 )) {
+            miss_match = false;
+            int ext,port;
+            char *split, *ref, cmd[ 32 ];
+            
+            ref = debug_buf;
+            
+            strcat( debug_buf, "\r" );
+            
+            split = strtok( debug_buf + 5, " " );
+            ext = atoi( split );
+            
+            split += strlen( split ) + 1;
+            split = strtok( NULL, " " );
+            port = atoi( split );
+            
+            strcpy( cmd, "ping\r\n" );
+            
+            promptcb_last_ext = ext;
+            promptcb_last_port = port;
+            
+            strcpy( promptcb_last_cmd, cmd );
+            strcat( cmd, "\r\r\r\n" );
+            
+            for( register uint8_t i = 0; i < 3; i++ ){
+                pc.printf("\r\next=%d port=%d cmd=%s", ext, port, cmd );
+                send2callboxes( __build_cb_package__( ext, port, __PROMPT__, cmd, id_msg++, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
+                pc.printf("\n\rComando enviado");
+            
+                if( from_eth ){
+                    char eth_msg[ 512 ];
+                    snprintf( eth_msg, 512 - 1, "\r\next=%d port=%d cmd=%s\r\nComando 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;
+            for( uint8_t i = 0; i < DEBUGBUFSIZE; i++ ) debug_buf[ i ] = 0;
+        }
         
         
         
@@ -1578,24 +1733,108 @@
             }
         }
         
-        else if (xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "debug_cb_rx ", 12 )) {
-            if (xmemmatch( (uint8_t*)( debug_buf + 12 ), (uint8_t*) "on",2 )) {
+        else if (xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "dboot ", 6 ) ){
+            if (xmemmatch( (uint8_t*)( debug_buf + 6 ), (uint8_t*) "on", 2 ) ){
+                miss_match = false;
+                pc.printf("\r\nBoot Debug ON");
+                if( from_eth ){
+                    snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Boot Debug On\n\r" );
+                    debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
+                }
+                debug_boot = true;
+            }
+            if (xmemmatch( (uint8_t*)( debug_buf + 6 ), (uint8_t*) "off", 3 ) ){
+                miss_match = false;
+                pc.printf("\r\nBoot Debug OFF");
+                if( from_eth ){
+                    snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Boot Debug Off\n\r" );
+                    debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
+                }
+                debug_boot = false;
+            }
+        }
+        
+        else if (xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "dfw ", 4 ) ){
+            if (xmemmatch( (uint8_t*)( debug_buf + 4 ), (uint8_t*) "on", 2 ) ){
+                miss_match = false;
+                pc.printf("\r\nFW Debug ON");
+                if( from_eth ){
+                    snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "FW Debug On\n\r" );
+                    debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
+                }
+                debug_fw = true;
+            }
+            if (xmemmatch( (uint8_t*)( debug_buf + 4 ), (uint8_t*) "off", 3 ) ){
+                miss_match = false;
+                pc.printf("\r\nFW Debug OFF");
+                if( from_eth ){
+                    snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "FW Debug Off\n\r" );
+                    debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
+                }
+                debug_fw = false;
+            }
+        }
+        
+        else if (xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "dfwp ", 5 ) ){
+            if (xmemmatch( (uint8_t*)( debug_buf + 5 ), (uint8_t*) "on", 2 ) ){
+                miss_match = false;
+                pc.printf("\r\nFWPrint Debug ON");
+                if( from_eth ){
+                    snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "FWPrint Debug On\n\r" );
+                    debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
+                }
+                debug_fw_print = true;
+            }
+            if (xmemmatch( (uint8_t*)( debug_buf + 5 ), (uint8_t*) "off", 3 ) ){
+                miss_match = false;
+                pc.printf("\r\nFWPrint Debug OFF");
+                if( from_eth ){
+                    snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "FWPrint Debug Off\n\r" );
+                    debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
+                }
+                debug_fw_print = false;
+            }
+        }
+        
+        else if (xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "drx ", 4 )) {
+            if (xmemmatch( (uint8_t*)( debug_buf + 4 ), (uint8_t*) "on",2 )) {
                 miss_match = false;
                 pc.printf("\tDebug Cbx Rx ON");
                 if( from_eth ){
-                    snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Debug Cbx On Rx on\n\r" );
+                    snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\tDebug Cbx On Rx on\n\r" );
                     debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
                 }
                 debug_cb_rx = true;
             }
-            if (xmemmatch( (uint8_t*)( debug_buf + 12 ), (uint8_t*) "off",3 )) {
+            if (xmemmatch( (uint8_t*)( debug_buf + 4 ), (uint8_t*) "off",3 )) {
                 miss_match = false;
-                pc.printf("Debug Cbx Rx OFF");
+                pc.printf("\tDebug Cbx Rx OFF");
                 if( from_eth ){
-                    snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Debug Cbx Rx Off\n\r" );
+                    snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\tDebug Cbx Rx Off\n\r" );
                     debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
                 }
-                debug_cb_rx = 0;
+                debug_cb_rx = false;
+            }
+        }
+        
+        else if (xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "dtx ", 4 )) {
+            if (xmemmatch( (uint8_t*)( debug_buf + 4 ), (uint8_t*) "on",2 )) {
+                miss_match = false;
+                pc.printf("\tDebug Cbx Rx ON");
+                if( from_eth ){
+                    snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\tDebug Cbx On Rx on\n\r" );
+                    debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
+                }
+                debug_cb_tx = true;
+            }
+            if (xmemmatch( (uint8_t*)( debug_buf + 4 ), (uint8_t*) "off",3 )) {
+                miss_match = false;
+                pc.printf("\tDebug Cbx Rx OFF");
+                if( from_eth ){
+                    snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\tDebug Cbx Rx Off\n\r" );
+                    debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
+                }
+                debug_cb_tx = false;
             }
         }
         
@@ -1604,7 +1843,7 @@
                 miss_match = false;
                 pc.printf("\tDebug File ON");
                 if( from_eth ){
-                    snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Debug File On\n\r" );
+                    snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\tDebug File On\n\r" );
                     debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
                 }
                 debug_cb_rx = true;
@@ -1616,7 +1855,7 @@
                     snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Debug File Off\n\r" );
                     debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
                 }
-                debug_cb_rx = 0;
+                debug_cb_rx = false;
             }
         }
         
@@ -1780,6 +2019,25 @@
                 }
             }
             
+            pc.printf("fw_ip                           - Configura o IP do servidor de fw\n\r");
+            if( from_eth ){
+                snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "fw_ip                           - Configura o IP do servidor de fw\n\r" );
+                if( tcp_session ) while( !( 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("fw_port                         - Configura a porta do servidor de fw\n\r");
+            if( from_eth ){
+                snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "fw_port                         - Configura a porta do servidor de fw\n\r" );
+                if( tcp_session ) while( !( 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("maxext                          - Configura o maior ramal possivel de ser registrado nesse ramo\n\r");
             if( from_eth ){
                 snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "maxext                          - Configura o maior ramal possivel de ser registrado nesse ramo\n\r" );