Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Committer:
klauss
Date:
Mon May 11 15:16:36 2015 +0000
Revision:
122:480c44b0e205
Parent:
121:ee02790d00b7
Child:
123:1d395b5a4cad
E00 - Limitar em 1500 o show_sip

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