Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
Diff: prompt.cpp
- Revision:
- 78:1353744f01e1
- Parent:
- 77:e8c0253b57bc
- Child:
- 79:9bc12aa305a9
diff -r e8c0253b57bc -r 1353744f01e1 prompt.cpp --- a/prompt.cpp Tue Nov 25 18:43:01 2014 +0000 +++ b/prompt.cpp Tue Dec 16 12:13:01 2014 +0000 @@ -1,9 +1,12 @@ #include "prompt.h" +#define PVERSION 7 // Sempre atualizar a versao do prompt + bool flood_silence = false; bool delayed_flood = false; -#define PVERSION 5 // Sempre atualizar a versao do prompt +Timer tcp_timer; +bool tcp_alive = false; char __debug_buf__[ DEBUGBUFSIZE ]; char * debug_buf = __debug_buf__; @@ -22,20 +25,6 @@ return 1; /* matches */ } -uint8_t xstrmatch(const uint8_t * s1, const uint8_t * s2) { - while (*s1) { - if (*s1++ != *s2++) return 0; /* does not match */ - } - if ( *s2 == 0 ) - return 1; /* matches */ - else - return 0; /* does not match */ -} - -void xmemcpy(uint8_t * dest, const uint8_t * src, uint16_t size){ - while (size--) *dest++ = *src++; -} - int str2uint ( char * s, unsigned int * val ){ int i = 0; unsigned int ret = 0; @@ -84,7 +73,7 @@ if( from_eth ){ //snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\n\rHeader IP " ); snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Header IP " ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -97,7 +86,7 @@ if( from_eth ){ //snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\n\rHeader ext " ); snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Header ext " ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -110,7 +99,7 @@ if( from_eth ){ //snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\n\rHeader port " ); snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Header port " ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -123,7 +112,7 @@ if( from_eth ){ //snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\n\rServer IP " ); snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Server IP " ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -136,7 +125,7 @@ if( from_eth ){ //snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\n\rServer ext " ); snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Server ext " ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -149,7 +138,7 @@ if( from_eth ){ //snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\n\rServer port " ); snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Server port " ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -162,7 +151,7 @@ if( from_eth ){ //snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\n\rMascara de rede " ); snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Mascara de rede " ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -175,7 +164,7 @@ if( from_eth ){ //snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\n\rGateway IP " ); snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Gateway IP " ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -188,7 +177,7 @@ if( from_eth ){ //snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\n\rUDP Port " ); snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "UDP Port " ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -201,7 +190,7 @@ if( from_eth ){ //snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\n\rTCP Port " ); snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "TCP Port " ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -214,7 +203,7 @@ if( from_eth ){ //snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\n\rTelemetry Server IP " ); snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Telemetry Server IP " ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -227,7 +216,7 @@ if( from_eth ){ //snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\n\rTelemetry Server Port " ); snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Telemetry Server Port " ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -470,15 +459,12 @@ pc.printf("\n\r*******File System Ready*******\n\r"); } -void init_prompt(){ +void init_prompt_eth(){ tcp_server.bind( TCP_PORT_LISTENER ); tcp_server.listen(); - //tcp_timer.start(); tcp_server.set_blocking( false, 1 ); - udp_server.set_blocking( false, 2 ); - udp_server.bind( UDP_PORT_LISTENER ); - + udp_server.bind( UDP_PORT_LISTENER ); pc.printf("*******Prompt eth Ready*******\n\r"); } @@ -500,16 +486,24 @@ 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 ); + bool close_tcp = true; + //if( tcp_alive && ( tcp_timer.read() < TCP_ALIVE_IDLE_MAX_TIME ) ){ + // close_tcp = false; + //} + if( close_tcp ){ + tcp_alive = false; + 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 ) ){ tcp_session = true; @@ -950,7 +944,7 @@ snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Debug On\n\r" ); debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; } - debug_alive = 1; + debug_alive = true; } if( xmemmatch( (uint8_t*)(debug_buf+6), (uint8_t*) "off",3 )) { miss_match = false; @@ -959,7 +953,7 @@ snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Debug Off\n\r" ); debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; } - debug_alive = 0; + debug_alive = false; } if( xmemmatch( (uint8_t*)(debug_buf+6), (uint8_t*) "show",4 ) ){ miss_match = false; @@ -969,7 +963,7 @@ pc.printf("\n\rdebug_vector"); pc.printf("\n\rdebug_cb"); pc.printf("\n\rdebug_main"); - pc.printf("\n\rdebug_cks"); + pc.printf("\n\rdcks"); pc.printf("\n\rdebug_cb_rx"); pc.printf("\n\rdebug_cb_tx*"); pc.printf("\n\rdebug_eth_rx*"); @@ -977,21 +971,21 @@ pc.printf("\n\rdebug_file"); if( from_eth ){ - snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\n\rdsip \n\rdebug_alive \n\rdebug_prompt \n\rdebug_vector \n\rdebug_cb \n\rdebug_main \n\rdebug_cks \n\rdebug_cb_rx \n\rdebug_cb_tx* \n\rdebug_eth_rx* \n\rdebug_eth_tx* \n\rdebug_file\n\r" ); + snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\n\rdsip \n\rdebug_alive \n\rdebug_prompt \n\rdebug_vector \n\rdebug_cb \n\rdebug_main \n\rdcks \n\rdebug_cb_rx \n\rdebug_cb_tx* \n\rdebug_eth_rx* \n\rdebug_eth_tx* \n\rdebug_file\n\r" ); debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; } } } - else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "dsip ",5 ) ){ - if (xmemmatch( (uint8_t*)(debug_buf + 5 ), (uint8_t*) "on",2 ) ){ + else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "dsip ", 5 ) ){ + if (xmemmatch( (uint8_t*)(debug_buf + 5 ), (uint8_t*) "on", 2 ) ){ miss_match = false; pc.printf( "\n\rSip Debug ON\n\r" ); if( from_eth ){ snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Sip Debug On\n\r" ); debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; } - debug_sip = 1; + debug_sip = true; } if (xmemmatch( (uint8_t*)(debug_buf + 5 ), (uint8_t*) "off",3 )) { miss_match = false; @@ -1000,7 +994,154 @@ snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Sip Debug Off\n\r" ); debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; } - debug_sip = 0; + debug_sip = false; + } + } + + else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "dping ", 6 ) ){ + if (xmemmatch( (uint8_t*)(debug_buf + 6 ), (uint8_t*) "on", 2 ) ){ + miss_match = false; + pc.printf( "\n\rPing Debug ON\n\r" ); + if( from_eth ){ + snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Ping Debug On\n\r" ); + debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; + } + debug_ping = true; + } + if (xmemmatch( (uint8_t*)(debug_buf + 6 ), (uint8_t*) "off",3 )) { + miss_match = false; + pc.printf( "\n\rPing Debug OFF\n\r" ); + if( from_eth ){ + snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Ping Debug Off\n\r" ); + debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; + } + debug_ping= false; + } + } + + else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "dwu ", 4 ) ){ + if (xmemmatch( (uint8_t*)(debug_buf + 4 ), (uint8_t*) "on", 2 ) ){ + miss_match = false; + pc.printf( "\n\rWake Up Debug ON\n\r" ); + if( from_eth ){ + snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Wake Up Debug On\n\r" ); + debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; + } + debug_wake = true; + } + if (xmemmatch( (uint8_t*)(debug_buf + 4 ), (uint8_t*) "off",3 )) { + miss_match = false; + pc.printf( "\n\rWake Up Debug OFF\n\r" ); + if( from_eth ){ + snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Wake Up Debug Off\n\r" ); + debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; + } + debug_wake = false; + } + } + + else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "tcp_alive ", 10 ) ){ + if (xmemmatch( (uint8_t*)(debug_buf + 10 ), (uint8_t*) "on", 2 ) ){ + miss_match = false; + pc.printf( "\n\rTCP don't drop mode on\n\r" ); + if( from_eth ){ + snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "TCP don't drop mode on\n\r" ); + debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; + } + tcp_alive = true; + } + if (xmemmatch( (uint8_t*)(debug_buf + 10 ), (uint8_t*) "off",3 )) { + miss_match = false; + pc.printf( "\n\rTCP don't drop mode off\n\r" ); + if( from_eth ){ + snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "TCP don't drop mode off\n\r" ); + debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; + } + tcp_alive = false; + } + } + + else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "daging ",7 ) ){ + if (xmemmatch( (uint8_t*)(debug_buf + 7 ), (uint8_t*) "on", 2 ) ){ + miss_match = false; + pc.printf( "\n\rAging Debug ON\n\r" ); + if( from_eth ){ + snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Aging Debug On\n\r" ); + debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; + } + debug_aging = true; + } + if (xmemmatch( (uint8_t*)(debug_buf + 7 ), (uint8_t*) "off",3 )) { + miss_match = false; + pc.printf( "\n\rAging Debug OFF\n\r" ); + if( from_eth ){ + snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Aging Debug Off\n\r" ); + debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; + } + debug_aging = false; + } + } + + else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "dcpld ", 6 ) ){ + if (xmemmatch( (uint8_t*)(debug_buf + 6 ), (uint8_t*) "on", 2 ) ){ + miss_match = false; + pc.printf( "\n\rDCPLD Debug ON\n\r" ); + if( from_eth ){ + snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "DCPLD Debug On\n\r" ); + debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; + } + debug_cpld = true; + } + if (xmemmatch( (uint8_t*)(debug_buf + 6 ), (uint8_t*) "off",3 ) ){ + miss_match = false; + pc.printf( "\n\rDCPLD Debug OFF\n\r" ); + if( from_eth ){ + snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "DCPLD Debug Off\n\r" ); + debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; + } + debug_cpld = false; + } + } + + else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "dcks_err ", 9 ) ){ + if (xmemmatch( (uint8_t*)(debug_buf + 9 ), (uint8_t*) "on", 2 ) ){ + miss_match = false; + pc.printf( "\n\rCKS_ERR Debug ON\n\r" ); + if( from_eth ){ + snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "CKS_ERR Debug On\n\r" ); + debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; + } + debug_cks_err = true; + } + if (xmemmatch( (uint8_t*)(debug_buf + 9 ), (uint8_t*) "off", 3 ) ){ + miss_match = false; + pc.printf( "\n\rCKS_ERR Debug OFF\n\r" ); + if( from_eth ){ + snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "CKS_ERR Debug Off\n\r" ); + debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; + } + debug_cks_err = false; + } + } + + else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "dinvite ", 8 ) ){ + if( xmemmatch( (uint8_t*)(debug_buf + 8 ), (uint8_t*) "on", 2 ) ){ + miss_match = false; + pc.printf( "\n\rInvite Debug ON\n\r" ); + if( from_eth ){ + snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Invite Debug On\n\r" ); + debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; + } + debug_invite = 1; + } + if( xmemmatch( (uint8_t*)(debug_buf + 8 ), (uint8_t*) "off",3 )) { + miss_match = false; + pc.printf( "\n\rInvite Debug OFF\n\r" ); + if( from_eth ){ + snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "Invite Debug Off\n\r" ); + debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; + } + debug_invite = 0; } } @@ -1025,28 +1166,28 @@ } } - else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "dtelemetry ", 11 ) ){ - if (xmemmatch( (uint8_t*)(debug_buf + 11 ), (uint8_t*) "on",2 ) ){ + else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "dtelos ", 7 ) ){ + if (xmemmatch( (uint8_t*)( debug_buf + 7 ), (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" ); + 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 )) { + if (xmemmatch( (uint8_t*)(debug_buf + 7 ), (uint8_t*) "off", 3 )) { miss_match = false; - pc.printf( "\n\rrTelemetry Debug OFF\n\r" ); + pc.printf( "\n\rTelemetry Debug OFF\n\r" ); if( from_eth ){ - snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "rTelemetry Debug Off\n\r" ); + snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "\rTelemetry Debug Off\n\r" ); debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; } debug_telemetry = false; } } - else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "debug_cks ", 10 )) { + else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "dcks ", 5 )) { if (xmemmatch( (uint8_t*)(debug_buf + 5 ), (uint8_t*) "on",2 )) { miss_match = false; pc.printf( "\n\rCKS Debug ON\n\r" ); @@ -1054,7 +1195,7 @@ snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "CKS Debug On\n\r" ); debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; } - debug_cks = 1; + debug_cks = true; } if (xmemmatch( (uint8_t*)(debug_buf + 5 ), (uint8_t*) "off",3 )) { miss_match = false; @@ -1063,10 +1204,53 @@ snprintf( debug_buf, __PROMPT_ETH_BUFFER_SIZE__, "CKS Debug Off\n\r" ); debug_buf[ strlen( debug_buf ) - 1 ] = '\0'; } - debug_cks = 0; + debug_cks = false; } } + else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "promptcb ", 9 )) { + miss_match = false; + //static uint8_t id_msg = 0x10; + uint8_t write_buffer[ 300 ]; + int ext,port; + char *split, *ref, *cmd; + + ref = debug_buf; + + strcat( debug_buf, "\r" ); + + split = strtok( debug_buf + 9, " " ); + ext = atoi( split ); + split = strtok( NULL, " " ); + port = atoi( split ); + split += strlen( split ) + 1; + cmd = split; + + promptcb_last_ext = ext; + promptcb_last_port = port; + + strcpy( promptcb_last_cmd, cmd ); + strcat( cmd, "\r\r\r\n" ); + + 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; + } + //promptcb ramal porta comando //FIXME colocar a parte eth de novo else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "pcb ", 4 )) { @@ -1076,9 +1260,7 @@ ref = debug_buf; - //debug_buf[ strlen( debug_buf ) ] = 0x0D; strcat( debug_buf, "\r" ); - //debug_buf[ strlen( debug_buf ) + 1 ] = 0x00; split = strtok( debug_buf + 4, " " ); ext = atoi( split ); @@ -1090,19 +1272,20 @@ promptcb_last_ext = ext; promptcb_last_port = port; - //int tmp = strlen( cmd ); - //cmd[ tmp ] = 0x0D; - //cmd[ tmp + 1 ] = 0x00; strcpy( promptcb_last_cmd, cmd ); - strcat( cmd, "\r\r\r" ); + strcat( cmd, "\r\r\r\n" ); + + //send_msg( "Tamanho do cmd == %d", strlen( cmd ) ); - pc.printf("\r\next=%d port=%d\r\ncmd=%s\r\n", ext, port, 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\n\r"); + pc.printf("\n\rComando enviado"); if( from_eth ){ 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 ); + 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 ){ @@ -1205,17 +1388,17 @@ pc.printf("\n\r****************************PROMPT HELP******************\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "\n\r****************************PROMPT HELP******************\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); + while( !( udp_server.sendTo( udp_client, debug_buf, strlen( debug_buf ) ) ) ); } } pc.printf("ifconfig - mostra o arquivo de configuracao do sistema\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "ifconfig - mostra o arquivo de configuracao do sistema\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1224,7 +1407,7 @@ pc.printf("dconfig - volta as configuracoes do sistema para o padrao de fabrica\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "dconfig - volta as configuracoes do sistema para o padrao de fabrica\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1233,7 +1416,7 @@ pc.printf("callme [ramal porta] - envia o pedido de ligacao para o callbox com o ramal e porta indicada\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "callme [ramal porta] - envia o pedido de ligacao para o callbox com o ramal e porta indicada\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1242,7 +1425,7 @@ pc.printf("pcb porta comando - envia o <comando> para o cbx <ramal> e <porta> executar\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "promptcb ramal porta comando - envia o <comando> para o cbx <ramal> e <porta> executar\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1263,7 +1446,7 @@ pc.printf("reset - resta o sistema\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "reset - resta o sistema\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1272,7 +1455,7 @@ pc.printf("ipset [ip] - Configura o IP da cabeceira\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "ipset [ip] - Configura o IP da cabeceira\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1281,7 +1464,7 @@ pc.printf("extset [ext] - Configura a ext da cabeceira\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "extset [ext] - Configura a ext da cabeceira\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1290,7 +1473,7 @@ pc.printf("msipport [port] - Configura a porta SIP da cabeceira\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "msipport [port] - Configura a porta SIP da cabeceira\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1299,7 +1482,7 @@ pc.printf("serverip [ip] - Configura o ip do servidor asterisk\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "serverip [ip] - Configura o ip do servidor asterisk\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1308,7 +1491,7 @@ pc.printf("serextset [ext] - Configura a server ext da cabeceira\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "serextset [ext] - Configura a server ext da cabeceira\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1317,7 +1500,7 @@ pc.printf("ssport [port] - Configura a porta SIP do servidor asterisk\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "ssport [port] - Configura a porta SIP do servidor asterisk\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1326,7 +1509,7 @@ pc.printf("maskset [mask] - Configura a mascara da cabeceira\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "maskset [mask] - Configura a mascara da cabeceira\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1335,7 +1518,7 @@ pc.printf("gatewayset [gateway] - Configura o gateway da cabeceira\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "gatewayset [gateway] - Configura o gateway da cabeceira\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1344,7 +1527,7 @@ pc.printf("telemetry_ip - Configura o IP do servidor de telemetria\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "telemetry_ip - Configura o IP do servidor de telemetria\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1353,7 +1536,7 @@ pc.printf("telemetry_port - Configura a port do servidor de telemetria\n\r"); if( from_eth ){ 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 ) ); + 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 ) ); @@ -1363,7 +1546,7 @@ pc.printf("showcb - lista os Cbx registrados na header\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "showcb - lista os Cbx registrados na header\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1383,7 +1566,7 @@ pc.printf("cks - exibe estatisticas de check sum\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "cks - exibe estatisticas de check sum\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1392,7 +1575,7 @@ pc.printf("reset_cks - reseta estatisticas de check sum\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "reset_cks - reseta estatisticas de check sum\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1402,7 +1585,7 @@ pc.printf(". - executa o comando anterior novamente\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, ". - executa o comando anterior novamente\n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1411,7 +1594,7 @@ pc.printf("debug [on|off|show] - seleciona debugs gerais | lista de debugs \n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "debug [on|off|show] - seleciona debugs gerais | lista de debugs \n\r" ); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1420,7 +1603,7 @@ 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"); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1430,7 +1613,7 @@ pc.printf("silence <start_ext end_ext> - envia comando de flood off para os ramais no intervalo end_ext - start_ext\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "silence <start_ext end_ext> - envia comando de flood off para os ramais no intervalo end_ext - start_ext\n\r"); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1440,7 +1623,7 @@ 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 ) ); + 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 ) ); @@ -1450,7 +1633,7 @@ pc.printf("-- ext - Header flood off, ext flood off\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 ) ); + 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 ) ); @@ -1460,7 +1643,7 @@ pc.printf("rx - Exibe ultimo pacote recebido dos CBx\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "rx - Exibe ultimo pacote recebido dos CBx\n\r"); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1469,7 +1652,7 @@ pc.printf("tx - Exibe ultimo pacote enviado para os CBx\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "tx - Exibe ultimo pacote enviado para os CBx\n\r"); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1478,7 +1661,7 @@ pc.printf("ls | status - Exibe uma lista ordenada por ext do CBx registrados na Header\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "ls | status - Exibe uma lista ordenada por ext do CBx registrados na Header\n\r"); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1487,7 +1670,7 @@ pc.printf("types - Lista os types usados no protocolo de comunicacao Header -- CBx\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "types - Lista os types usados no protocolo de comunicacao Header -- CBx\n\r"); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1496,7 +1679,7 @@ pc.printf("protocol - Exibe formato do pacote seguindo o protocolo de comunicacao Header -- CBx\n\r"); if( from_eth ){ snprintf( debug_buf,__PROMPT_ETH_BUFFER_SIZE__, "protocol - Exibe formato do pacote seguindo o protocolo de comunicacao Header -- CBx\n\r"); - if( tcp_session ) tcp_client.send_all( debug_buf, strlen( debug_buf ) ); + 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 ) ); @@ -1646,7 +1829,8 @@ } void set_gateway( char * new_gateway ){ - fgate = fopen("/qspi/mygateway.txt", "w"); + //fgate = fopen("/qspi/mygateway.txt", "w"); + fgate = fopen("/qspi/mygate.txt", "w"); fprintf(fgate,"%s\n\r", new_gateway ); fclose( fgate ); }