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
