Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Committer:
klauss
Date:
Mon Apr 20 14:40:09 2015 +0000
Revision:
114:472502b31a12
Parent:
113:db67ae00550e
Child:
121:ee02790d00b7
antes de implementar os retrys da header -> cbx

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