voltando a versao de n aberturas e fechamentos de sockets data 19/09

Dependencies:   EthernetInterface NTPClient mbed-rtos mbed EALib

Fork of header_main_publish by VZTECH

Committer:
klauss
Date:
Sat Sep 20 11:27:47 2014 +0000
Revision:
19:ab2088e0dec6
Parent:
0:4d17cd9c8f9d
colinas_02

Who changed what in which revision?

UserRevisionLine numberNew contents of line
klauss 0:4d17cd9c8f9d 1 #include "call.h"
klauss 0:4d17cd9c8f9d 2 #include "debug.h"
klauss 0:4d17cd9c8f9d 3
klauss 0:4d17cd9c8f9d 4 VZ_call::VZ_call( int cb_ext, int cb_port, int rtp_server_ext, int rtp_server_port ){
klauss 0:4d17cd9c8f9d 5 this->cb_ext = cb_ext;
klauss 0:4d17cd9c8f9d 6 this->cb_port = cb_port;
klauss 0:4d17cd9c8f9d 7
klauss 0:4d17cd9c8f9d 8 this->rtp_server_ext = rtp_server_ext;
klauss 0:4d17cd9c8f9d 9 this->rtp_server_port = rtp_server_port;
klauss 0:4d17cd9c8f9d 10 this->rtp_server.set_address( __RPT_SEVER_IP__, rtp_server_port );
klauss 0:4d17cd9c8f9d 11 rtp_sock.set_blocking( false, 3 );
klauss 0:4d17cd9c8f9d 12 this->rtp_sock.bind( cb_port ); // rtp port
klauss 0:4d17cd9c8f9d 13 this->rtp_sock.init();
klauss 0:4d17cd9c8f9d 14 this->rtp = new RTP( this->cb_ext );
klauss 0:4d17cd9c8f9d 15
klauss 0:4d17cd9c8f9d 16 t.start();
klauss 0:4d17cd9c8f9d 17 finish.start();
klauss 0:4d17cd9c8f9d 18 rtpbuf_clear( &( this->rtpbuf ) );
klauss 0:4d17cd9c8f9d 19 }
klauss 0:4d17cd9c8f9d 20
klauss 0:4d17cd9c8f9d 21 VZ_call::~VZ_call(){
klauss 0:4d17cd9c8f9d 22 rtp_sock.close();
klauss 0:4d17cd9c8f9d 23 delete( this->rtp );
klauss 0:4d17cd9c8f9d 24 }
klauss 0:4d17cd9c8f9d 25
klauss 0:4d17cd9c8f9d 26 char * VZ_call::get_eth_message( int * length ){
klauss 0:4d17cd9c8f9d 27 uint8_t * pkg;
klauss 0:4d17cd9c8f9d 28 *length = rtp_sock.receiveFrom( rtp_server, server2cb, sizeof( server2cb ) );
klauss 0:4d17cd9c8f9d 29 t.reset();
klauss 0:4d17cd9c8f9d 30
klauss 0:4d17cd9c8f9d 31 rtpbuf_next( &rtpbuf );
klauss 0:4d17cd9c8f9d 32
klauss 0:4d17cd9c8f9d 33 if( *length > 0 ){
klauss 0:4d17cd9c8f9d 34 rtpbuf_put( &rtpbuf, *length - ( __RTP_HEADER_SIZE__ + ( server2cb[ 0 ] & 0xf ) ),
klauss 0:4d17cd9c8f9d 35 ( uint8_t * )server2cb + ( __RTP_HEADER_OFFSET__ + ( server2cb[ 0 ] & 0xf ) ) );
klauss 0:4d17cd9c8f9d 36 }
klauss 0:4d17cd9c8f9d 37
klauss 0:4d17cd9c8f9d 38 pkg = rtpbuf_get( &rtpbuf );
klauss 0:4d17cd9c8f9d 39
klauss 0:4d17cd9c8f9d 40 if (pkg != NULL) {
klauss 0:4d17cd9c8f9d 41 *length = 240;
klauss 0:4d17cd9c8f9d 42 return (char *) pkg;
klauss 0:4d17cd9c8f9d 43 }
klauss 0:4d17cd9c8f9d 44 led1 = !led1;
klauss 0:4d17cd9c8f9d 45 *length = 0;
klauss 0:4d17cd9c8f9d 46 return NULL;
klauss 0:4d17cd9c8f9d 47 }
klauss 0:4d17cd9c8f9d 48
klauss 0:4d17cd9c8f9d 49 int VZ_call::send_message( char * buffer ){
klauss 0:4d17cd9c8f9d 50 t.reset();
klauss 0:4d17cd9c8f9d 51 return( this->rtp_sock.sendTo( this->rtp_server, buffer, __CB_AUDIO_DATA_SIZE__ + this->rtp->header_size() ) );
klauss 0:4d17cd9c8f9d 52 }
klauss 0:4d17cd9c8f9d 53
klauss 0:4d17cd9c8f9d 54 uint8_t * VZ_call::build_cb_package( void ){
klauss 0:4d17cd9c8f9d 55 // return __build_cb_package__( cb_ext, cb_port, __AUDIO__, server2cb, buffer );
klauss 0:4d17cd9c8f9d 56 // colocar esta funcao novamente pra envio de msg, assim como encapsular melhor a funcao
klauss 0:4d17cd9c8f9d 57 // de criacao dos pacotes pro cb em algumas funcoes.
klauss 0:4d17cd9c8f9d 58 return 0x00;
klauss 0:4d17cd9c8f9d 59 }
klauss 0:4d17cd9c8f9d 60
klauss 0:4d17cd9c8f9d 61 char * VZ_call::build_eth_package( uint8_t * buffer ){
klauss 0:4d17cd9c8f9d 62 return this->rtp->build_eth_package( ( char * )buffer );
klauss 0:4d17cd9c8f9d 63 }
klauss 0:4d17cd9c8f9d 64
klauss 0:4d17cd9c8f9d 65 int VZ_call::get_cb_ext(){ return this->cb_ext; }
klauss 0:4d17cd9c8f9d 66 int VZ_call::get_cb_port(){ return this->cb_port; }
klauss 0:4d17cd9c8f9d 67
klauss 0:4d17cd9c8f9d 68 int VZ_call::get_rtp_server_ext(){ return rtp_server_ext; }
klauss 0:4d17cd9c8f9d 69 int VZ_call::get_rtp_server_port(){ return rtp_server_port; }
klauss 0:4d17cd9c8f9d 70 uint8_t * VZ_call::get_cb2server_buffer(){ return cb2server; }
klauss 0:4d17cd9c8f9d 71 char * VZ_call::get_server2cb_buffer(){ return server2cb; }
klauss 0:4d17cd9c8f9d 72 inline uint8_t * VZ_call::get_buffer(){ return buffer; }
klauss 0:4d17cd9c8f9d 73
klauss 0:4d17cd9c8f9d 74 bool VZ_call::is_timeout( void ){
klauss 0:4d17cd9c8f9d 75 return ( t.read() > __CALL_MAX_IDLE_TIME__ ) ? true : false;
klauss 0:4d17cd9c8f9d 76 }
klauss 0:4d17cd9c8f9d 77
klauss 0:4d17cd9c8f9d 78 bool VZ_call::is_timetofinish( void ){
klauss 0:4d17cd9c8f9d 79 return ( finish.read() > __MAX_CALL_TIME__ ) ? true : false;
klauss 0:4d17cd9c8f9d 80 }