Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Revision:
119:ee6a53069455
Parent:
114:472502b31a12
Child:
121:ee02790d00b7
diff -r b93b17c50910 -r ee6a53069455 sip.h
--- a/sip.h	Fri Apr 24 13:54:24 2015 +0000
+++ b/sip.h	Thu Apr 30 15:42:41 2015 +0000
@@ -14,66 +14,71 @@
 #include <string.h>
 #include "mbed.h"
 #include "EthernetInterface.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"
 
-#define __INVITE_MAX_WAITING_TIME__ 45//30
+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
-#define SIP_MAXFIELDSIZE 256
+const uint16_t SIP_MAXFIELDSIZE = 256;
 ///< Define o tamanho máximo de algumas mensagens usadas na negociação Sip.
-    #define SIP_MAXMSGSIZE 2048
+const uint16_t SIP_MAXMSGSIZE = 2048;
 ///< Define o tamanho máximo das mensagens enviadas, porém, fora de uso atualmente.
-#define SIP_REGISTER_EXPIRES 120
+const uint8_t SIP_REGISTER_EXPIRES = 120;
 ///< Define o timeout do registro no servidor asterisk ( * ), porém, hardcoded atualmente.
-#define DRAMBASEADDR    0xa0000000
+const uint32_t DRAMBASEADDR = 0xa0000000;
 ///< Indica o inicio do bloco DRAM, porém, fora de uso atualmente.
-#define SIP_ALLOW "Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER"
-/* #define SIP_ALLOW "Allow: ACK, BYE, CANCEL, INVITE, OPTIONS" */
+static const char SIP_ALLOW[] = "Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER";
 ///< String de composição de pacotes enviados pela Header para o *
 
-#define sip_idle 0
-#define sip_waiting_trying 1 << 1
-#define sip_trying 1 << 2
-#define sip_ringing 1 << 3
-#define sip_busy 1 << 4
-#define sip_ok 1 << 5 // don't used
-#define sip_on_call 1 << 6
-#define sip_denied 1 << 7
+static char fill_random_aux[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789pP";
+
+const uint8_t sip_idle = 0;
+const uint8_t sip_waiting_trying = 1 << 1;
+const uint8_t sip_trying = 1 << 2;
+const uint8_t sip_ringing = 1 << 3;
+const uint8_t sip_busy = 1 << 4;
+const uint8_t sip_ok = 1 << 5; // don't used
+const uint8_t sip_on_call = 1 << 6;
+const uint8_t sip_denied = 1 << 7;
 
 class Sip{
 
 private :
-    int id;
-    char server_ip[20];
-    int  server_port;
-    char my_ip[20];
-    int  my_port;
-    int  my_ext;
-    int  my_rtp_port;
-    char my_display[20];
-    int  peer_ext;
-    char fill_random_aux[ 65 ];
+    int my_ext;
+    int my_port;
+    int peer_ext;
+    int server_port;
+    int my_rtp_port;
+    
+    int listen_SIP_server_return;
+    int last_cseq;
+    
+    char server_ip[ 20 ];
+    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 SVNREV[ 16 ];
-    char buffer[ 1024 ];
-    UDPSocket sock;
-    Endpoint sip_server;
+    char last_branch[ SIP_MAXFIELDSIZE ];
+    
     void __init_sock__( void );
     void __end_sock__( void );
     void __reconnect__( void );
-    bool muted;
-    int invite_pkg_sent;
+    
+    bool waiting;
+    
+    UDPSocket sock;
+    
+    Endpoint sip_server;
+    
     VZ_call * call;
+    
     Timer invite_timer;
-    int ok_sent;
-    bool waiting;
-    uint16_t length_muted;
-    int listen_SIP_server_return;
+    
 public :
     uint8_t status; ///< Representa o status do objeto Sip em dado momento.
 
@@ -91,26 +96,7 @@
          * ...
          * @endcode
          */
-    Sip( int id, uint16_t my_port );
-
-        /**
-         * @Synopsis Cria um objeto Sip setando todos os parametros passados.
-         *
-         * @param server_ip O endereço IP do servidor para o qual será encaminhado pedidos de ligação, registro, etc.
-         * @param server_port A porta deste servidor para o qual os pacotes eth serão encaminhados.
-         * @param my_ip O endereço IP do objeto Sip para tratativa com o server.
-         * @param my_port A porta do objeto Sip para recebimento de pacotes.
-         * @param my_ext O identificador do objeto ( por definição de projeto o ramal ( ext ) ).
-         * @param peer_ext O ramal do servidor, para onde os pedidos de chamada serão solicitados.
-         * @param id O identificador único do objeto Sip, que por convenção, deve ser o mesmo que o ramal.
-         *
-         * Exemplo:
-         *
-         * @code
-         *  Sip * sip = new Sip( "192.168.120.200", 5075, "192.168.120.171", 812, 851, 913, 851 );
-         * @endcode
-         */
-    //Sip( char * server_ip, int server_port, char * my_ip, int my_port, int my_ext, int peer_ext, int id );
+    Sip( int my_ext, uint16_t my_port );
 
         /**
          * @Synopsis Destroi o objeto Sip
@@ -237,7 +223,7 @@
          * ...
          * @endcode
          */
-        int get_my_rtp_port( void );
+    int get_my_rtp_port( void );
     
         /**
          * @Synopsis Efetivamente cria o pacote de registro.
@@ -249,15 +235,6 @@
     char * build_registry_package( char * buffer );
     
         /**
-         * @Synopsis Efetivamente cria um pacote para desregistrar o objeto no server.
-         *
-         * @param buffer Recebe um ponteiro para uma região de memória onde irá escrever o pacote de desregistro.
-         *
-         * @return Um ponteiro para o inicio do pacote montado ( mesmo endereço passado como parâmetro ).
-         */
-        char * build_unregistry_package( char * buffer );
-    
-        /**
          * @Synopsis Efetivamente cria um pacote de invite ( pedido de chamada ) do Call_box para o server.
          *
          * @param s Um ponteiro para uma região de memória onde irá escrever o pacote de invite.
@@ -266,7 +243,7 @@
          *
          * @return 
          */
-        char * build_invite_package( char * s, char * callbox_string, int * cseq );
+    char * build_invite_package( char * s, char * callbox_string, int * cseq, bool retry = false );
     
         /**
          * @Synopsis Efetivamente cria um pacote de "despedida" para o servidor, usado para encerrar ligações.
@@ -275,7 +252,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( char * buffer );
     
         /**
          * @Synopsis Efetivamente cria um pacote de ack de mensagem recebida.
@@ -285,7 +262,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 );
+    char * build_ack_package( char * buffer, unsigned char * orig );
     
         /**
          * @Synopsis 
@@ -296,7 +273,7 @@
          *
          * @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 );
+    char * build_generic_reply_package( char * s, unsigned char * orig, char * tag );
     
         /**
          * @Synopsis Cria um pacote genérico de resposta.
@@ -306,7 +283,7 @@
          *
          * @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 );
+    char * build_trying_package( char * buffer, unsigned char * orig );
     
         /**
          * @Synopsis 
@@ -316,7 +293,7 @@
          *
          * @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_busy_package( char * buffer, unsigned char * orig );
     
         /**
          * @Synopsis 
@@ -326,7 +303,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, unsigned char * orig );
     
         /**
          * @Synopsis Preenche de forma aleatótia 16 posições de memória.
@@ -345,14 +322,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, 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.
@@ -372,7 +349,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( unsigned char * package, char * branch );
     
         /**
          * @Synopsis Busca por uma determinado substring em um pacote recebido do servidor. Copiando o restando desse pacote para
@@ -386,61 +363,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 );
-    
-        /**
-         * @Synopsis Esta função deveria mudar a conexão com o servidor, caso o mesmo caia. Porém, não em uso.
-         */
-    void change_sip_server();
-    
-        /**
-         * @Synopsis Obtém o nro de IP do servidor que irá sediar os pedidos de ligações e demais tratamentos, em caso do primeiro 
-         * server vir a cair, porém, função não em uso.
-         *
-         * @param server_ip Um ponteiro que aponta para a posição de memória onde será escrito o valor do IP do servidor.
-         *
-         * @return Um ponteiro para o inicio do endereço IP do server ( mesmo passado como parametro )
-         *
-         * Exemplo:
-         * @code
-         * ...
-         *  char new_ip[ 16 ];
-         *  strcpy( new_ip, sip->get_next_server_ip() );
-         * ...
-         * @endcode
-         */
-        char * get_next_server_ip( char *server_ip );
-    
-        /**
-         * @Synopsis Obtém o nro de IP do servidor que irá sediar os pedidos de ligações e demais tratamentos, em caso do primeiro
-         * server vir a cair. Porém, função não em uso. 
-         *
-         * @return O nro da porta de comunicação com o próximo server.
-         *
-         * Exemplo:
-         * @code
-         * ...
-         *  int port = sip->get_next_server_port();
-         * ...
-         * @endcode
-         */
-        int get_next_server_port();
-
-
-        /**
-         * @Synopsis Obtém o nro do ramal de comunicação com o proximo servidor Sip, nos casos em que o primeiro servidor passar por
-         * instabilidade, atualmente, não em uso.
-         *
-         * @return O valor do ramal de comunicação com o promixo servidor.
-         *
-         * Exemplo:
-         * @code
-         * ...
-         *  int next_server_ext = sip->get_next_server_ext();
-         * ...
-         * @endcode
-         */
-        int get_next_server_ext();
+    int decode_gettag( unsigned char * package, char * tag, char * out );
     
         /**
          * @Synopsis Recebe um ramal de comunicação com o servidor, realizando solicitações futuras com esse ramal.
@@ -454,7 +377,7 @@
          * ...
          * @endcode
          */
-        void set_server_ext( int new_server_ext );
+    void set_server_ext( int new_server_ext );
     
         /**
          * @Synopsis Recebe uma porta de comunicação com o servidor, setando e realizando comunicaões entre Header-Server atraves 
@@ -469,7 +392,7 @@
          * ...
          * @endcode
          */
-        void set_server_port( int new_server_port );
+    void set_server_port( int new_server_port );
     
         /**
          * @Synopsis Seta ramal de comunicação Sip da Header.
@@ -484,7 +407,7 @@
          * @endcode
          *
          */
-        void set_ext( int ext );
+    void set_ext( int ext );
     
         /**
          * @Synopsis Seta a porta de comunicação Sip da Header.
@@ -500,7 +423,7 @@
          *
          *
          */
-        void set_port( int port );
+    void set_port( int port );
     
         /**
          * @Synopsis Seta o valor passado como parâmetro como sendo o endeço IP de contato do servidor.
@@ -514,7 +437,7 @@
          * ...
          * @endcode
          */
-        void set_server_ip( char * new_server_ip );
+    void set_server_ip( char * new_server_ip );
     
         /**
          * @Synopsis Responsavel por ouvir o servidor *, verificando se o mesmo esta mandando alguma mensagem, seja Sip ou qualquer outra
@@ -523,7 +446,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
@@ -535,36 +458,26 @@
          * ...
          * @endcode
          */
-        void send_bye( void );
-    
-        /**
-         * @Synopsis Esta função Envia efetivamente o pacote de "desregistro" para o servidor.
-         * 
-         * Exemplo:
-         * @code
-         * ...
-         *  sip->send_unregistry_pkg();
-         * ...
-         * @endcode
-         *
-         */
-        void send_unregistry_pkg( void );
+    void send_bye( void );
     
         /**
          * @Synopsis Retorna o status atual do objeto
          *
          * @return O valor correspondente ao status do objeto
          */
-        int get_status( void );
-        void sip_set_status( uint8_t status );
-        void sip_check_muted( void );
-        int get_socket_fd( void );
-        int udp_incomming_pkg( void );
-        void reset_call( void );
-        int get_ext( void );
-        int get_port( void );
-        int get_sip_rtp_port ( void );
-        int print_yourself ( void );
-        void set_sip_rtp_port( int );
+    int get_status( 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 );
 };
 #endif
\ No newline at end of file