Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EthernetInterface NTPClient mbed-rtos mbed
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
Generated on Fri Jul 22 2022 09:19:18 by
1.7.2