![](/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: main_app_functions.cpp
- Revision:
- 124:c1b6c893e1c3
- Parent:
- 123:1d395b5a4cad
- Child:
- 125:8ff4dc96ad58
--- a/main_app_functions.cpp Mon May 11 19:21:39 2015 +0000 +++ b/main_app_functions.cpp Wed May 13 14:25:57 2015 +0000 @@ -140,6 +140,8 @@ lpc_low_level_input_counter = 0; + if ( debug_app_init ) send_msg ( "init_hello () :: %s", ( init_hello () == 0 ) ? "Ok" : "Failure" ); + send_msg ( "" ); return ( 0 ); @@ -572,23 +574,24 @@ } /* Recepcao de pacotes UDP para atualizacao de callboxes */ - FD_SET( udp_bl_client.get_fd(), &fdSet); + FD_SET( udp_bl_client.get_fd (), &fdSet); /* Recepcao de pacotes UDP para "tickagem" do watchdog */ - FD_SET( udp_wdt_client.get_fd(), &fdSet); + FD_SET( udp_wdt_client.get_fd (), &fdSet); // adiciona o socket de comandos prompt-UDP-ETH - FD_SET( udp_client.get_fd(), &fdSet ); + FD_SET( udp_client.get_fd (), &fdSet ); // adiciona o socket de pedido de clock para o servidor - FD_SET( clock_sock.get_fd(), &fdSet ); + FD_SET( clock_sock.get_fd (), &fdSet ); struct timeval t; t.tv_sec = 0; t.tv_usec = 0; - int ret = lwip_select( FD_SETSIZE, &fdSet, NULL, NULL, &t ); + int ret = lwip_select ( FD_SETSIZE, &fdSet, NULL, NULL, &t ); - if ((udp_bl_timer.read() > 30) and (bl_start_flag)) { + if ( ( udp_bl_timer.read() > 30) and (bl_start_flag) ) + { udp_bl_timer.stop(); udp_bl_timer.reset(); bl_start_flag = 0; @@ -760,7 +763,8 @@ } // verifica o socket do watchdog - if( FD_ISSET ( udp_wdt_client.get_fd(), &fdSet ) ) { + if ( FD_ISSET ( udp_wdt_client.get_fd(), &fdSet ) ) + { const uint16_t WAKE_MSG_SIZE = 768; static char wake_msg [ WAKE_MSG_SIZE ]; @@ -1898,24 +1902,34 @@ int process_received_pkg_from_cbx ( void ) { pkg_wdt = RX_CB_IDLE; - xmemcpy( cb_rx_buffer, buffer_from_cb_ptr, CB_BUFFER_SIZE ); - status = WAITING; - missed_pkg--; - xmemcpy( buffer, cb_rx_buffer, CB_BUFFER_SIZE ); - - if( rx ) { - char str[ 1024 ]; - strcpy( str, "RX :: \n\r " ); - for( register uint16_t i = 0; i < CB_BUFFER_SIZE; i++ ) { - char tmp[ 16 ]; - snprintf ( tmp, sizeof ( tmp ), "%x", cb_rx_buffer[ i ] ); - strcat( str, tmp ); - if( ( i != 0 ) && !( ( i + 1 ) % 50 ) ) strcat( str, "\n\r " ); - - else strcat( str, " " ); - } - send_msg ( "%s", str ); - rx = false; + + if ( buffer_from_cb_ptr [ 6 ] == AUDIO ) + { + xmemcpy( buffer, buffer_from_cb_ptr, CB_BUFFER_SIZE ); + status = WAITING; + missed_pkg--; + } + else + { + xmemcpy( cb_rx_buffer, buffer_from_cb_ptr, CB_BUFFER_SIZE ); + status = WAITING; + missed_pkg--; + xmemcpy( buffer, cb_rx_buffer, CB_BUFFER_SIZE ); + + if( debug_show_rx_cpld) + { + char str[ 1024 ]; + strcpy( str, "RX :: \n\r " ); + for( register uint16_t i = 0; i < CB_BUFFER_SIZE; i++ ) { + char tmp[ 16 ]; + snprintf ( tmp, sizeof ( tmp ), "%x", cb_rx_buffer [ i ] ); + strcat( str, tmp ); + if( ( i != 0 ) && !( ( i + 1 ) % 50 ) ) strcat( str, "\n\r " ); + + else strcat( str, " " ); + } + send_msg( "%s", str ); + } } data = parse_vz_pkg ( &ext, &port, &type, buffer ); @@ -2003,4 +2017,38 @@ Call_Box * cb = ( Call_Box * )v_cb->get_element( i ); if ( cb != NULL ) cb -> update_time (); } +} + +int init_hello ( void ) +{ + hello_sync.start (); + hello_times = 0; + return ( 0 ); +} + +void send_hello_to_cbx ( void ) +{ + if ( hello_times >= 3 ){ + hello_sync.stop (); + hello_sync.reset (); + dont_say_hello_again = true; + } + + if ( ( !dont_say_hello_again ) && ( hello_sync.read () > 3 ) && ( hello_times < 3 ) ) + { + hello_times++; + + char cmd_msg [ CB_BUFFER_SIZE ] = "pend\r"; + + if ( debug_hello ) debug_msg("Enviando pend_all nro [ %i ]", hello_times ); + + send2callboxes( build_cb_package( BROADCAST_EXT, BROADCAST_EXT, PROMPT, cmd_msg, ( 0x11 + hello_times ), CB_BUFFER_SIZE - VZ_HEADER_OFFSET, write_buffer ) ); + + hello_sync.reset (); + } +} + +void show_hello_status_function ( void ) +{ + send_msg ("hello_sync.read :: %d -- hello_times :: %u", ( int ) hello_sync.read (), hello_times ); } \ No newline at end of file