Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Revision:
105:a930035b6556
Parent:
104:62646ef786a3
Child:
106:a34fcf9f0e02
diff -r 62646ef786a3 -r a930035b6556 call_box_manager.cpp
--- a/call_box_manager.cpp	Wed Feb 25 18:44:11 2015 +0000
+++ b/call_box_manager.cpp	Tue Mar 10 18:10:57 2015 +0000
@@ -22,8 +22,8 @@
             
             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 ) );
+            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() );
             
@@ -43,8 +43,8 @@
             
                     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 ) );
+                    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() );
                     
@@ -72,12 +72,22 @@
 }
 
 void wake_all_up( Vector * v_cb, uint8_t * data, uint8_t * write_buffer ){
-/**                                                                                                                                     
- * Esta função busca por, dado uma lista de cbx, procura por buracos,                                                                   
- * ou seja, slaves/masters que deveriam estar registrados uma vez que                                                                   
- * o outro master/slave esta registrado, e manda um "ping" para esse cbx,                                                               
- * para efetivamente criar ele na lógica.                                                                                               
- */  
+ /***
+    [ Principio ]
+        -- Procurar por CBx que constem sem seus pares registrados na lógica.
+        -- Mandar uma mensagem do tipo prompt-ping para este elemento
+        
+    -- Fluxo --
+        - Verificar se possui uma lista ordenada de CBx atualizada
+            - Caso nao possua, gerar esta lista.
+        - Para cada iteraçao
+            - Verifica se o CBx é master ou slave
+            - Verifica se o par deste esta registrado
+                - Caso contratio
+                    - Verifica se o CBx encontrado esta em ligaçao
+                        - Caso nao esteja, encaminha mensagem de ping para o CBx ausente da dupla.
+ ***/
+ 
     if( v_cb != NULL && data != NULL  && write_buffer != NULL ){
         static int ext_list[ __MAX_CB_IN_A_BRANCH__ + 1 ];
         static uint8_t last_size = 0;
@@ -101,14 +111,16 @@
                 //testa se o slave nao esta registrado
                 if( ( size == 1 ) || ( ( wake_all_up_index + 1 ) == size ) || ( ext_list[ wake_all_up_index + 1 ] !=  ( ext_list[ wake_all_up_index ] + 1 ) ) )
                 {
-                    strcpy( ( char * )data, "ping\r\r\r\n" );
+                    strcpy( ( char * )data, "ping\r" );
                     Call_Box * cb = __find_CB__( v_cb, ext_list[ wake_all_up_index ] );
-                    if( cb != NULL )
+                 
+                    // verifica se o master esta em chamada.   
+                    if( cb != NULL && cb->status == cb_idle )
                     { 
                         cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
                         
-                        send2callboxes( __build_cb_package__( ( cb->get_ext() + 1 ), ( cb->get_port() + 1 ), __PROMPT__, 
-                            ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
+                        send2callboxes( build_cb_package( ( cb->get_ext() + 1 ), ( cb->get_port() + 1 ), __PROMPT__, 
+                            ( char * )data, cb->get_msg_id(), CB_BUFFER_SIZE - __VZ_HEADER_OFFSET__, write_buffer ) );
         
                         if( debug_wake ) send_msg("%d without %d - ping sent to %d", 
                             ext_list[ wake_all_up_index ], ext_list[ wake_all_up_index ] + 1, cb->get_ext() + 1 );
@@ -118,14 +130,16 @@
             }else{
                 if( ( size == 1 ) || (  wake_all_up_index == 0 ) || (  wake_all_up_index >= 1 ) && ( ext_list[ wake_all_up_index - 1 ] !=  ( ext_list[ wake_all_up_index ] - 1 ) ) )
                 {
-                    strcpy( ( char * )data, "ping\r\r\r\n" );
+                    strcpy( ( char * )data, "ping\r" );
                     Call_Box * cb = __find_CB__( v_cb, ( ext_list[ wake_all_up_index ] ) );
-                    if( cb != NULL )
+                    
+                    // verifica se o slave esta em chamada.
+                    if( cb != NULL && cb->status == cb_idle )
                     { 
                         cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
         
-                        send2callboxes( __build_cb_package__( ( cb->get_ext() - 1 ), ( cb->get_port() - 1 ), __PROMPT__, 
-                            ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
+                        send2callboxes( build_cb_package( ( cb->get_ext() - 1 ), ( cb->get_port() - 1 ), __PROMPT__, 
+                            ( char * )data, cb->get_msg_id(), CB_BUFFER_SIZE - __VZ_HEADER_OFFSET__, write_buffer ) );
                         
                         if( debug_wake ) send_msg("%d without %d - ping sent to %d", 
                             ext_list[ wake_all_up_index ], ext_list[ wake_all_up_index ] - 1, cb->get_ext() - 1 );