Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
Diff: sip.h
- Revision:
- 121:ee02790d00b7
- Parent:
- 119:ee6a53069455
- Child:
- 132:05cd37f7e007
diff -r 770f00554b1e -r ee02790d00b7 sip.h --- a/sip.h Mon May 04 17:25:29 2015 +0000 +++ b/sip.h Fri May 08 04:15:23 2015 +0000 @@ -9,22 +9,16 @@ #ifndef __SIP_H__ #define __SIP_H__ -#include <stdlib.h> -#include <stdint.h> -#include <string.h> +#include "EthernetInterface.h" #include "mbed.h" -#include "EthernetInterface.h" +#include <stdint.h> #include "call.h" -#include "vz_protocol.h" -#include "parallelcpld.h" // need for send confort song to CBx -#include "debug.h" -#include "shared_variables.h" const uint8_t INVITE_MAX_WAITING_TIME = 45; ///< Indica o timeout de espera de resposta de pedido de ligação para o servidor, após esse tempo responde ligação encerrado para o Call_box const uint16_t SIP_MAXFIELDSIZE = 256; ///< Define o tamanho máximo de algumas mensagens usadas na negociação Sip. -const uint16_t SIP_MAXMSGSIZE = 2048; +const uint16_t SIP_MAXMSGSIZE = 1024; ///< Define o tamanho máximo das mensagens enviadas, porém, fora de uso atualmente. const uint8_t SIP_REGISTER_EXPIRES = 120; ///< Define o timeout do registro no servidor asterisk ( * ), porém, hardcoded atualmente. @@ -35,6 +29,10 @@ static char fill_random_aux[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789pP"; +const uint8_t CALLBOX_STRING_SIZE = 32; + +const uint8_t CONTENT_LENGTH_MSG_SIZE = 65; + const uint8_t sip_idle = 0; const uint8_t sip_waiting_trying = 1 << 1; const uint8_t sip_trying = 1 << 2; @@ -47,6 +45,8 @@ class Sip{ private : + uint8_t status; ///< Representa o status do objeto Sip em dado momento. + int my_ext; int my_port; int peer_ext; @@ -60,14 +60,14 @@ char my_ip[ 20 ]; char my_display[ 20 ]; char SVNREV[ 16 ]; - char buffer[ 1024 ]; - char last_invite_tag[ SIP_MAXFIELDSIZE ]; - char last_invite_callid[ SIP_MAXFIELDSIZE ]; - char last_branch[ SIP_MAXFIELDSIZE ]; + char buffer[ SIP_MAXMSGSIZE ]; + char last_invite_tag [ SIP_MAXFIELDSIZE ]; + char last_invite_callid [ SIP_MAXFIELDSIZE ]; + char last_branch [ SIP_MAXFIELDSIZE ]; - void __init_sock__( void ); - void __end_sock__( void ); - void __reconnect__( void ); + void __init_sock__ ( void ); + void __end_sock__ ( void ); + void __reconnect__ ( void ); bool waiting; @@ -80,8 +80,6 @@ Timer invite_timer; public : - uint8_t status; ///< Representa o status do objeto Sip em dado momento. - /** * @Synopsis Cria um objeto Sip setando ramal e porta e o restando buscando valores default. * @@ -96,7 +94,7 @@ * ... * @endcode */ - Sip( int my_ext, uint16_t my_port ); + Sip ( const int my_ext, const uint16_t my_port ); /** * @Synopsis Destroi o objeto Sip @@ -109,7 +107,7 @@ * ... * @endcode */ - ~Sip(); + ~Sip ( void ); /** * @Synopsis Responsavel por montar encaminhar o pacote de registro para o servidor. @@ -121,7 +119,7 @@ * ... * @endcode */ - int registry( void ); + int registry ( void ); /** * @Synopsis Efetivamente envia o pedido de ligação para o servidor. @@ -139,49 +137,7 @@ * ... * @endcode */ - VZ_call * invite( void ); - - /** - * @Synopsis Monta o pacote para ser encaminhado para o servidor. - * - * @param header O pré-pacote contendo o cabeçalho do pacote. - * @param body O pré-pacote contendo o corpo do pacote. - * @param pkg Um ponteiro para o pacote montado no formado header + "Content-Length: " + strlen( body ) + body; - * - * @return O pacote montado, o mesmo endereço apontado por pkg. - * - * Exemplo: - * @code - * ... - * #define SIP_MAXMSGSIZE 2048; - * char pkg[ SIP_MAXMSGSIZE ]; - * char header[ SIP_MAXMSGSIZE ]; - * char bod y[ SIP_MAXMSGSIZE ]; - * pkg = sip->make_content_length( header,body, pkg ); - * ... - * @endcode - */ - char * make_content_length( char * header, char * body, char * pkg ); - - /** - * @Synopsis Função que decodifiica o codigo recebido em um dado pocote Sip. - * - * @param s O pacote que se deseja decodificar. - * - * @return O código identificado no pacote recebido. - * - * \note Não esta em uso atualmente. - * - * Exemplo: - * @code - * ... - * char buffer[ 1024 ]; - * //assumindo que em buffer será armazenado o valor do pacote que será analisado para saber o codigo de retorno. - * int code = sip->get_return_code( buffer ); - * ... - * @endcode - */ - int get_return_code( char * s ); + VZ_call * invite ( void ); /** * @Synopsis Gera um nro de cseq para preenchimento no cabeçalho dos pacotes Sip. @@ -195,21 +151,7 @@ * ... * @endcode */ - int get_cseq( void ); - - /** - * @Synopsis Obtem o id( ramal ) do objeto. - * - * @return Retorna o id( ramal ) do objeto. - * - * Exemplo: - * @code - * ... - * int ext = sip->get_id(); - * ... - * @endcode - */ - int get_id( void ); + int get_cseq ( void ); /** * @Synopsis Obtem a porta rtp na qual a Header ira encaminhar e receber dados do Server. @@ -223,7 +165,7 @@ * ... * @endcode */ - int get_my_rtp_port( void ); + int get_my_rtp_port ( void ); /** * @Synopsis Efetivamente cria o pacote de registro. @@ -232,7 +174,7 @@ * * @return Um ponteiro para o inicio do pacote montado ( mesmo endereço passado como parâmetro ). */ - char * build_registry_package( char * buffer ); + char * build_registry_package ( void ); /** * @Synopsis Efetivamente cria um pacote de invite ( pedido de chamada ) do Call_box para o server. @@ -243,7 +185,7 @@ * * @return */ - char * build_invite_package( char * s, char * callbox_string, int * cseq, bool retry = false ); + char * build_invite_package ( int * cseq, const bool retry = false ); /** * @Synopsis Efetivamente cria um pacote de "despedida" para o servidor, usado para encerrar ligações. @@ -252,7 +194,7 @@ * * @return Um ponteiro para o inicio do pacote montado ( mesmo endereço passado como parâmetro ). */ - char * build_bye_package( char * buffer ); + char * build_bye_package ( void ); /** * @Synopsis Efetivamente cria um pacote de ack de mensagem recebida. @@ -262,38 +204,7 @@ * * @return Um ponteiro para o inicio do pacote montado ( mesmo endereço passado como parâmetro ). */ - char * build_ack_package( char * buffer, unsigned char * orig ); - - /** - * @Synopsis - * - * @param s Um ponteiro para a posição de memória onde será montado o pacote. - * @param orig O pacote recebido do servidor, serve como referência para criação da resposta. - * @param tag A tag que será usada no pacote de resposta. - * - * @return Um ponteiro para o inicio do pacote montado ( mesmo endereço passado como parâmetro ). - */ - char * build_generic_reply_package( char * s, unsigned char * orig, char * tag ); - - /** - * @Synopsis Cria um pacote genérico de resposta. - * - * @param buffer Um ponteiro para a posição de memória onde será montado o pacote. - * @param orig - * - * @return Um ponteiro para o inicio do pacote montado ( mesmo endereço passado como parâmetro ). - */ - char * build_trying_package( char * buffer, unsigned char * orig ); - - /** - * @Synopsis - * - * @param buffer Um ponteiro para a posição de memória onde será montado o pacote. - * @param orig O pacote de origem, serve como referência na criação do pacote. - * - * @return Um ponteiro para o inicio do pacote montado ( mesmo endereço passado como parâmetro ). - */ - char * build_busy_package( char * buffer, unsigned char * orig ); + char * build_ack_package ( char * buffer, const unsigned char * orig ); /** * @Synopsis @@ -303,7 +214,7 @@ * * @return Um ponteiro para o inicio do pacote montado ( mesmo endereço passado como parâmetro ). */ - char * build_reply_package( char * buffer, unsigned char * orig ); + char * build_reply_package ( char * buffer, const unsigned char * orig ); /** * @Synopsis Preenche de forma aleatótia 16 posições de memória. @@ -312,7 +223,7 @@ * * @return Retorna um ponteiro para os dados preenchidos ( mesmo endereço passado como parâmetro. */ - char * fill_random16h(char * buffer ); + char * fill_random16h ( char * buffer ); /** * @Synopsis Preenche de forma aleatótia dados. @@ -322,14 +233,14 @@ * * @return Um ponteiro para o inicio das posições preenchidas ( mesmo endereço do parâmetro passado ). */ - char * fill_random( char * buffer, int size ); + char * fill_random ( char * buffer, const int size ); /** * @Synopsis Gera aleatóriamente a porta RTP de onde os dados de audiao serão enviados da Header. * * @return O nro da porta que será usada na negociação Sip. */ - int fill_random_rtp_port( void ); + int fill_random_rtp_port ( void ); /** * @Synopsis Dado um pacote recebido do server, decodifica o nro cseq. @@ -339,7 +250,7 @@ * * @return Um ponteiro para o inicio da posição de memória que contem o cseq ( mesma passada como parâmetro ). */ - char * decode_cseq(unsigned char * package, char * cseq); + char * decode_cseq ( const unsigned char * package, char * cseq ); /** * @Synopsis Dado um pacote recebido do server, decodifica o branch. @@ -349,7 +260,7 @@ * * @return Um ponteiro para o inicio da posição de memória onde escrevemos o branch ( mesma passada como parâmentro ). */ - char * decode_branch( unsigned char * package, char * branch ); + char * decode_branch ( const unsigned char * package, char * branch ); /** * @Synopsis Busca por uma determinado substring em um pacote recebido do servidor. Copiando o restando desse pacote para @@ -363,7 +274,7 @@ * @return 1, caso tenha encontrado a string tag contida no package, copia o restando do conteudo de package para out e retorna 1, * retorna 0 caso a substring não seja encontrada. */ - int decode_gettag( unsigned char * package, char * tag, char * out ); + int decode_gettag ( const unsigned char * package, const char * tag, char * out ); /** * @Synopsis Recebe um ramal de comunicação com o servidor, realizando solicitações futuras com esse ramal. @@ -377,7 +288,7 @@ * ... * @endcode */ - void set_server_ext( int new_server_ext ); + void set_server_ext ( const int new_server_ext ); /** * @Synopsis Recebe uma porta de comunicação com o servidor, setando e realizando comunicaões entre Header-Server atraves @@ -392,7 +303,7 @@ * ... * @endcode */ - void set_server_port( int new_server_port ); + void set_server_port ( const int new_server_port ); /** * @Synopsis Seta ramal de comunicação Sip da Header. @@ -407,7 +318,7 @@ * @endcode * */ - void set_ext( int ext ); + void set_ext ( const int ext ); /** * @Synopsis Seta a porta de comunicação Sip da Header. @@ -423,7 +334,7 @@ * * */ - void set_port( int port ); + void set_port ( const int port ); /** * @Synopsis Seta o valor passado como parâmetro como sendo o endeço IP de contato do servidor. @@ -437,7 +348,7 @@ * ... * @endcode */ - void set_server_ip( char * new_server_ip ); + void set_server_ip ( const char * new_server_ip ); /** * @Synopsis Responsavel por ouvir o servidor *, verificando se o mesmo esta mandando alguma mensagem, seja Sip ou qualquer outra @@ -446,7 +357,7 @@ * @return 0, sucesso na execução, sem pendencia, ou retorna um nro maior que zero, representando o nro do ramal cuja ligação deve * ser encerrada. */ - int listen_SIP_server( void ); + int listen_SIP_server ( void ); /** * @Synopsis Envia efetivamente o pacote de despedita com Call_box pro servidor @@ -458,26 +369,35 @@ * ... * @endcode */ - void send_bye( void ); + void send_bye ( void ); /** * @Synopsis Retorna o status atual do objeto * * @return O valor correspondente ao status do objeto */ - int get_status( void ); + int get_status ( void ); /*------------------------------------------------------------------------------------------------*/ - int get_socket_fd( void ); - int udp_incomming_pkg( void ); - int get_ext( void ); - int get_port( void ); + int get_socket_fd ( void ); + + int udp_incomming_pkg ( void ); + + int get_ext ( void ); + + int get_port ( void ); + int get_sip_rtp_port ( void ); + int print_yourself ( void ); + int retry_send_last_invite_pkg_to_ast ( void ); - void set_sip_rtp_port ( int ); - void sip_set_status( uint8_t status ); - void reset_call( void ); + + void set_sip_rtp_port ( const int new_my_rtp_port ); + + void sip_set_status ( const uint8_t status ); + + void reset_call ( void ); }; #endif \ No newline at end of file