Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
rtp.h
- Committer:
- klauss
- Date:
- 2015-11-24
- Revision:
- 137:32dd35a6dbc9
- Parent:
- 135:2f4290590e51
File content as of revision 137:32dd35a6dbc9:
/** * @file rtp.h * @Synopsis Esta classe visa gerenciar o tratamento dos pacotes de RTP, ou seja, os pacotes de audio trocados entre o Call_Box, Header * servidor. * @author Jhonatan Casale * @version 1 * @date 2014-11-05 * \class RTP */ #ifndef __RTP_H__ #define __RTP_H__ #include "mbed.h" #include "shared_variables.h" #include "vz_protocol.h" #include "debug.h" class RTP_Header{ private : uint32_t ss_id; uint16_t seq_number; uint32_t timestamp; public : /** * @Synopsis Cria um objeto da classe RTP_Header. Esta classe visa gerenciar a criação do cabeçalhoo RTP * * @param cb_ext Vincula o objeto recem criado com o ramal do Call_Box solicitante * * Exemplo: * @code * ... * int ext = 0x54; * RTP_Header * rtp_header = new RTP_Header( ext ); * ... * @endcode */ RTP_Header( int cb_ext ); /** * @Synopsis Destroi o objeto RTP_Header. * * Exemplo: * @code * ... * delete( rtp_header ); * ... * @endcode */ ~RTP_Header(); /** * @Synopsis Informa o tamanho ( em bytes ) do cabeçalho rtp. * * @return O numero ( em bytes ) ocupados pelo cabeçãolho do rtp. * * Exemplo: * @code * ... * size_t size = rtp_header->size(); * ... * @endcode */ size_t size( void ); /** * @Synopsis Cria o cabeçalho rtp usado neste aplicação. Porém, fora de uso no momento. * * @param pkg Um ponteiro para a posição de memória onde será montado o pacote. * * @return Um ponteiro para o inicio do pacote montado. * * @code * uint8_t * build_header( uint8_t * buffer_header ){ * // função não implementada. * } * @endcode */ uint8_t * build_header( uint8_t * buffer_header ); /** * @Synopsis Cria o cabeçalho rtp usado neste aplicação. * * @param pkg Um ponteiro para a posição de memória onde será montado o pacote. * * @return Um ponteiro para o inicio do pacote montado. * * Exemplo: * @code * ... * char pkg[ 512 ]; * rtp_header->build_header( pkg ); * ... * @endcode */ char * build_header( char * pkg ); int get_ss_id ( void ) { return this->ss_id; } int get_seq_number ( void ) { return this->seq_number; } int get_timestamp ( void ) { return this->timestamp; } }; class RTP_Body{ private : public : /** * @Synopsis Constroi um objeto RTP_Body. * * Exemplo: * @code * ... * RTP_Body * rtp_body = new RTP_Body(); * ... * @endcode */ RTP_Body(); /** * @Synopsis Destroi o objeto RTP_Body. * * Exemplo: * @code * ... * delete( rtp_body ); * ... * @endcode */ ~RTP_Body(); /** * @Synopsis Informa o tamanho ( em bytes ) ocupados pelo corpo da mensagem. * * @return Retorna o numero de bytes ocupados pelo corpo da mensagem. * * Exemplo: * @code * ... * size_t size = rtp_body->size(); * ... * @endcode */ size_t size( void ); /** * @Synopsis Cria o corpo do pacote. * * @param dest Ponteiro para posição de memória onde será montado o pacote. * @param buffer Ponteiro para a posição de memória com os dados originias. * * @return Um ponteiro para posição de memória contendo o corpo da mensagem. * * Exemplo: * @code * ... * // assumindo que buffer é onde foi armazenado os dados que precisam ser enviados. * rtp_body->build_body( pkg , buffer ); * ... * @endcode */ char * build_body( char * dest, char * buffer ); }; class RTP{ private : uint8_t buffer[ 512 ]; char pkg[ 512 ]; RTP_Header * rtp_header; RTP_Body * rtp_body; public : /** * @Synopsis Cria um objeto RTP. * * @param ext Vincula o objeto RTP ao ramal passado como parâmetro. * * Exemplo: * @code * ... * int ext = 1918; * RTP * rtp = new RTP( ext ); * ... * @endcode */ RTP( int ext ); /** * @Synopsis Destroi o objeto RTP. * * Exemplo: * @code * ... * delete( rtp ); * ... * @endcode */ ~RTP(); /** * @Synopsis Informa o tamanho ocupado pelo cabeçalho. * * @return O numero em bytes ocupados pelo cabeçalho. * * Exemplo: * @code * ... * size_t size = rtp->header_size(); * ... * @endcode */ size_t header_size( void ); /** * @Synopsis Constroi efetivamente o pacote seguindo o protocolo rtp. * * @param buffer Posição de memória onde será montado o pacote. * * @return Um ponteiro para o inicio do pacote montado, pronto para envio. * * Exemplo: * @code * ... * // assumindo que buffer é onde foi armazenado os dados que precisam ser enviados. * return this->rtp->build_eth_package( buffer ); * ... * @endcode */ char * build_eth_package( char * buffer ); int print_yourself ( void ); }; #endif