VZTECH / Mbed 2 deprecated header_main_publish

Dependencies:   EthernetInterface NTPClient mbed-rtos_old mbed

Fork of header_main_public by VZTECH

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers sip.h Source File

sip.h

00001 #ifndef __SIP_H__
00002 #define __SIP_H__
00003 
00004 #include <stdlib.h>
00005 #include <stdint.h>
00006 #include <string.h>
00007 #include "mbed.h"
00008 #include "EthernetInterface.h"
00009 #include "call.h"
00010 #include "vz_protocol.h"
00011 #include "debug.h"
00012 
00013 #define __INVITE_MAX_WAITING_TIME__ 30
00014 #define SIP_MAXFIELDSIZE 256
00015 #define SIP_MAXMSGSIZE 2048
00016 #define SIP_REGISTER_EXPIRES 120
00017 #define DRAMBASEADDR    0xa0000000
00018 #define SIP_ALLOW "Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER"
00019 /* #define SIP_ALLOW "Allow: ACK, BYE, CANCEL, INVITE, OPTIONS" */
00020 /*
00021 #define __SEVER_IP__ "192.168.120.120"
00022 #define __SERVER_PORT__ 5075
00023 //#define __MY_IP__ "192.168.120.191"
00024 */
00025 #define __MY_PORT__ 5062
00026 #define __MY_EXT__ 820
00027 //#define __PEER_EXT__ 801 
00028 #define __PEER_EXT__ 913
00029 //#define __PEER_EXT__ 803
00030 
00031 
00032 //#ifdef debug_colinas
00033 #define __SEVER_IP__ "192.168.30.25"
00034 #define __SERVER_PORT__ 5060
00035 //#endif
00036 //#ifndef debug_colinas
00037 //#define __SEVER_IP__ "192.168.120.120"
00038 //#define __SEVER_IP__ "192.168.30.25"
00039 //#define __SERVER_PORT__ 5075
00040 //#define __SERVER_PORT__ 5060
00041 //#endif
00042 
00043 #define sip_idle 0
00044 #define sip_waiting_trying 1 << 1
00045 #define sip_trying 1 << 2
00046 #define sip_ringing 1 << 3
00047 #define sip_busy 1 << 4
00048 #define sip_ok 1 << 5
00049 #define sip_on_call 1 << 6
00050 #define sip_denied 1 << 7
00051 
00052 class Sip{
00053 
00054 private :
00055     int id;
00056     char server_ip[20];
00057     int  server_port;
00058     char my_ip[20];
00059     int  my_port;
00060     int  my_ext;
00061     int  my_rtp_port;
00062     char my_display[20];
00063     int  peer_ext;
00064     char fill_random_aux[ 65 ];
00065     char last_invite_tag[ SIP_MAXFIELDSIZE ];
00066     char last_invite_callid[ SIP_MAXFIELDSIZE ];
00067     char SVNREV[ 16 ];
00068     char buffer[ 1024 ];
00069     UDPSocket sock;
00070     Endpoint sip_server;
00071     void __init_sock__( void );
00072     void __end_sock__( void );
00073 public :
00074     uint8_t status;
00075     Sip();
00076     Sip( int id, uint16_t my_port );
00077     Sip( int id, uint16_t my_port, int dest_ext );
00078     Sip( char * server_ip, int server_port, char * my_ip, int my_port, int my_ext, int peer_ext, int id );
00079     ~Sip();
00080     void registry( void );
00081     VZ_call * invite( void );
00082     
00083     char * make_content_length( char * header, char * body, char * pkg );
00084     
00085     int get_return_code( char * s );
00086     int get_cseq( void );
00087     int get_id( void );
00088     int get_my_rtp_port( void );
00089     
00090     char * build_registry_package( char * buffer );
00091     char * build_unregistry_package( char * buffer );
00092     char * build_invite_package( char * s, char * callbox_string, int * cseq );
00093     char * build_bye_package( char * buffer );
00094     char * build_ack_package( char * buffer, unsigned char * orig );
00095     char * build_generic_reply_package(char * s, unsigned char * orig, char * tag);
00096     char * build_trying_package( char * buffer, unsigned char * orig );
00097     char * build_busy_package( char * buffer, unsigned char * orig );
00098     char * build_reply_package( char * buffer, unsigned char * orig );
00099         
00100     char * fill_random16h(char * buffer );
00101     char * fill_random( char * buffer, int size );
00102     int fill_random_rtp_port( void );
00103     
00104     char * decode_cseq(unsigned char * package, char * cseq);
00105     char * decode_branch( unsigned char * package, char * branch );
00106     int decode_gettag( unsigned char * package, char * tag, char * out );
00107     
00108     void change_sip_server();
00109     char * get_next_server_ip( char *server_ip );
00110     int get_next_server_port();
00111     int get_next_server_ext();
00112     
00113     void set_server_ext( int new_server_ext );
00114     void set_server_port( int new_server_port );
00115     void set_ext( int ext );
00116     void set_port( int port );
00117     void set_server_ip( char * new_server_ip );
00118     
00119     int listen_SIP_server( void );
00120     void send_bye( void );
00121     void send_unregistry_pkg( void );
00122     
00123     uint8_t get_status( void );
00124 };
00125 #endif