Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
Diff: prompt.cpp
- 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;