Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
Diff: call.h
- Revision:
- 69:65665afbad5d
- Parent:
- 0:4d17cd9c8f9d
- Child:
- 74:81c47fff88a5
diff -r b54993674190 -r 65665afbad5d call.h --- a/call.h Fri Nov 07 17:57:55 2014 +0000 +++ b/call.h Wed Nov 12 13:25:54 2014 +0000 @@ -1,3 +1,11 @@ +/** + * @file call.h + * @Synopsis Implementa as funcionalidades de uma ligação, incluindo troca de dados de audio em ambos os lados. + * @author Jhonatan Casale + * @version 1 + * @date 2014-11-05 + * \class VZ_call + */ #ifndef __CALL_H__ #define __CALL_H__ @@ -13,9 +21,11 @@ extern DigitalOut led1; -#define __RPT_SEVER_IP__ "192.168.120.120" #define __CALL_MAX_IDLE_TIME__ 5 +///< Define o tempo máximo sem receber dados em alguma chamada. + #define __MAX_CALL_TIME__ 180 +///< Define o tempo máximo ( em segundos ) de uma ligação. class VZ_call : public Object{ private : @@ -33,22 +43,230 @@ RTP * rtp; rtpbuf_t rtpbuf; public : + /** + * @Synopsis Cria um objeto da Classe VZ_call. + * + * @param cb_ext O ramal do CBx que solicitou a ligação. + * @param cb_port A porta RTP do CBx que solicitou a ligação. + * @param rtp_server_ext O ramal do servidor. + * @param rtp_server_port A porta RTP do servidor. + * + * Exemplo: + * @code + * ... + * VZ_call * call = new VZ_call( 5010, 11841, 913, 12902 ); + * ... + * @endcode + */ VZ_call( int cb_ext, int cb_port, int rtp_server_ext, int rtp_server_port ); + + /** + * @Synopsis Destroi o objeto da classe. + * + * Exemplo: + * @code + * ... + * delete( call ); + * ... + * @endcode + */ ~VZ_call(); + + /** + * @Synopsis Obtém o ramal do CBx. + * + * @return Um inteiro que representa o ramal do CBx que solicitou a ligação. + * + * Exemplo: + * @code + * ... + * int cb_ext = call->get_cb_ext(); + * ... + * @endcode + */ int get_cb_ext(); + + /** + * @Synopsis Obtém a porta RTP do CBx que solicitou a ligação. + * + * @return Um inteiro que representa a porta do CBx. + * + * Exemplo: + * @code + * ... + * int cb_port = call->get_cb_ext(); + * ... + * @endcode + */ int get_cb_port(); + + /** + * @Synopsis Informa o ramal do servidor RTP. + * + * @return O numero do ramal do servidor RTP. + * + * Exemplo: + * @code + * ... + * int rtp_server_ext = call->get_rtp_server_ext(); + * ... + * @endcode + */ int get_rtp_server_ext(); + + /** + * @Synopsis Informa o numero da porta do servidor RTP. + * + * @return O numero da porta usada na comunicação com o servidor RTP. + * + * Exemplo: + * @code + * ... + * int rtp_server_port = call->get_rtp_server_port(); + * ... + * @endcode + */ int get_rtp_server_port(); + + /** + * @Synopsis Coleta dados de audio vindos do servidor + * + * @param length Um ponteiro para posição de memória que recebera quantos bytes foram lidos no pacote recebido. + * + * @return Um ponteiro para o pacote disponivel para processamento. + * + * Exemplo: + * @code + * ... + * int length = 0; + * char * eth_msg = call->get_eth_message( &length ); + * ... + * @endcode + */ char * get_eth_message( int * length ); + + /** + * @Synopsis Retorna uma referência para o buffer da classe, responsavel por armazenar os dados do server para o CBx. + * + * @return Um ponteiro para o inicio deste buffer. + * + * Exemplo: + * @code + * ... + * char * buffer = call->get_server2cb_buffer(); + * ... + * @endcode + */ char * get_server2cb_buffer(); + + /** + * @Synopsis Retorna uma referência para o buffer da classe, responsavel por armazenar os dados do CBx para o server. + * + * @return Um ponteiro para o inicio deste buffer. + * + * Exemplo: + * @code + * ... + * uint8_t * buffer = call->get_cb2server_buffer(); + * ... + * @endcode + */ uint8_t * get_cb2server_buffer(); + + /** + * @Synopsis Retorna o buffer desta classe. + * + * @return Um ponteiro para o primeiro elemento do buffer desta classe. + * + * Exemplo: + * @code + * ... + * uint8_t * buffer = call->get_buffer(); + * ... + * @endcode + */ uint8_t * get_buffer(); + /** + * @Synopsis Deveria encapsular o buffer da classe e montar um pacote formatado para envio aos CBx. Porém, fora de uso. + * + * @return Um ponteiro para o inicio do pacote montado no protocolo VZ. + * + * \note Função não implementada. + * + * Exemplo: + * @code + * ... + * uint8_t * cb_package = call->build_cb_package(); + * ... + * @endcode + */ uint8_t * build_cb_package( void ); + + /** + * @Synopsis Responsavel por efetivamente montar o pacote que será enviado via rede. + * + * @param buffer Um ponteiro para o inicio dos dados recebidos do CBx que será encapsulado. + * + * @return Um ponteiro para o inicio do pacote pronto para o envio. + * + * Exemplo: + * @code + * ... + * char str_to_server[ 1024 ]; + * // assumindo que em data_from_cb consta armazenados os dados vindos dos Call_Box + * strcpy( str_to_server, build_eth_package( data_from_cb ) ); + * ... + * @endcode + */ char * build_eth_package( uint8_t * ); - + + /** + * @Synopsis Responsavel por enviar efetivamente os dados via eth + * + * @param buffer Um ponteiro para o inicio dos dados que serão enviados. + * + * @return O numero de bytes efetivamente enviados. + * + * Exemplo: + * @code + * ... + * char * pkg = call->build_eth_package( data_from_cb ); + * //assumindo que os dados vindos do Call_Box estão armazenados em data_from_cb + * int sent = call->send_message( pkg ); + * ... + * @endcode + */ int send_message( char * ); + + /** + * @Synopsis Verifica se esta ligação não esta ultrapassando o tempo permitido. + * + * @retval True - se o tempo sem trocar dados nesta ligação for maior que __CALL_MAX_IDLE_TIME__. + * @retval False - Caso duração de ligação ainda dentro do tempo esperado. + * + * Exemplo: + * @code + * ... + * printf( "Call não esta recendo dados a mais tempo do que deveria ? %s \n\r", ( call->is_timeout() ) ? "Sim" : "Não" ); + * ... + * @endcode + */ bool is_timeout( void ); + + /** + * @Synopsis Verifica se o tempo de ligação é menor que o tempo máximo permitido. + * + * @retval True - Caso o tempo da ligação tenha passado do limite definido em __MAX_CALL_TIME__. + * @retval False - caso em que o tempo da ligação atual for menor que o máximo permitido.. + * + * Exemplo: + * @code + * ... + * printf( "Call já deveria ter acabado ? %s \n\r", ( call->is_timeout() ) ? "Sim" : "Não" ); + * ... + * @endcode + */ bool is_timetofinish( void ); }; #endif \ No newline at end of file