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 call.h
klauss 69:65665afbad5d 3 * @Synopsis Implementa as funcionalidades de uma ligação, incluindo troca de dados de audio em ambos os lados.
klauss 69:65665afbad5d 4 * @author Jhonatan Casale
klauss 69:65665afbad5d 5 * @version 1
klauss 69:65665afbad5d 6 * @date 2014-11-05
klauss 69:65665afbad5d 7 * \class VZ_call
klauss 69:65665afbad5d 8 */
klauss 121:ee02790d00b7 9
klauss 0:4d17cd9c8f9d 10 #ifndef __CALL_H__
klauss 0:4d17cd9c8f9d 11 #define __CALL_H__
klauss 0:4d17cd9c8f9d 12
klauss 121:ee02790d00b7 13 #include "shared_variables.h"
klauss 0:4d17cd9c8f9d 14 #include "object.h"
klauss 74:81c47fff88a5 15 #include "rtp.h"
klauss 121:ee02790d00b7 16 #include "debug.h"
klauss 74:81c47fff88a5 17 #include "rtpbuf.h"
klauss 132:05cd37f7e007 18 %: include "config_manager.h"
klauss 0:4d17cd9c8f9d 19
klauss 119:ee6a53069455 20 const uint8_t __CALL_MAX_IDLE_TIME__ = 5;
klauss 69:65665afbad5d 21 ///< Define o tempo máximo sem receber dados em alguma chamada.
klauss 69:65665afbad5d 22
klauss 119:ee6a53069455 23 const uint8_t __MAX_CALL_TIME__ = 180;
klauss 69:65665afbad5d 24 ///< Define o tempo máximo ( em segundos ) de uma ligação.
klauss 0:4d17cd9c8f9d 25
klauss 119:ee6a53069455 26 const uint8_t CBX_PKG_IDLE_MAX_TIME = 10;
klauss 92:92df17f538a8 27
klauss 0:4d17cd9c8f9d 28 class VZ_call : public Object{
klauss 0:4d17cd9c8f9d 29 private :
klauss 0:4d17cd9c8f9d 30 Timer t;
klauss 0:4d17cd9c8f9d 31 Timer finish;
klauss 92:92df17f538a8 32 Timer cbx_pkg_idle_timer;
klauss 0:4d17cd9c8f9d 33 int cb_ext;
klauss 0:4d17cd9c8f9d 34 int cb_port;
klauss 0:4d17cd9c8f9d 35 uint8_t cb2server[ 320 ];
klauss 0:4d17cd9c8f9d 36 char server2cb[ 320 ];
klauss 0:4d17cd9c8f9d 37 uint8_t buffer[ 320 ];
klauss 0:4d17cd9c8f9d 38 UDPSocket rtp_sock;
klauss 0:4d17cd9c8f9d 39 int rtp_server_ext;
klauss 0:4d17cd9c8f9d 40 int rtp_server_port;
klauss 0:4d17cd9c8f9d 41 Endpoint rtp_server;
klauss 0:4d17cd9c8f9d 42 RTP * rtp;
klauss 0:4d17cd9c8f9d 43 rtpbuf_t rtpbuf;
klauss 0:4d17cd9c8f9d 44 public :
klauss 119:ee6a53069455 45 /**
klauss 119:ee6a53069455 46 * @Synopsis Cria um objeto da Classe VZ_call.
klauss 119:ee6a53069455 47 *
klauss 119:ee6a53069455 48 * @param cb_ext O ramal do CBx que solicitou a ligação.
klauss 119:ee6a53069455 49 * @param cb_port A porta RTP do CBx que solicitou a ligação.
klauss 119:ee6a53069455 50 * @param rtp_server_ext O ramal do servidor.
klauss 119:ee6a53069455 51 * @param rtp_server_port A porta RTP do servidor.
klauss 119:ee6a53069455 52 *
klauss 119:ee6a53069455 53 * Exemplo:
klauss 119:ee6a53069455 54 * @code
klauss 119:ee6a53069455 55 * ...
klauss 119:ee6a53069455 56 * VZ_call * call = new VZ_call( 5010, 11841, 913, 12902 );
klauss 119:ee6a53069455 57 * ...
klauss 119:ee6a53069455 58 * @endcode
klauss 119:ee6a53069455 59 */
klauss 0:4d17cd9c8f9d 60 VZ_call( int cb_ext, int cb_port, int rtp_server_ext, int rtp_server_port );
klauss 69:65665afbad5d 61
klauss 119:ee6a53069455 62 /**
klauss 119:ee6a53069455 63 * @Synopsis Destroi o objeto da classe.
klauss 119:ee6a53069455 64 *
klauss 119:ee6a53069455 65 * Exemplo:
klauss 119:ee6a53069455 66 * @code
klauss 119:ee6a53069455 67 * ...
klauss 119:ee6a53069455 68 * delete( call );
klauss 119:ee6a53069455 69 * ...
klauss 119:ee6a53069455 70 * @endcode
klauss 119:ee6a53069455 71 */
klauss 0:4d17cd9c8f9d 72 ~VZ_call();
klauss 69:65665afbad5d 73
klauss 119:ee6a53069455 74 /**
klauss 119:ee6a53069455 75 * @Synopsis Obtém o ramal do CBx.
klauss 119:ee6a53069455 76 *
klauss 119:ee6a53069455 77 * @return Um inteiro que representa o ramal do CBx que solicitou a ligação.
klauss 119:ee6a53069455 78 *
klauss 119:ee6a53069455 79 * Exemplo:
klauss 119:ee6a53069455 80 * @code
klauss 119:ee6a53069455 81 * ...
klauss 119:ee6a53069455 82 * int cb_ext = call->get_cb_ext();
klauss 119:ee6a53069455 83 * ...
klauss 119:ee6a53069455 84 * @endcode
klauss 119:ee6a53069455 85 */
klauss 0:4d17cd9c8f9d 86 int get_cb_ext();
klauss 69:65665afbad5d 87
klauss 119:ee6a53069455 88 /**
klauss 119:ee6a53069455 89 * @Synopsis Obtém a porta RTP do CBx que solicitou a ligação.
klauss 119:ee6a53069455 90 *
klauss 119:ee6a53069455 91 * @return Um inteiro que representa a porta do CBx.
klauss 119:ee6a53069455 92 *
klauss 119:ee6a53069455 93 * Exemplo:
klauss 119:ee6a53069455 94 * @code
klauss 119:ee6a53069455 95 * ...
klauss 119:ee6a53069455 96 * int cb_port = call->get_cb_ext();
klauss 119:ee6a53069455 97 * ...
klauss 119:ee6a53069455 98 * @endcode
klauss 119:ee6a53069455 99 */
klauss 0:4d17cd9c8f9d 100 int get_cb_port();
klauss 69:65665afbad5d 101
klauss 119:ee6a53069455 102 /**
klauss 119:ee6a53069455 103 * @Synopsis Informa o ramal do servidor RTP.
klauss 119:ee6a53069455 104 *
klauss 119:ee6a53069455 105 * @return O numero do ramal do servidor RTP.
klauss 119:ee6a53069455 106 *
klauss 119:ee6a53069455 107 * Exemplo:
klauss 119:ee6a53069455 108 * @code
klauss 119:ee6a53069455 109 * ...
klauss 119:ee6a53069455 110 * int rtp_server_ext = call->get_rtp_server_ext();
klauss 119:ee6a53069455 111 * ...
klauss 119:ee6a53069455 112 * @endcode
klauss 119:ee6a53069455 113 */
klauss 0:4d17cd9c8f9d 114 int get_rtp_server_ext();
klauss 69:65665afbad5d 115
klauss 119:ee6a53069455 116 /**
klauss 119:ee6a53069455 117 * @Synopsis Informa o numero da porta do servidor RTP.
klauss 119:ee6a53069455 118 *
klauss 119:ee6a53069455 119 * @return O numero da porta usada na comunicação com o servidor RTP.
klauss 119:ee6a53069455 120 *
klauss 119:ee6a53069455 121 * Exemplo:
klauss 119:ee6a53069455 122 * @code
klauss 119:ee6a53069455 123 * ...
klauss 119:ee6a53069455 124 * int rtp_server_port = call->get_rtp_server_port();
klauss 119:ee6a53069455 125 * ...
klauss 119:ee6a53069455 126 * @endcode
klauss 119:ee6a53069455 127 */
klauss 0:4d17cd9c8f9d 128 int get_rtp_server_port();
klauss 69:65665afbad5d 129
klauss 119:ee6a53069455 130 /**
klauss 119:ee6a53069455 131 * @Synopsis Coleta dados de audio vindos do servidor
klauss 119:ee6a53069455 132 *
klauss 119:ee6a53069455 133 * @param length Um ponteiro para posição de memória que recebera quantos bytes foram lidos no pacote recebido.
klauss 119:ee6a53069455 134 *
klauss 119:ee6a53069455 135 * @return Um ponteiro para o pacote disponivel para processamento.
klauss 119:ee6a53069455 136 *
klauss 119:ee6a53069455 137 * Exemplo:
klauss 119:ee6a53069455 138 * @code
klauss 119:ee6a53069455 139 * ...
klauss 119:ee6a53069455 140 * int length = 0;
klauss 119:ee6a53069455 141 * char * eth_msg = call->get_eth_message( &length );
klauss 119:ee6a53069455 142 * ...
klauss 119:ee6a53069455 143 * @endcode
klauss 119:ee6a53069455 144 */
klauss 0:4d17cd9c8f9d 145 char * get_eth_message( int * length );
klauss 0:4d17cd9c8f9d 146
klauss 119:ee6a53069455 147 /**
klauss 119:ee6a53069455 148 * @Synopsis Responsavel por efetivamente montar o pacote que será enviado via rede.
klauss 119:ee6a53069455 149 *
klauss 119:ee6a53069455 150 * @param buffer Um ponteiro para o inicio dos dados recebidos do CBx que será encapsulado.
klauss 119:ee6a53069455 151 *
klauss 119:ee6a53069455 152 * @return Um ponteiro para o inicio do pacote pronto para o envio.
klauss 119:ee6a53069455 153 *
klauss 119:ee6a53069455 154 * Exemplo:
klauss 119:ee6a53069455 155 * @code
klauss 119:ee6a53069455 156 * ...
klauss 119:ee6a53069455 157 * char str_to_server[ 1024 ];
klauss 119:ee6a53069455 158 * // assumindo que em data_from_cb consta armazenados os dados vindos dos Call_Box
klauss 119:ee6a53069455 159 * strcpy( str_to_server, build_eth_package( data_from_cb ) );
klauss 119:ee6a53069455 160 * ...
klauss 119:ee6a53069455 161 * @endcode
klauss 119:ee6a53069455 162 */
klauss 0:4d17cd9c8f9d 163 char * build_eth_package( uint8_t * );
klauss 69:65665afbad5d 164
klauss 119:ee6a53069455 165 /**
klauss 119:ee6a53069455 166 * @Synopsis Responsavel por enviar efetivamente os dados via eth
klauss 119:ee6a53069455 167 *
klauss 119:ee6a53069455 168 * @param buffer Um ponteiro para o inicio dos dados que serão enviados.
klauss 119:ee6a53069455 169 *
klauss 119:ee6a53069455 170 * @return O numero de bytes efetivamente enviados.
klauss 119:ee6a53069455 171 *
klauss 119:ee6a53069455 172 * Exemplo:
klauss 119:ee6a53069455 173 * @code
klauss 119:ee6a53069455 174 * ...
klauss 119:ee6a53069455 175 * char * pkg = call->build_eth_package( data_from_cb );
klauss 119:ee6a53069455 176 * //assumindo que os dados vindos do Call_Box estão armazenados em data_from_cb
klauss 119:ee6a53069455 177 * int sent = call->send_message( pkg );
klauss 119:ee6a53069455 178 * ...
klauss 119:ee6a53069455 179 * @endcode
klauss 119:ee6a53069455 180 */
klauss 0:4d17cd9c8f9d 181 int send_message( char * );
klauss 69:65665afbad5d 182
klauss 119:ee6a53069455 183 /**
klauss 119:ee6a53069455 184 * @Synopsis Verifica se o tempo de ligação é menor que o tempo máximo permitido.
klauss 119:ee6a53069455 185 *
klauss 119:ee6a53069455 186 * @retval True - Caso o tempo da ligação tenha passado do limite definido em __MAX_CALL_TIME__.
klauss 119:ee6a53069455 187 * @retval False - caso em que o tempo da ligação atual for menor que o máximo permitido..
klauss 119:ee6a53069455 188 *
klauss 119:ee6a53069455 189 * Exemplo:
klauss 119:ee6a53069455 190 * @code
klauss 119:ee6a53069455 191 * ...
klauss 119:ee6a53069455 192 * printf( "Call já deveria ter acabado ? %s \n\r", ( call->is_timeout() ) ? "Sim" : "Não" );
klauss 119:ee6a53069455 193 * ...
klauss 119:ee6a53069455 194 * @endcode
klauss 119:ee6a53069455 195 */
klauss 119:ee6a53069455 196 bool is_timetofinish ( void );
klauss 92:92df17f538a8 197
klauss 119:ee6a53069455 198
klauss 119:ee6a53069455 199 bool cbx_pkg_is_idle ( void );
klauss 119:ee6a53069455 200
klauss 119:ee6a53069455 201 uint16_t get_elapsed_time ( void );
klauss 119:ee6a53069455 202
klauss 119:ee6a53069455 203 void cbx_pkg_idle_timer_reset ( void );
klauss 119:ee6a53069455 204 void reconnect ( void );
klauss 119:ee6a53069455 205 void * check_rtp ( void );
klauss 119:ee6a53069455 206 void init_cbx_pkg_idle_timer ( void );
klauss 119:ee6a53069455 207
klauss 119:ee6a53069455 208 int rtp_print_yourself ( void );
klauss 117:e9facba9db27 209 int print_yourself ( void );
klauss 0:4d17cd9c8f9d 210 };
klauss 0:4d17cd9c8f9d 211 #endif