voltando a versao de n aberturas e fechamentos de sockets

Dependencies:   EthernetInterface NTPClient mbed-rtos_old mbed

Fork of header_main_public by VZTECH

Revision:
7:019b08223b87
Parent:
6:a10de9926fbe
Child:
8:e3bfe62a477e
--- a/main.cpp	Fri Sep 12 16:46:37 2014 +0000
+++ b/main.cpp	Sat Sep 13 19:21:48 2014 +0000
@@ -7,6 +7,8 @@
 #include "debug.h"
 #include "utils.h"
 
+//#define debug_telos
+
 /*
 #define set_status(a,b) _set_status(a,b)
 #define _set_status(a,b) { \
@@ -104,18 +106,31 @@
             data = __parse_cb_buffer__( &ext, &port, &type, buffer );
             
             if( data != NULL ){                
-                if( type == __CB_BYE__ ){
-                    debug_msg("--> %s <--", buffer);
+                //if( type == __CB_BYE__ ){
+                //    debug_msg("--> %s <--", buffer);
+                //}
+                //debug_msg("Procurando pelo CBx :: %d -- Type :: %d", ext, type );
+                if( type != __AUDIO__ ){
+#ifdef debug_telos
+                        debug_msg("");
+                        debug_32( data );
+                        debug_msg("");
+                        __send_to_cb__( buffer );
+                        debug_msg("");
+                        type = __DO_NOTHING__;
+                        debug_msg("");
+                        continue;
+                        debug_msg("");
                 }
-                debug_msg("Procurando pelo CBx :: %d -- Type :: %d", ext, type );
-                if( type != __AUDIO__ ){
+#endif
+#ifndef debug_telos
                     Call_Box * cb = __find_CB__( v_cb, ext );
                     if( cb != NULL ){
                         cb->reset_elapsed_time();
                         if( ( data[ 0 ] ^ cb->get_msg_id() ) == BIT7 ){
                             // some pkg reply
                             if( ( data[ 0 ] | BIT7 ) == cb->get_msg_id() ){                        
-                                    if( type == __BOOT__ ) type = __REGISTRY__;
+                                if( type == __BOOT__ ) type = __REGISTRY__;
                                 __send_to_cb__( __build_cb_package__( ext, port, type, 
                                 ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
                                 type = __DO_NOTHING__;
@@ -124,10 +139,13 @@
                                 // ack from CBx
                                 debug_msg("-- ACK do meu pkg --");
                                 type = __DO_NOTHING__;
+                                cb->reset_elapsed_time();
+                                if( type == __REGISTRY__ ) cb->set_msg_id( cb->get_msg_id() + 10 );
                             }
                         }
                     }
                 }
+#endif                    
             }else type = __DO_NOTHING__;
         }
 //----------------------
@@ -168,7 +186,8 @@
                         }
                     }
                 }
-            }break;          
+            }break;
+            
             case __INVITE__ : {
                 debug_msg("ok -- recebido o invite pelo menos");
                 Call_Box * cb = __find_CB__( v_cb, ext );
@@ -264,7 +283,6 @@
             case __BOOT__ : {
                 __send_to_cb__( __build_cb_package__( ext, port, __REGISTRY__, 
                     ( char * )data, data[ 0 ], __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
-                    debug_msg( "--%s-- reply do boot", write_buffer );
                 }break;
             case __TELEMETRY__ : {
                     debug_msg("Leitura da bateria :: ( Id : %x, MSB : %x, LSB : %x )", data[ 0 ], data[ 1 ], data[ 2 ] );
@@ -288,6 +306,7 @@
                 }
             }break;
         }// fim switch
+#ifndef debug_telos        
         for( register int i = 0; i < v_call->size(); i++ ){
             VZ_call * call = ( VZ_call * )v_call->get_element( i );
             int length = 0;
@@ -307,6 +326,7 @@
                 __send_to_cb__( pkg2cb );
             }
         } 
+#endif        
         //nessa funcao eu deveria me registar a cada 2 min por exemplo
         registry_aging( v_cb, data, write_buffer );