Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
rtp.h@74:81c47fff88a5, 2014-11-24 (annotated)
- Committer:
- klauss
- Date:
- Mon Nov 24 16:43:16 2014 +0000
- Revision:
- 74:81c47fff88a5
- Parent:
- 69:65665afbad5d
- Child:
- 109:a5b8264ffbbc
validando organiza??o de arquivos | ainda em desenvolvimento.
Who changed what in which revision?
User | Revision | Line number | New 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 | 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 | 69:65665afbad5d | 226 | /** |
klauss | 69:65665afbad5d | 227 | * @Synopsis Obtém o buffer da classe. |
klauss | 69:65665afbad5d | 228 | * |
klauss | 69:65665afbad5d | 229 | * @return Um ponteiro para o inicio do buffer ( esperado que já tenha um pacote montado ). |
klauss | 69:65665afbad5d | 230 | * |
klauss | 69:65665afbad5d | 231 | * Exemplo: |
klauss | 69:65665afbad5d | 232 | * @code |
klauss | 69:65665afbad5d | 233 | * ... |
klauss | 69:65665afbad5d | 234 | * return rtp->get_buffer(); |
klauss | 69:65665afbad5d | 235 | * ... |
klauss | 69:65665afbad5d | 236 | * @endcode |
klauss | 69:65665afbad5d | 237 | */ |
klauss | 0:4d17cd9c8f9d | 238 | uint8_t * get_buffer( void ){ return this->buffer; } |
klauss | 0:4d17cd9c8f9d | 239 | }; |
klauss | 0:4d17cd9c8f9d | 240 | #endif |