Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Committer:
klauss
Date:
Tue Nov 25 17:37:56 2014 +0000
Revision:
76:9f5f99dd895a
Parent:
74:81c47fff88a5
Child:
77:e8c0253b57bc
desenvolvendo invite assincrono | validando

Who changed what in which revision?

UserRevisionLine numberNew contents of line
klauss 0:4d17cd9c8f9d 1 #include "call_box.h"
klauss 0:4d17cd9c8f9d 2
klauss 0:4d17cd9c8f9d 3 Call_Box::Call_Box( int ext, int port ){
klauss 0:4d17cd9c8f9d 4 this->ext = ext;
klauss 0:4d17cd9c8f9d 5 this->port = port;
klauss 0:4d17cd9c8f9d 6 t.start();
klauss 0:4d17cd9c8f9d 7 remaining_attempts = __MAX_ATTEMPTS__;
klauss 0:4d17cd9c8f9d 8 timeout = __TIMEOUT__;
klauss 0:4d17cd9c8f9d 9 //sip.set_ext( this->ext );
klauss 0:4d17cd9c8f9d 10 //sip.set_port( this->port );
klauss 4:de46f0d9b14d 11 msg_id = 0x10;
klauss 0:4d17cd9c8f9d 12 timeslice = 0x00;
klauss 0:4d17cd9c8f9d 13 status = cb_idle;
klauss 0:4d17cd9c8f9d 14 //Sip sip( ext, port );
klauss 12:07fd716e0f35 15 //sip = NULL;
klauss 12:07fd716e0f35 16 sip = new Sip( ext, port );
klauss 0:4d17cd9c8f9d 17 }
klauss 0:4d17cd9c8f9d 18
klauss 76:9f5f99dd895a 19 int Call_Box::get_status( void ){ return this->status; }
klauss 76:9f5f99dd895a 20
klauss 76:9f5f99dd895a 21 void Call_Box::cb_set_status( uint8_t status ){ this->status = status; }
klauss 76:9f5f99dd895a 22
klauss 76:9f5f99dd895a 23 int Call_Box::get_sip_status( void ){
klauss 76:9f5f99dd895a 24 if( sip == NULL ) return -1;
klauss 76:9f5f99dd895a 25
klauss 76:9f5f99dd895a 26 else return this->sip->get_status();
klauss 76:9f5f99dd895a 27 }
klauss 76:9f5f99dd895a 28
klauss 76:9f5f99dd895a 29 int Call_Box::set_sip_status( uint8_t status ){
klauss 76:9f5f99dd895a 30 if( sip == NULL ) return( -1 );
klauss 76:9f5f99dd895a 31
klauss 76:9f5f99dd895a 32 sip->sip_set_status( status );
klauss 76:9f5f99dd895a 33
klauss 76:9f5f99dd895a 34 return( 0 );
klauss 76:9f5f99dd895a 35 }
klauss 76:9f5f99dd895a 36
klauss 0:4d17cd9c8f9d 37 Call_Box::~Call_Box( void ){
klauss 0:4d17cd9c8f9d 38 if( sip != NULL ) delete( sip );
klauss 0:4d17cd9c8f9d 39 }
klauss 0:4d17cd9c8f9d 40
klauss 0:4d17cd9c8f9d 41 int Call_Box::get_port( void ){ return( this->port ); }
klauss 0:4d17cd9c8f9d 42 int Call_Box::get_ext( void ){ return( this->ext ); }
klauss 0:4d17cd9c8f9d 43
klauss 0:4d17cd9c8f9d 44 float Call_Box::get_elapsed_time( void ){ return( this->t.read_ms() ); }
klauss 0:4d17cd9c8f9d 45
klauss 0:4d17cd9c8f9d 46 void Call_Box::reset_elapsed_time( void ){
klauss 0:4d17cd9c8f9d 47 this->t.reset();
klauss 0:4d17cd9c8f9d 48 remaining_attempts = __MAX_ATTEMPTS__;
klauss 3:cd9148672e25 49 // timeout = __TIMEOUT__;
klauss 0:4d17cd9c8f9d 50 }
klauss 0:4d17cd9c8f9d 51
klauss 0:4d17cd9c8f9d 52 bool Call_Box::is_timeout( void ){
klauss 0:4d17cd9c8f9d 53 return( t.read() > timeout ) ? true : false;
klauss 0:4d17cd9c8f9d 54 }
klauss 0:4d17cd9c8f9d 55
klauss 0:4d17cd9c8f9d 56 uint8_t Call_Box::reconfigure_timeout( void ){
klauss 3:cd9148672e25 57 //static int count = 1;
klauss 3:cd9148672e25 58 //if( timeout != __MAX_TIMEOUT__ ) timeout = __STEP__ * count++;
klauss 0:4d17cd9c8f9d 59 t.reset();
klauss 67:cdedc64d9921 60 return( remaining_attempts-- );
klauss 0:4d17cd9c8f9d 61 }
klauss 0:4d17cd9c8f9d 62
klauss 0:4d17cd9c8f9d 63 void Call_Box::registry( void ){
klauss 0:4d17cd9c8f9d 64 if( this->sip == NULL ){
klauss 0:4d17cd9c8f9d 65 this->sip = new Sip( ext, port );
klauss 0:4d17cd9c8f9d 66
klauss 0:4d17cd9c8f9d 67 sip->registry();
klauss 0:4d17cd9c8f9d 68
klauss 0:4d17cd9c8f9d 69 delete( sip );
klauss 0:4d17cd9c8f9d 70 this->sip = NULL;
klauss 0:4d17cd9c8f9d 71 }else{
klauss 0:4d17cd9c8f9d 72 sip->registry();
klauss 0:4d17cd9c8f9d 73 }
klauss 0:4d17cd9c8f9d 74 }
klauss 0:4d17cd9c8f9d 75
klauss 0:4d17cd9c8f9d 76 void Call_Box::unregistry( void ){
klauss 0:4d17cd9c8f9d 77 if( this->sip == NULL ){
klauss 0:4d17cd9c8f9d 78 this->sip = new Sip( ext, port );
klauss 0:4d17cd9c8f9d 79
klauss 0:4d17cd9c8f9d 80 sip->send_unregistry_pkg();
klauss 0:4d17cd9c8f9d 81
klauss 0:4d17cd9c8f9d 82 delete( sip );
klauss 0:4d17cd9c8f9d 83 this->sip = NULL;
klauss 0:4d17cd9c8f9d 84 }else{
klauss 0:4d17cd9c8f9d 85 sip->send_unregistry_pkg();
klauss 0:4d17cd9c8f9d 86 }
klauss 0:4d17cd9c8f9d 87 }
klauss 0:4d17cd9c8f9d 88
klauss 0:4d17cd9c8f9d 89 VZ_call * Call_Box::invite( void ){
klauss 29:7246460b73f8 90 t.stop();
klauss 29:7246460b73f8 91 VZ_call * call = NULL;
klauss 29:7246460b73f8 92
klauss 0:4d17cd9c8f9d 93 if( this->sip == NULL ){
klauss 0:4d17cd9c8f9d 94 this->sip = new Sip( ext, port );
klauss 0:4d17cd9c8f9d 95
klauss 29:7246460b73f8 96 call = sip->invite();
klauss 0:4d17cd9c8f9d 97
klauss 13:ae278302dffe 98 delete( sip );
klauss 13:ae278302dffe 99 this->sip = NULL;
klauss 29:7246460b73f8 100 }else{
klauss 29:7246460b73f8 101 call = sip->invite();
klauss 0:4d17cd9c8f9d 102 }
klauss 29:7246460b73f8 103
klauss 29:7246460b73f8 104 if( debug_cb ) debug_msg("Call returned value :: %p ", (void * )call );
klauss 29:7246460b73f8 105 if( call == NULL ) t.start();
klauss 29:7246460b73f8 106 return( call );
klauss 0:4d17cd9c8f9d 107 }
klauss 0:4d17cd9c8f9d 108
klauss 0:4d17cd9c8f9d 109 /* Retorna
klauss 0:4d17cd9c8f9d 110 = 0 :: ok
klauss 0:4d17cd9c8f9d 111 < 0 :: tive problemas
klauss 0:4d17cd9c8f9d 112 > 0 :: devo remover essa call do vetor de calls
klauss 0:4d17cd9c8f9d 113 */
klauss 0:4d17cd9c8f9d 114 int Call_Box::listen_SIP_server( void ){
klauss 0:4d17cd9c8f9d 115 if( this->sip == NULL ){
klauss 0:4d17cd9c8f9d 116 if( status == cb_on_call || status == cb_idle ){
klauss 0:4d17cd9c8f9d 117 this->sip = new Sip( ext, port );
klauss 0:4d17cd9c8f9d 118 int out_read = sip->listen_SIP_server();
klauss 0:4d17cd9c8f9d 119 delete( sip );
klauss 0:4d17cd9c8f9d 120 this->sip = NULL;
klauss 0:4d17cd9c8f9d 121 return( out_read );
klauss 0:4d17cd9c8f9d 122 }else return( 0 );
klauss 0:4d17cd9c8f9d 123 }else{
klauss 0:4d17cd9c8f9d 124 if( status == cb_on_call || status == cb_idle ){
klauss 13:ae278302dffe 125 return ( sip->listen_SIP_server() );
klauss 13:ae278302dffe 126 } else return( 0 );
klauss 0:4d17cd9c8f9d 127 }
klauss 0:4d17cd9c8f9d 128 }
klauss 0:4d17cd9c8f9d 129
klauss 0:4d17cd9c8f9d 130 void Call_Box::set_msg_id( uint8_t msg_id ){
klauss 0:4d17cd9c8f9d 131 this->msg_id = msg_id;
klauss 0:4d17cd9c8f9d 132 }
klauss 0:4d17cd9c8f9d 133 uint8_t Call_Box::get_msg_id( void ){ return( this->msg_id ); }
klauss 0:4d17cd9c8f9d 134
klauss 0:4d17cd9c8f9d 135 void Call_Box::set_timeslice( uint8_t timeslice ){
klauss 0:4d17cd9c8f9d 136 this->timeslice = timeslice;
klauss 0:4d17cd9c8f9d 137 }
klauss 0:4d17cd9c8f9d 138 uint8_t Call_Box::get_timeslice( void ){ return( this->timeslice ); }
klauss 0:4d17cd9c8f9d 139
klauss 0:4d17cd9c8f9d 140 //void Call_Box::set_sip( Sip * sip ){
klauss 0:4d17cd9c8f9d 141 // this->sip = sip;
klauss 0:4d17cd9c8f9d 142 //}
klauss 0:4d17cd9c8f9d 143
klauss 0:4d17cd9c8f9d 144 void Call_Box::send_bye( void ){
klauss 0:4d17cd9c8f9d 145 if( this->sip == NULL ){
klauss 0:4d17cd9c8f9d 146 this->sip = new Sip( ext, port );
klauss 0:4d17cd9c8f9d 147
klauss 0:4d17cd9c8f9d 148 sip->send_bye();
klauss 13:ae278302dffe 149
klauss 13:ae278302dffe 150 delete( sip );
klauss 0:4d17cd9c8f9d 151 sip = NULL;
klauss 0:4d17cd9c8f9d 152 }else{
klauss 0:4d17cd9c8f9d 153 sip->send_bye();
klauss 0:4d17cd9c8f9d 154 }
klauss 1:a1758104fa1d 155 }
klauss 1:a1758104fa1d 156
klauss 1:a1758104fa1d 157 void Call_Box::reset_sip( void ){
klauss 1:a1758104fa1d 158 if( this->sip != NULL ) delete( this->sip );
klauss 1:a1758104fa1d 159
klauss 1:a1758104fa1d 160 this->sip = new Sip( ext, port );
klauss 14:22a35f575502 161 }
klauss 14:22a35f575502 162
klauss 14:22a35f575502 163 void Call_Box::set_sip_status( int status ){
klauss 14:22a35f575502 164 if( this->sip != NULL ){
klauss 14:22a35f575502 165 this->sip->status = status;
klauss 14:22a35f575502 166 }else{
klauss 29:7246460b73f8 167 if( debug_cb) debug_msg("Sem objeto sip vinculado");
klauss 14:22a35f575502 168 }
klauss 29:7246460b73f8 169 }
klauss 29:7246460b73f8 170
klauss 29:7246460b73f8 171 void Call_Box::re_start_timer( void ){
klauss 29:7246460b73f8 172 t.start();
klauss 0:4d17cd9c8f9d 173 }