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 Mar 18 13:33:54 2015 +0000
Revision:
108:18a3702650f3
Parent:
105:a930035b6556
Child:
109:a5b8264ffbbc
wip - bug udp porta, corrompendo v_cb->size () em ultima analise

Who changed what in which revision?

UserRevisionLine numberNew contents of line
klauss 0:4d17cd9c8f9d 1 #include "call.h"
klauss 0:4d17cd9c8f9d 2
klauss 0:4d17cd9c8f9d 3 VZ_call::VZ_call( int cb_ext, int cb_port, int rtp_server_ext, int rtp_server_port ){
klauss 0:4d17cd9c8f9d 4 this->cb_ext = cb_ext;
klauss 0:4d17cd9c8f9d 5 this->cb_port = cb_port;
klauss 0:4d17cd9c8f9d 6
klauss 0:4d17cd9c8f9d 7 this->rtp_server_ext = rtp_server_ext;
klauss 0:4d17cd9c8f9d 8 this->rtp_server_port = rtp_server_port;
klauss 69:65665afbad5d 9 this->rtp_server.set_address( __RTP_SEVER_IP__, rtp_server_port );
klauss 104:62646ef786a3 10 this->rtp_sock.set_blocking( false, 0 );
klauss 108:18a3702650f3 11 this->rtp_sock.bind( cb_port );
klauss 0:4d17cd9c8f9d 12 this->rtp = new RTP( this->cb_ext );
klauss 0:4d17cd9c8f9d 13
klauss 89:0fe315117b00 14 if( rtp == NULL )
klauss 89:0fe315117b00 15 {
klauss 89:0fe315117b00 16 memory_is_over = true;
klauss 89:0fe315117b00 17 if( debug_memory ) debug_msg("Call_Box cb allocation fail");
klauss 89:0fe315117b00 18 }
klauss 87:679ee0d594a9 19
klauss 0:4d17cd9c8f9d 20 t.start();
klauss 0:4d17cd9c8f9d 21 finish.start();
klauss 0:4d17cd9c8f9d 22 rtpbuf_clear( &( this->rtpbuf ) );
klauss 91:c2a86b1f8aaa 23 call_new_counter++;
klauss 0:4d17cd9c8f9d 24 }
klauss 0:4d17cd9c8f9d 25
klauss 0:4d17cd9c8f9d 26 VZ_call::~VZ_call(){
klauss 0:4d17cd9c8f9d 27 rtp_sock.close();
klauss 0:4d17cd9c8f9d 28 delete( this->rtp );
klauss 91:c2a86b1f8aaa 29 call_delete_counter++;
klauss 0:4d17cd9c8f9d 30 }
klauss 0:4d17cd9c8f9d 31
klauss 0:4d17cd9c8f9d 32 char * VZ_call::get_eth_message( int * length ){
klauss 0:4d17cd9c8f9d 33 uint8_t * pkg;
klauss 104:62646ef786a3 34 Endpoint rtp_from;
klauss 104:62646ef786a3 35
klauss 104:62646ef786a3 36 *length = rtp_sock.receiveFrom( rtp_from, server2cb, sizeof( server2cb ) );
klauss 0:4d17cd9c8f9d 37 t.reset();
klauss 0:4d17cd9c8f9d 38
klauss 0:4d17cd9c8f9d 39 rtpbuf_next( &rtpbuf );
klauss 0:4d17cd9c8f9d 40
klauss 0:4d17cd9c8f9d 41 if( *length > 0 ){
klauss 0:4d17cd9c8f9d 42 rtpbuf_put( &rtpbuf, *length - ( __RTP_HEADER_SIZE__ + ( server2cb[ 0 ] & 0xf ) ),
klauss 0:4d17cd9c8f9d 43 ( uint8_t * )server2cb + ( __RTP_HEADER_OFFSET__ + ( server2cb[ 0 ] & 0xf ) ) );
klauss 0:4d17cd9c8f9d 44 }
klauss 0:4d17cd9c8f9d 45
klauss 0:4d17cd9c8f9d 46 pkg = rtpbuf_get( &rtpbuf );
klauss 0:4d17cd9c8f9d 47
klauss 0:4d17cd9c8f9d 48 if (pkg != NULL) {
klauss 0:4d17cd9c8f9d 49 *length = 240;
klauss 0:4d17cd9c8f9d 50 return (char *) pkg;
klauss 0:4d17cd9c8f9d 51 }
klauss 0:4d17cd9c8f9d 52 *length = 0;
klauss 0:4d17cd9c8f9d 53 return NULL;
klauss 0:4d17cd9c8f9d 54 }
klauss 0:4d17cd9c8f9d 55
klauss 0:4d17cd9c8f9d 56 int VZ_call::send_message( char * buffer ){
klauss 0:4d17cd9c8f9d 57 t.reset();
klauss 104:62646ef786a3 58 int send = this->rtp_sock.sendTo( this->rtp_server, buffer, __CB_AUDIO_DATA_SIZE__ + this->rtp->header_size() );
klauss 104:62646ef786a3 59 if( send != __CB_AUDIO_DATA_SIZE__ + this->rtp->header_size() )
klauss 104:62646ef786a3 60 {
klauss 104:62646ef786a3 61 if( debug_reconnect )
klauss 104:62646ef786a3 62 {
klauss 104:62646ef786a3 63 send_msg("Reconnect RTP");
klauss 105:a930035b6556 64 miss_ftp_udp_send_pkg++;
klauss 104:62646ef786a3 65 }
klauss 104:62646ef786a3 66 reconnect();
klauss 104:62646ef786a3 67 }
klauss 104:62646ef786a3 68 return( send );
klauss 0:4d17cd9c8f9d 69 }
klauss 0:4d17cd9c8f9d 70
klauss 105:a930035b6556 71 //uint8_t * VZ_call::build_cb_package( void ){
klauss 105:a930035b6556 72 // return build_cb_package( cb_ext, cb_port, __AUDIO__, server2cb, buffer );
klauss 0:4d17cd9c8f9d 73 // colocar esta funcao novamente pra envio de msg, assim como encapsular melhor a funcao
klauss 0:4d17cd9c8f9d 74 // de criacao dos pacotes pro cb em algumas funcoes.
klauss 105:a930035b6556 75 // return 0x00;
klauss 105:a930035b6556 76 //}
klauss 0:4d17cd9c8f9d 77
klauss 0:4d17cd9c8f9d 78 char * VZ_call::build_eth_package( uint8_t * buffer ){
klauss 0:4d17cd9c8f9d 79 return this->rtp->build_eth_package( ( char * )buffer );
klauss 0:4d17cd9c8f9d 80 }
klauss 0:4d17cd9c8f9d 81
klauss 0:4d17cd9c8f9d 82 int VZ_call::get_cb_ext(){ return this->cb_ext; }
klauss 0:4d17cd9c8f9d 83 int VZ_call::get_cb_port(){ return this->cb_port; }
klauss 0:4d17cd9c8f9d 84
klauss 0:4d17cd9c8f9d 85 int VZ_call::get_rtp_server_ext(){ return rtp_server_ext; }
klauss 0:4d17cd9c8f9d 86 int VZ_call::get_rtp_server_port(){ return rtp_server_port; }
klauss 0:4d17cd9c8f9d 87 uint8_t * VZ_call::get_cb2server_buffer(){ return cb2server; }
klauss 0:4d17cd9c8f9d 88 char * VZ_call::get_server2cb_buffer(){ return server2cb; }
klauss 0:4d17cd9c8f9d 89 inline uint8_t * VZ_call::get_buffer(){ return buffer; }
klauss 0:4d17cd9c8f9d 90
klauss 0:4d17cd9c8f9d 91 bool VZ_call::is_timeout( void ){
klauss 0:4d17cd9c8f9d 92 return ( t.read() > __CALL_MAX_IDLE_TIME__ ) ? true : false;
klauss 0:4d17cd9c8f9d 93 }
klauss 0:4d17cd9c8f9d 94
klauss 0:4d17cd9c8f9d 95 bool VZ_call::is_timetofinish( void ){
klauss 0:4d17cd9c8f9d 96 return ( finish.read() > __MAX_CALL_TIME__ ) ? true : false;
klauss 92:92df17f538a8 97 }
klauss 92:92df17f538a8 98
klauss 92:92df17f538a8 99 int VZ_call::get_elapsed_time( void ){
klauss 92:92df17f538a8 100 return ( finish.read_ms() );
klauss 92:92df17f538a8 101 }
klauss 92:92df17f538a8 102
klauss 92:92df17f538a8 103 void VZ_call::cbx_pkg_idle_timer_reset( void ){
klauss 92:92df17f538a8 104 cbx_pkg_idle_timer.reset();
klauss 92:92df17f538a8 105 }
klauss 92:92df17f538a8 106
klauss 92:92df17f538a8 107 bool VZ_call::cbx_pkg_is_idle( void ){
klauss 92:92df17f538a8 108 return ( cbx_pkg_idle_timer.read() > CBX_PKG_IDLE_MAX_TIME ) ? true : false;
klauss 92:92df17f538a8 109 }
klauss 92:92df17f538a8 110
klauss 92:92df17f538a8 111 void VZ_call::init_cbx_pkg_idle_timer(){
klauss 92:92df17f538a8 112 cbx_pkg_idle_timer.start();
klauss 104:62646ef786a3 113 }
klauss 104:62646ef786a3 114
klauss 104:62646ef786a3 115 void VZ_call::reconnect( void )
klauss 104:62646ef786a3 116 {
klauss 104:62646ef786a3 117 this->rtp_sock.close();
klauss 104:62646ef786a3 118 this->rtp_sock.set_blocking( false, 0 );
klauss 104:62646ef786a3 119 this->rtp_sock.bind( cb_port );
klauss 0:4d17cd9c8f9d 120 }