Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Committer:
klauss
Date:
Tue Nov 24 14:06:22 2015 +0000
Revision:
137:32dd35a6dbc9
Parent:
135:2f4290590e51
core source of the .bin (09/21/2015) in the field

Who changed what in which revision?

UserRevisionLine numberNew contents of line
klauss 69:65665afbad5d 1 /**
klauss 69:65665afbad5d 2 * @file rtp.h
klauss 69:65665afbad5d 3 * @Synopsis Esta classe visa gerenciar o tratamento dos pacotes de RTP, ou seja, os pacotes de audio trocados entre o Call_Box, Header
klauss 69:65665afbad5d 4 * servidor.
klauss 69:65665afbad5d 5 * @author Jhonatan Casale
klauss 69:65665afbad5d 6 * @version 1
klauss 69:65665afbad5d 7 * @date 2014-11-05
klauss 69:65665afbad5d 8 * \class RTP
klauss 69:65665afbad5d 9 */
klauss 69:65665afbad5d 10
klauss 0:4d17cd9c8f9d 11 #ifndef __RTP_H__
klauss 0:4d17cd9c8f9d 12 #define __RTP_H__
klauss 0:4d17cd9c8f9d 13
klauss 0:4d17cd9c8f9d 14 #include "mbed.h"
klauss 74:81c47fff88a5 15 #include "shared_variables.h"
klauss 0:4d17cd9c8f9d 16 #include "vz_protocol.h"
klauss 121:ee02790d00b7 17 #include "debug.h"
klauss 0:4d17cd9c8f9d 18
klauss 0:4d17cd9c8f9d 19 class RTP_Header{
klauss 0:4d17cd9c8f9d 20 private :
klauss 0:4d17cd9c8f9d 21 uint32_t ss_id;
klauss 0:4d17cd9c8f9d 22 uint16_t seq_number;
klauss 0:4d17cd9c8f9d 23 uint32_t timestamp;
klauss 0:4d17cd9c8f9d 24 public :
klauss 69:65665afbad5d 25 /**
klauss 69:65665afbad5d 26 * @Synopsis Cria um objeto da classe RTP_Header. Esta classe visa gerenciar a criação do cabeçalhoo RTP
klauss 69:65665afbad5d 27 *
klauss 69:65665afbad5d 28 * @param cb_ext Vincula o objeto recem criado com o ramal do Call_Box solicitante
klauss 69:65665afbad5d 29 *
klauss 69:65665afbad5d 30 * Exemplo:
klauss 69:65665afbad5d 31 * @code
klauss 69:65665afbad5d 32 * ...
klauss 69:65665afbad5d 33 * int ext = 0x54;
klauss 69:65665afbad5d 34 * RTP_Header * rtp_header = new RTP_Header( ext );
klauss 69:65665afbad5d 35 * ...
klauss 69:65665afbad5d 36 * @endcode
klauss 69:65665afbad5d 37 */
klauss 0:4d17cd9c8f9d 38 RTP_Header( int cb_ext );
klauss 69:65665afbad5d 39
klauss 69:65665afbad5d 40 /**
klauss 69:65665afbad5d 41 * @Synopsis Destroi o objeto RTP_Header.
klauss 69:65665afbad5d 42 *
klauss 69:65665afbad5d 43 * Exemplo:
klauss 69:65665afbad5d 44 * @code
klauss 69:65665afbad5d 45 * ...
klauss 69:65665afbad5d 46 * delete( rtp_header );
klauss 69:65665afbad5d 47 * ...
klauss 69:65665afbad5d 48 * @endcode
klauss 69:65665afbad5d 49 */
klauss 0:4d17cd9c8f9d 50 ~RTP_Header();
klauss 69:65665afbad5d 51
klauss 69:65665afbad5d 52 /**
klauss 69:65665afbad5d 53 * @Synopsis Informa o tamanho ( em bytes ) do cabeçalho rtp.
klauss 69:65665afbad5d 54 *
klauss 69:65665afbad5d 55 * @return O numero ( em bytes ) ocupados pelo cabeçãolho do rtp.
klauss 69:65665afbad5d 56 *
klauss 69:65665afbad5d 57 * Exemplo:
klauss 69:65665afbad5d 58 * @code
klauss 69:65665afbad5d 59 * ...
klauss 69:65665afbad5d 60 * size_t size = rtp_header->size();
klauss 69:65665afbad5d 61 * ...
klauss 69:65665afbad5d 62 * @endcode
klauss 69:65665afbad5d 63 */
klauss 0:4d17cd9c8f9d 64 size_t size( void );
klauss 69:65665afbad5d 65
klauss 69:65665afbad5d 66 /**
klauss 69:65665afbad5d 67 * @Synopsis Cria o cabeçalho rtp usado neste aplicação. Porém, fora de uso no momento.
klauss 69:65665afbad5d 68 *
klauss 69:65665afbad5d 69 * @param pkg Um ponteiro para a posição de memória onde será montado o pacote.
klauss 69:65665afbad5d 70 *
klauss 69:65665afbad5d 71 * @return Um ponteiro para o inicio do pacote montado.
klauss 69:65665afbad5d 72 *
klauss 69:65665afbad5d 73 * @code
klauss 69:65665afbad5d 74 * uint8_t * build_header( uint8_t * buffer_header ){
klauss 69:65665afbad5d 75 * // função não implementada.
klauss 69:65665afbad5d 76 * }
klauss 69:65665afbad5d 77 * @endcode
klauss 69:65665afbad5d 78 */
klauss 0:4d17cd9c8f9d 79 uint8_t * build_header( uint8_t * buffer_header );
klauss 69:65665afbad5d 80
klauss 69:65665afbad5d 81 /**
klauss 69:65665afbad5d 82 * @Synopsis Cria o cabeçalho rtp usado neste aplicação.
klauss 69:65665afbad5d 83 *
klauss 69:65665afbad5d 84 * @param pkg Um ponteiro para a posição de memória onde será montado o pacote.
klauss 69:65665afbad5d 85 *
klauss 69:65665afbad5d 86 * @return Um ponteiro para o inicio do pacote montado.
klauss 69:65665afbad5d 87 *
klauss 69:65665afbad5d 88 * Exemplo:
klauss 69:65665afbad5d 89 * @code
klauss 69:65665afbad5d 90 * ...
klauss 69:65665afbad5d 91 * char pkg[ 512 ];
klauss 69:65665afbad5d 92 * rtp_header->build_header( pkg );
klauss 69:65665afbad5d 93 * ...
klauss 69:65665afbad5d 94 * @endcode
klauss 69:65665afbad5d 95 */
klauss 0:4d17cd9c8f9d 96 char * build_header( char * pkg );
klauss 109:a5b8264ffbbc 97 int get_ss_id ( void ) { return this->ss_id; }
klauss 109:a5b8264ffbbc 98 int get_seq_number ( void ) { return this->seq_number; }
klauss 109:a5b8264ffbbc 99 int get_timestamp ( void ) { return this->timestamp; }
klauss 0:4d17cd9c8f9d 100 };
klauss 0:4d17cd9c8f9d 101
klauss 0:4d17cd9c8f9d 102 class RTP_Body{
klauss 0:4d17cd9c8f9d 103 private :
klauss 0:4d17cd9c8f9d 104 public :
klauss 69:65665afbad5d 105 /**
klauss 69:65665afbad5d 106 * @Synopsis Constroi um objeto RTP_Body.
klauss 69:65665afbad5d 107 *
klauss 69:65665afbad5d 108 * Exemplo:
klauss 69:65665afbad5d 109 * @code
klauss 69:65665afbad5d 110 * ...
klauss 69:65665afbad5d 111 * RTP_Body * rtp_body = new RTP_Body();
klauss 69:65665afbad5d 112 * ...
klauss 69:65665afbad5d 113 * @endcode
klauss 69:65665afbad5d 114 */
klauss 0:4d17cd9c8f9d 115 RTP_Body();
klauss 69:65665afbad5d 116
klauss 69:65665afbad5d 117 /**
klauss 69:65665afbad5d 118 * @Synopsis Destroi o objeto RTP_Body.
klauss 69:65665afbad5d 119 *
klauss 69:65665afbad5d 120 * Exemplo:
klauss 69:65665afbad5d 121 * @code
klauss 69:65665afbad5d 122 * ...
klauss 69:65665afbad5d 123 * delete( rtp_body );
klauss 69:65665afbad5d 124 * ...
klauss 69:65665afbad5d 125 * @endcode
klauss 69:65665afbad5d 126 */
klauss 0:4d17cd9c8f9d 127 ~RTP_Body();
klauss 69:65665afbad5d 128
klauss 69:65665afbad5d 129 /**
klauss 69:65665afbad5d 130 * @Synopsis Informa o tamanho ( em bytes ) ocupados pelo corpo da mensagem.
klauss 69:65665afbad5d 131 *
klauss 69:65665afbad5d 132 * @return Retorna o numero de bytes ocupados pelo corpo da mensagem.
klauss 69:65665afbad5d 133 *
klauss 69:65665afbad5d 134 * Exemplo:
klauss 69:65665afbad5d 135 * @code
klauss 69:65665afbad5d 136 * ...
klauss 69:65665afbad5d 137 * size_t size = rtp_body->size();
klauss 69:65665afbad5d 138 * ...
klauss 69:65665afbad5d 139 * @endcode
klauss 69:65665afbad5d 140 */
klauss 0:4d17cd9c8f9d 141 size_t size( void );
klauss 69:65665afbad5d 142
klauss 69:65665afbad5d 143 /**
klauss 69:65665afbad5d 144 * @Synopsis Cria o corpo do pacote.
klauss 69:65665afbad5d 145 *
klauss 69:65665afbad5d 146 * @param dest Ponteiro para posição de memória onde será montado o pacote.
klauss 69:65665afbad5d 147 * @param buffer Ponteiro para a posição de memória com os dados originias.
klauss 69:65665afbad5d 148 *
klauss 69:65665afbad5d 149 * @return Um ponteiro para posição de memória contendo o corpo da mensagem.
klauss 69:65665afbad5d 150 *
klauss 69:65665afbad5d 151 * Exemplo:
klauss 69:65665afbad5d 152 * @code
klauss 69:65665afbad5d 153 * ...
klauss 69:65665afbad5d 154 * // assumindo que buffer é onde foi armazenado os dados que precisam ser enviados.
klauss 69:65665afbad5d 155 * rtp_body->build_body( pkg , buffer );
klauss 69:65665afbad5d 156 * ...
klauss 69:65665afbad5d 157 * @endcode
klauss 69:65665afbad5d 158 */
klauss 0:4d17cd9c8f9d 159 char * build_body( char * dest, char * buffer );
klauss 0:4d17cd9c8f9d 160 };
klauss 0:4d17cd9c8f9d 161 class RTP{
klauss 0:4d17cd9c8f9d 162 private :
klauss 13:ae278302dffe 163 uint8_t buffer[ 512 ];
klauss 13:ae278302dffe 164 char pkg[ 512 ];
klauss 0:4d17cd9c8f9d 165 RTP_Header * rtp_header;
klauss 0:4d17cd9c8f9d 166 RTP_Body * rtp_body;
klauss 0:4d17cd9c8f9d 167 public :
klauss 69:65665afbad5d 168 /**
klauss 69:65665afbad5d 169 * @Synopsis Cria um objeto RTP.
klauss 69:65665afbad5d 170 *
klauss 69:65665afbad5d 171 * @param ext Vincula o objeto RTP ao ramal passado como parâmetro.
klauss 69:65665afbad5d 172 *
klauss 69:65665afbad5d 173 * Exemplo:
klauss 69:65665afbad5d 174 * @code
klauss 69:65665afbad5d 175 * ...
klauss 69:65665afbad5d 176 * int ext = 1918;
klauss 69:65665afbad5d 177 * RTP * rtp = new RTP( ext );
klauss 69:65665afbad5d 178 * ...
klauss 69:65665afbad5d 179 * @endcode
klauss 69:65665afbad5d 180 */
klauss 0:4d17cd9c8f9d 181 RTP( int ext );
klauss 69:65665afbad5d 182
klauss 69:65665afbad5d 183 /**
klauss 69:65665afbad5d 184 * @Synopsis Destroi o objeto RTP.
klauss 69:65665afbad5d 185 *
klauss 69:65665afbad5d 186 * Exemplo:
klauss 69:65665afbad5d 187 * @code
klauss 69:65665afbad5d 188 * ...
klauss 69:65665afbad5d 189 * delete( rtp );
klauss 69:65665afbad5d 190 * ...
klauss 69:65665afbad5d 191 * @endcode
klauss 69:65665afbad5d 192 */
klauss 0:4d17cd9c8f9d 193 ~RTP();
klauss 69:65665afbad5d 194
klauss 69:65665afbad5d 195 /**
klauss 69:65665afbad5d 196 * @Synopsis Informa o tamanho ocupado pelo cabeçalho.
klauss 69:65665afbad5d 197 *
klauss 69:65665afbad5d 198 * @return O numero em bytes ocupados pelo cabeçalho.
klauss 69:65665afbad5d 199 *
klauss 69:65665afbad5d 200 * Exemplo:
klauss 69:65665afbad5d 201 * @code
klauss 69:65665afbad5d 202 * ...
klauss 69:65665afbad5d 203 * size_t size = rtp->header_size();
klauss 69:65665afbad5d 204 * ...
klauss 69:65665afbad5d 205 * @endcode
klauss 69:65665afbad5d 206 */
klauss 0:4d17cd9c8f9d 207 size_t header_size( void );
klauss 69:65665afbad5d 208
klauss 69:65665afbad5d 209 /**
klauss 69:65665afbad5d 210 * @Synopsis Constroi efetivamente o pacote seguindo o protocolo rtp.
klauss 69:65665afbad5d 211 *
klauss 69:65665afbad5d 212 * @param buffer Posição de memória onde será montado o pacote.
klauss 69:65665afbad5d 213 *
klauss 69:65665afbad5d 214 * @return Um ponteiro para o inicio do pacote montado, pronto para envio.
klauss 69:65665afbad5d 215 *
klauss 69:65665afbad5d 216 * Exemplo:
klauss 69:65665afbad5d 217 * @code
klauss 69:65665afbad5d 218 * ...
klauss 69:65665afbad5d 219 * // assumindo que buffer é onde foi armazenado os dados que precisam ser enviados.
klauss 69:65665afbad5d 220 * return this->rtp->build_eth_package( buffer );
klauss 69:65665afbad5d 221 * ...
klauss 69:65665afbad5d 222 * @endcode
klauss 69:65665afbad5d 223 */
klauss 0:4d17cd9c8f9d 224 char * build_eth_package( char * buffer );
klauss 69:65665afbad5d 225
klauss 109:a5b8264ffbbc 226 int print_yourself ( void );
klauss 0:4d17cd9c8f9d 227 };
klauss 0:4d17cd9c8f9d 228 #endif