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 Sep 01 17:21:11 2015 +0000
Revision:
132:05cd37f7e007
Parent:
126:1f90756250fb
Child:
135:2f4290590e51
Substitui??o de; send_msg -> vz_printf; debug_msg -> vz_debug

Who changed what in which revision?

UserRevisionLine numberNew contents of line
klauss 0:4d17cd9c8f9d 1 #include "call_box.h"
klauss 0:4d17cd9c8f9d 2
klauss 121:ee02790d00b7 3 Call_Box::Call_Box( const int ext, const int port )
klauss 121:ee02790d00b7 4 {
klauss 0:4d17cd9c8f9d 5 this->ext = ext;
klauss 0:4d17cd9c8f9d 6 this->port = port;
klauss 121:ee02790d00b7 7
klauss 121:ee02790d00b7 8 t.start ();
klauss 4:de46f0d9b14d 9 msg_id = 0x10;
klauss 0:4d17cd9c8f9d 10 timeslice = 0x00;
klauss 0:4d17cd9c8f9d 11 status = cb_idle;
klauss 121:ee02790d00b7 12
klauss 132:05cd37f7e007 13 shift_port = cm -> get_shift_port ();
klauss 121:ee02790d00b7 14
klauss 121:ee02790d00b7 15 sip = new Sip( ext, ext + shift_port );
klauss 121:ee02790d00b7 16
klauss 121:ee02790d00b7 17 if ( sip == NULL )
klauss 89:0fe315117b00 18 {
klauss 89:0fe315117b00 19 memory_is_over = true;
klauss 132:05cd37f7e007 20 if ( debug_memory ) vz_debug ("[%d] Sip allocation fail", this->ext );
klauss 121:ee02790d00b7 21 } else {
klauss 121:ee02790d00b7 22 sip_socket_fd = sip->get_socket_fd ();
klauss 89:0fe315117b00 23 }
klauss 87:679ee0d594a9 24
klauss 81:3656f00ab3db 25 invite_response = true;
klauss 81:3656f00ab3db 26 bye_response = true;
klauss 92:92df17f538a8 27 invite_retry_count = MAX_INVITE_RETRY;
klauss 85:b6f2dc1d0f4f 28 cb_new_counter++;
klauss 119:ee6a53069455 29 invite_try_number = 0;
klauss 121:ee02790d00b7 30 overflow = false;
klauss 123:1d395b5a4cad 31 overflow_times = 0;
klauss 132:05cd37f7e007 32 invite_counter = 0;
klauss 78:1353744f01e1 33 }
klauss 78:1353744f01e1 34
klauss 121:ee02790d00b7 35 int Call_Box::get_status ( void ) { return this->status; }
klauss 121:ee02790d00b7 36
klauss 121:ee02790d00b7 37 void Call_Box::cb_set_status ( const uint8_t status ){ this->status = status; }
klauss 78:1353744f01e1 38
klauss 121:ee02790d00b7 39 int Call_Box::get_sip_status ( void )
klauss 121:ee02790d00b7 40 {
klauss 121:ee02790d00b7 41 if ( sip == NULL ) return ( -1 );
klauss 78:1353744f01e1 42
klauss 121:ee02790d00b7 43 return ( sip -> get_status () );
klauss 0:4d17cd9c8f9d 44 }
klauss 0:4d17cd9c8f9d 45
klauss 0:4d17cd9c8f9d 46 Call_Box::~Call_Box( void ){
klauss 126:1f90756250fb 47 if ( sip not_eq NULL ) delete ( sip );
klauss 85:b6f2dc1d0f4f 48 cb_delete_counter++;
klauss 0:4d17cd9c8f9d 49 }
klauss 0:4d17cd9c8f9d 50
klauss 121:ee02790d00b7 51 int Call_Box::get_port ( void ) { return ( this->port ); }
klauss 119:ee6a53069455 52
klauss 121:ee02790d00b7 53 int Call_Box::get_ext ( void ) { return ( this->ext ); }
klauss 0:4d17cd9c8f9d 54
klauss 123:1d395b5a4cad 55 uint16_t Call_Box::get_elapsed_time ( void ) { return ( ( uint16_t ) this -> t.read_ms () ); }
klauss 0:4d17cd9c8f9d 56
klauss 121:ee02790d00b7 57 void Call_Box::reset_elapsed_time ( void )
klauss 121:ee02790d00b7 58 {
klauss 123:1d395b5a4cad 59 this -> t.stop ();
klauss 121:ee02790d00b7 60 this -> t.reset ();
klauss 123:1d395b5a4cad 61 this -> t.start ();
klauss 123:1d395b5a4cad 62 overflow = false;
klauss 123:1d395b5a4cad 63 overflow_times = 0;
klauss 0:4d17cd9c8f9d 64 }
klauss 0:4d17cd9c8f9d 65
klauss 126:1f90756250fb 66 int Call_Box::registry ( void )
klauss 121:ee02790d00b7 67 {
klauss 119:ee6a53069455 68 if ( drop_registry_pkg )
klauss 119:ee6a53069455 69 {
klauss 132:05cd37f7e007 70 vz_printf ("[%d] Dropando registry pck", this->ext );
klauss 126:1f90756250fb 71 return -5;
klauss 119:ee6a53069455 72 }
klauss 119:ee6a53069455 73
klauss 132:05cd37f7e007 74 reset_elapsed_time ();
klauss 132:05cd37f7e007 75
klauss 126:1f90756250fb 76 if ( this -> sip not_eq NULL )
klauss 119:ee6a53069455 77 {
klauss 126:1f90756250fb 78 int return_value = sip -> registry ();
klauss 126:1f90756250fb 79
klauss 126:1f90756250fb 80 if ( return_value > 0 )
klauss 132:05cd37f7e007 81 {
klauss 132:05cd37f7e007 82 if ( debug_aging ) vz_printf ( "[%d] Registered", this->ext );
klauss 126:1f90756250fb 83
klauss 126:1f90756250fb 84 return ( return_value );
klauss 121:ee02790d00b7 85 }
klauss 119:ee6a53069455 86 } else {
klauss 132:05cd37f7e007 87 vz_debug ("[%d] Eu definitivamente nao deveria estar aqui!!!", this->ext );
klauss 106:a34fcf9f0e02 88 deleted_sip++;
klauss 126:1f90756250fb 89 return ( -3 );
klauss 0:4d17cd9c8f9d 90 }
klauss 126:1f90756250fb 91
klauss 126:1f90756250fb 92 return ( 0 );
klauss 0:4d17cd9c8f9d 93 }
klauss 0:4d17cd9c8f9d 94
klauss 119:ee6a53069455 95 VZ_call * Call_Box::invite ( void )
klauss 119:ee6a53069455 96 {
klauss 29:7246460b73f8 97 VZ_call * call = NULL;
klauss 29:7246460b73f8 98
klauss 126:1f90756250fb 99 if ( this->sip not_eq NULL )
klauss 119:ee6a53069455 100 {
klauss 121:ee02790d00b7 101 call = sip->invite ();
klauss 119:ee6a53069455 102 } else {
klauss 132:05cd37f7e007 103 vz_debug ("[%d] Eu definitivamente nao deveria estar aqui!!!", this->ext );
klauss 0:4d17cd9c8f9d 104
klauss 119:ee6a53069455 105 deleted_sip++;
klauss 0:4d17cd9c8f9d 106 }
klauss 29:7246460b73f8 107
klauss 132:05cd37f7e007 108 if ( debug_cb ) vz_printf ("[%d] Call returned value :: %p ", this->ext, ( void * ) call );
klauss 123:1d395b5a4cad 109
klauss 121:ee02790d00b7 110 if ( call == NULL ) t.start ();
klauss 121:ee02790d00b7 111
klauss 121:ee02790d00b7 112 return ( call );
klauss 0:4d17cd9c8f9d 113 }
klauss 0:4d17cd9c8f9d 114
klauss 0:4d17cd9c8f9d 115 /* Retorna
klauss 0:4d17cd9c8f9d 116 = 0 :: ok
klauss 0:4d17cd9c8f9d 117 < 0 :: tive problemas
klauss 0:4d17cd9c8f9d 118 > 0 :: devo remover essa call do vetor de calls
klauss 0:4d17cd9c8f9d 119 */
klauss 121:ee02790d00b7 120 int Call_Box::listen_SIP_server ( void )
klauss 121:ee02790d00b7 121 {
klauss 121:ee02790d00b7 122 if ( this->sip == NULL )
klauss 119:ee6a53069455 123 {
klauss 132:05cd37f7e007 124 vz_debug ("[%d] Eu definitivamente nao deveria estar aqui!!!", this->ext );
klauss 119:ee6a53069455 125
klauss 114:472502b31a12 126 deleted_sip++;
klauss 119:ee6a53069455 127
klauss 119:ee6a53069455 128 return ( -3 );
klauss 119:ee6a53069455 129 } else {
klauss 126:1f90756250fb 130 if ( status == cb_on_call or status == cb_idle )
klauss 121:ee02790d00b7 131 {
klauss 121:ee02790d00b7 132 return ( sip -> listen_SIP_server () );
klauss 119:ee6a53069455 133 } else return ( 0 );
klauss 0:4d17cd9c8f9d 134 }
klauss 0:4d17cd9c8f9d 135 }
klauss 0:4d17cd9c8f9d 136
klauss 121:ee02790d00b7 137 void Call_Box::set_msg_id ( const uint8_t msg_id ) {
klauss 78:1353744f01e1 138 this->msg_id = ( msg_id > 0x10 ) ? msg_id : 0x11;
klauss 0:4d17cd9c8f9d 139 }
klauss 121:ee02790d00b7 140 uint8_t Call_Box::get_msg_id ( void ) { return ( this->msg_id ); }
klauss 0:4d17cd9c8f9d 141
klauss 121:ee02790d00b7 142 void Call_Box::set_timeslice ( const uint8_t timeslice ) {
klauss 0:4d17cd9c8f9d 143 this->timeslice = timeslice;
klauss 0:4d17cd9c8f9d 144 }
klauss 121:ee02790d00b7 145
klauss 121:ee02790d00b7 146 uint8_t Call_Box::get_timeslice ( void ) { return ( this->timeslice ); }
klauss 0:4d17cd9c8f9d 147
klauss 121:ee02790d00b7 148 void Call_Box::send_bye ( void )
klauss 121:ee02790d00b7 149 {
klauss 132:05cd37f7e007 150 if ( this -> sip == NULL )
klauss 119:ee6a53069455 151 {
klauss 132:05cd37f7e007 152 vz_debug ("[%d] Eu definitivamente nao deveria estar aqui!!!", this -> ext );
klauss 0:4d17cd9c8f9d 153
klauss 132:05cd37f7e007 154 deleted_sip ++;
klauss 119:ee6a53069455 155 } else {
klauss 121:ee02790d00b7 156 sip -> send_bye ();
klauss 0:4d17cd9c8f9d 157 }
klauss 1:a1758104fa1d 158 }
klauss 1:a1758104fa1d 159
klauss 121:ee02790d00b7 160 void Call_Box::reset_sip ( void )
klauss 121:ee02790d00b7 161 {
klauss 132:05cd37f7e007 162 vz_debug ("[%d] reset_sip", this->ext );
klauss 1:a1758104fa1d 163
klauss 126:1f90756250fb 164 if ( this->sip not_eq NULL )
klauss 114:472502b31a12 165 {
klauss 121:ee02790d00b7 166 delete ( this->sip );
klauss 132:05cd37f7e007 167 vz_debug ("[%d] deletei", this->ext );
klauss 114:472502b31a12 168 }
klauss 114:472502b31a12 169
klauss 121:ee02790d00b7 170 this->sip = new Sip ( ext, ext + shift_port );
klauss 132:05cd37f7e007 171 vz_debug ( "[%d ]sobrescrevi", this->ext );
klauss 114:472502b31a12 172
klauss 106:a34fcf9f0e02 173 deleted_sip++;
klauss 87:679ee0d594a9 174
klauss 121:ee02790d00b7 175 if ( sip == NULL ) memory_is_over = true;
klauss 14:22a35f575502 176 }
klauss 14:22a35f575502 177
klauss 121:ee02790d00b7 178 void Call_Box::set_sip_status ( const uint8_t new_sip_status )
klauss 121:ee02790d00b7 179 {
klauss 126:1f90756250fb 180 if ( this->sip not_eq NULL )
klauss 121:ee02790d00b7 181 {
klauss 121:ee02790d00b7 182 this -> sip -> sip_set_status ( new_sip_status );
klauss 121:ee02790d00b7 183 } else
klauss 121:ee02790d00b7 184 {
klauss 132:05cd37f7e007 185 if ( debug_cb) vz_debug ("[%d] Sip equals NULL o.O", this->ext );
klauss 109:a5b8264ffbbc 186 deleted_sip++;
klauss 132:05cd37f7e007 187 vz_debug ("[%d] Sip equals NULL o.O", this->ext );
klauss 114:472502b31a12 188 }
klauss 29:7246460b73f8 189 }
klauss 29:7246460b73f8 190
klauss 119:ee6a53069455 191 void Call_Box::set_invite_response_ok ( void )
klauss 119:ee6a53069455 192 {
klauss 121:ee02790d00b7 193 this -> invite_response = true;
klauss 132:05cd37f7e007 194 if ( debug_invite ) vz_debug ("[%d] Invite response :: ok", this->ext );
klauss 81:3656f00ab3db 195 }
klauss 81:3656f00ab3db 196
klauss 121:ee02790d00b7 197 void Call_Box::set_invite_response_pending ( void ) { this->invite_response = false; }
klauss 117:e9facba9db27 198
klauss 121:ee02790d00b7 199 bool Call_Box::get_invite_response ( void ) { return ( this->invite_response ); }
klauss 81:3656f00ab3db 200
klauss 121:ee02790d00b7 201 void Call_Box::invite_retry_count_reset ( void ) { invite_retry_count = MAX_INVITE_RETRY; }
klauss 117:e9facba9db27 202
klauss 119:ee6a53069455 203 uint16_t Call_Box::get_invite_retry_count( void ){
klauss 92:92df17f538a8 204 return ( invite_retry_count ) ? invite_retry_count-- : 0;
klauss 92:92df17f538a8 205 }
klauss 92:92df17f538a8 206
klauss 121:ee02790d00b7 207 void Call_Box::set_bye_response_ok ( void ) { this->bye_response = true; }
klauss 119:ee6a53069455 208
klauss 121:ee02790d00b7 209 void Call_Box::set_bye_response_pending ( void ) { this->bye_response = false; }
klauss 119:ee6a53069455 210
klauss 121:ee02790d00b7 211 bool Call_Box::get_bye_response( void ) { return( this->bye_response ); }
klauss 89:0fe315117b00 212
klauss 89:0fe315117b00 213
klauss 121:ee02790d00b7 214 int Call_Box::get_sip_socket_fd ( void ) { return ( sip_socket_fd ); }
klauss 89:0fe315117b00 215
klauss 121:ee02790d00b7 216 int Call_Box::sip_udp_incomming_pkg ( void ) {
klauss 121:ee02790d00b7 217 return sip -> udp_incomming_pkg ();
klauss 91:c2a86b1f8aaa 218 }
klauss 91:c2a86b1f8aaa 219
klauss 126:1f90756250fb 220 void Call_Box::reset_cb_status ( void ) { if ( sip not_eq NULL ) sip->reset_call(); }
klauss 97:8985817e8847 221
klauss 121:ee02790d00b7 222 int Call_Box::get_sip_ext ( void ) { return this -> sip->get_ext (); }
klauss 119:ee6a53069455 223
klauss 121:ee02790d00b7 224 int Call_Box::get_sip_port ( void ) { return this -> sip->get_port (); }
klauss 99:e80850c51106 225
klauss 119:ee6a53069455 226 int Call_Box::get_timer ( void )
klauss 119:ee6a53069455 227 {
klauss 119:ee6a53069455 228 int now = t.read ();
klauss 126:1f90756250fb 229
klauss 126:1f90756250fb 230 if ( now >= 1500 or now < 0 )
klauss 123:1d395b5a4cad 231 {
klauss 123:1d395b5a4cad 232 this -> t.stop ();
klauss 123:1d395b5a4cad 233 this -> t.reset ();
klauss 123:1d395b5a4cad 234 this -> t.start ();
klauss 121:ee02790d00b7 235 overflow = true;
klauss 126:1f90756250fb 236 if ( overflow_times not_eq 0xfe ) overflow_times++;
klauss 121:ee02790d00b7 237 }
klauss 121:ee02790d00b7 238
klauss 123:1d395b5a4cad 239 return ( now );
klauss 119:ee6a53069455 240 }
klauss 108:18a3702650f3 241
klauss 108:18a3702650f3 242 int Call_Box::get_rtp_port ( void )
klauss 108:18a3702650f3 243 {
klauss 126:1f90756250fb 244 if ( this -> sip not_eq NULL )
klauss 121:ee02790d00b7 245 {
klauss 121:ee02790d00b7 246 return this -> sip -> get_sip_rtp_port ();
klauss 121:ee02790d00b7 247 } else {
klauss 132:05cd37f7e007 248 vz_debug ("[%d] Eu definitivamente nao deveria estar aqui!!!", this->ext );
klauss 119:ee6a53069455 249
klauss 109:a5b8264ffbbc 250 deleted_sip++;
klauss 119:ee6a53069455 251
klauss 108:18a3702650f3 252 return -1;
klauss 108:18a3702650f3 253 }
klauss 108:18a3702650f3 254 }
klauss 108:18a3702650f3 255
klauss 121:ee02790d00b7 256 void Call_Box::set_rtp_port ( const int new_rtp_port )
klauss 108:18a3702650f3 257 {
klauss 126:1f90756250fb 258 if ( this->sip not_eq NULL )
klauss 121:ee02790d00b7 259 {
klauss 108:18a3702650f3 260 this->sip->set_sip_rtp_port( new_rtp_port );
klauss 114:472502b31a12 261 }else{
klauss 132:05cd37f7e007 262 vz_debug ("[%d] Eu definitivamente nao deveria estar aqui!!!", this->ext );
klauss 119:ee6a53069455 263
klauss 109:a5b8264ffbbc 264 deleted_sip++;
klauss 114:472502b31a12 265 }
klauss 108:18a3702650f3 266 }
klauss 108:18a3702650f3 267
klauss 119:ee6a53069455 268 void Call_Box::init_rtp_timer ( void )
klauss 119:ee6a53069455 269 {
klauss 121:ee02790d00b7 270 this -> rtp_timer.start ();
klauss 119:ee6a53069455 271 }
klauss 119:ee6a53069455 272
klauss 119:ee6a53069455 273 void Call_Box::reset_rtp_timer ( void )
klauss 119:ee6a53069455 274 {
klauss 121:ee02790d00b7 275 this -> rtp_timer.stop ();
klauss 121:ee02790d00b7 276 this -> rtp_timer.reset ();
klauss 119:ee6a53069455 277 }
klauss 119:ee6a53069455 278
klauss 119:ee6a53069455 279 bool Call_Box::is_rtp_timer_timeout ( void )
klauss 119:ee6a53069455 280 {
klauss 119:ee6a53069455 281 return ( rtp_timer.read () > RTP_REQUEST_PORT_TIMEOUT ) ? true : false;
klauss 119:ee6a53069455 282 }
klauss 119:ee6a53069455 283
klauss 121:ee02790d00b7 284 int Call_Box::get_rtp_timer ( void ) { return ( rtp_timer.read () ); }
klauss 119:ee6a53069455 285
klauss 109:a5b8264ffbbc 286 int Call_Box::print_yourself ( void )
klauss 109:a5b8264ffbbc 287 {
klauss 132:05cd37f7e007 288 vz_printf ("\r\n");
klauss 132:05cd37f7e007 289 vz_printf ("Values ::\r\n");
klauss 109:a5b8264ffbbc 290 switch( status ) {
klauss 109:a5b8264ffbbc 291 case cb_idle : {
klauss 132:05cd37f7e007 292 vz_printf ("status :: cb_idle" );
klauss 109:a5b8264ffbbc 293 break;
klauss 109:a5b8264ffbbc 294 }
klauss 109:a5b8264ffbbc 295 case cb_ringing : {
klauss 132:05cd37f7e007 296 vz_printf ("status :: cb_ringing" );
klauss 109:a5b8264ffbbc 297 break;
klauss 109:a5b8264ffbbc 298 }
klauss 109:a5b8264ffbbc 299 case cb_trying : {
klauss 132:05cd37f7e007 300 vz_printf ("status :: cb_trying" );
klauss 109:a5b8264ffbbc 301 break;
klauss 109:a5b8264ffbbc 302 }
klauss 109:a5b8264ffbbc 303 case cb_on_call : {
klauss 132:05cd37f7e007 304 vz_printf ("status :: cb_on_call" );
klauss 109:a5b8264ffbbc 305 break;
klauss 109:a5b8264ffbbc 306 }
klauss 109:a5b8264ffbbc 307 case cb_busy : {
klauss 132:05cd37f7e007 308 vz_printf ("status :: cb_busy" );
klauss 109:a5b8264ffbbc 309 break;
klauss 109:a5b8264ffbbc 310 }
klauss 109:a5b8264ffbbc 311 case cb_denied : {
klauss 132:05cd37f7e007 312 vz_printf ("status :: cb_denied" );
klauss 109:a5b8264ffbbc 313 break;
klauss 109:a5b8264ffbbc 314 }
klauss 109:a5b8264ffbbc 315 }
klauss 132:05cd37f7e007 316 vz_printf ("ext :: %i", ext );
klauss 132:05cd37f7e007 317 vz_printf ("port :: %i", port );
klauss 132:05cd37f7e007 318 vz_printf ("Timer t :: %d", ( int )t.read () );
klauss 132:05cd37f7e007 319 vz_printf ("overflow_times :: %u", overflow_times );
klauss 132:05cd37f7e007 320 vz_printf ("msg_id :: %d", msg_id );
klauss 132:05cd37f7e007 321 vz_printf ("timeslice :: %u", timeslice );
klauss 132:05cd37f7e007 322 vz_printf ("next_aging_type :: %u", next_aging_type );
klauss 132:05cd37f7e007 323 vz_printf ("invite_response :: %s", ( invite_response ) ? "true" : "false" );
klauss 132:05cd37f7e007 324 vz_printf ("invite_retry_count :: %u", invite_retry_count );
klauss 132:05cd37f7e007 325 vz_printf ("bye_response :: %s", ( bye_response ) ? "true" : "false" );
klauss 132:05cd37f7e007 326 vz_printf ("sip_socket_fd :: %d", sip_socket_fd );
klauss 132:05cd37f7e007 327 vz_printf ("\r\n");
klauss 109:a5b8264ffbbc 328
klauss 109:a5b8264ffbbc 329 return ( sizeof( Call_Box ) );
klauss 117:e9facba9db27 330 }
klauss 119:ee6a53069455 331
klauss 121:ee02790d00b7 332 int Call_Box::call_init ( const int timeslice )
klauss 117:e9facba9db27 333 {
klauss 119:ee6a53069455 334 invite_timer.reset ();
klauss 117:e9facba9db27 335
klauss 119:ee6a53069455 336 invite_timer.start ();
klauss 119:ee6a53069455 337
klauss 119:ee6a53069455 338 this->timeslice = timeslice;
klauss 119:ee6a53069455 339
klauss 119:ee6a53069455 340 this->status = cb_ringing;
klauss 119:ee6a53069455 341
klauss 119:ee6a53069455 342 set_invite_response_pending ();
klauss 119:ee6a53069455 343
klauss 119:ee6a53069455 344 invite_try_number = 0;
klauss 119:ee6a53069455 345
klauss 119:ee6a53069455 346 msg_id_update ();
klauss 119:ee6a53069455 347
klauss 119:ee6a53069455 348 return 0;
klauss 117:e9facba9db27 349 }
klauss 119:ee6a53069455 350
klauss 121:ee02790d00b7 351 int Call_Box::call_end ( const bool send_bye_to_ast )
klauss 117:e9facba9db27 352 {
klauss 132:05cd37f7e007 353 uint8_t timeslice = this -> timeslice;
klauss 119:ee6a53069455 354
klauss 132:05cd37f7e007 355 this -> timeslice = 0;
klauss 119:ee6a53069455 356
klauss 132:05cd37f7e007 357 this -> status = cb_idle;
klauss 119:ee6a53069455 358
klauss 126:1f90756250fb 359 if ( sip not_eq NULL ) {
klauss 119:ee6a53069455 360 sip -> sip_set_status ( sip_idle );
klauss 119:ee6a53069455 361 } else {
klauss 132:05cd37f7e007 362 if( debug_cb ) vz_debug ("[%d] Sip equals NULL o.O", this -> ext );
klauss 119:ee6a53069455 363 }
klauss 119:ee6a53069455 364
klauss 119:ee6a53069455 365 set_rtp_port ( 0 );
klauss 119:ee6a53069455 366
klauss 119:ee6a53069455 367 reset_rtp_timer ();
klauss 119:ee6a53069455 368
klauss 119:ee6a53069455 369 if ( send_bye_to_ast )
klauss 119:ee6a53069455 370 {
klauss 126:1f90756250fb 371 if ( timeslice not_eq 0 ) send_bye ();
klauss 119:ee6a53069455 372 }
klauss 119:ee6a53069455 373
klauss 119:ee6a53069455 374 reset_cb_status ();
klauss 119:ee6a53069455 375
klauss 119:ee6a53069455 376 invite_timer.stop ();
klauss 119:ee6a53069455 377
klauss 119:ee6a53069455 378 invite_timer.reset ();
klauss 119:ee6a53069455 379
klauss 119:ee6a53069455 380 invite_try_number = 0;
klauss 119:ee6a53069455 381
klauss 119:ee6a53069455 382 msg_id_update ();
klauss 119:ee6a53069455 383
klauss 119:ee6a53069455 384 return timeslice;
klauss 117:e9facba9db27 385 }
klauss 119:ee6a53069455 386
klauss 119:ee6a53069455 387 int Call_Box::call_confirmed ( void )
klauss 119:ee6a53069455 388 {
klauss 119:ee6a53069455 389 set_invite_response_pending ();
klauss 119:ee6a53069455 390
klauss 121:ee02790d00b7 391 this -> status = cb_on_call;
klauss 119:ee6a53069455 392
klauss 119:ee6a53069455 393 msg_id_update ();
klauss 119:ee6a53069455 394
klauss 119:ee6a53069455 395 return 0;
klauss 119:ee6a53069455 396 }
klauss 119:ee6a53069455 397
klauss 119:ee6a53069455 398 uint8_t Call_Box::msg_id_update ( void )
klauss 123:1d395b5a4cad 399 {
klauss 126:1f90756250fb 400 uint8_t update = ( msg_id + 1 ) bitand ( uint8_t ) compl BIT7;
klauss 126:1f90756250fb 401
klauss 126:1f90756250fb 402 this->msg_id = ( update > 0x10 ) ? update : 0x11;
klauss 119:ee6a53069455 403
klauss 119:ee6a53069455 404 return this->msg_id;
klauss 119:ee6a53069455 405 }
klauss 119:ee6a53069455 406
klauss 119:ee6a53069455 407 void Call_Box::call_config ( void )
klauss 117:e9facba9db27 408 {
klauss 119:ee6a53069455 409 set_invite_response_ok ();
klauss 119:ee6a53069455 410 reset_rtp_timer ();
klauss 119:ee6a53069455 411 init_rtp_timer ();
klauss 119:ee6a53069455 412 }
klauss 119:ee6a53069455 413
klauss 119:ee6a53069455 414 bool Call_Box::time_to_retry ( void )
klauss 119:ee6a53069455 415 {
klauss 121:ee02790d00b7 416 if ( invite_timer.read_ms () > 1000 )
klauss 121:ee02790d00b7 417 {
klauss 119:ee6a53069455 418 invite_timer.reset ();
klauss 119:ee6a53069455 419 return true;
klauss 119:ee6a53069455 420 } else {
klauss 119:ee6a53069455 421 return false;
klauss 119:ee6a53069455 422 }
klauss 119:ee6a53069455 423 }
klauss 119:ee6a53069455 424
klauss 119:ee6a53069455 425 uint8_t Call_Box::get_invite_try_number ( void ) {return invite_try_number; }
klauss 119:ee6a53069455 426
klauss 119:ee6a53069455 427 int Call_Box::retry_send_invite_pkg_to_ast ( void )
klauss 119:ee6a53069455 428 {
klauss 126:1f90756250fb 429 if ( this -> sip not_eq NULL )
klauss 119:ee6a53069455 430 {
klauss 119:ee6a53069455 431 invite_try_number++;
klauss 119:ee6a53069455 432 return ( sip -> retry_send_last_invite_pkg_to_ast () );
klauss 119:ee6a53069455 433 } else {
klauss 132:05cd37f7e007 434 vz_debug ("[%d] Eu definitivamente nao deveria estar aqui!!!", this->ext );
klauss 119:ee6a53069455 435
klauss 119:ee6a53069455 436 deleted_sip++;
klauss 119:ee6a53069455 437
klauss 119:ee6a53069455 438 return ( 0 );
klauss 119:ee6a53069455 439 }
klauss 121:ee02790d00b7 440 }
klauss 121:ee02790d00b7 441
klauss 121:ee02790d00b7 442 int Call_Box::sip_print_yourself ( void )
klauss 121:ee02790d00b7 443 {
klauss 126:1f90756250fb 444 if ( this -> sip not_eq NULL )
klauss 121:ee02790d00b7 445 {
klauss 121:ee02790d00b7 446 return sip -> print_yourself ();
klauss 121:ee02790d00b7 447 } else {
klauss 132:05cd37f7e007 448 vz_debug ("[%d] Eu definitivamente nao deveria estar aqui!!!", this->ext );
klauss 121:ee02790d00b7 449
klauss 121:ee02790d00b7 450 return ( -1 );
klauss 121:ee02790d00b7 451 }
klauss 121:ee02790d00b7 452
klauss 121:ee02790d00b7 453 }
klauss 121:ee02790d00b7 454
klauss 121:ee02790d00b7 455 Sip * Call_Box::get_sip ( void ) { return this -> sip ; }
klauss 121:ee02790d00b7 456
klauss 123:1d395b5a4cad 457 bool Call_Box::get_overflow_flag ( void ) { get_timer () ; return ( this -> overflow ); }
klauss 123:1d395b5a4cad 458
klauss 123:1d395b5a4cad 459 uint8_t Call_Box::get_overflow_times ( void ) { return ( this -> overflow_times ); }
klauss 123:1d395b5a4cad 460
klauss 132:05cd37f7e007 461 void Call_Box::update_time ( void ){ get_timer (); }
klauss 123:1d395b5a4cad 462
klauss 132:05cd37f7e007 463 uint16_t Call_Box::get_invite_counter ( void ) { return ( this -> invite_counter ); }
klauss 132:05cd37f7e007 464
klauss 132:05cd37f7e007 465 uint16_t Call_Box::update_invite_counter ( void ) { return ( this -> invite_counter++ ); }
klauss 132:05cd37f7e007 466
klauss 132:05cd37f7e007 467 int Call_Box::update ( void )
klauss 132:05cd37f7e007 468 {
klauss 132:05cd37f7e007 469 shift_port = cm -> get_shift_port ();
klauss 132:05cd37f7e007 470
klauss 132:05cd37f7e007 471 if ( sip not_eq NULL )
klauss 132:05cd37f7e007 472 {
klauss 132:05cd37f7e007 473 sip -> set_port ( ext + shift_port );
klauss 132:05cd37f7e007 474 sip -> update ();
klauss 132:05cd37f7e007 475 }
klauss 132:05cd37f7e007 476 return ( 0 );
klauss 132:05cd37f7e007 477 }