Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
call.h
00001 /** 00002 * @file call.h 00003 * @Synopsis Implementa as funcionalidades de uma ligação, incluindo troca de dados de audio em ambos os lados. 00004 * @author Jhonatan Casale 00005 * @version 1 00006 * @date 2014-11-05 00007 * \class VZ_call 00008 */ 00009 00010 #ifndef __CALL_H__ 00011 #define __CALL_H__ 00012 00013 #include "shared_variables.h" 00014 #include "object.h" 00015 #include "rtp.h" 00016 #include "debug.h" 00017 #include "rtpbuf.h" 00018 %: include "config_manager.h" 00019 00020 const uint8_t __CALL_MAX_IDLE_TIME__ = 5; 00021 ///< Define o tempo máximo sem receber dados em alguma chamada. 00022 00023 const uint8_t __MAX_CALL_TIME__ = 180; 00024 ///< Define o tempo máximo ( em segundos ) de uma ligação. 00025 00026 const uint8_t CBX_PKG_IDLE_MAX_TIME = 10; 00027 00028 class VZ_call : public Object { 00029 private : 00030 Timer t; 00031 Timer finish; 00032 Timer cbx_pkg_idle_timer; 00033 int cb_ext; 00034 int cb_port; 00035 uint8_t cb2server[ 320 ]; 00036 char server2cb[ 320 ]; 00037 uint8_t buffer[ 320 ]; 00038 UDPSocket rtp_sock; 00039 int rtp_server_ext; 00040 int rtp_server_port; 00041 Endpoint rtp_server; 00042 RTP * rtp; 00043 rtpbuf_t rtpbuf; 00044 public : 00045 /** 00046 * @Synopsis Cria um objeto da Classe VZ_call. 00047 * 00048 * @param cb_ext O ramal do CBx que solicitou a ligação. 00049 * @param cb_port A porta RTP do CBx que solicitou a ligação. 00050 * @param rtp_server_ext O ramal do servidor. 00051 * @param rtp_server_port A porta RTP do servidor. 00052 * 00053 * Exemplo: 00054 * @code 00055 * ... 00056 * VZ_call * call = new VZ_call( 5010, 11841, 913, 12902 ); 00057 * ... 00058 * @endcode 00059 */ 00060 VZ_call( int cb_ext, int cb_port, int rtp_server_ext, int rtp_server_port ); 00061 00062 /** 00063 * @Synopsis Destroi o objeto da classe. 00064 * 00065 * Exemplo: 00066 * @code 00067 * ... 00068 * delete( call ); 00069 * ... 00070 * @endcode 00071 */ 00072 ~VZ_call(); 00073 00074 /** 00075 * @Synopsis Obtém o ramal do CBx. 00076 * 00077 * @return Um inteiro que representa o ramal do CBx que solicitou a ligação. 00078 * 00079 * Exemplo: 00080 * @code 00081 * ... 00082 * int cb_ext = call->get_cb_ext(); 00083 * ... 00084 * @endcode 00085 */ 00086 int get_cb_ext(); 00087 00088 /** 00089 * @Synopsis Obtém a porta RTP do CBx que solicitou a ligação. 00090 * 00091 * @return Um inteiro que representa a porta do CBx. 00092 * 00093 * Exemplo: 00094 * @code 00095 * ... 00096 * int cb_port = call->get_cb_ext(); 00097 * ... 00098 * @endcode 00099 */ 00100 int get_cb_port(); 00101 00102 /** 00103 * @Synopsis Informa o ramal do servidor RTP. 00104 * 00105 * @return O numero do ramal do servidor RTP. 00106 * 00107 * Exemplo: 00108 * @code 00109 * ... 00110 * int rtp_server_ext = call->get_rtp_server_ext(); 00111 * ... 00112 * @endcode 00113 */ 00114 int get_rtp_server_ext(); 00115 00116 /** 00117 * @Synopsis Informa o numero da porta do servidor RTP. 00118 * 00119 * @return O numero da porta usada na comunicação com o servidor RTP. 00120 * 00121 * Exemplo: 00122 * @code 00123 * ... 00124 * int rtp_server_port = call->get_rtp_server_port(); 00125 * ... 00126 * @endcode 00127 */ 00128 int get_rtp_server_port(); 00129 00130 /** 00131 * @Synopsis Coleta dados de audio vindos do servidor 00132 * 00133 * @param length Um ponteiro para posição de memória que recebera quantos bytes foram lidos no pacote recebido. 00134 * 00135 * @return Um ponteiro para o pacote disponivel para processamento. 00136 * 00137 * Exemplo: 00138 * @code 00139 * ... 00140 * int length = 0; 00141 * char * eth_msg = call->get_eth_message( &length ); 00142 * ... 00143 * @endcode 00144 */ 00145 char * get_eth_message( int * length ); 00146 00147 /** 00148 * @Synopsis Responsavel por efetivamente montar o pacote que será enviado via rede. 00149 * 00150 * @param buffer Um ponteiro para o inicio dos dados recebidos do CBx que será encapsulado. 00151 * 00152 * @return Um ponteiro para o inicio do pacote pronto para o envio. 00153 * 00154 * Exemplo: 00155 * @code 00156 * ... 00157 * char str_to_server[ 1024 ]; 00158 * // assumindo que em data_from_cb consta armazenados os dados vindos dos Call_Box 00159 * strcpy( str_to_server, build_eth_package( data_from_cb ) ); 00160 * ... 00161 * @endcode 00162 */ 00163 char * build_eth_package( uint8_t * ); 00164 00165 /** 00166 * @Synopsis Responsavel por enviar efetivamente os dados via eth 00167 * 00168 * @param buffer Um ponteiro para o inicio dos dados que serão enviados. 00169 * 00170 * @return O numero de bytes efetivamente enviados. 00171 * 00172 * Exemplo: 00173 * @code 00174 * ... 00175 * char * pkg = call->build_eth_package( data_from_cb ); 00176 * //assumindo que os dados vindos do Call_Box estão armazenados em data_from_cb 00177 * int sent = call->send_message( pkg ); 00178 * ... 00179 * @endcode 00180 */ 00181 int send_message( char * ); 00182 00183 /** 00184 * @Synopsis Verifica se o tempo de ligação é menor que o tempo máximo permitido. 00185 * 00186 * @retval True - Caso o tempo da ligação tenha passado do limite definido em __MAX_CALL_TIME__. 00187 * @retval False - caso em que o tempo da ligação atual for menor que o máximo permitido.. 00188 * 00189 * Exemplo: 00190 * @code 00191 * ... 00192 * printf( "Call já deveria ter acabado ? %s \n\r", ( call->is_timeout() ) ? "Sim" : "Não" ); 00193 * ... 00194 * @endcode 00195 */ 00196 bool is_timetofinish ( void ); 00197 00198 00199 bool cbx_pkg_is_idle ( void ); 00200 00201 uint16_t get_elapsed_time ( void ); 00202 00203 void cbx_pkg_idle_timer_reset ( void ); 00204 void reconnect ( void ); 00205 void * check_rtp ( void ); 00206 void init_cbx_pkg_idle_timer ( void ); 00207 00208 int rtp_print_yourself ( void ); 00209 int print_yourself ( void ); 00210 }; 00211 #endif
Generated on Tue Jul 12 2022 16:25:01 by
