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 67:cdedc64d9921, committed 2014-10-30
- Comitter:
- klauss
- Date:
- Thu Oct 30 19:26:41 2014 +0000
- Parent:
- 66:3f1d22e69e7b
- Child:
- 68:b54993674190
- Commit message:
- implementacao do protocolo de comunicacao eth->header->cbx_bootloader
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bootloader_cbx_handler.cpp Thu Oct 30 19:26:41 2014 +0000
@@ -0,0 +1,95 @@
+#include "bootloader_cbx_handler.h"
+
+Timer bl_timer;
+bool listen_udp = false;
+char last_client_ip[ 16 ];
+int last_client_port;
+UDPSocket bl_cbx_server;
+Endpoint bl_cbx_client;
+
+int init_bl_handler( void ){
+ bl_timer.stop();
+ bl_timer.reset();
+ bl_timer.start();
+
+ int bind_ret = bl_cbx_server.bind( UDP_BOOTLOADER_PORT );
+
+ bl_cbx_server.set_blocking( false, 2 );
+
+ return( bind_ret );
+}
+
+char * listen_bl_socket( char * buffer, int *length ){
+ *length = bl_cbx_server.receiveFrom( bl_cbx_client, buffer, __CB_BUFFER_SIZE__ );
+
+ if( *length == -1 ){
+ int ret = bl_cbx_server.bind( UDP_BOOTLOADER_PORT );
+
+ if( ret == -1 ){
+ bl_cbx_server.close();
+ bl_cbx_server.bind( UDP_BOOTLOADER_PORT );
+ //FIXME colocar alguma variavel de status pra nem mandar msgs eth caso nao tenha conectado
+ }
+ }else if( *length > 0){
+ buffer[ *length ] = '\0';
+ buffer[ strlen( buffer ) - 1 ] = '\0';
+ bl_timer.reset();
+ return( buffer );
+ }
+ return( NULL );
+}
+
+int bl_handler( void ){
+ int length = 0;
+ char bl_msg[ 320 ];
+ char * bl_data;
+ int bl_ext;
+ int bl_port;
+ static int id_msg = 0x11;
+
+ if( listen_udp ){
+ listen_bl_socket( bl_msg, &length );
+ if( bl_timer.read() > 60 ){
+ listen_udp = false;
+ bl_timer.reset();
+ }
+ }else if( bl_timer.read() > 7 && !listen_udp ){
+ listen_bl_socket( bl_msg, &length );
+ if( length > 0 ){
+ listen_udp = true;
+ strcpy( last_client_ip, bl_cbx_client.get_address() );
+ last_client_port = bl_cbx_client.get_port();
+ }else bl_timer.reset();
+ }
+
+ if( length > 0 ){
+ uint8_t bl_msg_to_cbx[ __CB_BUFFER_SIZE__ ];
+ send_msg("Bootloader order received");
+ bl_data = strtok( bl_msg, " " );
+ bl_ext = atoi( bl_data );
+ bl_data += strlen( bl_data) + 1;
+
+ bl_port = convert_ext_to_port( bl_ext );
+
+ send_msg("Received msg from :: %s:%d to CBx %i", last_client_ip, last_client_port, bl_ext );
+ send_msg("Message received == %s--", bl_data );
+ __send_to_cb__( __build_cb_package__( bl_ext, bl_port, __BOOTLOADER_CBX__, bl_data, id_msg++, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, bl_msg_to_cbx ) );
+
+ //FIXME talvez nao seja preciso do strcat
+ strcat( bl_data, "\n\r" );
+ int sent = bl_cbx_server.sendTo( bl_cbx_client, bl_data, strlen( bl_data ) );
+
+ if( dbl ) send_msg("%i bytes de resposta", sent);
+
+ return( sent );
+ }
+ return( 0 );
+}
+
+int bl_cbx_reply_to_eth( int ext, char * eth_data ){
+ int sent = bl_cbx_server.sendTo( bl_cbx_client, eth_data, strlen( eth_data ) );
+
+ if( dbl ) send_msg( "%i bytes de resposta", sent );
+
+ return( sent );
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bootloader_cbx_handler.h Thu Oct 30 19:26:41 2014 +0000
@@ -0,0 +1,184 @@
+#ifndef __BOOTLOADER_CBX_HANDLER_H__
+#define __BOOTLOADER_CBX_HANDLER_H__
+
+#include "prompt.h"
+#include "debug.h"
+#include "vz_protocol.h"
+
+#define udp_idle 0x00
+#define udp_waiting_start_pkg 0x01
+#define udp_listen 0x02
+
+extern bool listen_udp;
+extern Timer bl_timer;
+extern UDPSocket bl_cbx_server;
+extern Endpoint bl_cbx_client;
+
+extern char last_client_ip[ 16 ];
+extern int last_client_port;
+
+int init_bl_handler( void );
+char * listen_bl_socket( char * buffer, int *length );
+int bl_handler( void );
+int bl_cbx_reply_to_eth( int ext, char * data );
+
+/*
+int is_start_pkg( uint8_t * data ){
+ //seq_num must to be 0s
+ if( !data ) return -1;
+
+ for( register int i = __VZ_HEADER_OFFSET__; i < __PROMPT_ETH_BUFFER_SIZE__; i++ ) if( data[ i ] ) return( 0 );
+
+ return( 1 );
+}
+
+int is_stop_pkg( uint8_t * data ){
+ //seq_num must to be 0s
+ if( !data ) return -1;
+
+ for( register int i = __VZ_HEADER_OFFSET__; i < __PROMPT_ETH_BUFFER_SIZE__; i++ ) if( data[ i ] ) return( 0 );
+
+ return( 1 );
+}
+
+int is_time_to_stop( uint8_t * data ){
+ static int count = 0;
+ if( !data ) return( 0 );
+
+ if( is_stop_pkg( data ) == 1 ) count++;
+
+ else count = 0;
+
+ if( count == 10 ) return( 1 );
+
+ else return( 0 );
+}
+
+*/
+
+
+/*
+char * listen_bl_socket( char * buffer, int *length ){
+ static UDPSocket server;
+ server.set_blocking( false, 2 );
+ server.bind( UDP_BOOTLOADER_PORT );
+ Endpoint client;
+ //bool valid_reboot = false;
+ uint8_t * data = NULL;
+ static int bl_ext;
+ static int bl_port;
+ //static uint8_t type;
+ static Timer t;
+ //static uint8_t status = udp_idle;
+ //static uint8_t seq_num = 0;
+ //OBS sizeof( buffer ) == 4 ????
+ //length = server.receiveFrom( client, buffer, sizeof( buffer ) );
+ *length = server.receiveFrom( client, buffer, __PROMPT_ETH_BUFFER_SIZE__ );
+
+ if( *length == -1 ){
+ int ret = server.bind( UDP_BOOTLOADER_PORT );
+
+ if( ret == -1 ){
+ server.close();
+ server.bind( UDP_BOOTLOADER_PORT );
+ }
+ }
+
+ if( *length > 0){
+ buffer[ *length ] = '\0';
+ buffer[ strlen( buffer ) - 1 ] = '\0';
+ t.start();
+ bl_timer.reset();
+
+ return( NULL );
+ }
+
+ //data = __parse_vz_pkg__( &bl_ext, &bl_port, __BOOT_LOADER__, (uint8_t *)buffer );
+
+ if( !data ){
+ debug_msg("UDP pks parse failed");
+ server.sendTo( client, buffer, sizeof( buffer ) );
+ return( NULL );
+ }
+ */
+
+ /*
+ if( status == udp_idle ){
+ data[ 0 ] |= BIT7;
+ strcpy( (char *)&data[ 1 ], "Received listen request" );
+ server.sendTo( client, buffer, sizeof( buffer ) );
+ status = udp_waiting_start_pkg;
+ }
+ */
+
+ /*
+ if( status == udp_waiting_start_pkg ){
+ static int count = 0;
+ if( is_start_pkg( data ) == 1 )
+ if( count++ == __START_PKG_COUNT__ ) status = udp_listen;
+
+ else{
+ count = 0;
+ status = udp_idle;
+ }
+ }
+ */
+ /*
+ if( status == udp_listen ){
+ debug_msg( "Received start pkgs" ); // mandar msg pro server
+ if( t.read() < 60 ){
+ server.set_blocking( true, 10 );
+ t.reset();
+ do{
+ wdt.kick();
+ *length = server.receiveFrom( client, buffer, sizeof( buffer ) );
+ //data = __parse_vz_pkg__( &bl_ext, &_blport, &type, (uint8_t *)buffer );
+ if( data ){
+ if( !( is_start_pkg( data ) ) ) break;
+ }else{
+ debug_msg("UDP pks parse failed");
+ // reenvia pkg dizendo que podemos comecar com a transacao de dados
+ }
+ }while( t.read() < 60 );
+
+ if( t.read() < 60 ){
+ //tratar o primeiro pkg depois dos zeros aqui
+ //a ideia é ir recebendo e colocando no arquivo "se for pra header" ou mandar
+ //pro cb depois,
+ if( !( ext || port ) ){ // pkg pra header
+ debug_msg("criando arquivo");
+ }else{
+ debug_msg("Mandando pkg pro cb");
+ }
+ //FIXME mudar essa condicao de parada
+ while( !( is_time_to_stop( data ) == 1 ) ){
+ wdt.kick();
+ *length = server.receiveFrom( client, buffer, sizeof( buffer ) );
+ if( ( data[ 0 ] - seq_num ) != 1 ){
+ //perdi algum pacote
+ //solicitar re-envio mandando o ultimo seq_num recebido talvez ...
+ continue;
+ }else{
+ debug_msg("+(%d,%d)-%s+", ext, port, data );
+ }
+ }
+ //pensar em como validar os pacotes recebidos, cks ... e o que mais ?
+ //se validado os pkgs, dar reset com os dados no arquivo bla, caso contrario, ignorar ...
+ //if( valid_reboot ) NVIC_SystemReset();
+
+ //else{
+ // server.set_blocking( false, 1 );
+ // t.stop();
+ // t.reset();
+ // debug_msg("Nao Resetando ... ");
+ //}
+
+ }
+ }
+ }else return( buffer );
+ *length = 0;
+ return( NULL );
+ //return( NULL );
+}
+*/
+#endif
\ No newline at end of file
--- a/call_box.cpp Tue Oct 28 18:35:48 2014 +0000
+++ b/call_box.cpp Thu Oct 30 19:26:41 2014 +0000
@@ -40,8 +40,7 @@
//static int count = 1;
//if( timeout != __MAX_TIMEOUT__ ) timeout = __STEP__ * count++;
t.reset();
- //return( remaining_attempts-- );
- return( 1 );
+ return( remaining_attempts-- );
}
void Call_Box::registry( void ){
--- a/eth.h Tue Oct 28 18:35:48 2014 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-#ifndef __ETH_H__
-#define __ETH_H__
-
-#include "prompt.h"
-#include "debug.h"
-#include "vz_protocol.h"
-
-#define udp_idle 0x00
-#define udp_waiting_start_pkg 0x01
-#define udp_listen 0x02
-
-int is_start_pkg( uint8_t * data ){
- //seq_num must to be 0s
- if( !data ) return -1;
-
- for( register int i = __VZ_HEADER_OFFSET__; i < __PROMPT_ETH_BUFFER_SIZE__; i++ ) if( data[ i ] ) return( 0 );
-
- return( 1 );
-}
-
-int is_stop_pkg( uint8_t * data ){
- //seq_num must to be 0s
- if( !data ) return -1;
-
- for( register int i = __VZ_HEADER_OFFSET__; i < __PROMPT_ETH_BUFFER_SIZE__; i++ ) if( data[ i ] ) return( 0 );
-
- return( 1 );
-}
-
-int is_time_to_stop( uint8_t * data ){
- static int count = 0;
- if( !data ) return( 0 );
-
- if( is_stop_pkg( data ) == 1 ) count++;
-
- else count = 0;
-
- if( count == 10 ) return( 1 );
-
- else return( 0 );
-}
-
-char * listen_eth_udp( char * buffer, int *length ){
- /*
- static UDPSocket server;
- server.set_blocking( false, 2 );
- server.bind( UDP_PORT_LISTENER );
- Endpoint client;
- bool valid_reboot = false;
- uint8_t * data = NULL;
- static int ext;
- static int port;
- static uint8_t type;
- static Timer t;
- static uint8_t status = udp_idle;
- static uint8_t seq_num = 0;
- // OBS sizeof( buffer ) == 4 ????
-
- //length = server.receiveFrom( client, buffer, sizeof( buffer ) );
- *length = server.receiveFrom( client, buffer, __PROMPT_ETH_BUFFER_SIZE__ );
-
- if( *length > 0){
- buffer[ *length ] = '\0';
- buffer[ strlen( buffer ) - 1 ] = '\0';
- t.start();
-
- debug_msg("%s", buffer );
- buffer = prompt_process( buffer );
-
- if( buffer ){
- debug_msg("--%s--", buffer );
- int sent = server.sendTo( client, buffer, strlen( buffer ) );
- debug_msg("Sent %d", sent );
- }
-
- return( NULL );
-
- data = __parse_vz_pkg__( &ext, &port, &type, (uint8_t *)buffer );
-
- if( !data ){
- debug_msg("UDP pks parse failed");
- server.sendTo( client, buffer, sizeof( buffer ) );
- return( NULL );
- }
-
- if( status == udp_idle ){
- data[ 0 ] |= BIT7;
- strcpy( (char *)&data[ 1 ], "Received listen request" );
- server.sendTo( client, buffer, sizeof( buffer ) );
- status = udp_waiting_start_pkg;
- }
-
- if( status == udp_waiting_start_pkg ){
- static int count = 0;
- if( is_start_pkg( data ) == 1 )
- if( count++ == __START_PKG_COUNT__ ) status = udp_listen;
-
- else{
- count = 0;
- status = udp_idle;
- }
- }
-
- if( status == udp_listen ){
- debug_msg( "Received start pkgs" ); // mandar msg pro server
- if( t.read() < 60 ){
- server.set_blocking( true, 10 );
- t.reset();
- do{
- wdt.kick();
- *length = server.receiveFrom( client, buffer, sizeof( buffer ) );
- data = __parse_vz_pkg__( &ext, &port, &type, (uint8_t *)buffer );
- if( data ){
- if( !( is_start_pkg( data ) ) ) break;
- }else{
- debug_msg("UDP pks parse failed");
- // reenvia pkg dizendo que podemos comecar com a transacao de dados
- }
- }while( t.read() < 60 );
-
- if( t.read() < 60 ){
- //tratar o primeiro pkg depois dos zeros aqui
- //a ideia é ir recebendo e colocando no arquivo "se for pra header" ou mandar
- //pro cb depois,
- if( !( ext || port ) ){ // pkg pra header
- debug_msg("criando arquivo");
- }else{
- debug_msg("Mandando pkg pro cb");
- }
- //FIXME mudar essa condicao de parada
- while( !( is_time_to_stop( data ) == 1 ) ){
- wdt.kick();
- *length = server.receiveFrom( client, buffer, sizeof( buffer ) );
- if( ( data[ 0 ] - seq_num ) != 1 ){
- //perdi algum pacote
- //solicitar re-envio mandando o ultimo seq_num recebido talvez ...
- continue;
- }else{
- debug_msg("+(%d,%d)-%s+", ext, port, data );
- }
- }
- //pensar em como validar os pacotes recebidos, cks ... e o que mais ?
- //se validado os pkgs, dar reset com os dados no arquivo bla, caso contrario, ignorar ...
- if( valid_reboot ) NVIC_SystemReset();
-
- else{
- server.set_blocking( false, 1 );
- t.stop();
- t.reset();
- debug_msg("Nao Resetando ... ");
- }
- }
- }
- }else return( buffer );
- }else return( NULL );
- return( NULL );
- */
- return( NULL );
-}
-
-#endif
\ No newline at end of file
--- a/main.cpp Tue Oct 28 18:35:48 2014 +0000
+++ b/main.cpp Thu Oct 30 19:26:41 2014 +0000
@@ -7,7 +7,7 @@
#include "debug.h"
#include "utils.h"
#include "flood.h"
-#include "eth.h"
+#include "bootloader_cbx_handler.h"
volatile uint8_t status = 0x00;
@@ -30,7 +30,7 @@
}
Timer t;
t.start();
- Timer udp_timer;
+ //Timer udp_timer;
/* representa ramal do call box */
int ext = 0;
@@ -97,8 +97,12 @@
send_msg("Ready");
uint8_t before = t.read();
static uint8_t count = 0;
+ int bl_ret = init_bl_handler();
+ if( dbl ) send_msg("Valor de retorno do bl_habdler = %d", bl_ret );
+
+ /*------------------------------------------------ main loop -------------------------------------------------------------------------*/
while( true ){
- //FIXME colocar uma condicao aqui
+ //FIXME colocar uma condicao aqui caso necessario pra nao comprometer ligacoes ...
prompt_process( NULL );
wdt.kick();
@@ -139,13 +143,14 @@
cb_bye_counter = 0;
prompt_counter = 0;
flood_counter = 0;
+ bootloader_cbx_counter = 0;
r_stats = false;
stats = true;
}
if( stats ){
char str[ 200 ];
- snprintf( str, 200, "\n\rReceived Pkgs::\n\r Boot :: %u\n\r Registry :: %u\n\r Ivite :: %u\n\r Audio :: %u\n\r Telemetry :: %u\n\r Cb_by :: %u\n\r Prompt :: %u\n\r Flood :: %u\n\r",
- boot_counter, registry_counter, invite_counter, audio_counter, telemetry_counter, cb_bye_counter, prompt_counter, flood_counter );
+ snprintf( str, 200, "\n\rReceived Pkgs::\n\r Boot :: %u\n\r Registry :: %u\n\r Ivite :: %u\n\r Audio :: %u\n\r Telemetry :: %u\n\r Cb_by :: %u\n\r Prompt :: %u\n\r Flood :: %u\n\r Bootloader_cbx :: %u\n\r",
+ boot_counter, registry_counter, invite_counter, audio_counter, telemetry_counter, cb_bye_counter, prompt_counter, flood_counter, bootloader_cbx_counter );
send_msg( str );
stats =false;
}
@@ -489,6 +494,11 @@
build_telemetry_report( ext, port, ( char *)data );
}break;
+ case __BOOTLOADER_CBX__ : {
+ bootloader_cbx_counter++;
+ int ret = bl_cbx_reply_to_eth( ext, ( char * )data );
+ }break;
+
case __PROMPT__ : {
prompt_counter++;
send_msg( "Prompt pkg from ( %i, %i ) ::", ext, port );
@@ -586,24 +596,9 @@
}else{
if (flag == 1) { flag = 0; }
}
+
+ bl_handler();
- /*
- int length;
- if( udp_timer.read() > 1 && !listen_udp ){
- data = (uint8_t *)listen_eth_udp( (char *)buffer, &length );
- if( length ){
- listen_udp = true;
- debug_msg("");
- }else udp_timer.reset();
- }
- if( listen_udp ){
- data = (uint8_t *)listen_eth_udp( (char *)buffer, &length );
- if( udp_timer.read() > 30 ){
- listen_udp = false;
- udp_timer.reset();
- }
- }
- */
type = __DO_NOTHING__;
}
}
\ No newline at end of file
--- a/prompt.cpp Tue Oct 28 18:35:48 2014 +0000
+++ b/prompt.cpp Thu Oct 30 19:26:41 2014 +0000
@@ -23,6 +23,7 @@
uint8_t debug_eth_tx = 0;
uint8_t debug_prompt_eth = 0;
uint8_t debug_file = 0;
+bool dbl = false;
bool from_eth = false;
bool udp_request = false;
bool tcp_session = false;
@@ -47,6 +48,7 @@
uint16_t cb_bye_counter = 0;
uint16_t prompt_counter = 0;
uint16_t flood_counter = 0;
+uint16_t bootloader_cbx_counter = 0;
uint8_t test_debug = 1;
#define PVERSION 5 // Sempre atualizar a versao do prompt
@@ -283,8 +285,10 @@
cat("/qspi/telemetry_port.txt");
strcpy( last_cmd, tmp_cmd );
- debug_buf[ 0 ] = 0;
+ //debug_buf[ 0 ] = 0;
+ //bufptr = 0;
bufptr = 0;
+ for( uint8_t i = 0; i < DEBUGBUFSIZE; i++ ) debug_buf[ i ] = 0;
if( tcp_session ) tcp_client.send_all( "\n\r> " , strlen( "\n\r> " ) );
else if( udp_request ){
@@ -383,8 +387,10 @@
debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
if( tcp_session ){
tcp_client.send_all( debug_buf, strlen( debug_buf ) );
- debug_buf[ 0 ] = 0;
+ //debug_buf[ 0 ] = 0;
+ //bufptr = 0;
bufptr = 0;
+ for( uint8_t i = 0; i < DEBUGBUFSIZE; i++ ) debug_buf[ i ] = 0;
}
}
}
@@ -444,8 +450,10 @@
}else if( udp_request ){
udp_server.sendTo( udp_client, debug_buf, strlen( debug_buf ) );
}
- debug_buf[ 0 ] = 0;
+ //debug_buf[ 0 ] = 0;
+ //bufptr = 0;
bufptr = 0;
+ for( uint8_t i = 0; i < DEBUGBUFSIZE; i++ ) debug_buf[ i ] = 0;
}
}
@@ -493,8 +501,10 @@
}else if( udp_request ){
udp_server.sendTo( udp_client, debug_buf, strlen( debug_buf ) );
}
- debug_buf[ 0 ] = 0;
+ //debug_buf[ 0 ] = 0;
+ //bufptr = 0;
bufptr = 0;
+ for( uint8_t i = 0; i < DEBUGBUFSIZE; i++ ) debug_buf[ i ] = 0;
}
}
}
@@ -853,7 +863,7 @@
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';
+ //debug_buf[ strlen( debug_buf ) - 1 ] = '\0';
}
}
@@ -1127,8 +1137,10 @@
}
debug_buf = ref;
+ //bufptr = 0;
+ //debug_buf[ 0 ] = 0;
bufptr = 0;
- debug_buf[ 0 ] = 0;
+ for( uint8_t i = 0; i < DEBUGBUFSIZE; i++ ) debug_buf[ i ] = 0;
}
else if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "_pcb",4 )) {
@@ -1526,17 +1538,13 @@
miss_match = false;
int ext,port;
char cmd[ 16 ];
- strcpy( cmd, "call init " );
ext = atoi( debug_buf + 7 );
port = convert_ext_to_port( ext );
- if( ext % 2 ){
- ext--;
- strcat( cmd, "B\r\r" );
- }else{
- strcat( cmd, "A\r\r" );
- }
+ strcpy( cmd, ( ext % 2 ) ? "call init B" : "call init A" );
+
+ if( ext % 2 ) ext--;
promptcb_last_ext = ext;
promptcb_last_port = port;
@@ -1547,7 +1555,18 @@
strcpy( promptcb_last_cmd, cmd );
pc.printf("\r\next=%d port=%d\r\ncmd=%s\r\n", ext, port, cmd );
+
+ pc.printf("\n\r--------------------------------------------------------\n\r");
+ for( uint16_t i = 0; i < strlen( cmd ) ; i++ ) pc.printf( "%02x ", cmd[ i ] );
+
__send_to_cb__( __build_cb_package__( ext, port, __PROMPT__, cmd, id_msg++, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
+ pc.printf("\n\r--------------------------------------------------------\n\r");
+ for( uint16_t i = 0; i < 300 ; i++ ){
+ pc.printf( "%02x ", write_buffer[ i ] );
+ if( i != 0 && !( ( i + 1 ) % 30 ) ) pc.printf("\n\r");
+ }
+
+
pc.printf("\n\rComando enviado\n\r");
if( from_eth ){
@@ -1561,7 +1580,7 @@
}
bufptr = 0;
- debug_buf[ 0 ] = 0;
+ for( uint8_t i = 0; i < DEBUGBUFSIZE; i++ ) debug_buf[ i ] = 0;
}
if( miss_match ){
--- a/prompt.h Tue Oct 28 18:35:48 2014 +0000
+++ b/prompt.h Thu Oct 30 19:26:41 2014 +0000
@@ -24,6 +24,7 @@
extern uint8_t debug_eth_tx;
extern uint8_t debug_prompt_eth;
extern uint8_t debug_file;
+extern bool dbl;
extern uint8_t test_debug;
@@ -95,7 +96,10 @@
extern uint16_t telemetry_counter;
extern uint16_t cb_bye_counter;
extern uint16_t prompt_counter;
-extern uint16_t flood_counter;
+extern uint16_t flood_counter;
+extern uint16_t bootloader_cbx_counter;
+
+extern Timer udp_timer;
int convert_ext_to_port( int );
--- a/vz_protocol.cpp Tue Oct 28 18:35:48 2014 +0000
+++ b/vz_protocol.cpp Thu Oct 30 19:26:41 2014 +0000
@@ -156,22 +156,25 @@
//__print_clock__( pkg + 8 );
pkg[ __TIMESLICE_PLACE__ ] = cb_buffer[ __TIMESLICE_PLACE__ ];
fill = __TIMESLICE_PLACE__ + 1;
- }
-
- if( type == __PROMPT__ ){
+ }else if( type == __PROMPT__ ){
//__print_clock__( pkg + 8 );
xmemcpy((pkg+7), (uint8_t*)cb_buffer, 293);
+ //FIXME isso forca qualquer cmd ter < 100 chars
fill = 100;
- }
-
- else if( type == __TELEMETRY__ ){
+ }else if( type == __TELEMETRY__ ){
pkg[ 7 ] = seq_num;
//__print_clock__( pkg + 8 );
pkg[ __TIMESLICE_PLACE__ ] = cb_buffer[ __TIMESLICE_PLACE__ ];
fill = __TIMESLICE_PLACE__ + 1;
+ }else if( type == __BOOTLOADER_CBX__ ){
+ pkg[ 7 ] = seq_num;
+ //__print_clock__( pkg + 8 );
+ fill = __VZ_HEADER_OFFSET__ + __CLOCK_SYNC_SIZE__ + __SEQ_NUM_SIZE__;
+ }else{
+ fill = __VZ_HEADER_OFFSET__;
}
- for( register int i = fill; i < __CB_BUFFER_SIZE__; i++ ) pkg[ i ] = 0x00;
+ for( register uint16_t i = fill; i < __CB_BUFFER_SIZE__; i++ ) pkg[ i ] = 0x00;
uint16_t cc = __checksum__( pkg, 300 );
pkg[ 4 ] =( uint8_t )( ( cc & 0xFF00 ) >> 8) ;
--- a/vz_protocol.h Tue Oct 28 18:35:48 2014 +0000
+++ b/vz_protocol.h Thu Oct 30 19:26:41 2014 +0000
@@ -10,9 +10,12 @@
// 7 + 14 + 1 == ts
#define __START_PKG_COUNT__ 100
+
#define UDP_PORT_LISTENER 11406
#define TCP_PORT_LISTENER 7879
+#define UDP_BOOTLOADER_PORT 9891
+
#define __VZ_HEADER_OFFSET__ 7
#define __CB_BUFFER_SIZE__ 300
#define __PROMPT_ETH_BUFFER_SIZE__ 1024
@@ -26,7 +29,8 @@
#define __UDP_PORT__ 7890 /* numeros arbitrarios ... */
#define __TCP_PORT__ 8709
-#define __TELEMETRY_SERVER_IP__ "192.168.120.163"
+//#define __TELEMETRY_SERVER_IP__ "192.168.120.163"
+#define __TELEMETRY_SERVER_IP__ "192.168.120.144"
#define __TELEMETRY_SERVER_PORT__ 9192
#define __TELEMETRY_HEADER_PORT__ 9321
@@ -40,6 +44,7 @@
#define __INVITE__ 0x04
#define __AUDIO__ 0x08
#define __TELEMETRY__ 0x10
+#define __BOOTLOADER_CBX__ 0x12
#define __CB_BYE__ 0x20
#define __PROMPT__ 0x01
#define __FLOOD__ 0x40
