Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Revision:
113:db67ae00550e
Parent:
109:a5b8264ffbbc
Child:
114:472502b31a12
diff -r 6ae726539ab9 -r db67ae00550e fw_handler.cpp
--- a/fw_handler.cpp	Mon Apr 13 12:16:21 2015 +0000
+++ b/fw_handler.cpp	Thu Apr 16 12:57:13 2015 +0000
@@ -2,6 +2,7 @@
 
 UDPSocket fw_sock;                                                                                                                      
 Endpoint fw_server;
+uint16_t miss_fw_send_pkg = 0;
 
 void init_fw_handler( void ){
     char buff_ip[ 16 ] = "";
@@ -9,13 +10,10 @@
     int fw_port = 0;
 
     FILE *fp = fopen( "/qspi/fw_ip.txt", "r");
-    //debug_msg("");
     if( fp == NULL ){
-        if( debug_file ) debug_msg("Failed to open /qspi/fw_ip.txt" );
+        if( debug_file | debug_reconnect ) send_msg("Failed to open /qspi/fw_ip.txt" );
         strncpy( buff_ip, __FW_SERVER_IP__, 20 );
-        //debug_msg("");
     }else{
-        //debug_msg("");
         int read = fread( buff_ip, 1, 512, fp );
         if( read > 0 ){
             for( int i = 0; i < read; i++ ) 
@@ -23,54 +21,55 @@
                     buff_ip[ i ] = '\0';
                     break;
                 }
-            if( debug_file ) debug_msg("fw server ip %s", buff_ip );
-            //debug_msg("");
+            if( debug_file | debug_reconnect ) send_msg("fw server ip %s", buff_ip );
         }else{
-            if( debug_file ) debug_msg("Failed to open /qspi/fw_ip.txt" );
+            if( debug_file | debug_reconnect ) send_msg("Failed to open /qspi/fw_ip.txt" );
             strncpy( buff_ip, __FW_SERVER_IP__, 20 );
-            //debug_msg("");
         }
     }
     if( fp != NULL ) fclose( fp );
-    //debug_msg("");    
     fp = fopen( "/qspi/fw_port.txt", "r");
     if( fp == NULL ) {
-        if( debug_fw ) debug_msg("Failed to open /qspi/fw_port.txt" );
+        if( debug_fw | debug_reconnect ) send_msg("Failed to open /qspi/fw_port.txt" );
         fw_port = __FW_SERVER_PORT__;
     } else {
-        //debug_msg(""); 
         if( fread( (void *)buff_port, 1, 32, fp ) > 0 ) {
             fw_port = atoi( buff_port );
-            if( debug_fw ) send_msg( "fw server port %d", fw_port );
+            if( debug_fw | debug_reconnect ) send_msg( "fw server port %d", fw_port );
         } else {
-            if( debug_fw ) send_msg( "Failed to read /qspi/fw_port.txt" );
+            if( debug_fw | debug_reconnect ) send_msg( "Failed to read /qspi/fw_port.txt" );
             fw_port = __FW_SERVER_PORT__;
         }
     }
-    if( fp != NULL ) fclose( fp );
-    //debug_msg("");    
+    if( fp != NULL ) fclose( fp );  
     int addr = fw_server.set_address( buff_ip , fw_port );
-    if( debug_fw ) send_msg(" Valor de retorno set_address -- %d ", addr );
+    if( debug_fw | debug_reconnect ) send_msg("Valor de retorno set_address -- %d ", addr );
     fw_sock.set_blocking( false, 0 );
-    //debug_msg(""); 
     int bind = fw_sock.bind( __FW_HEADER_PORT__ );
-    if( debug_fw ) send_msg(" Valor de retorno bind -- %d ", bind );
-    //debug_msg(""); 
+    if( debug_fw | debug_reconnect ) send_msg("Valor de retorno bind -- %d ", bind );
 }
 
 void re_start_fw( void ){
     int close = fw_sock.close();
-    if( debug_fw ) send_msg(" Valor de retorno close-- %d ", close );
+    if( debug_fw | debug_reconnect ) send_msg("Valor de retorno close -- %d ", close );
     
     init_fw_handler();
 }
 
 void fw_cbx_pkg( int ext, int port, char * data ){
     static uint8_t fw_cbx_pkg_id = 0x00;
-    data[ __CB_BUFFER_SIZE__ - 1 ] = fw_cbx_pkg_id++;
+    data[ CB_BUFFER_SIZE - 1 ] = fw_cbx_pkg_id++;
      
-    int8_t sent = 0;
-    do{
-        sent = fw_sock.sendTo( fw_server, data, __CB_BUFFER_SIZE__ );
-    }while( sent == 0 );
+    int send = fw_sock.sendTo( fw_server, data, CB_BUFFER_SIZE );
+    
+    if( send != CB_BUFFER_SIZE )
+    {
+        if( debug_reconnect )
+        {
+            send_msg("Reconnect FW - %d", send );
+        }
+        
+        miss_fw_send_pkg++;
+        re_start_fw();
+    }
 }
\ No newline at end of file