Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Revision:
81:3656f00ab3db
Parent:
80:61d61c9eb75c
Child:
86:bf7b0d4c3232
--- a/call_box_manager.cpp	Tue Dec 16 19:34:30 2014 +0000
+++ b/call_box_manager.cpp	Tue Dec 30 12:37:40 2014 +0000
@@ -12,41 +12,44 @@
     return( NULL );
 }
 
-int init_refresh( void ){
-    timer_refresh.start();
-    return( 0 );    
-}
-
-int init_aging( void ){
-    timer_aging.start();
-    return( 0 );    
-}
-
 int refresh( Vector * v_cb, uint8_t * data, uint8_t * write_buffer, Call_Box * cb ){
     if( v_cb != NULL && data != NULL  && write_buffer != NULL ){
+        static int lst_index = 0;
+        
+        //eu nao deveria precisar disso
         if( cb != NULL ){
             timer_refresh.reset();
             
+            cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ( ~BIT7 ) );
+            
             send2callboxes( __build_cb_package__( cb->get_ext(), cb->get_port(), __REGISTRY__, 
                         ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
             
+            if( debug_refresh ) send_msg("Refresh specific %d", cb->get_ext() );
+            
             return( 0x10 );
-        }
-        
-        static int lst_index = 0;
-        if( timer_refresh.read_ms() > 500 ){
+        //}else if( timer_refresh.read() > 1 ){
+        }else if( timer_refresh.read() > 1 ){
             timer_refresh.reset();
             if( v_cb->size() > 0 ){
-                if( lst_index == v_cb->size() ) lst_index = 0;
+                if( lst_index >= v_cb->size() ) lst_index = 0;
                 
                 Call_Box * cb = (Call_Box * )v_cb->get_element( lst_index++ );
                 
-                if( cb != NULL ){
+                if( cb != NULL && cb->status != cb_on_call ){
+                    if( cb->get_ext() % 2 == 1 ){ 
+                        Call_Box * cb_master =  __find_CB__( v_cb, cb->get_ext() - 1 );
+
+                        if( cb_master != NULL && cb_master->status == cb_on_call ) return( 0x20 );
+                    }
+                
                     cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ( ~BIT7 ) );
-                    
+                            
                     send2callboxes( __build_cb_package__( cb->get_ext(), cb->get_port(), __REGISTRY__, 
                         ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
                     
+                    if( debug_refresh ) send_msg("Refresh %d", cb->get_ext() );
+                    
                     return( 0 );
                 }else return( -3 );
             }else return( 1 );
@@ -65,9 +68,9 @@
                 v_cb->remove_element( i );
                 delete( cb );
                 break;
-            }else{
-                refresh( v_cb, data, write_buffer, cb );
-            }
+            }//else{
+                //refresh( v_cb, data, write_buffer, cb );
+            //}
         }
     }
     /*