Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
Revision 62:07e5bdc9f8f7, committed 2014-10-28
- Comitter:
- klauss
- Date:
- Tue Oct 28 11:32:06 2014 +0000
- Parent:
- 61:06e77dff6f00
- Child:
- 63:0d95da692bb4
- Commit message:
- rx | ls implementados, validando novamente a funcao status
Changed in this revision
--- a/call_box.cpp Fri Oct 24 16:38:47 2014 +0000
+++ b/call_box.cpp Tue Oct 28 11:32:06 2014 +0000
@@ -40,7 +40,8 @@
//static int count = 1;
//if( timeout != __MAX_TIMEOUT__ ) timeout = __STEP__ * count++;
t.reset();
- return( remaining_attempts-- );
+ //return( remaining_attempts-- );
+ return( 1 );
}
void Call_Box::registry( void ){
--- a/main.cpp Fri Oct 24 16:38:47 2014 +0000
+++ b/main.cpp Tue Oct 28 11:32:06 2014 +0000
@@ -46,6 +46,9 @@
/* ponteiro que aponta para os dados vindo do CPLD */
uint8_t * buffer_from_cb_ptr = ( uint8_t * )RXBuffer;
+ /* Armazena o ultimo pacote recebido dos CBx */
+ uint8_t cb_rx_buffer[ __CB_BUFFER_SIZE__ ];
+
/* referencia para os dados contidos no pacote, sem o header */
uint8_t * data = NULL;
@@ -87,13 +90,60 @@
udp_timer.start();
send_msg("Ready");
uint8_t before = t.read();
+ static uint8_t count = 0;
while( true ){
//FIXME colocar uma condicao aqui
prompt_process( NULL );
wdt.kick();
+
+ if( rx ){
+ char str[ 1024 ];
+ strcpy( str, "RX :: " );
+ for( register uint16_t i = 0; i < __CB_BUFFER_SIZE__; i++ ){
+ char tmp[ 16 ];
+ strcat( str, itoa( cb_rx_buffer[ i ], tmp, 16 ) );
+ if( ( i != 0 ) && !( i % 15 ) ) strcat( str, "\n\r " );
+
+ else strcat( str, " " );
+ }
+ send_msg( "%s", str );
+ rx = false;
+ }
+
+ if( list ){
+ send_msg("Registred %d CBx", v_cb->size() );
+ if( v_cb->size() == 0 ){
+ send_msg("{-/-}");
+ }else if( v_cb->size() == 1 ){
+ Call_Box * cb = ( Call_Box * )v_cb->get_element( 0 );
+ send_msg(" %d ", cb->get_ext() );
+ }else{
+ char str[ 1024 ];
+ int ext_list[ 128 ];
+ Call_Box * cb = NULL;
+ register int i = 0;
+ for( ; i < v_cb->size(); i++ ){
+ cb = ( Call_Box * )v_cb->get_element( i );
+ ext_list[ i ] = cb->get_ext();
+ }
+
+ qsort( ext_list, v_cb->size(), sizeof( int ), ls_comp );
+
+ char aux[ 16 ];
+ strcpy( str, "\r\n " );
+ for( i = 0; i < v_cb->size() - 1; i++ ){
+ sprintf( aux, "%i, ", ext_list[ i ] );
+ strcat( str, aux );
+ if( ( i != 0 ) && !( ( i + 1 ) % 8 ) ) strcat( str, "\r\n " );
+ }
+ sprintf( aux, "%i ", ext_list[ i ] );
+ strcat( str, aux );
+ send_msg( "%s", str );
+ }
+ list = false;
+ }
+
if (pcks_s == 1){
- //pc.printf("\n\r PKG_CSK OK: %d", pkg_cksok);
- //pc.printf("\n\r PKG_CSK ERR: %d\n\r", pkg_ckserr);
send_msg("PKG_CSK OK: %d :: PKG_CSK ERR: %d", pkg_cksok, pkg_ckserr );
pcks_s =0;
}
@@ -122,22 +172,20 @@
send_msg("{-/-}");
}else if( v_cb->size() == 1 ){
Call_Box * cb = ( Call_Box * )v_cb->get_element( 0 );
- send_msg("{ %d }", cb->get_ext() );
+ send_msg(" %i ", cb->get_ext() );
}else{
register uint8_t i;
char aux[ 16 ];
Call_Box * cb = NULL;
- strcpy( str, "{ " );
for( i = 0; i < v_cb->size() - 1; i++ ){
cb = ( Call_Box * )v_cb->get_element( i );
- sprintf( aux, "%5d, ", cb->get_ext() );
+ sprintf( aux, "%i, ", cb->get_ext() );
strcat( str, aux );
- if( ( i != 0 ) && !( i % 10 ) ) strcat( str, "\n\r " );
+ if( ( i != 0 ) && !( ( i + 1 ) % 8 ) ) strcat( str, "\n\r " );
}
cb = ( Call_Box * )v_cb->get_element( i );
- sprintf( aux, "%5d ", cb->get_ext() );
+ sprintf( aux, "%i ", cb->get_ext() );
strcat( str, aux );
- strcat( str, " }" );
send_msg( "%s", str );
}
}
@@ -145,6 +193,7 @@
if( pflood == 1 ) flood();
if( status != __WAITING__ ){
+ xmemcpy( cb_rx_buffer, buffer_from_cb_ptr, __CB_BUFFER_SIZE__ );
__read_cb_buffer__( buffer, buffer_from_cb_ptr );
status = __WAITING__;
@@ -182,9 +231,8 @@
}
if( t.read() > 5 ){
- static uint8_t count = 0;
- static int test_ext = 65531;
- static int test_port = 65531;
+ static int test_ext = 5010;
+ static int test_port = 5010;
//send_msg("from_eth = %s - tcp_session = %s", ( from_eth ) ? "true" : "false", ( tcp_session ) ? "true" : "false" );
if( debug_alive ){
send_msg("Registred %d CBx", v_cb->size() );
@@ -220,12 +268,12 @@
}
}
}
- //if( count == 4 ){
- //debug_msg("Colocar simulacoes de cbx aqui");
- //main_test = true;
- //}
if( main_test ){
+ data = buffer;
+ ext = test_ext++ + ( ( test_ext % 2 ) ? 100 : 50 );
+ port = test_port++;
+ type = __REGISTRY__;
}
/*
@@ -403,17 +451,18 @@
tcp_client.send_all( tmp, strlen( tmp ) );
}
*/
- for( register int i = 0; i < __CB_BUFFER_SIZE__; i++ ){
+ for( register int i = 0; i < 32; i++ ){
pc.printf("%3i ", data[ i ] );
+ if( i == 15 ) pc.printf( "\r\n" );
}
- //FIXMEj isso nao vai funcionar em udp, mudar pra send_msg
- pc.printf("\n\r");
+ pc.printf("\n\r> ");
if( tcp_session ){
char aux[ __CB_BUFFER_SIZE__ + 3 ];
strncpy( aux, (char * )data, __CB_BUFFER_SIZE__ );
strcat( aux, "\n\r\0" );
tcp_client.send_all( ( char *)data, strlen( (char * )data ) );
+ tcp_client.send_all( "\r\n> ", strlen( "\r\n> " ) );
}
}break;
case __AUDIO__ : {
--- 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;
--- a/prompt.h Fri Oct 24 16:38:47 2014 +0000 +++ b/prompt.h Tue Oct 28 11:32:06 2014 +0000 @@ -81,6 +81,8 @@ extern bool reset_cks; extern bool debug_telemetry; extern bool main_test; +extern bool list; +extern bool rx; int convert_ext_to_port( int );
--- a/utils.cpp Fri Oct 24 16:38:47 2014 +0000
+++ b/utils.cpp Tue Oct 28 11:32:06 2014 +0000
@@ -271,4 +271,6 @@
void __send_to_cb__( uint8_t * buffer ){
xmemcpy( TXBuffer, buffer, DATA_SIZE );
send2callboxes();
-}
\ No newline at end of file
+}
+
+int ls_comp( const void * a, const void * b ){ return( *( int * )a - *( int * )b ); }
\ No newline at end of file
--- a/utils.h Fri Oct 24 16:38:47 2014 +0000 +++ b/utils.h Tue Oct 28 11:32:06 2014 +0000 @@ -44,5 +44,6 @@ void call_manager( Vector * v_call, Vector * v_cb, uint8_t * data, uint8_t * write_buffer, Timeslice * ts ); void build_telemetry_report( int ext, int port, char * data ); void __send_to_cb__( uint8_t * buffer ); +int ls_comp( const void * a, const void * b ); #endif \ No newline at end of file
