Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Committer:
klauss
Date:
Wed May 20 19:50:31 2015 +0000
Revision:
126:1f90756250fb
Parent:
123:1d395b5a4cad
Child:
132:05cd37f7e007
under validation

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