VZTECH / Mbed 2 deprecated header_main

Dependencies:   EthernetInterface NTPClient mbed-rtos mbed

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__ 10
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 #define __MY_PORT__ 5062
00025 #define __MY_EXT__ 820
00026 #define __PEER_EXT__ 913 
00027 //#define __PEER_EXT__ 803
00028 
00029 #define sip_idle 0
00030 #define sip_waiting_trying 1 << 1
00031 #define sip_trying 1 << 2
00032 #define sip_ringing 1 << 3
00033 #define sip_busy 1 << 4
00034 #define sip_ok 1 << 5
00035 #define sip_on_call 1 << 6
00036 #define sip_denied 1 << 7
00037 
00038 class Sip{
00039 
00040 private :
00041     int id;
00042     char server_ip[20];
00043     int  server_port;
00044     char my_ip[20];
00045     int  my_port;
00046     int  my_ext;
00047     int  my_rtp_port;
00048     char my_display[20];
00049     int  peer_ext;
00050     char fill_random_aux[ 65 ];
00051     char last_invite_tag[ SIP_MAXFIELDSIZE ];
00052     char last_invite_callid[ SIP_MAXFIELDSIZE ];
00053     char SVNREV[ 16 ];
00054     char buffer[ 1024 ];
00055     UDPSocket sock;
00056     Endpoint sip_server;
00057     void __init_sock__( void );
00058     void __end_sock__( void );
00059 public :
00060     uint8_t status;
00061     Sip();
00062     Sip( int id, uint16_t my_port );
00063     Sip( int id, uint16_t my_port, int dest_ext );
00064     Sip( char * server_ip, int server_port, char * my_ip, int my_port, int my_ext, int peer_ext, int id );
00065     ~Sip();
00066     void registry( void );
00067     VZ_call * invite( void );
00068     VZ_call * old_invite( void );
00069     
00070     char * make_content_length( char * header, char * body, char * pkg );
00071     
00072     int get_return_code( char * s );
00073     int get_cseq( void );
00074     int get_id( void );
00075     int get_my_rtp_port( void );
00076     
00077     char * build_registry_package( char * buffer );
00078     char * build_unregistry_package( char * buffer );
00079     char * build_invite_package( char * s, char * callbox_string, int * cseq );
00080     char * build_bye_package( char * buffer );
00081     char * build_ack_package( char * buffer, unsigned char * orig );
00082     char * build_generic_reply_package(char * s, unsigned char * orig, char * tag);
00083     char * build_trying_package( char * buffer, unsigned char * orig );
00084     char * build_busy_package( char * buffer, unsigned char * orig );
00085     char * build_reply_package( char * buffer, unsigned char * orig );
00086         
00087     char * fill_random16h(char * buffer );
00088     char * fill_random( char * buffer, int size );
00089     int fill_random_rtp_port( void );
00090     
00091     char * decode_cseq(unsigned char * package, char * cseq);
00092     char * decode_branch( unsigned char * package, char * branch );
00093     int decode_gettag( unsigned char * package, char * tag, char * out );
00094     
00095     void change_sip_server();
00096     char * get_next_server_ip( char *server_ip );
00097     int get_next_server_port();
00098     int get_next_server_ext();
00099     
00100     void set_server_ext( int new_server_ext );
00101     void set_server_port( int new_server_port );
00102     void set_ext( int ext );
00103     void set_port( int port );
00104     void set_server_ip( char * new_server_ip );
00105     
00106     int listen_SIP_server( void );
00107     void send_bye( void );
00108     void send_unregistry_pkg( void );
00109     
00110     uint8_t get_status( void );
00111 };
00112 #endif