voltando a versao de n aberturas e fechamentos de sockets data 19/09

Dependencies:   EthernetInterface NTPClient mbed-rtos mbed EALib

Fork of header_main_publish by VZTECH

Committer:
klauss
Date:
Sat Sep 20 11:27:47 2014 +0000
Revision:
19:ab2088e0dec6
Parent:
18:01a93677e40c
colinas_02

Who changed what in which revision?

UserRevisionLine numberNew contents of line
klauss 0:4d17cd9c8f9d 1 #ifndef __SIP_H__
klauss 0:4d17cd9c8f9d 2 #define __SIP_H__
klauss 0:4d17cd9c8f9d 3
klauss 0:4d17cd9c8f9d 4 #include <stdlib.h>
klauss 0:4d17cd9c8f9d 5 #include <stdint.h>
klauss 0:4d17cd9c8f9d 6 #include <string.h>
klauss 0:4d17cd9c8f9d 7 #include "mbed.h"
klauss 0:4d17cd9c8f9d 8 #include "EthernetInterface.h"
klauss 0:4d17cd9c8f9d 9 #include "call.h"
klauss 0:4d17cd9c8f9d 10 #include "vz_protocol.h"
klauss 0:4d17cd9c8f9d 11 #include "debug.h"
klauss 0:4d17cd9c8f9d 12
klauss 3:cd9148672e25 13 #define __INVITE_MAX_WAITING_TIME__ 30
klauss 0:4d17cd9c8f9d 14 #define SIP_MAXFIELDSIZE 256
klauss 0:4d17cd9c8f9d 15 #define SIP_MAXMSGSIZE 2048
klauss 0:4d17cd9c8f9d 16 #define SIP_REGISTER_EXPIRES 120
klauss 0:4d17cd9c8f9d 17 #define DRAMBASEADDR 0xa0000000
klauss 0:4d17cd9c8f9d 18 #define SIP_ALLOW "Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER"
klauss 0:4d17cd9c8f9d 19 /* #define SIP_ALLOW "Allow: ACK, BYE, CANCEL, INVITE, OPTIONS" */
klauss 15:9c7456c1b6f4 20 /*
klauss 0:4d17cd9c8f9d 21 #define __SEVER_IP__ "192.168.120.120"
klauss 0:4d17cd9c8f9d 22 #define __SERVER_PORT__ 5075
klauss 8:e3bfe62a477e 23 //#define __MY_IP__ "192.168.120.191"
klauss 15:9c7456c1b6f4 24 */
klauss 0:4d17cd9c8f9d 25 #define __MY_PORT__ 5062
klauss 0:4d17cd9c8f9d 26 #define __MY_EXT__ 820
klauss 18:01a93677e40c 27 //#define __PEER_EXT__ 801
klauss 15:9c7456c1b6f4 28 #define __PEER_EXT__ 913
klauss 18:01a93677e40c 29 //#define __PEER_EXT__ 803
klauss 15:9c7456c1b6f4 30
klauss 18:01a93677e40c 31
klauss 18:01a93677e40c 32 //#ifdef debug_colinas
klauss 15:9c7456c1b6f4 33 #define __SEVER_IP__ "192.168.30.25"
klauss 15:9c7456c1b6f4 34 #define __SERVER_PORT__ 5060
klauss 18:01a93677e40c 35 //#endif
klauss 18:01a93677e40c 36 //#ifndef debug_colinas
klauss 18:01a93677e40c 37 //#define __SEVER_IP__ "192.168.120.120"
klauss 18:01a93677e40c 38 //#define __SEVER_IP__ "192.168.30.25"
klauss 18:01a93677e40c 39 //#define __SERVER_PORT__ 5075
klauss 18:01a93677e40c 40 //#define __SERVER_PORT__ 5060
klauss 18:01a93677e40c 41 //#endif
klauss 0:4d17cd9c8f9d 42
klauss 0:4d17cd9c8f9d 43 #define sip_idle 0
klauss 0:4d17cd9c8f9d 44 #define sip_waiting_trying 1 << 1
klauss 0:4d17cd9c8f9d 45 #define sip_trying 1 << 2
klauss 0:4d17cd9c8f9d 46 #define sip_ringing 1 << 3
klauss 0:4d17cd9c8f9d 47 #define sip_busy 1 << 4
klauss 0:4d17cd9c8f9d 48 #define sip_ok 1 << 5
klauss 0:4d17cd9c8f9d 49 #define sip_on_call 1 << 6
klauss 0:4d17cd9c8f9d 50 #define sip_denied 1 << 7
klauss 0:4d17cd9c8f9d 51
klauss 0:4d17cd9c8f9d 52 class Sip{
klauss 0:4d17cd9c8f9d 53
klauss 0:4d17cd9c8f9d 54 private :
klauss 0:4d17cd9c8f9d 55 int id;
klauss 0:4d17cd9c8f9d 56 char server_ip[20];
klauss 0:4d17cd9c8f9d 57 int server_port;
klauss 0:4d17cd9c8f9d 58 char my_ip[20];
klauss 0:4d17cd9c8f9d 59 int my_port;
klauss 0:4d17cd9c8f9d 60 int my_ext;
klauss 0:4d17cd9c8f9d 61 int my_rtp_port;
klauss 0:4d17cd9c8f9d 62 char my_display[20];
klauss 0:4d17cd9c8f9d 63 int peer_ext;
klauss 0:4d17cd9c8f9d 64 char fill_random_aux[ 65 ];
klauss 0:4d17cd9c8f9d 65 char last_invite_tag[ SIP_MAXFIELDSIZE ];
klauss 0:4d17cd9c8f9d 66 char last_invite_callid[ SIP_MAXFIELDSIZE ];
klauss 0:4d17cd9c8f9d 67 char SVNREV[ 16 ];
klauss 13:ae278302dffe 68 char buffer[ 1024 ];
klauss 0:4d17cd9c8f9d 69 UDPSocket sock;
klauss 0:4d17cd9c8f9d 70 Endpoint sip_server;
klauss 0:4d17cd9c8f9d 71 void __init_sock__( void );
klauss 0:4d17cd9c8f9d 72 void __end_sock__( void );
klauss 0:4d17cd9c8f9d 73 public :
klauss 0:4d17cd9c8f9d 74 uint8_t status;
klauss 0:4d17cd9c8f9d 75 Sip();
klauss 0:4d17cd9c8f9d 76 Sip( int id, uint16_t my_port );
klauss 0:4d17cd9c8f9d 77 Sip( int id, uint16_t my_port, int dest_ext );
klauss 0:4d17cd9c8f9d 78 Sip( char * server_ip, int server_port, char * my_ip, int my_port, int my_ext, int peer_ext, int id );
klauss 0:4d17cd9c8f9d 79 ~Sip();
klauss 0:4d17cd9c8f9d 80 void registry( void );
klauss 0:4d17cd9c8f9d 81 VZ_call * invite( void );
klauss 0:4d17cd9c8f9d 82
klauss 0:4d17cd9c8f9d 83 char * make_content_length( char * header, char * body, char * pkg );
klauss 0:4d17cd9c8f9d 84
klauss 0:4d17cd9c8f9d 85 int get_return_code( char * s );
klauss 0:4d17cd9c8f9d 86 int get_cseq( void );
klauss 0:4d17cd9c8f9d 87 int get_id( void );
klauss 0:4d17cd9c8f9d 88 int get_my_rtp_port( void );
klauss 0:4d17cd9c8f9d 89
klauss 0:4d17cd9c8f9d 90 char * build_registry_package( char * buffer );
klauss 0:4d17cd9c8f9d 91 char * build_unregistry_package( char * buffer );
klauss 0:4d17cd9c8f9d 92 char * build_invite_package( char * s, char * callbox_string, int * cseq );
klauss 0:4d17cd9c8f9d 93 char * build_bye_package( char * buffer );
klauss 0:4d17cd9c8f9d 94 char * build_ack_package( char * buffer, unsigned char * orig );
klauss 0:4d17cd9c8f9d 95 char * build_generic_reply_package(char * s, unsigned char * orig, char * tag);
klauss 0:4d17cd9c8f9d 96 char * build_trying_package( char * buffer, unsigned char * orig );
klauss 0:4d17cd9c8f9d 97 char * build_busy_package( char * buffer, unsigned char * orig );
klauss 0:4d17cd9c8f9d 98 char * build_reply_package( char * buffer, unsigned char * orig );
klauss 0:4d17cd9c8f9d 99
klauss 0:4d17cd9c8f9d 100 char * fill_random16h(char * buffer );
klauss 0:4d17cd9c8f9d 101 char * fill_random( char * buffer, int size );
klauss 0:4d17cd9c8f9d 102 int fill_random_rtp_port( void );
klauss 0:4d17cd9c8f9d 103
klauss 0:4d17cd9c8f9d 104 char * decode_cseq(unsigned char * package, char * cseq);
klauss 0:4d17cd9c8f9d 105 char * decode_branch( unsigned char * package, char * branch );
klauss 0:4d17cd9c8f9d 106 int decode_gettag( unsigned char * package, char * tag, char * out );
klauss 0:4d17cd9c8f9d 107
klauss 0:4d17cd9c8f9d 108 void change_sip_server();
klauss 0:4d17cd9c8f9d 109 char * get_next_server_ip( char *server_ip );
klauss 0:4d17cd9c8f9d 110 int get_next_server_port();
klauss 0:4d17cd9c8f9d 111 int get_next_server_ext();
klauss 0:4d17cd9c8f9d 112
klauss 0:4d17cd9c8f9d 113 void set_server_ext( int new_server_ext );
klauss 0:4d17cd9c8f9d 114 void set_server_port( int new_server_port );
klauss 0:4d17cd9c8f9d 115 void set_ext( int ext );
klauss 0:4d17cd9c8f9d 116 void set_port( int port );
klauss 0:4d17cd9c8f9d 117 void set_server_ip( char * new_server_ip );
klauss 0:4d17cd9c8f9d 118
klauss 0:4d17cd9c8f9d 119 int listen_SIP_server( void );
klauss 0:4d17cd9c8f9d 120 void send_bye( void );
klauss 0:4d17cd9c8f9d 121 void send_unregistry_pkg( void );
klauss 0:4d17cd9c8f9d 122
klauss 0:4d17cd9c8f9d 123 uint8_t get_status( void );
klauss 0:4d17cd9c8f9d 124 };
klauss 0:4d17cd9c8f9d 125 #endif