Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Revision:
113:db67ae00550e
Parent:
112:6ae726539ab9
Child:
114:472502b31a12
--- a/call_manager.cpp	Mon Apr 13 12:16:21 2015 +0000
+++ b/call_manager.cpp	Thu Apr 16 12:57:13 2015 +0000
@@ -18,11 +18,10 @@
             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;
             }
@@ -37,11 +36,10 @@
             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;
             }
@@ -59,7 +57,11 @@
 }
 
 /* remove calls por timeout */
-void call_manager( Vector * v_call, Vector * v_cb, uint8_t * data, uint8_t * write_buffer, Timeslice * ts ){
+void call_manager( Vector * v_call, Vector * v_cb, Timeslice * ts ){
+    //end call
+    uint8_t data[ CB_BUFFER_SIZE ];
+    uint8_t write_buffer[ CB_BUFFER_SIZE ];
+    
     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() ){
@@ -78,16 +80,14 @@
                 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->re_start_timer();
-                cb -> reset_cb_status();
-                //cb -> set_rtp_port ( 0 );
-                //cb -> reset_rtp_timer ();
+                cb -> reset_cb_status ();
+                cb -> set_rtp_port ( 0 );
+                cb -> reset_rtp_timer ();
             }
             delete( call );    
         }
@@ -95,150 +95,151 @@
 }
 
 void invite_handler( Vector * v_call, Vector * v_cb, Timeslice * ts, Call_Box * inviting_cb ){
-    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_on_call ){
+    if ( ( v_call != NULL ) && ( v_cb != NULL ) && ( ts != NULL ) )
+    {
+        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( cb->get_status() == cb_idle || cb->get_status() == cb_on_call ) continue;
             
-        //}
-        if( inviting_cb->status == cb_idle ){            
-            inviting_cb->cb_set_status( cb_trying );
-            if( debug_invite ) debug_msg("Request invite cbx status :: cb_trying" );
-        }
-    }
+            int ext = cb->get_ext();
+            int port = cb->get_port();
+            
+            VZ_call * call = NULL;
     
-    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 );
+            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() + 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 ) );
+                        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();
                     
-                    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 );
+                    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 );
                         
-                    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();
-                
-                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();
                         
-                        set_status( cb->status, cb_on_call );
-                    
-                        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 );
+                        if( cb->get_sip_status() == sip_on_call ){
+                            
+                            set_status( cb->status, cb_on_call );
                         
-                        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");                        
+                            data[ __TIMESLICE_PLACE__ ] = cb->get_timeslice();  
+                            
+                            cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
                             
-                        cb->set_invite_response_pending();
-                        
-                        if( debug_invite ) debug_msg( "-- ringing -- accepting call request --" );
+                            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 );
                     }
-                }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;
+                }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 >> --" );
+                    
+                    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->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__ ] );
+                    
+                    cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
                     
-                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;
+                    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;
+                        }
                     }
-                }
-                //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;
+                    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;
+            }
         }
     }
 }
\ No newline at end of file