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:
- 119:ee6a53069455
- Parent:
- 117:e9facba9db27
- Child:
- 121:ee02790d00b7
--- a/call_box.h Fri Apr 24 13:54:24 2015 +0000 +++ b/call_box.h Thu Apr 30 15:42:41 2015 +0000 @@ -15,63 +15,69 @@ #include "debug.h" #include "shared_variables.h" -#define __RESQUEST_TIME__ 3 -#define MAX_INVITE_RETRY 1000 - +const int __RESQUEST_TIME__ = 3; +const uint16_t MAX_INVITE_RETRY = 512 * 2; -#define __TIMEOUT__ 250 +const uint8_t __TIMEOUT__ = 250; + ///< O tempo que a Header demora para "pingar" o Call_Box para saber se esta tudo bem. -#define __RANGE_TO_REGISTER__ 150 +const uint8_t __RANGE_TO_REGISTER__ = 150; ///< Doc. later -#define __TIME_TO_REGISTER__ __TIMEOUT__ - __RANGE_TO_REGISTER__ - -#define __CYCLES__ __TIME_TO_REGISTER__ / __RESQUEST_TIME__ // 200 // 3 ~ 66 +const uint8_t __TIME_TO_REGISTER__ = __TIMEOUT__ - __RANGE_TO_REGISTER__; +const uint8_t __CYCLES__ = __TIME_TO_REGISTER__ / __RESQUEST_TIME__; // 200 // 3 ~ 66 +const uint8_t RTP_REQUEST_PORT_TIMEOUT = 45; -#define RTP_REQUEST_PORT_TIMEOUT 45 // 600 // seconds - -#define REQUEST_REGISTRY -1 -#define REQUEST_PEND -2 -#define REQUEST_PING -4 +const short int REQUEST_REGISTRY = -1; +const short int REQUEST_PEND = -2; +const short int REQUEST_PING = -4; ///< Valor usado como referencia para registro do equipamento CBx. -#define __MAX_ATTEMPTS__ 5 +const uint8_t __MAX_ATTEMPTS__ = 5; ///< O numero maximo de vezes que a Header vai tentar pingar o Call_Box -#define __STEP__ 30 +const uint8_t __STEP__ = 30; ///< Usado para aumentar o intervalo entre cada ping, fora de uso atualmente. -#define __MAX_TIMEOUT__ __STEP__ * __MAX_ATTEMPTS__ +const uint8_t __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 +const uint8_t cb_idle = 1; ///< Representa que o Call_Box esta disponivel -#define cb_ringing 2 +const uint8_t cb_ringing = 2; ///< Representa o Call_Box no status, discando. -#define cb_trying 3 +const uint8_t cb_trying = 3; ///< Representa o Call_Box no status tentando concluir o pedido de ligação. -#define cb_on_call 4 +const uint8_t cb_on_call = 4; ///< Representa que o Call_Box já esta em uma ligação. -#define cb_busy 5 +const uint8_t cb_busy = 5; ///< Representa que o Call_Box esta ocupado. -#define cb_denied 6 +const uint8_t cb_denied = 6; ///< Representa que o pedido de invite do Call_Box foi negado. -#define cb_bootloader 7 -///< Representa que o Call_Box esta em atualizacao de firmware +const uint8_t cb_bootloader = 7; +///< Representa que o Call_Box esta em atualizacao de firmware + class Call_Box : public Object{ private : + bool invite_response; + bool bye_response; + int ext; // ramal int port; // porta - Timer t; - Timer rtp_timer; // usado pra controlar o timeout dos pedidos de porta rtp + int sip_socket_fd; + int shift_port; + uint8_t remaining_attempts; - float timeout; uint8_t msg_id; uint8_t timeslice; uint8_t next_aging_type; - bool invite_response; + uint8_t invite_try_number; + uint16_t invite_retry_count; - bool bye_response; - Timer seconds; - int sip_socket_fd; + + float timeout; + + Timer t; + Timer rtp_timer; // usado pra controlar o timeout dos pedidos de porta rtp + Timer invite_timer; public : /** * @Synopsis Objeto Sip que será usado para tratativas com o servidor. @@ -162,37 +168,6 @@ 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->has_next_try() == 0x00 ){ - * // faça alguma coisa ... - * } - * ... - * @endcode - */ - bool has_next_try( void ); - - /** * @Synopsis Reseta o timer do objeto Call_Box. * * Exemplo: @@ -273,8 +248,7 @@ * ... * @endcode */ - void set_timeslice( uint8_t timeslice ); - + void set_timeslice( uint8_t timeslice ); /** * @Synopsis Informa o timeslice ocupado atualmente pelo Call_Box. @@ -357,54 +331,48 @@ * @endcode */ void set_sip_status( int status ); - - /** - * @Synopsis Inicia ( ou re-inicia ) o Timer do objeto Call_Box. - * - * Exemplo: - * @code - * ... - * cb->re_start_timer(); - * ... - * @endcode - */ - void re_start_timer( void ); + /*------------------------------------------------------------------------------------------------*/ + bool get_invite_response( void ); + bool get_bye_response( void ); + bool time_to_retry ( void ); + bool is_rtp_timer_timeout ( void ); int get_sip_status( void ); int set_sip_status( uint8_t sip_status ); - int get_status( void ); - void cb_set_status( uint8_t status ); - - int8_t get_next_aging_type( void ); - - //void set_first_invite_response_ok( void ); - //void set_first_invite_response_pending( void ); - //bool get_first_invite_response( void ); - - void set_invite_response_ok( void ); - void set_invite_response_pending( void ); - bool get_invite_response( void ); - - void set_bye_response_ok( void ); - void set_bye_response_pending( void ); - bool get_bye_response( void ); - - int get_sip_socket_fd( void ); - int sip_udp_incomming_pkg( void ); - void reset_cb_status( void ); - void invite_retry_count_reset( void ); - uint8_t get_invite_retry_count( void ); int get_sip_ext( void ); int get_sip_port( void ); int get_timer( void ); int get_rtp_port ( void ); int print_yourself ( void ); + int get_sip_socket_fd( void ); + int sip_udp_incomming_pkg( void ); + int get_rtp_timer ( void ); + int call_init ( int timeslice ); + int call_end ( bool send_bye_to_ast = true ); + int call_confirmed ( void ); + int retry_send_invite_pkg_to_ast ( void ); + + void cb_set_status( uint8_t status ); + void set_invite_response_ok( void ); + void set_invite_response_pending( void ); + + void set_bye_response_ok( void ); + void set_bye_response_pending( void ); + + void reset_cb_status( void ); + void invite_retry_count_reset( void ); + + uint8_t get_invite_try_number ( void ); + uint8_t msg_id_update ( void ); + + uint16_t get_invite_retry_count( void ); + void set_rtp_port ( int ); void init_rtp_timer ( void ); void reset_rtp_timer ( void ); - bool is_rtp_timer_timeout ( void ); - int get_rtp_timer ( void ); + void call_config ( void ); }; + #endif \ No newline at end of file