Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Revision:
91:c2a86b1f8aaa
Parent:
89:0fe315117b00
Child:
92:92df17f538a8
--- a/main.cpp	Wed Jan 07 21:50:46 2015 +0000
+++ b/main.cpp	Thu Jan 08 23:44:08 2015 +0000
@@ -1,192 +1,186 @@
-#include "telemetry.h"                                                                                                                  
-#include "eth.h"                                                                                                                        
-#include "bits.h"                                                                                                                       
+#include "telemetry.h"
+#include "eth.h"
+#include "bits.h"
 #include "UART3Interrupt.h" // for RXBuffer[ __CB_BUFFER_SIZE__ ];                                                                                 
-#include "utils.h"                                                                                                                      
-#include "parallelcpld.h"                                                                                                               
-#include "debug.h"                                                                                                                      
-#include "flood.h"                                                                                                                      
-#include "bootloader_cbx.h"                                                                                                             
-#include "call_manager.h"                                                                                                               
-#include "call_box_manager.h"                                                                                                           
-#include "sip_manager.h"                                                                                                                
+#include "utils.h"
+#include "parallelcpld.h"
+#include "debug.h"
+#include "flood.h"
+#include "bootloader_cbx.h"
+#include "call_manager.h"
+#include "call_box_manager.h"
+#include "sip_manager.h"
 #include "shared_variables.h"
 #include "prompt.h"
 #include "configs.h"
 #include "sdram.h"
 
-#define vz_LIM 8
-
 volatile u16_t lpc_low_level_input_counter = 0;
 
-int main(){
+int main()
+{
     init_wdt();
-    
+
     config_lpc();
-    
+
     start_cpld();
-    
-    if( sdram_init() == 1 ){
+
+    if( sdram_init() == 1 ) {
         send_msg("******* Failed to initialize SDRAM *******");
         return 1;
     } else {
         send_msg("******* Success to initialize SDRAM *******");
     }
-    
+
     init_fsystem();
-    
+
     {
         char s[ 32 ];
         mbed_mac_address( s );
         send_msg( "::Mac::%02x:%02x:%02x:%02x:%02x:%02x:: ", s[0],s[1],s[2],s[3],s[4],s[5] );
     }
-    
+
     short int eth_status = __init_eth__();
-    if( eth_status ){
+    if( eth_status ) {
         send_msg("******* Cannot connect to eth *******");
-    }else{
+    } else {
         send_msg("******* Connection eth - ok *******");
         init_prompt_eth();
         init_external_wdt()
     }
-    
+
     Timer sync_timer, led_sync_timer;
     sync_timer.start(), led_sync_timer.start();
-          
+
     /* representa ramal do call box */
     int ext = 0;
-    
+
     /* representa porta do call box */
     int port = 0;
-    
+
     /* buffer para onde se copia os dados vindos do cb para tratameno interno */
-    uint8_t buffer[ __CB_BUFFER_SIZE__ ]; 
-    
+    uint8_t buffer[ __CB_BUFFER_SIZE__ ];
+
     /* buffer de escrita do pacote de saida que sera enviado pro cb / servidor */
     uint8_t write_buffer[ __CB_BUFFER_SIZE__ ];
-    
+
     /* ponteiro que aponta para os dados vindo do CPLD */
     uint8_t * buffer_from_cb_ptr = ( uint8_t * )RXBuffer;
-    
+
     /* Armazena o ultimo pacote recebido dos CBx */
     uint8_t cb_rx_buffer[ __CB_BUFFER_SIZE__ ];
-    
+
     /* referencia para os dados contidos no pacote, sem o header */
     uint8_t * data = NULL;
-    
+
     /* gerencia o tipo do pacote para providenciar tratamento adequado */
     volatile uint8_t type = __DO_NOTHING__;
-    
+
     /* representa a lista dos Call Boxes atualmente recfonhecidos pela cabeceira */
     Vector * v_cb = new Vector();
-    
+
     /* representa a lista de ligacoes ativas na cabeceira */
     Vector * v_call = new Vector();
-    
+
     /* gerencia a distribuicao de timeslice para os call boxes */
     Timeslice * ts = new Timeslice();
-    if( ts == NULL )
-    { 
+    if( ts == NULL ) {
         memory_is_over = true;
         if( debug_memory ) debug_msg("TS allocation fail");
     }
-    
+
     /* instancia o vetor de call boxes // calls  */
-    if( v_cb == NULL ){
-        while( v_cb == NULL ){
+    if( v_cb == NULL ) {
+        while( v_cb == NULL ) {
             Vector * v_cb = new Vector();
-            if( sync_timer.read() > 5 ){
+            if( sync_timer.read() > 5 ) {
                 send_msg("Erro ao alocar o vetor de CBx");
                 sync_timer.reset();
             }
         }
-    }else if( v_call == NULL ){
-        while( v_call == NULL ){
+    } else if( v_call == NULL ) {
+        while( v_call == NULL ) {
             Vector * v_call = new Vector();
-            if( sync_timer.read() > 5 ){
+            if( sync_timer.read() > 5 ) {
                 send_msg("Erro ao alocar o vetor de Calls");
                 sync_timer.reset();
             }
         }
     }
-    
-    if( v_cb == NULL )
-    {
+
+    if( v_cb == NULL ) {
         memory_is_over = true;
         if( debug_memory ) debug_msg("Call_Box vector allocation fail");
     }
-    
-    if( v_call == NULL )
-    {
+
+    if( v_call == NULL ) {
         memory_is_over = true;
         if( debug_memory ) debug_msg("Call vector allocation fail");
     }
-    
-    for( register uint16_t i = 0; i < __CB_BUFFER_SIZE__; i++ ){
+
+    for( register uint16_t i = 0; i < __CB_BUFFER_SIZE__; i++ ) {
         cb_rx_buffer[ i ] = 0;
         cb_tx_buffer[ i ] = 0;
     }
-    
+
     reset_leds();
-    
+
     udp_timer.start();
-    
+
     init_telemetry_handler();
-    
+
     init_ranges();
-    
+
     init_refresh();
-    
+
     init_aging();
-    
+
     init_sync_refresh();
-    
+
     //init_invite_pgk_retry_manager();
-    
+
     //void init_bye_pgk_retry_manager();
-    
+
     static uint8_t count = 0;
-    
+
     //short int bl_ret = init_bl_handler();
     //if( dbl ) send_msg("Valor de retorno do bl_habdler = %d", bl_ret );
-    
+
     uint8_t max_registered_cbx = 0;
-    
+
     bool wake_all = false;
-    
+
     uint16_t pkg_wdt = RX_CB_IDLE;
     uint16_t eth_wdt = ETH_CONNECT_TIMEOUT;
     uint32_t uptime = 0;
-    
+
     send_msg("Ready");
-    
-    bool regystry_test = false;
-    static int next_value = 5010;
+
+    bool registry_test = false;
+    static int next_value = 5002;
     static int nex_test_registry = next_value;
-    
-    uint8_t vz_lim = vz_LIM;
-            
+
     /*------------------------------------------ main loop ---------------------------------------------------------------*/
-    while( true ){
+    while( true ) {
         if( v_cb->size() > max_registered_cbx ) max_registered_cbx = v_cb->size();
-        
-        if( sync_timer.read() > 5 ){
+
+        if( sync_timer.read() > 5 ) {
             sync_timer.reset();
-            
-            if( debug_cks == true ){
+
+            if( debug_cks == true ) {
                 pcks_s = true;
             }
-            
-            if( debug_alive == true ){
+
+            if( debug_alive == true ) {
                 pshowcb = true;
             }
-                       
-            if( !( ++count % 15 ) ){
-                if( eth_status ){
+
+            if( !( ++count % 15 ) ) {
+                if( eth_status ) {
                     eth_status = __init_eth__();
-                    if( eth_status ){
+                    if( eth_status ) {
                         if( debug_main ) debug_msg("Cannot connect to eth");
-                    }else{
+                    } else {
                         if( debug_main ) debug_msg("Connection eth - ok");
                         init_prompt_eth();
                         init_external_wdt()
@@ -194,62 +188,62 @@
                 }
             }
             //35 sec.
-            if( ( count > 7 ) && ( wake_all == false ) ){
+            if( ( count > 7 ) && ( wake_all == false ) ) {
                 wake_all = true;
                 if( debug_wake == true ) send_msg( "Time to wake" );
             }
         }
-        
+
         //FIXMEj colocar uma condicao aqui caso necessario pra nao comprometer ligacoes ...
         prompt_process( NULL );
-        
-        if( r_stats ){
-            boot_counter = 0; 
-            registry_counter = 0; 
-            invite_counter = 0; 
-            audio_counter = 0; 
-            telemetry_counter = 0; 
-            cb_bye_counter = 0; 
-            prompt_counter = 0; 
-            flood_counter = 0; 
+
+        if( r_stats ) {
+            boot_counter = 0;
+            registry_counter = 0;
+            invite_counter = 0;
+            audio_counter = 0;
+            telemetry_counter = 0;
+            cb_bye_counter = 0;
+            prompt_counter = 0;
+            flood_counter = 0;
             bootloader_cbx_counter = 0;
             r_stats = false;
             stats = true;
         }
-        
-        if( stats ){
+
+        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_bye :: %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 );
+            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_bye :: %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;
         }
-        
-        if( list ){
+
+        if( list ) {
             uint8_t missed_cb = ( ( max_ext - min_ext ) + 1 ) - v_cb->size();
-            
+
             if( ( max_ext % 2 ) == 0 ) missed_cb++;
-            
+
             if( min_ext % 2 ) missed_cb++;
-            
+
             if( min_ext == 0 && max_ext == 0 ) missed_cb = 0;
-            
+
             send_msg("Registered %d[ %d ] CBx ( %d - %d ) - Missed %d -- Remain_timeslices :: %d :: v_call->size() :: %d", v_cb->size(), max_registered_cbx, min_ext, max_ext, missed_cb, ts->remain_timeslices(), v_call->size() );
-            if( v_cb->size() == 1 ){
+            if( v_cb->size() == 1 ) {
                 send_msg(" %d ", ( ( Call_Box * )v_cb->get_element( 0 ) )->get_ext() );
-            }else if( v_cb->size() > 1 ){
+            } else if( v_cb->size() > 1 ) {
                 char str[ 1024 ];
                 int ext_list[ __MAX_CB_IN_A_BRANCH__ ];
                 register int i = 0;
-                for( ; i < v_cb->size(); i++ ){
+                for( ; i < v_cb->size(); i++ ) {
                     ext_list[ i ] = ( ( Call_Box * )v_cb->get_element( i ) )->get_ext();
                 }
-                
+
                 qsort( ext_list, v_cb->size(), sizeof( int ), ls_comp );
-        
+
                 char aux[ 16 ];
                 strcpy( str, "\r\n> " );
-                for( i = 0; i < v_cb->size() - 1; i++ ){
+                for( i = 0; i < v_cb->size() - 1; i++ ) {
                     sprintf( aux, "%i, ", ext_list[ i ] );
                     strcat( str, aux );
                     if( ( i != 0 ) && !( ( i + 1 ) % 16 ) ) strcat( str, "\r\n> " );
@@ -258,20 +252,20 @@
                 strcat( str, aux );
                 send_msg( "%s", str );
             }
-            list = false;    
+            list = false;
         }
-        
-        if( long_list ){
+
+        if( long_list ) {
             //FIXME implementar um algoritmo que me mostre o timeout de cada cbx do lado da linha, desse.
             /*
             uint8_t missed_cb = ( ( max_ext - min_ext ) + 1 ) - v_cb->size();
-            
+
             if( ( max_ext % 2 ) == 0 ) missed_cb++;
-            
+
             if( min_ext % 2 ) missed_cb++;
-            
+
             if( min_ext == 0 && max_ext == 0 ) missed_cb = 0;
-            
+
             send_msg("Registered %d[ %d ] CBx ( %d - %d ) - Missed %d -- Remain_timeslices :: %d :: v_call->size() :: %d", v_cb->size(), max_registered_cbx, min_ext, max_ext, missed_cb, ts->remain_timeslices(), v_call->size() );
             if( v_cb->size() == 1 ){
                 send_msg(" %d ", ( ( Call_Box * )v_cb->get_element( 0 ) )->get_ext() );
@@ -283,9 +277,9 @@
                     ext_list[ i ] = ( ( Call_Box * )v_cb->get_element( i ) )->get_ext();
                     ext_list[ i + 1 ] = ( ( Call_Box * )v_cb->get_element( i ) )->get_elapsed_time();
                 }
-                
+
                 qsort( ext_list, v_cb->size(), sizeof( int ) * 2, ls_comp );
-        
+
                 char aux[ 16 ];
                 strcpy( str, "\r\n> " );
                 for( i = 0; i < ( v_cb->size() * 2 ) - 2; i++ ){
@@ -298,32 +292,74 @@
                 send_msg( "%s", str );
             }
             */
-            long_list = false;    
+            long_list = false;
         }
-        
-        if( pshowcb == true ){
+
+        if( pshowcb == true ) {
             send_msg("Registered %d ( of %d ) CBx ( %d - %d ) -- Remain_timeslices :: %d :: v_call->size() :: %d", v_cb->size(), max_registered_cbx, min_ext, max_ext, ts->remain_timeslices(), v_call->size() );
-            for( register uint8_t i = 0; i < v_cb->size(); i++ ){
+            for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
                 Call_Box * cb = ( Call_Box * )v_cb->get_element( i );
                 char cb_status[ 32 ];
                 char cb_sip_status[ 32 ];
-                switch( cb->status ){
-                    case cb_idle : { strcpy( cb_status, "cb_idle" ); break; }
-                    case cb_ringing : { strcpy( cb_status, "cb_ringing" ); break; }
-                    case cb_trying : { strcpy( cb_status,"cb_trying" ); break; }
-                    case cb_on_call : { strcpy( cb_status, "cb_on_call" ); break; }
-                    case cb_busy : { strcpy( cb_status, "cb_busy" ); break; }
-                    case cb_denied : { strcpy( cb_status, "cb_denied" ); break; }
+                switch( cb->status ) {
+                    case cb_idle : {
+                        strcpy( cb_status, "cb_idle" );
+                        break;
+                    }
+                    case cb_ringing : {
+                        strcpy( cb_status, "cb_ringing" );
+                        break;
+                    }
+                    case cb_trying : {
+                        strcpy( cb_status,"cb_trying" );
+                        break;
+                    }
+                    case cb_on_call : {
+                        strcpy( cb_status, "cb_on_call" );
+                        break;
+                    }
+                    case cb_busy : {
+                        strcpy( cb_status, "cb_busy" );
+                        break;
+                    }
+                    case cb_denied : {
+                        strcpy( cb_status, "cb_denied" );
+                        break;
+                    }
                 }
-                switch( cb->sip->status ){
-                    case sip_idle : { strcpy( cb_sip_status, "sip_idle" ); break; }
-                    case sip_waiting_trying : { strcpy( cb_sip_status, "sip_waiting_trying" ); break; }
-                    case sip_trying : { strcpy( cb_sip_status, "sip_trying" ); break; }
-                    case sip_ringing : { strcpy( cb_sip_status, "sip_ringing" ); break; }
-                    case sip_busy : { strcpy( cb_sip_status, "sip_busy" ); break; }
-                    case sip_ok : { strcpy( cb_sip_status, "sip_ok" ); break; }
-                    case sip_on_call : { strcpy( cb_sip_status, "sip_on_call" ); break; }
-                    case sip_denied : { strcpy( cb_sip_status, "sip_denied" ); break; }
+                switch( cb->sip->status ) {
+                    case sip_idle : {
+                        strcpy( cb_sip_status, "sip_idle" );
+                        break;
+                    }
+                    case sip_waiting_trying : {
+                        strcpy( cb_sip_status, "sip_waiting_trying" );
+                        break;
+                    }
+                    case sip_trying : {
+                        strcpy( cb_sip_status, "sip_trying" );
+                        break;
+                    }
+                    case sip_ringing : {
+                        strcpy( cb_sip_status, "sip_ringing" );
+                        break;
+                    }
+                    case sip_busy : {
+                        strcpy( cb_sip_status, "sip_busy" );
+                        break;
+                    }
+                    case sip_ok : {
+                        strcpy( cb_sip_status, "sip_ok" );
+                        break;
+                    }
+                    case sip_on_call : {
+                        strcpy( cb_sip_status, "sip_on_call" );
+                        break;
+                    }
+                    case sip_denied : {
+                        strcpy( cb_sip_status, "sip_denied" );
+                        break;
+                    }
                 }
                 char cbx_to_string[ 254 ];
                 char aux[ 16 ];
@@ -334,7 +370,7 @@
                 strcat( cbx_to_string, cb_status );
                 strcat( cbx_to_string, " - " );
                 strcat( cbx_to_string, cb_sip_status );
-                if( cb->get_timeslice() != 0 ){
+                if( cb->get_timeslice() != 0 ) {
                     strcat( cbx_to_string, " -- on TimeSlice :: " );
                     itoa( cb->get_timeslice(), aux , 10 );
                     strcat( cbx_to_string, aux );
@@ -343,96 +379,96 @@
             }
             pshowcb = false;
         }
-        
+
         if( pflood == true ) flood();
-        
-        if( debug_eth ){
+
+        if( debug_eth ) {
             debug_eth = false;
             send_msg("Eth status %s", ( eth_status == 0 ) ? "Connected" : "Disconnected" );
         }
-        
-        if( status != __WAITING__ ){
+
+        if( status != __WAITING__ ) {
             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( debug_cpld ){ 
+            xmemcpy( buffer, cb_rx_buffer, __CB_BUFFER_SIZE__ );
+
+            if( debug_cpld ) {
                 rx = true;
                 tx = true;
             }
-            
-            if( rx ){
+
+            if( rx ) {
                 char str[ 1024 ];
                 strcpy( str, "RX :: \n\r " );
-                for( register uint16_t i = 0; i < __CB_BUFFER_SIZE__; i++ ){
+                for( register uint16_t i = 0; i < __CB_BUFFER_SIZE__; i++ ) {
                     char tmp[ 16 ];
                     strcat( str, itoa( cb_rx_buffer[ i ], tmp, 16 ) );
                     if( ( i != 0 ) && !( ( i + 1 ) % 50 ) ) strcat( str, "\n\r " );
-                    
+
                     else strcat( str, " " );
                 }
                 send_msg( "%s", str );
-                rx = false;    
+                rx = false;
             }
-                
+
             data = __parse_vz_pkg__( &ext, &port, &type, buffer );
-            
-            if( data != NULL ){
+
+            if( data != NULL ) {
                 if( min_ext == 0 ) min_ext = ext;
-            
+
                 if( ext > max_ext ) max_ext = ext;
-                
+
                 if( ext < min_ext ) min_ext = ext;
-                
+
                 if( debug_cb_rx == true ) debug_msg("Pkg from CBx :: %d -- Type :: %d", ext, type );
-                
-                if( type != __AUDIO__ ){
+
+                if( type != __AUDIO__ ) {
                     Call_Box * cb = __find_CB__( v_cb, ext );
-                    if( cb != NULL ){
-                        if( ( data[ 0 ] & BIT7 ) >= BIT7 ){ 
-                            if( type == __BOOT__ ){ 
-                                send2callboxes( __build_cb_package__( ext, port, __REGISTRY__, 
-                                    ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
-                            }else if( ( data[ 0 ] & BIT7 ) == BIT7 ){
+                    if( cb != NULL ) {
+                        if( ( data[ 0 ] & BIT7 ) >= BIT7 ) {
+                            if( type == __BOOT__ ) {
+                                send2callboxes( __build_cb_package__( ext, port, __REGISTRY__,
+                                                                      ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
+                            } else if( ( data[ 0 ] & BIT7 ) == BIT7 ) {
                                 if( debug_main ) debug_msg("Received ack pkg with seq_num %d", data[ 0 ] );
-                
-                                switch( type ){
+
+                                switch( type ) {
                                     case __INVITE__ : {
                                         if( debug_main || debug_invite ) debug_msg("Invite Ack from %d on msg_id %d", ext, cb->get_msg_id() );
                                         cb->set_invite_response_ok();
-                                        break;    
+                                        break;
                                     }
                                     case __CB_BYE__ : {
                                         if( debug_main || debug_invite ) debug_msg("BYE Ack from %d on msg_id %d", ext, cb->get_msg_id() );
                                         cb->set_bye_response_ok();
-                                        break;    
+                                        break;
                                     }
                                     case __REGISTRY__ : {
                                         if( debug_main || debug_aging ) debug_msg("Registry ACK from %d in pkg :: %d", ext, cb->get_msg_id() );
                                         break;
                                     }
                                     default : {
-                                        if( debug_main || debug_aging ) debug_msg("ACK from %d in pkg :: %d :: type %d", ext, cb->get_msg_id(), type );   
-                                    }    
+                                        if( debug_main || debug_aging ) debug_msg("ACK from %d in pkg :: %d :: type %d", ext, cb->get_msg_id(), type );
+                                    }
                                 }
-                                if( type != __REGISTRY__ && type != __CB_BYE__ ) type = __DO_NOTHING__;
-                                //if( type != __REGISTRY__ ) type = __DO_NOTHING__;
+                                //if( type != __REGISTRY__ && type != __CB_BYE__ ) type = __DO_NOTHING__;
+                                if( type != __REGISTRY__ ) type = __DO_NOTHING__;
                             }
                         }
                     }
                 }
-            }else type = __DO_NOTHING__;
+            } else type = __DO_NOTHING__;
         }
-        
-        if( main_test == true )
-        {
+
+        if( main_test == true ) {
             main_test = false;
             send_msg("CB_New (%u) -- CB_Delete (%u)", cb_new_counter, cb_delete_counter );
             send_msg("SIP_New (%u) -- SIP_Delete (%u)", sip_new_counter, sip_delete_counter );
             send_msg("RTP_header_New (%u) -- RTP_header_Delete (%u)", rtp_header_new_counter, rtp_header_delete_counter );
             send_msg("RTP_body_New (%u) -- RTP_body_Delete (%u)", rtp_body_new_counter, rtp_body_delete_counter );
+            send_msg("Call_New (%u) -- Call_Delete (%u)", call_new_counter, call_delete_counter );
             send_msg("lpc_low_level_input_counter :: %d", lpc_low_level_input_counter );
             send_msg("Memory is %s", ( memory_is_over ) ? "Over" : "Ok" );
             send_msg("Missed_Pkg :: %d ::", missed_pkg );
@@ -446,62 +482,23 @@
             send_msg("Sizeof Timeslice :: %u", sizeof( Timeslice ) );
             send_msg("Sizeof Watchdog :: %u", sizeof( Watchdog ) );
         }
-        
+
         static int wdt_count = 0;
-        if( regystry_test == true )
-        {
-            regystry_test = false;
-            
-            Timer sel;
-            int tempo = 0;
-            sel.start();
-            
-            fd_set fdSet;
-            FD_ZERO(&fdSet);
-            
-            for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
-                Call_Box * cb = (Call_Box *)v_cb->get_element( i );
-                FD_SET( cb->get_sip_socket_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, NULL );
-            //send_msg("Ret:%d - Time::%d ", ret, sel.read_us() );
-            if(ret > 0 ){
-                for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
-                    Call_Box * cb = (Call_Box *)v_cb->get_element( i );
-                    int fd =  cb->get_sip_socket_fd();
-                    if( FD_ISSET( fd, &fdSet ) ){
-                        //if( FD_ISSET( fd, &fdSet ) )send_msg( "ISSET %d - %d", cb->get_ext(), fd );
-                        int rcv = cb->sip_udp_drop_once();
-                        //if(  rcv > 0 ) send_msg("Drop %d - %d", cb->get_ext(), rcv );
-                    }            
-                }
-            }
-            
-            tempo = sel.read_us();
-            debug_msg("Time::%d", tempo );
-            if( wdt_count++ > 5 || v_cb->size() < 66 ){
+        if( registry_test == true ) {
+            registry_test = false;
+
+            if( wdt_count++ > 5 || v_cb->size() < 66 ) {
                 wdt_count = 0;
-                
-                if( type == __DO_NOTHING__ )
-                {   
-                    if( next_value < ( 5010 + __MAX_CB_IN_A_BRANCH__ - 2 ) )
-                    {   
-                        type = __REGISTRY__;
+
+                if( type == __DO_NOTHING__ ) {
+                    if( next_value < ( 5002 + __MAX_CB_IN_A_BRANCH__ - 2 ) ) {
+                        //type = __REGISTRY__;
                         data = buffer;
                         ext = next_value;
                         port = next_value++;
-                    }
-                        else
-                    {
-                        if( nex_test_registry > ( 5010 + __MAX_CB_IN_A_BRANCH__ - 1 - 2 ) ) nex_test_registry = 5010;
-                        type = __REGISTRY__;
+                    } else {
+                        if( nex_test_registry > ( 5002 + __MAX_CB_IN_A_BRANCH__ - 1 - 2 ) ) nex_test_registry = 5002;
+                        //type = __REGISTRY__;
                         data = buffer;
                         ext = nex_test_registry;
                         port = nex_test_registry++;
@@ -509,66 +506,120 @@
                 }
             }
         }
-        
+
+        {
+            fd_set fdSet;
+            FD_ZERO(&fdSet);
+
+            for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
+                Call_Box * cb = (Call_Box *)v_cb->get_element( i );
+                FD_SET( cb->get_sip_socket_fd(), &fdSet);
+            }
+
+            FD_SET( udp_wdt_client.get_fd(), &fdSet);
+            
+            struct timeval t;
+            t.tv_sec = 0;
+            t.tv_usec = 0;
+            int ret = lwip_select( FD_SETSIZE, &fdSet, NULL, NULL, &t );
+
+            if(ret > 0 ) {
+                for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
+                    Call_Box * cb = (Call_Box *)v_cb->get_element( i );
+                    int fd =  cb->get_sip_socket_fd();
+                    if( FD_ISSET( fd, &fdSet ) ) {
+                        int rcv = cb->sip_udp_incomming_pkg();
+                    }
+                }
+                if( FD_ISSET( udp_wdt_client.get_fd(), &fdSet ) ) {
+                    char wake_msg[ 768 ];
+                    Endpoint udp_wdt_server;
+                    
+                    if( udp_wdt_client.receiveFrom( udp_wdt_server, wake_msg, sizeof( wake_msg ) ) > 0 ){
+                        if( !( strncmp( wake_msg, "alive", 5 ) ) ) {
+                            // Just ckeck but not set 'alive?'
+                            // 'alive*' - force wdt tick right now
+                            // Ckecking and set 'alive'
+                            bool question_alive = ( wake_msg[ 5 ] == '?' );
+                            if( wake_msg[ 5 ] == '*' ) wdt.kick();
         
-        if( reset_cks == true ){
+                            snprintf( wake_msg, 48,"wdt:%u,%u,%u,%c,%u,%u,%u:", uptime, invite_counter, external_wdt, ( wdt.WatchdogCausedReset() ) ? '1' : '0', cb_new_counter, v_call->size(), ts->remain_timeslices() );
+                            wake_msg[ 48 - 1 ] = 0;
+                            udp_wdt_client.sendTo( udp_wdt_server, wake_msg, strlen( wake_msg ) );
+        
+                            if( ( (!question_alive) && ( cb_new_counter <= __MAX_CB_IN_A_BRANCH__ ) && ( cb_new_counter >= 2 ) ) ) {
+                                external_wdt = EXTERN_WDT_IDLE;
+                            }
+                        } else if( !( strncmp( wake_msg, "reset", 5 ) ) ) {
+                            external_wdt = 0;
+        
+                            sprintf( wake_msg, "rst:%u:", uptime );
+                            udp_wdt_client.sendTo( udp_wdt_server, wake_msg, strlen( wake_msg ) );
+                        }
+                    }
+                }
+            }
+        }
+
+        if( reset_cks == true ) {
             pkg_cksok = 0;
             pkg_ckserr = 0;
             reset_cks = false;
             pcks_s = true;
         }
-        
-        if( pcks_s == true ){
+
+        if( pcks_s == true ) {
             send_msg("PKG_CSK OK: %d :: PKG_CSK ERR: %d :: PKG_ZERO: %d :: Out_of_range: %d :: Missed_Pkg :: %d :: CPLD_RCV :: %d", pkg_cksok, pkg_ckserr, pkg_zero, out_of_range, missed_pkg, received_cpld_pkg );
             pcks_s = false;
         }
-        
-        if( led_sync_timer.read() > 1 ){
+
+        if( led_sync_timer.read() > 1 ) {
             led_sync_timer.reset();
             led3 = !led3;
             CAB_LED = !CAB_LED;
         }
-        
-        switch( type ){
-            case __DO_NOTHING__ :{}
-                break;
-                
+
+        switch( type ) {
+            case __DO_NOTHING__ :
+            {}
+            break;
+
             case __CB_BYE__ : {
                 //FIXME como mandar um BYE pro servidor ?
                 cb_bye_counter++;
                 Call_Box * cb = __find_CB__( v_cb, ext );
-                if( cb != NULL ){
+                if( cb != NULL ) {
                     if( debug_invite || debug_main ) debug_msg("Received bye pkg with msg_id %d e pkg_id %d", cb->get_msg_id(), data[ 0 ] );
                     data[ 0 ] |= BIT7;
                     cb->set_msg_id( data[ 0 ] );
                     if( debug_main || debug_invite ) debug_msg( "Request bye from CBx " );
                     bool already_removed = true;
-                    for( register uint8_t i = 0; i < v_call->size(); i++ ){
+                    for( register uint8_t i = 0; i < v_call->size(); i++ ) {
                         VZ_call * call = (VZ_call *)v_call->get_element( i );
-                        if( call->get_cb_ext() == ext ){
+                        if( call->get_cb_ext() == ext ) {
                             already_removed = false;
                             cb->send_bye();
-                            
+
                             ts->return_timeslice( cb->get_timeslice() );
                             cb->set_timeslice( 0x00 );
                             data[ __TIMESLICE_PLACE__ ] = 0x00;
-                            
+
                             set_status( cb->status, cb_idle );
                             set_status( cb->sip->status, sip_idle );
-                            
+
                             v_call->remove_element( i );
-                            
+
                             send2callboxes( __build_cb_package__( ext, port, __CB_BYE__,
                                 ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
-                                
+
                             cb->set_msg_id( ( cb->get_msg_id() &  ~BIT7 ) + 1 );
-                            
+
                             delete( call );
                             cb->re_start_timer();
                         }
                     }
                     if( already_removed ) if( debug_main || debug_invite ) debug_msg( "Already removed from vector call" );
-                    
+
                     //ok, mas nem sempre o cbx "entrou em call
                     for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
                         Call_Box * cb = (Call_Box *)v_cb->get_element( i );
@@ -586,7 +637,7 @@
                                 set_status( cb->sip->status, sip_idle );
 
                                 send2callboxes( __build_cb_package__( ext, port, __CB_BYE__,
-                                    ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
+                                                                      ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
 
                                 cb->set_msg_id( ( cb->get_msg_id() &  ~BIT7 ) + 1 );
 
@@ -594,74 +645,77 @@
                             }
                         }
                     }
-                    
+
                     if( already_removed ) if( debug_main || debug_invite ) debug_msg( "Already removed from inviting queue" );
-                    
+
                     cb->registry();
-                }else if( debug_invite || debug_main ) debug_msg("Bye from who ? %d", ext );
-            }break;
-            
+                } else if( debug_invite || debug_main ) debug_msg("Bye from who ? %d", ext );
+            }
+            break;
+
             case __INVITE__ : {
                 invite_counter++;
                 if( debug_invite ) debug_msg("Request Invite received from Cbx %i", ext);
                 Call_Box * cb = __find_CB__( v_cb, ext );
-                if( cb == NULL ){
-                    if( v_cb->size() < vz_lim )
-                    {
-                    if( debug_main ) debug_msg( "Adding CBx :: %i", ext );
-                    cb = new Call_Box( ext, port );
-                    
-                    if( cb == NULL ){
-                        memory_is_over = true;
-                        if( debug_memory ) debug_msg("Invite allocation cb fail");
-                    }else{
-                        v_cb->add( cb );
-                    }
+                if( cb == NULL ) {
+                    if( v_cb->size() < __MAX_CB_IN_A_BRANCH__ ) {
+                        if( debug_main ) debug_msg( "Adding CBx :: %i", ext );
+                        cb = new Call_Box( ext, port );
+
+                        if( cb == NULL ) {
+                            memory_is_over = true;
+                            if( debug_memory ) debug_msg("Invite allocation cb fail");
+                        } else {
+                            v_cb->add( cb );
+                        }
                     }
                 }
-                if( cb != NULL ){
-                    cb->set_msg_id( data[ 0 ] );    
+                if( cb != NULL ) {
+                    cb->set_msg_id( data[ 0 ] );
                     invite_handler( v_call, v_cb, ts, cb );
                 }
-            }break;
+            }
+            break;
             case __REGISTRY__ : {
                 registry_counter++;
                 Call_Box * cb = __find_CB__( v_cb, ext );
-                if( v_cb->size() < vz_lim ){
-                if( cb == NULL ){
-                    if( debug_main ) debug_msg("Adding Cbx :: %d", ext );
-                    cb = new Call_Box( ext, port );
-                    
-                    if( cb == NULL ){
-                        memory_is_over = true;
-                        if( debug_memory ) debug_msg("Registry cb allocation fail");
-                    }else{
-                        v_cb->add( cb );
-                        if( debug_main ) debug_msg("Added CBx -- %d", ext );
+                if( v_cb->size() < __MAX_CB_IN_A_BRANCH__ ) {
+                    if( cb == NULL ) {
+                        if( debug_main ) debug_msg("Adding Cbx :: %d", ext );
+                        cb = new Call_Box( ext, port );
+
+                        if( cb == NULL ) {
+                            memory_is_over = true;
+                            if( debug_memory ) debug_msg("Registry cb allocation fail");
+                        } else {
+                            v_cb->add( cb );
+                            if( debug_main ) debug_msg("Added CBx -- %d", ext );
+                        }
                     }
                 }
-                }
                 if( debug_main ) debug_msg("Registered %d - %d", ext, port );
-                    
+
                 if( cb != NULL ) cb->registry();
-                
-                }break;
+
+            }
+            break;
             case __BOOT__ : {
                 boot_counter++;
-                send2callboxes( __build_cb_package__( ext, port, __REGISTRY__, 
-                    ( char * )data, data[ 0 ] | BIT7, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
-                }break;
+                send2callboxes( __build_cb_package__( ext, port, __REGISTRY__,
+                                                      ( char * )data, data[ 0 ] | BIT7, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
+            }
+            break;
             case __TELEMETRY__ : {
                 Call_Box * cb = __find_CB__( v_cb, ext );
-                
-                if( cb == NULL ){
+
+                if( cb == NULL ) {
                     send2callboxes( __build_cb_package__( ext, port, __REGISTRY__,
-                        ( char * )data, ( ( data[ 0 ] &  ~BIT7 ) + 1 ), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
+                                                          ( char * )data, ( ( data[ 0 ] &  ~BIT7 ) + 1 ), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
 
-                    /*                    
+                    /*
                     if( debug_main ) debug_msg("Adding Cbx :: %d", ext );
                     cb = new Call_Box( ext, port );
-                    
+
                     if( cb == NULL ){
                         memory_is_over = true;
                     }else{
@@ -674,23 +728,25 @@
                 if( cb != NULL ){
                     cb->registry();
                 }*/
-                
+
                 telemetry_counter++;
                 if( debug_telemetry ) send_msg("::Telemetry from %d - %d::", ext, port );
-                    build_telemetry_report( ext, port, ( char *)data );
-                }break;
-                
+                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;
-                
+                //int ret = bl_cbx_reply_to_eth( ext, ( char * )data );
+            }
+            break;
+
             case __PROMPT__ : {
                 Call_Box * cb = __find_CB__( v_cb, ext );
-                
-                if( cb == NULL ){
+
+                if( cb == NULL ) {
                     send2callboxes( __build_cb_package__( ext, port, __REGISTRY__,
-                        ( char * )data, ( ( data[ 0 ] &  ~BIT7 ) + 1 ), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
+                                                          ( char * )data, ( ( data[ 0 ] &  ~BIT7 ) + 1 ), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
                     /*
                     if( debug_main ) debug_msg("Adding Cbx :: %d", ext );
                     cb = new Call_Box( ext, port );
@@ -702,22 +758,22 @@
                     }
                     */
                 }
-                
+
                 //if( cb!= NULL ) cb->registry();
-                
-                if( xstrmatch( ( uint8_t * )data, ( uint8_t * )"ping" ) ){
+
+                if( xstrmatch( ( uint8_t * )data, ( uint8_t * )"ping" ) ) {
                     if( debug_ping ) send_msg( "Prompt pkg from ( %i, %i ) :: Ping", ext, port );
-                }else{
+                } else {
                     prompt_counter++;
                     //fixme isso nao poderia ser resolvido com um sendmsg ?
                     send_msg( "Prompt pkg from ( %i, %i ) ::", ext, port );
-                    for( register uint8_t i = 0; i < 32; i++ ){
+                    for( register uint8_t i = 0; i < 32; i++ ) {
                         pc.printf("%c", data[ i ] );
                         if( i == 15 ) pc.printf( "\r\n" );
                     }
                     pc.printf("\n\r> ");
-                    
-                    if( tcp_session ){
+
+                    if( tcp_session ) {
                         char aux[ __CB_BUFFER_SIZE__ + 3 ];
                         strncpy( aux, (char * )data, __CB_BUFFER_SIZE__ );
                         strcat( aux, "\n\r\0" );
@@ -725,227 +781,173 @@
                         tcp_client.send_all( "\r\n> ", strlen( "\r\n> " ) );
                     }
                 }
-                }break;
+            }
+            break;
             case __AUDIO__ : {
                 audio_counter++;
                 VZ_call * call = __find_Call__( v_call, ext );
-                if( call != NULL ){
-                    char * pkg = call->build_eth_package( data + 2 ); 
+                if( call != NULL ) {
+                    char * pkg = call->build_eth_package( data + 2 );
                     call->send_message( pkg );
                     Call_Box * cb = __find_CB__( v_cb, ext );
                     if( cb != NULL ) cb->reset_elapsed_time();
-                }else{
+                } else {
                     if( debug_main ) debug_msg("received missed package  from CBx :: %i", ext );
                 }
-            }break;
+            }
+            break;
         }// fim switch
-        
-        for( register uint8_t i = 0; i < v_call->size(); i++ ){
+
+        for( register uint8_t i = 0; i < v_call->size(); i++ ) {
             VZ_call * call = ( VZ_call * )v_call->get_element( i );
             int length = 0;
             char * tmp = call->get_eth_message( &length );
-            if( tmp != NULL ){
+            if( tmp != NULL ) {
                 int cb_port = 0xffff;
                 Call_Box * cb = __find_CB__( v_cb, call->get_cb_ext() );
-                
-                if( cb != NULL ){
+
+                if( cb != NULL ) {
                     cb_port = cb->get_port();
-                    
-                    uint8_t * pkg2cb = __build_cb_package__( call->get_cb_ext(), cb_port, __AUDIO__, 
-                    tmp, __AUDIO__, length, write_buffer );
-                
+
+                    uint8_t * pkg2cb = __build_cb_package__( call->get_cb_ext(), cb_port, __AUDIO__,
+                                       tmp, __AUDIO__, length, write_buffer );
+
                     send2callboxes( pkg2cb );
-                }else if( debug_main ) debug_msg("received missed package  from CBx :: %i -- Type :: %i", ext, type );
+                } else if( debug_main ) debug_msg("received missed package  from CBx :: %i -- Type :: %i", ext, type );
             }
         }
         //if( v_call->size() == 0 ) refresh( v_cb, buffer, write_buffer, NULL );
-        
-        if( timer_sync_refresh.read_ms() > 500 )
-        {
+
+        if( timer_sync_refresh.read_ms() > 500 ) {
             timer_sync_refresh.reset();
-            
+
             static uint8_t mode = TIME_TO_REFRESH;
-            
-            if( mode == TIME_TO_REFRESH ){
+
+            if( mode == TIME_TO_REFRESH ) {
                 mode = TIME_TO_WAKE_UP;
                 refresh( v_cb, buffer, write_buffer, NULL );
-            }else{
+            } else {
                 mode = TIME_TO_REFRESH;
-                //if( wake_all ) if( v_call->size() == 0 ) wake_all_up( v_cb, buffer, write_buffer );
+                if( wake_all ) if( v_call->size() == 0 ) wake_all_up( v_cb, buffer, write_buffer );
             }
         }
-        
-        
+
+
         //refresh( v_cb, buffer, write_buffer, NULL );
-        
+
         //Fixme pensar melhor nessa parte durante ligacoes, pode complicar com muitos cbx ...
         //if( v_call->size() == 0 ) registry_aging( v_cb, buffer, write_buffer );
-        
+
         // check sip messages only for cbx in call ?
         int ext_to__be_removed = sip_manager( v_cb );
-        if( ext_to__be_removed > 0x00 ){
+        if( ext_to__be_removed > 0x00 ) {
             Call_Box * cb = __find_CB__( v_cb, ext_to__be_removed );
-            if( cb != NULL ){
-                if( cb->status == cb_on_call ){
+            if( cb != NULL ) {
+                if( cb->status == cb_on_call ) {
                     ts->return_timeslice( cb->get_timeslice() );
                     cb->set_timeslice( 0x00 );
                     buffer[ __TIMESLICE_PLACE__ ] = 0x00;
-                    
+
                     set_status( cb->status, cb_idle );
                     set_status( cb->sip->status, sip_idle );
-            
-                    for( register uint8_t i = 0; i < v_call->size(); i++ ){
+
+                    for( register uint8_t i = 0; i < v_call->size(); i++ ) {
                         VZ_call * call = ( VZ_call * )v_call->get_element( i );
-                        if( call->get_cb_ext() == ext_to__be_removed ){
+                        if( call->get_cb_ext() == ext_to__be_removed ) {
                             v_call->remove_element( i );
                             delete( call );
                         }
                     }
-            
+
                     cb->set_msg_id( ( cb->get_msg_id() &  ~BIT7 ) + 1 );
-                    //cb->set_msg_id( 80 );
-                    
+
                     //debug_msg("msg_id -- %d", cb->get_msg_id() );
-                    
-                    send2callboxes( __build_cb_package__( ext, port, __CB_BYE__, 
+
+                    send2callboxes( __build_cb_package__( ext, port, __CB_BYE__,
                         ( char * )buffer, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
-            
-                    //cb->re_start_timer();
+                        
+                    if( debug_invite ) debug_msg("Received Bye from *");
+
                 }
-            }else if( debug_main ) debug_msg("Missed bye request from * CBx :: %d", ext );
+            } else if( debug_main ) debug_msg("Missed bye request from * CBx :: %d", ext );
         }
-        
+
         /* Verifica andamento de ligações para eventualmente encerra-las por timeout */
         call_manager( v_call, v_cb, buffer, write_buffer, ts );
-        
+
         /* tratamento de pedidos de ligação */
         invite_handler( v_call, v_cb, ts, NULL );
-        
+
         /* rotina de verificação de TS's perdidos */
-        if( ( v_call->size() == 0 ) && ( ts->remain_timeslices() != __MAX_TIMESLICES__ ) ){
-             bool ts_reset = true;
-             for( register uint8_t i = 0; i < v_cb->size(); i++ ){
+        if( ( v_call->size() == 0 ) && ( ts->remain_timeslices() != __MAX_TIMESLICES__ ) ) {
+            bool ts_reset = true;
+            for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
                 if ( ( ( Call_Box * )v_cb->get_element( i ) )->get_status() != cb_idle &&
-                        ( ( Call_Box * )v_cb->get_element( i ) )->get_sip_status() != sip_idle )
-                {
+                        ( ( Call_Box * )v_cb->get_element( i ) )->get_sip_status() != sip_idle ) {
                     ts_reset = false;
                     break;
                 }
-            }   
-            if( ts_reset ){
+            }
+            if( ts_reset ) {
                 if( debug_invite ) debug_msg("Resetando TS");
                 ts->reset();
             }
         }
-        
+
         //invite_pgk_retry_manager( v_call, v_cb, buffer, write_buffer );
-        
+
         /* escuta se existe algum procedimento de gravação de cbx */
-        bl_handler();
-        
+        //bl_handler();
+
         /* rotina que esvazia possiveis pacotes que não foram transmitidos para evitar conflito */
         tx_buffer_ring_buffer_handler();
-        
+
         type = __DO_NOTHING__;
-        
+
         if( eth_status == 0 ) eth_wdt = ETH_CONNECT_TIMEOUT;
-        
-        if( wdt_timer.read() >= 1 ){
-            regystry_test = true;
-            
-            char wake_msg[ 48 ];
+
+        if( wdt_timer.read() >= 1 ) {
+            //FIXME remove myself
+            registry_test = true;
+
             uptime++;
-            int read = udp_wdt_client.receiveFrom( udp_wdt_server, wake_msg, sizeof( wake_msg ) );
-            
-            bool force_alive = false ;
-            
-            if( read > 0 ){
-                eth_pkg_received++;
-            
-                if( !( strncmp( wake_msg, "alive", 5 ) ) ){
-                    // Just ckeck but not set 'alive?'
-                    // Ckecking and set 'alive'
-                    bool question_alive = ( wake_msg[ 5 ] == '?' );
-                    force_alive = ( wake_msg[ 5 ] == '*' );
-                    
-                    if( wake_msg[ 5 ] == '@' )
-                    {
-                        vz_lim = wake_msg[ 6 ];    
-                    } 
-                    
-                    snprintf( wake_msg, 48,"wdt:%u,%u,%u,%c,%u:", uptime, invite_counter, external_wdt, ( wdt.WatchdogCausedReset() ) ? '1' : '0', cb_new_counter  );
-                    wake_msg[ 48 - 1 ] = 0;
-                    int sent = 0;
-                    sent = udp_wdt_client.sendTo( udp_wdt_server, wake_msg, strlen( wake_msg ) );
-                    
-                    if( wdt_show ) send_msg( "Sent %d bytes in response", sent );
-                    
-                    if( ( (!question_alive) && ( cb_new_counter <= __MAX_CB_IN_A_BRANCH__ ) && ( cb_new_counter >= 2 ) ) 
-                        || force_alive ){ 
-                        external_wdt = EXTERN_WDT_IDLE;
-                    }
-                }else if( !( strncmp( wake_msg, "reset", 5 ) ) ){
-                    external_wdt = 0;
-                    
-                    sprintf( wake_msg, "rst:%u:", uptime );
-                    int sent = udp_wdt_client.sendTo( udp_wdt_server, wake_msg, strlen( wake_msg ) );
-                    
-                    if( wdt_show ) send_msg( "Sent %d bytes in response", sent );
-                }
-            }
-            if( wdt_show ) if( read < 0 ) debug_msg( "some's wrong ... some's wrong" );
-            
+
             wdt_timer.reset();
-            
+
             if( wdt_show ) debug_wdt = true;
-            
+
             if( external_wdt ) external_wdt--;
             if( pkg_wdt ) pkg_wdt--;
             if( eth_wdt ) eth_wdt--;
-            
-            if( ( eth_wdt && external_wdt && pkg_wdt ) || force_alive ){
+
+            if( eth_wdt && external_wdt && pkg_wdt ){
                 wdt.kick();
             }
         }
-        
-        if( debug_wdt ){
+
+        if( debug_wdt ) {
             send_msg("lpc_low_level_input_counter :: %d", lpc_low_level_input_counter );
             lpc_low_level_input_counter = 0;
-            
+
             debug_wdt = false;
-            if( eth_status == 0 ){
-                send_msg( "Wdt last reset: %s - status_eth :: Connected - Extern Wdt idle for :: %3d sec ( %3d ) - Rx from CBx idle for :: %3d sec ( %3d )", 
-                    ( wdt.WatchdogCausedReset() ) ? "true" : "false", 
-                    EXTERN_WDT_IDLE - external_wdt, 
-                    EXTERN_WDT_IDLE,
-                    RX_CB_IDLE - pkg_wdt,
-                    RX_CB_IDLE
-                );
-            }else{
-                send_msg( "Wdt last reset: %s - status_eth :: Disconnected :: since %3d sec - Extern Wdt idle for :: %3d sec ( %3d ) - Rx from CBx idle for :: %3d sec ( %3d )", 
-                    ( wdt.WatchdogCausedReset() ) ? "true" : "false", 
-                    ETH_CONNECT_TIMEOUT - eth_wdt,
-                    EXTERN_WDT_IDLE - external_wdt,
-                    EXTERN_WDT_IDLE,
-                    RX_CB_IDLE - pkg_wdt,
-                    RX_CB_IDLE
-                );
+            if( eth_status == 0 ) {
+                send_msg( "Wdt last reset: %s - status_eth :: Connected - Extern Wdt idle for :: %3d sec ( %3d ) - Rx from CBx idle for :: %3d sec ( %3d )",
+                          ( wdt.WatchdogCausedReset() ) ? "true" : "false",
+                          EXTERN_WDT_IDLE - external_wdt,
+                          EXTERN_WDT_IDLE,
+                          RX_CB_IDLE - pkg_wdt,
+                          RX_CB_IDLE
+                        );
+            } else {
+                send_msg( "Wdt last reset: %s - status_eth :: Disconnected :: since %3d sec - Extern Wdt idle for :: %3d sec ( %3d ) - Rx from CBx idle for :: %3d sec ( %3d )",
+                          ( wdt.WatchdogCausedReset() ) ? "true" : "false",
+                          ETH_CONNECT_TIMEOUT - eth_wdt,
+                          EXTERN_WDT_IDLE - external_wdt,
+                          EXTERN_WDT_IDLE,
+                          RX_CB_IDLE - pkg_wdt,
+                          RX_CB_IDLE
+                        );
             }
         }
-        /*
-        {        
-            char eth_msg[ ETH_MSG_SIZE ];
-            for( register int i = 0; i < NUM_SOCK; i++ )
-            {
-                int rcv  = sock[ i ].receiveFrom( server[ i ], eth_msg, sizeof ( eth_msg ) );
-                if( rcv > 0 )
-                {   
-                    int sent = sock[ i ].sendTo( server[ i ], eth_msg, rcv );
-                    
-                    if( sent < 0 ) send_msg("Sent -1");
-                }
-            }
-        }
-        */
     }
 }
\ No newline at end of file