Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
Diff: call_box.h
- Revision:
- 69:65665afbad5d
- Parent:
- 55:2f5e7374af9d
- Child:
- 74:81c47fff88a5
--- a/call_box.h Fri Nov 07 17:57:55 2014 +0000 +++ b/call_box.h Wed Nov 12 13:25:54 2014 +0000 @@ -1,3 +1,11 @@ +/** + * @file call_box.h + * @Synopsis Implementa as funções de gerenciamento do Call_Box + * @author Jhonatan Casale + * @version 1 + * @date 2014-11-06 + * \class Call_Box + */ #ifndef __CALL_BOX_H__ #define __CALL_BOX_H__ @@ -5,16 +13,25 @@ #include "object.h" #include "sip.h" #include "debug.h" -#define __TIMEOUT__ 30 /*seconds*/ +#define __TIMEOUT__ 30 +///< O tempo que a Header demora para "pingar" o Call_Box para saber se esta tudo bem. #define __MAX_ATTEMPTS__ 5 -#define __STEP__ 30 /*seconds*/ +///< O numero maximo de vezes que a Header vai tentar pingar o Call_Box +#define __STEP__ 30 +///< Usado para aumentar o intervalo entre cada ping, fora de uso atualmente. #define __MAX_TIMEOUT__ __STEP__ * __MAX_ATTEMPTS__ +///< Usado para limitar o tempo maximo de timeout do Call_Box sem responder o ping, fora de uso. #define cb_idle 1 +///< Representa que o Call_Box esta disponivel #define cb_ringing 2 +///< Representa o Call_Box no status, discando. #define cb_trying 3 +///< Representa o Call_Box no status tentando concluir o pedido de ligação. #define cb_on_call 4 +///< Representa que o Call_Box já esta em uma ligação. #define cb_busy 5 +///< Representa que o Call_Box esta ocupado. class Call_Box : public Object{ private : @@ -27,32 +44,301 @@ uint8_t timeslice; public : + /** + * @Synopsis Objeto Sip que será usado para tratativas com o servidor. + * + * \note Esse objeto é criado no construtor da classe Call_Box, com os mesmos parâmetros passados para o + * construtor da classe Call_Box. + */ Sip * sip; + + /** + * @Synopsis Cria um objeto Call_Box + * + * @param ext Vincula o objeto ao ramal informado + * @param port Vincula o objeto a porto informada. + * + * Exemplo: + * @code + * ... + * int ext = 5121; + * int port = 5021; + * Call_Box * cb = new Call_Box( ext, port ); + * ... + * @endcode + */ Call_Box( int ext, int port ); + + /** + * @Synopsis Destroi o objeto Call_Box + * + * Exemplo: + * @code + * ... + * delete( cb ); + * ... + * @endcode + * \note Deleta o objeto Sip nesse processo. + */ ~Call_Box( void ); + /** + * @Synopsis Representa o status do Call_Box. + * + * \note Este valor sempre é atualizado ( por convenção ) com o uso da macro set_status(a,b), definida em utils.h + */ uint8_t status; + /** + * @Synopsis Informa o ramal vinculado ao objeto Call_Box. + * + * @return O numero do ramal contido atualmente no objeto Call_Box + * + * Exemplo: + * @code + * ... + * int ext = cb->get_ext(); + * ... + * @endcode + */ int get_ext( void ); + + /** + * @Synopsis Informa o numero da porta vinculada ao objeto Call_Box. + * + * @return O numero da porta contido atualmente no objeto Call_Box + * + * Exemplo: + * @code + * ... + * int port = cb->get_port(); + * ... + * @endcode + */ int get_port( void ); - + + /** + * @Synopsis Informa o tempo decorrido. + * \note O timer de cada objeto é iniciado no momento da criação do objeto Call_Box. + * + * @return O tempo decorrido desde a ultima vez que o timer do objeto foi resetado. + * + * Exemplo: + * @code + * ... + * float elapsed_time = cb->get_elapsed_time(); + * ... + * @endcode + */ float get_elapsed_time( void ); + + /** + * @Synopsis Informa se o Call_Box esta inativo acima do tempo previsto. + * + * @retval True - Caso o timer do objeto seja maior que o definido. + * @retval False - Caso o timer do objeto seja menor que o definido.. + * + * Exemplo: + * @code + * ... + * printf(" %s ", ( cb->is_timeout() ) ? "Call_Box is outdated" : "Call_Box is okay" ); + * ... + * @endcode + */ bool is_timeout( void ); + + /** + * @Synopsis Reconfigura o timeout de forma incremental, informando se ainda existe alguma tentativas de "ping" nesse Call_Box + * + * @return O numero de tentativas restantes de registro desse Call_Box. Retorno 0 significa que as tentativar acabaram. + * + * Exemplo: + * @code + * ... + * if( cb->reconfigure_timeout() == 0x00 ){ + * // faça alguma coisa ... + * } + * ... + * @endcode + */ uint8_t reconfigure_timeout( void ); + + /** + * @Synopsis Reseta o timer do objeto Call_Box. + * + * Exemplo: + * @code + * ... + * cb->reset_elapsed_time(); + * ... + * @endcode + */ void reset_elapsed_time( void ); + + /** + * @Synopsis Invoca o método de registro deste Call_Box ( via objeto Sip vinculado ). + * + * Exemplo: + * @code + * ... + * cb->registry(); + * ... + * @endcode + */ void registry( void ); + + /** + * @Synopsis Invoca o método de pedido de ligação. + * + * @return Um ponteiro para um objeto VZ_call quando o pedido foi aceito pelo server, NULL caso em que o pedido de invite foi + * negado pelo server ou aconteceu timeout do invite. + * + * Exemplo: + * @code + * ... + * VZ_call * call = cb->invite(); + * ... + * @endcode + */ VZ_call * invite( void ); + + /** + * @Synopsis Valor inicial para preenchimento deste campo nos pacotes trocados entre Header/Call_Box. + * + * @param msg_id Seta o valor recebido como parâmetro na variável do objeto. + * + * Exemplo: + * @code + * ... + * cb->set_msg_id( 0x12 ); + * ... + * @endcode + */ void set_msg_id( uint8_t msg_id ); + + /** + * @Synopsis Informa o numero atual de msg_id que será enviado na próxima mensagem desse Call_Box + * + * @return O valor atual de msg_id. + * + * Exemplo: + * @code + * ... + * uint8_t msg_id = cb->get_msg_id(); + * ... + * @endcode + */ uint8_t get_msg_id( void ); - void set_timeslice( uint8_t timeslice ); + + + /** + * @Synopsis Armazena o valor de Timeslice atualmente em uso pelo Call_Box. + * + * @param timeslice O valor que corresponde ao Timeslice disponivel para comunição do Call_Box + * + * Exemplo: + * @code + * ... + * Timeslice * ts = new Timeslice(); + * cb->set_timeslice( ts->get_timeslice() ); + * ... + * @endcode + */ + void set_timeslice( uint8_t timeslice ); + + + /** + * @Synopsis Informa o timeslice ocupado atualmente pelo Call_Box. + * + * @return O valor do timeslice em uso pelo Call_Box. + * + * Exemplo: + * @code + * ... + * uint8_t ts = cb->get_timeslice(); + * ... + * @endcode + */ uint8_t get_timeslice( void ); + //void set_sip( Sip * sip ); + + /** + * @Synopsis Faz chamada ( via objeto Sip vinculado ) a função que irá escutar a porta SIP associada neste Call_Box. + * + * @return Um valor menor que zero se a execução falhar, igual a zero se a execução for bem sucedida e nenhum dado foi + * recebido, ou quando a execução foi bem sucedida e nenhuma mensagem que demanda tramamento foi recebida; um numero + * maior do que zero, caso tenha recebido um pacote do tipo "bye" do servidor; este numero corresponde ao ramal do Call_Box. + * + * Exemplo: + * @code + * ... + * int returned_value = cb->listen_SIP_server(); + * ... + * @endcode + */ int listen_SIP_server( void ); + + /** + * @Synopsis Invoca ( no objeto Sip ) o método de pedido de "desregistro". + * + * Exemplo: + * @code + * ... + * cb->unregistry(); + * ... + * @endcode + */ void unregistry( void ); + + /** + * @Synopsis Invoca ( via objeto Sip ) o método de envio do pacote de "bye" para o servidor. + * + * Exemplo: + * @code + * ... + * cb->send_bye(); + * ... + * @endcode + */ void send_bye( void ); + + /** + * @Synopsis Destroi o objeto Sip vinculado ao Call_Box, criando e vinculando outro em seguida. + * + * Exemplo: + * @code + * ... + * cb->reset_sip(); + * ... + * @endcode + */ void reset_sip( void ); + + /** + * @Synopsis Altera o valor do status do objeto Sip vinculado. + * + * @param status O novo valor de status que será associado ao objeto Sip vinculado ao Call_Box. + * + * Exemplo: + * @code + * ... + * cb->set_sip_status( 0 ); + * ... + * @endcode + */ void set_sip_status( int status ); - void re_start_timer( void ); + + /** + * @Synopsis Inicia ( ou re-inicia ) o Timer do objeto Call_Box. + * + * Exemplo: + * @code + * ... + * cb->re_start_timer(); + * ... + * @endcode + */ + void re_start_timer( void ); }; - #endif \ No newline at end of file