Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Revision:
117:e9facba9db27
Parent:
116:39a41ebb675c
Child:
119:ee6a53069455
--- a/call_manager.cpp	Thu Apr 23 20:24:09 2015 +0000
+++ b/call_manager.cpp	Thu Apr 23 21:53:28 2015 +0000
@@ -18,10 +18,11 @@
             if( cb->get_invite_response() == false ){
                 invite_pkg_retry_timer.reset();
                 
+                //cb->set_msg_id( cb->get_msg_id() & ~BIT7 );
                 cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
                 
-                send2callboxes( build_cb_package( cb->get_ext(), cb->get_port(), __INVITE__, ( char * )data, 
-                    cb->get_msg_id(), CB_BUFFER_SIZE - __VZ_HEADER_OFFSET__, write_buffer ) );
+                send2callboxes( __build_cb_package__( cb->get_ext(), cb->get_port(), __INVITE__, ( char * )data, 
+                    cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
                     
                 return;
             }
@@ -36,10 +37,11 @@
             if( cb->get_bye_response() == false ){
                 bye_pkg_retry_timer.reset();
                 
+                //cb->set_msg_id( cb->get_msg_id() & ~BIT7 );
                 cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
                 
-                send2callboxes( build_cb_package( cb->get_ext(), cb->get_port(), __CB_BYE__, ( char * )data, 
-                    cb->get_msg_id(), CB_BUFFER_SIZE - __VZ_HEADER_OFFSET__, write_buffer ) );
+                send2callboxes( __build_cb_package__( cb->get_ext(), cb->get_port(), __CB_BYE__, ( char * )data, 
+                    cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
                     
                 return;
             }
@@ -51,20 +53,13 @@
     VZ_call * call = NULL;
     for( register int i = 0; i < v_call->size(); i++ ){
         call = ( VZ_call * )v_call->get_element( i );
-        if ( call != NULL )
-        {
-            if( call->get_cb_ext() == ext ) return( call );
-        }
+        if( call->get_cb_ext() == ext ) return( call );
     }
     return( NULL );
 }
 
 /* remove calls por timeout */
-void call_manager( Vector * v_call, Vector * v_cb, Timeslice * ts )
-{
-    //FixME pode dar problema por conta do static
-    static uint8_t data[ CB_BUFFER_SIZE ], write_buffer[ CB_BUFFER_SIZE ];
-    
+void call_manager( Vector * v_call, Vector * v_cb, uint8_t * data, uint8_t * write_buffer, Timeslice * ts ){
     for( register uint8_t i = 0; i < v_call->size(); i++ ){
         VZ_call * call = ( VZ_call * )v_call->get_element( i );
         if( call->is_timetofinish() || call->cbx_pkg_is_idle() ){
@@ -83,14 +78,16 @@
                 ts->return_timeslice( cb->get_timeslice() );
                 cb->set_timeslice( 0x00 );
                 data[ __TIMESLICE_PLACE__ ] = 0x00;
+//                cb->set_msg_id( ( cb->get_msg_id() &  ~BIT7 ) + 1 );
                 cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
-                send2callboxes( build_cb_package( cb->get_ext(), cb->get_port(), __CB_BYE__, 
-                    ( char * )data, cb->get_msg_id(), CB_BUFFER_SIZE - __VZ_HEADER_OFFSET__, write_buffer ) );
+                send2callboxes( __build_cb_package__( cb->get_ext(), cb->get_port(), __CB_BYE__, 
+                    ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
                 cb->send_bye();
                 set_status( cb->sip->status, sip_idle );
-                cb -> reset_cb_status ();
-                cb -> set_rtp_port ( 0 );
-                cb -> reset_rtp_timer (); 
+                //cb->re_start_timer();
+                cb -> reset_cb_status();
+                //cb -> set_rtp_port ( 0 );
+                //cb -> reset_rtp_timer ();
             }
             delete( call );    
         }
@@ -98,154 +95,150 @@
 }
 
 void invite_handler( Vector * v_call, Vector * v_cb, Timeslice * ts, Call_Box * inviting_cb ){
-    if ( ( v_call != NULL ) && ( v_cb != NULL ) && ( ts != NULL ) )
-    {
-        uint8_t data[ CB_BUFFER_SIZE ];
-        uint8_t write_buffer[ CB_BUFFER_SIZE ];
+    uint8_t data[ __CB_BUFFER_SIZE__ ];
+    uint8_t write_buffer[ __CB_BUFFER_SIZE__ ];
     
-        if( inviting_cb != NULL ){
-            if( inviting_cb->status == cb_idle ){            
-                inviting_cb->cb_set_status( cb_trying );
-                if( debug_invite ) debug_msg("Request invite cbx status :: cb_trying" );
-            }
-        }
-        
-        for( register uint8_t i = 0; i < v_cb->size(); i++ )
-        {
-            Call_Box * cb = ( Call_Box * )v_cb->get_element( i );
+    if( inviting_cb != NULL ){
+        //if( inviting_cb->status != cb_on_call ){
             
-            if ( cb == NULL ) continue;
-            
-            if( cb->get_status() == cb_idle || cb->get_status() == cb_on_call ) continue;
-            
-            int ext = cb->get_ext();
-            int port = cb->get_port();
-            
-            VZ_call * call = NULL;
+        //}
+        if( inviting_cb->status == cb_idle ){            
+            inviting_cb->cb_set_status( cb_trying );
+            if( debug_invite ) debug_msg("Request invite cbx status :: cb_trying" );
+        }
+    }
     
-            switch( cb->status ){            
-                case cb_trying : {
-                    uint8_t temp = cb->get_msg_id();
-                    cb->set_msg_id( temp |= BIT7 );
-                    cb->set_timeslice( ts->get_timeslice() );
-                    if( cb->get_timeslice() == 0x00 ){
-                        
-                        cb->cb_set_status( cb_idle );
+    for( register uint8_t i = 0; i < v_cb->size(); i++ ){
+        Call_Box * cb = ( Call_Box * )v_cb->get_element( i );
+        if( cb->get_status() == cb_idle || cb->get_status() == cb_on_call ) continue;
+        
+        int ext = cb->get_ext();
+        int port = cb->get_port();
+        
+        VZ_call * call = NULL;
+
+        switch( cb->status ){            
+            case cb_trying : {
+                uint8_t temp = cb->get_msg_id();
+                cb->set_msg_id( temp |= BIT7 );
+                cb->set_timeslice( ts->get_timeslice() );
+                if( cb->get_timeslice() == 0x00 ){
+                    
+                    cb->cb_set_status( cb_idle );
+                    
+                    data[ __TIMESLICE_PLACE__ ] = 0x00;
+      
+                    send2callboxes( __build_cb_package__( ext, port, __INVITE__, 
+                        ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
+      
+                    set_status( cb->sip->status, sip_idle );
+                    
+                    //cb->set_msg_id( ( cb->get_msg_id() &  ~BIT7 ) + 1 );
+                    cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
+                     
+                    if( debug_invite ) debug_msg( "-- Trying -- without TS --");
+                    
+                    return;
+                }else{
+                    data[ __TIMESLICE_PLACE__ ] = cb->get_timeslice();
+                    
+                    cb->cb_set_status( cb_ringing );
+                    
+                    cb->set_invite_response_pending();                    
+                    
+                    //cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ( ~BIT7 ) );
+                    cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
                         
-                        data[ __TIMESLICE_PLACE__ ] = 0x00;
-          
-                        send2callboxes( build_cb_package( ext, port, __INVITE__, 
-                            ( char * )data, cb->get_msg_id(), CB_BUFFER_SIZE - __VZ_HEADER_OFFSET__, write_buffer ) );
-          
-                        set_status( cb->sip->status, sip_idle );
-                        
-                        cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
-                         
-                        if( debug_invite ) debug_msg( "-- Trying -- without TS --");
-                        
-                        cb -> set_rtp_port ( 0 );
-                        
-                        cb -> reset_rtp_timer ();
-                        
-                        return;
-                    }else{
-                        data[ __TIMESLICE_PLACE__ ] = cb->get_timeslice();
-                        
-                        cb->cb_set_status( cb_ringing );
-                        
-                        cb->set_invite_response_pending();                    
-                        
-                        cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
-                            
-                        send2callboxes( build_cb_package( ext, port, __INVITE__, 
-                            ( char * )data, cb->get_msg_id(), CB_BUFFER_SIZE - __VZ_HEADER_OFFSET__, write_buffer ) );
-                        
-                        if( debug_invite ) debug_msg("-- %d on TS::%d --", cb->get_ext(), data[ __TIMESLICE_PLACE__ ] );
-                    }
-                }break;
-                case cb_ringing : {
-                    call = cb->invite();
+                    send2callboxes( __build_cb_package__( ext, port, __INVITE__, 
+                        ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
                     
-                    if( cb->get_sip_status() == sip_busy ){
-                        cb->cb_set_status( cb_busy );
-                    }else if( call != NULL ){
-                        if( __find_Call__( v_call, call->get_cb_ext() ) == NULL ) v_call -> add( call );
+                    if( debug_invite ) debug_msg("-- %d on TS::%d --", cb->get_ext(), data[ __TIMESLICE_PLACE__ ] );
+                }
+            }break;
+            case cb_ringing : {
+                call = cb->invite();
+                
+                if( cb->get_sip_status() == sip_busy ){
+                    cb->cb_set_status( cb_busy );
+                }else if( call != NULL ){
+                    if( __find_Call__( v_call, call->get_cb_ext() ) == NULL ) v_call -> add( call );
+                    
+                    call->init_cbx_pkg_idle_timer();
+                    
+                    if( cb->get_sip_status() == sip_on_call ){
                         
-                        call->init_cbx_pkg_idle_timer();
-                        
-                        if( cb->get_sip_status() == sip_on_call ){
-                            
-                            set_status( cb->status, cb_on_call );
-                        
-                            data[ __TIMESLICE_PLACE__ ] = cb->get_timeslice();  
-                            
-                            cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
-                            
-                            send2callboxes( build_cb_package( ext, port, __INVITE__, ( char * )data, 
-                                cb->get_msg_id(), CB_BUFFER_SIZE - __VZ_HEADER_OFFSET__, write_buffer ) );
-                                
-                            cb->set_invite_response_pending();
-                            
-                            if( debug_invite ) debug_msg( "-- ringing -- accepting call request --" );
-                        }
-                    }else{
-                        if( cb->get_sip_status() == sip_denied ) cb->cb_set_status( cb_denied );
-                    }
-                }break;
-                case cb_busy : {
-                    set_status( cb->status, cb_idle );
-                    ts->return_timeslice( cb->get_timeslice() );
-                    cb->set_timeslice( 0x00 );
-                    data[ __TIMESLICE_PLACE__ ] = 0x00;
-                    if( debug_invite ) debug_msg("-- %d on %d --", cb->get_ext(), data[ __TIMESLICE_PLACE__ ] );
-                    
-                    cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
-                    
-                    send2callboxes( build_cb_package( ext, port, __CB_BYE__, 
-                        ( char * )data, cb->get_msg_id(), CB_BUFFER_SIZE - __VZ_HEADER_OFFSET__, write_buffer ) );
-                    
-                    if( debug_invite ) debug_msg( "-- Trying -- denying call request << Busy Here >> --" );
+                        set_status( cb->status, cb_on_call );
                     
-                    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() == cb->get_ext() ){ 
-                            v_call->remove_element( i );
-                            if( call != NULL ) delete( call );
-                            break;
-                        }
+                        data[ __TIMESLICE_PLACE__ ] = cb->get_timeslice();  
+                        
+                        //cb->set_msg_id( ( cb->get_msg_id() &  ~BIT7 ) + 1 );
+                        cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
+                        
+                        send2callboxes( __build_cb_package__( ext, port, __INVITE__, ( char * )data, 
+                            cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
+                        //debug_msg("send ok liga o mic");                        
+                            
+                        cb->set_invite_response_pending();
+                        
+                        if( debug_invite ) debug_msg( "-- ringing -- accepting call request --" );
                     }
-            
-                    cb->send_bye();
-                    set_status( cb->sip->status, sip_idle );
-                    cb -> set_rtp_port ( 0 );
-                    cb -> reset_rtp_timer ();
-                }break;
-                case cb_denied : {
-                    ts->return_timeslice( cb->get_timeslice() );
-                    cb->set_timeslice( 0x00 );
-                    data[ __TIMESLICE_PLACE__ ] = 0x00;
-                    if( debug_invite ) debug_msg("-- %d on %d --", cb->get_ext(), data[ __TIMESLICE_PLACE__ ] );
+                }else{
+                    if( cb->get_sip_status() == sip_denied ) cb->cb_set_status( cb_denied );
+                }
+            }break;
+            case cb_busy : {
+                set_status( cb->status, cb_idle );
+                ts->return_timeslice( cb->get_timeslice() );
+                cb->set_timeslice( 0x00 );
+                data[ __TIMESLICE_PLACE__ ] = 0x00;
+                if( debug_invite ) debug_msg("-- %d on %d --", cb->get_ext(), data[ __TIMESLICE_PLACE__ ] );
+                
+                //cb->set_msg_id( ( cb->get_msg_id() &  ~BIT7 ) + 1 );
+                cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
+                
+                send2callboxes( __build_cb_package__( ext, port, __CB_BYE__, 
+                    ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
+                
+                if( debug_invite ) debug_msg( "-- Trying -- denying call request << Busy Here >> --" );
+                
+                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() == cb->get_ext() ){ 
+                        v_call->remove_element( i );
+                        if( call != NULL ) delete( call );
+                        break;
+                    }
+                }
+        
+                cb->send_bye();
+                set_status( cb->sip->status, sip_idle );
+                //cb->re_start_timer();
+            }break;
+            case cb_denied : {
+                ts->return_timeslice( cb->get_timeslice() );
+                cb->set_timeslice( 0x00 );
+                data[ __TIMESLICE_PLACE__ ] = 0x00;
+                if( debug_invite ) debug_msg("-- %d on %d --", cb->get_ext(), data[ __TIMESLICE_PLACE__ ] );
+                
+                //cb->set_msg_id( ( cb->get_msg_id() &  ~BIT7 ) + 1 );
+                cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
+                
+                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() + 1 ) & ~BIT7 );
-                    
-                    send2callboxes( build_cb_package( ext, port, __CB_BYE__, 
-                        ( char * )data, cb->get_msg_id(), CB_BUFFER_SIZE - __VZ_HEADER_OFFSET__, write_buffer ) );
-                        
-                    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() == cb->get_ext() ){ 
-                            v_call->remove_element( i );
-                            if( call != NULL ) delete( call );
-                            break;
-                        }
+                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() == cb->get_ext() ){ 
+                        v_call->remove_element( i );
+                        if( call != NULL ) delete( call );
+                        break;
                     }
-                    if( debug_invite ) debug_msg( "-- Trying -- denying call request --" );
-                    set_status( cb->status, cb_idle );
-                    set_status( cb->sip->status, sip_idle );
-                    cb -> set_rtp_port ( 0 );
-                    cb -> reset_rtp_timer ();
-                }break;
-            }
+                }
+                //cb->re_start_timer();
+                if( debug_invite ) debug_msg( "-- Trying -- denying call request --" );
+                set_status( cb->status, cb_idle );
+                set_status( cb->sip->status, sip_idle );
+            }break;
         }
     }
 }
\ No newline at end of file