Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Revision:
53:bb492a8f115a
Parent:
52:12930cef17c4
Child:
54:448d57291be6
--- a/prompt.cpp	Mon Oct 20 19:44:16 2014 +0000
+++ b/prompt.cpp	Tue Oct 21 19:35:07 2014 +0000
@@ -28,6 +28,8 @@
 bool cb_session = false;
 bool cb_status = false;
 bool reset_cks = false;
+bool debug_telemetry = false;
+bool telemetry_test = false;
 
 uint8_t test_debug = 1;
 #define PVERSION 4          // Sempre atualizar a versao do prompt
@@ -429,7 +431,7 @@
 void init_prompt(){
     tcp_server.bind( TCP_PORT_LISTENER );
     tcp_server.listen();
-    tcp_timer.start();
+    //tcp_timer.start();
     tcp_server.set_blocking( false, 1 );
         
     udp_server.set_blocking( false, 2 );
@@ -445,99 +447,104 @@
     static uint8_t bufret = 0;
     static Timer flood_timeout;
     bool miss_match = true;
-    char buffer[ 1024 ];
+    char eth_buffer[ 1024 ];
     if( flood_timeout.read() > 60 ){
         pflood = 0;
         flood_timeout.stop();
         flood_timeout.reset();
     }
+    if( tcp_timer.read() >= TCP_IDLE_MAX_TIME ){
+        tcp_timer.stop();
+        tcp_timer.reset();
+        tcp_session = false;
+        debug_buf = __debug_buf__;
+        bufptr = last_bufptr;
+        bufret = 0;
+        from_eth = false;
+        tcp_client.close();
+        return( NULL );
+    }        
     if( !tcp_server.accept( tcp_client ) ){
-        //debug_msg("");
         tcp_session = true;
-        //from_eth = true;
+        tcp_timer.start();
         last_bufptr = bufptr;
-        buffer[ 0 ] = 0;
-        bufptr = 0;
+        eth_buffer[ 0 ] = 0;
         bufret = 0;
     }
     wdt.kick(); 
-    if( !( (int)tcp_timer.read_ms() % 100 ) ){
-        tcp_client.set_blocking( false, 1 );
-        int n = tcp_client.receive( buffer, sizeof( buffer ) - 1 );
-        if( n > 0 ){
-            if( ( n > 2 ) && ( buffer[ n - 2 ]  == '\r' ) ) buffer[ n - 2 ] = 0;
-            
-            if( ( n > 1 ) && ( buffer[ n - 1 ]  == '\n' ) ) buffer[ n - 1 ] = 0;
-            
-            if( n == 1 && buffer[ 0 ] == 0x0A ) strcpy( buffer, "\r" );
-            
-            if( buffer[ 0 ] == '\r' || buffer[ 1 ] == '\n' || buffer[ 2 ] == 'r' || buffer[ 2 ] == '\n'   ) strcpy( buffer, "\r" );
-            
-            bufptr = strlen( buffer );
-            debug_buf = buffer;
-            
-            if( !( strcmp( buffer, "quit" ) ) ){
+    if( tcp_session ){
+        if( !( (int)tcp_timer.read_ms() % 100 ) ){
+            tcp_client.set_blocking( false, 1 );
+            int n = tcp_client.receive( eth_buffer, sizeof( eth_buffer ) - 1 );
+            if( n > 0 ){
                 tcp_timer.reset();
+                
+                if( ( n > 2 ) && ( eth_buffer[ n - 2 ]  == '\r' ) ) eth_buffer[ n - 2 ] = 0;
+                
+                if( ( n > 1 ) && ( eth_buffer[ n - 1 ]  == '\n' ) ) eth_buffer[ n - 1 ] = 0;
+                
+                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;
+                bufret = 1;
+                
+                if( !( strcmp( eth_buffer, "quit" ) ) ){
+                    tcp_timer.reset();
+                    debug_buf = __debug_buf__;
+                    bufptr = last_bufptr;
+                    from_eth = false;
+                    tcp_session = false;
+                    tcp_client.close();
+                    bufret = 0;
+                    return( NULL );
+                }
+            }else{
                 debug_buf = __debug_buf__;
                 bufptr = last_bufptr;
-                from_eth = false;
-                tcp_session = false;
-                tcp_client.close();
-                bufret = 0;
-                return( NULL );
             }
-            from_eth = true;
-            bufret = 1;
-        }
-        if( tcp_timer.read() >= TCP_IDLE_MAX_TIME ){
-            tcp_timer.reset();
-            tcp_session = false;
-            debug_buf = __debug_buf__;
-            bufptr = last_bufptr;
-            bufret = 0;
-            from_eth = false;
-            tcp_session = false;
-            tcp_client.close();
-            return( NULL );
-        }
-    }else{/* if( !tcp_session ){
-        int n = udp_server.receiveFrom( udp_client, buffer, __PROMPT_ETH_BUFFER_SIZE__ - 1 );
-        if( n > 0){
-            if( ( n > 2 ) && ( buffer[ n - 2 ]  == '\r' ) ) buffer[ n - 2 ] = 0;
+        }/*else{ if( !tcp_session ){
+            int n = udp_server.receiveFrom( udp_client, buffer, __PROMPT_ETH_BUFFER_SIZE__ - 1 );
+            if( n > 0){
+                if( ( n > 2 ) && ( buffer[ n - 2 ]  == '\r' ) ) buffer[ n - 2 ] = 0;
+                    
+                if( ( n > 1 ) && ( buffer[ n - 1 ]  == '\n' ) ) buffer[ n - 1 ] = 0;
+                
+                if( n == 1 && buffer[ 0 ] == 0x0A ){ strcpy( buffer, "\r" ); }
                 
-            if( ( n > 1 ) && ( buffer[ n - 1 ]  == '\n' ) ) buffer[ n - 1 ] = 0;
+                last_bufptr = bufptr;
+                bufptr = strlen( buffer );
+                debug_buf = buffer;
+                from_eth = true;
+                udp_request = true;
+                bufret = 1;
+            }
+        }*/
+    }
+    if( !from_eth ){
+        if ( pc.readable() ){
+            // imput do teclado
+            b = pc.getc();
             
-            if( n == 1 && buffer[ 0 ] == 0x0A ){ strcpy( buffer, "\r" ); }
-            
-            last_bufptr = bufptr;
-            bufptr = strlen( buffer );
-            debug_buf = buffer;
-            from_eth = true;
-            udp_request = true;
-            bufret = 1;
-        }else{*/
-            if( !from_eth ){
-                if ( pc.readable() ){
-                    // imput do teclado
-                    b = pc.getc();
-                    
-                    if( b == 0x0D ){ // enter
-                        bufret = 1;
-                    }else{
-                        pc.putc( b );
-                        if( b == 0x08 || b == 0x7F ){ // BS | DEL
-                            if( bufptr > 0 ) debug_buf[ --bufptr ] = 0;
-                        }else if( b == 0x09 ){
-                            // ignore tab
-                        }else{  
-                            debug_buf[bufptr] = b;
-                            bufptr++;
-                        }
-                    }
+            if( b == 0x0D ){ // enter
+                bufret = 1;
+            }else{
+                pc.putc( b );
+                if( b == 0x08 || b == 0x7F ){ // BS | DEL
+                    if( bufptr > 0 ) debug_buf[ --bufptr ] = 0;
+                }else if( b == 0x09 ){
+                    // ignore tab
+                }else{  
+                    debug_buf[bufptr] = b;
+                    bufptr++;
                 }
             }
-        //}
+        }
     }
+    
     if( msg_from_cb ){
         if( tcp_session ){
             tcp_client.send_all( msg_from_cb, strlen( msg_from_cb ) );
@@ -545,8 +552,6 @@
             udp_server.sendTo( udp_client, msg_from_cb, strlen( msg_from_cb ) );
         }    
         pc.printf( "\n\r%s\n\r", msg_from_cb );
-        return( NULL );
-        // tirar esse return daqui que nao vai precisar mais
     }
         
     // Prompt commands here
@@ -695,6 +700,12 @@
             }
         }
         
+        if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "tt" ) ){
+            miss_match = false;
+            telemetry_test = true;
+        }
+        
+        
         if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "reset_cks" ) ){
             miss_match = false;
             reset_cks = true;
@@ -808,6 +819,27 @@
             }
         }
         
+        if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "dtelemetry ", 11 ) ){
+            if (xmemmatch( (uint8_t*)(debug_buf + 11 ), (uint8_t*) "on",2 ) ){
+                miss_match = false;
+                pc.printf( "\n\rTelemetry Debug ON\n\r" );
+                if( from_eth ){
+                    snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "rTelemetry Debug On\n\r" );
+                    debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
+                }
+                debug_telemetry = true;
+            }
+            if (xmemmatch( (uint8_t*)(debug_buf + 11 ), (uint8_t*) "off",3 )) {
+                miss_match = false;
+                pc.printf( "\n\rrTelemetry Debug OFF\n\r" );
+                if( from_eth ){
+                    snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "rTelemetry Debug Off\n\r" );
+                    debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
+                }
+                debug_telemetry = false;
+            }
+        }
+        
         if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "debug_cks ", 10 )) {
             if (xmemmatch( (uint8_t*)(debug_buf + 5 ), (uint8_t*) "on",2 )) {
                 miss_match = false;