Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

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