![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
Diff: call.cpp
- Revision:
- 113:db67ae00550e
- Parent:
- 112:6ae726539ab9
- Child:
- 114:472502b31a12
diff -r 6ae726539ab9 -r db67ae00550e call.cpp --- a/call.cpp Mon Apr 13 12:16:21 2015 +0000 +++ b/call.cpp Thu Apr 16 12:57:13 2015 +0000 @@ -7,11 +7,8 @@ this->rtp_server_ext = rtp_server_ext; this->rtp_server_port = rtp_server_port; this->rtp_server.set_address( __RTP_SEVER_IP__, rtp_server_port ); - rtp_sock.set_blocking( false, 0 ); - debug_msg("primeiro"); - this->rtp_sock.bind( cb_port ); // rtp port - debug_msg("segundo"); - this->rtp_sock.init(); + this->rtp_sock.set_blocking( false, 0 ); + this->rtp_sock.bind( cb_port ); this->rtp = new RTP( this->cb_ext ); if( rtp == NULL ) @@ -34,7 +31,9 @@ char * VZ_call::get_eth_message( int * length ){ uint8_t * pkg; - *length = rtp_sock.receiveFrom( rtp_server, server2cb, sizeof( server2cb ) ); + Endpoint rtp_from; + + *length = rtp_sock.receiveFrom( rtp_from, server2cb, sizeof( server2cb ) ); t.reset(); rtpbuf_next( &rtpbuf ); @@ -56,24 +55,25 @@ int VZ_call::send_message( char * buffer ){ t.reset(); - return( this->rtp_sock.sendTo( this->rtp_server, buffer, __CB_AUDIO_DATA_SIZE__ + this->rtp->header_size() ) ); - - /* - //FIXME verificar como fica se eu esperar o sendTo chegar em != 0 - int8_t sent = 0; - do{ - sent = this->rtp_sock.sendTo( this->rtp_server, buffer, __CB_AUDIO_DATA_SIZE__ + this->rtp->header_size() ) ); - }while( sent == 0 ); - return( sent ); - */ + int send = this->rtp_sock.sendTo( this->rtp_server, buffer, __CB_AUDIO_DATA_SIZE__ + this->rtp->header_size() ); + if( send != __CB_AUDIO_DATA_SIZE__ + this->rtp->header_size() ) + { + if( debug_reconnect ) + { + send_msg("Reconnect RTP"); + miss_ftp_udp_send_pkg++; + } + reconnect(); + } + return( send ); } -uint8_t * VZ_call::build_cb_package( void ){ - // return __build_cb_package__( cb_ext, cb_port, __AUDIO__, server2cb, buffer ); +//uint8_t * VZ_call::build_cb_package( void ){ + // return build_cb_package( cb_ext, cb_port, __AUDIO__, server2cb, buffer ); // colocar esta funcao novamente pra envio de msg, assim como encapsular melhor a funcao // de criacao dos pacotes pro cb em algumas funcoes. - return 0x00; -} +// return 0x00; +//} char * VZ_call::build_eth_package( uint8_t * buffer ){ return this->rtp->build_eth_package( ( char * )buffer ); @@ -112,7 +112,6 @@ cbx_pkg_idle_timer.start(); } - int VZ_call::print_yourself ( void ) { send_msg("t :: %d", ( int ) t.read () ); @@ -136,4 +135,11 @@ int VZ_call::rtp_print_yourself ( void ) { return rtp -> print_yourself (); +} + +void VZ_call::reconnect( void ) +{ + this->rtp_sock.close(); + this->rtp_sock.set_blocking( false, 0 ); + this->rtp_sock.bind( cb_port ); } \ No newline at end of file