![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
Diff: prompt.cpp
- 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;