summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua/pjsua.h
blob: 20e300f384a56fcd7aaf158be7fc712e13dbc7d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/* $Id$ */
/* 
 * Copyright (C) 2003-2006 Benny Prijono <benny@prijono.org>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 */
#ifndef __PJSUA_H__
#define __PJSUA_H__

/* Include all PJSIP core headers. */
#include <pjsip.h>

/* Include all PJMEDIA headers. */
#include <pjmedia.h>

/* Include all PJSIP-UA headers */
#include <pjsip_ua.h>

/* Include all PJLIB-UTIL headers. */
#include <pjlib-util.h>

/* Include all PJLIB headers. */
#include <pjlib.h>


/* PJSUA application variables. */
extern struct pjsua
{
    /* Control: */

    pj_caching_pool   cp;	    /**< Global pool factory.		*/
    pjsip_endpoint   *endpt;	    /**< Global endpoint.		*/
    pj_pool_t	     *pool;	    /**< pjsua's private pool.		*/
    pjsip_module      mod;	    /**< pjsua's PJSIP module.		*/
    

    /* User info: */
    pj_str_t	     local_uri;	    /**< Uri in From: header.		*/
    pj_str_t	     contact_uri;   /**< Uri in Contact: header.	*/

    /* Threading: */

    int		     thread_cnt;    /**< Thread count.			*/
    pj_thread_t	    *threads[8];    /**< Thread instances.		*/
    pj_bool_t	     quit_flag;	    /**< To signal thread to quit.	*/

    /* Transport (UDP): */

    pj_uint16_t	     sip_port;	    /**< SIP signaling port.		*/
    pj_sock_t	     sip_sock;	    /**< SIP UDP socket.		*/
    pj_sockaddr_in   sip_sock_name; /**< Public/STUN UDP socket addr.	*/
    pj_sock_t	     rtp_sock;	    /**< RTP socket.			*/
    pj_sockaddr_in   rtp_sock_name; /**< Public/STUN UDP socket addr.	*/
    pj_sock_t	     rtcp_sock;	    /**< RTCP socket.			*/
    pj_sockaddr_in   rtcp_sock_name;/**< Public/STUN UDP socket addr.	*/



    /* STUN: */

    pj_str_t	     stun_srv1;
    int		     stun_port1;
    pj_str_t	     stun_srv2;
    int		     stun_port2;


    /* Misc: */
    
    int		     log_level;	    /**< Logging verbosity.		*/
    int		     app_log_level; /**< stdout log verbosity.		*/
    unsigned	     log_decor;	    /**< Log decoration.		*/

} pjsua;


/*****************************************************************************
 * PJSUA API.
 */

/**
 * Initialize pjsua settings with default parameters.
 */
void pjsua_default(void);


/**
 * Display error message for the specified error code.
 */
void pjsua_perror(const char *title, pj_status_t status);


/**
 * Initialize pjsua application.
 * This will start the registration process, if registration is configured.
 */
pj_status_t pjsua_init(void);


/**
 * Destroy pjsua.
 */
pj_status_t pjsua_destroy(void);


/**
 * Make outgoing call.
 */
pj_status_t pjsua_invite(const char *cstr_dest_uri,
			 pjsip_inv_session **p_inv);


/*****************************************************************************
 * User Interface API.
 * The UI API specifies functions that will be called by pjsua upon
 * occurence of various events.
 */

/**
 * Notify UI when invite state has changed.
 */
void ui_inv_on_state_changed(pjsip_inv_session *inv, pjsip_event *e);


#endif	/* __PJSUA_H__ */