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 24 14:06:22 2015 +0000
Revision:
137:32dd35a6dbc9
Parent:
135:2f4290590e51
core source of the .bin (09/21/2015) in the field

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