Very simple SIP User Agent with registration, call, and media, all in under 200 lines of code.
42#define THIS_FILE "APP"
44#define SIP_DOMAIN "example.com"
45#define SIP_USER "alice"
46#define SIP_PASSWD "secret"
60 PJ_LOG(3,(THIS_FILE,
"Incoming call from %.*s!!",
76 PJ_LOG(3,(THIS_FILE,
"Call %d state=%.*s", call_id,
96static void error_exit(
const char *title,
pj_status_t status)
108int main(
int argc,
char *argv[])
115 if (status !=
PJ_SUCCESS) error_exit(
"Error in pjsua_create()", status);
120 if (status !=
PJ_SUCCESS) error_exit(
"Invalid URL in argv", status);
137 if (status !=
PJ_SUCCESS) error_exit(
"Error in pjsua_init()", status);
147 if (status !=
PJ_SUCCESS) error_exit(
"Error creating transport", status);
152 if (status !=
PJ_SUCCESS) error_exit(
"Error starting pjsua", status);
159 cfg.
id =
pj_str(
"sip:" SIP_USER
"@" SIP_DOMAIN);
169 if (status !=
PJ_SUCCESS) error_exit(
"Error adding account", status);
176 if (status !=
PJ_SUCCESS) error_exit(
"Error making call", status);
183 puts(
"Press 'h' to hangup all calls, 'q' to quit");
184 if (fgets(option,
sizeof(option), stdin) == NULL) {
185 puts(
"EOF while reading stdin, will quit now..");
189 if (option[0] ==
'q')
192 if (option[0] ==
'h')
@ PJSIP_CRED_DATA_PLAIN_PASSWD
Definition: sip_auth.h:55
@ PJSIP_TRANSPORT_UDP
Definition: sip_types.h:67
void pjsua_acc_config_default(pjsua_acc_config *cfg)
pj_status_t pjsua_acc_add(const pjsua_acc_config *acc_cfg, pj_bool_t is_default, pjsua_acc_id *p_acc_id)
int pjsua_acc_id
Definition: pjsua-lib/pjsua.h:265
pj_status_t pjsua_create(void)
void pjsua_perror(const char *sender, const char *title, pj_status_t status)
void pjsua_config_default(pjsua_config *cfg)
pj_status_t pjsua_verify_url(const char *url)
pj_status_t pjsua_init(const pjsua_config *ua_cfg, const pjsua_logging_config *log_cfg, const pjsua_media_config *media_cfg)
pj_status_t pjsua_start(void)
void pjsua_logging_config_default(pjsua_logging_config *cfg)
pj_status_t pjsua_destroy(void)
int pjsua_call_id
Definition: pjsua-lib/pjsua.h:262
pj_status_t pjsua_call_get_info(pjsua_call_id call_id, pjsua_call_info *info)
pj_status_t pjsua_call_answer(pjsua_call_id call_id, unsigned code, const pj_str_t *reason, const pjsua_msg_data *msg_data)
pj_status_t pjsua_call_make_call(pjsua_acc_id acc_id, const pj_str_t *dst_uri, const pjsua_call_setting *opt, void *user_data, const pjsua_msg_data *msg_data, pjsua_call_id *p_call_id)
void pjsua_call_hangup_all(void)
@ PJSUA_CALL_MEDIA_ACTIVE
Definition: pjsua-lib/pjsua.h:4995
pj_status_t pjsua_transport_create(pjsip_transport_type_e type, const pjsua_transport_config *cfg, pjsua_transport_id *p_id)
void pjsua_transport_config_default(pjsua_transport_config *cfg)
#define PJ_LOG(level, arg)
pj_str_t pj_str(char *str)
#define PJ_UNUSED_ARG(arg)
pj_str_t username
Definition: sip_auth.h:117
int data_type
Definition: sip_auth.h:118
pj_str_t realm
Definition: sip_auth.h:113
pj_str_t data
Definition: sip_auth.h:119
pj_str_t scheme
Definition: sip_auth.h:116
Definition: sip_event.h:81
Definition: sip_transport.h:295
Definition: pjsua-lib/pjsua.h:3709
pj_str_t reg_uri
Definition: pjsua-lib/pjsua.h:3740
pjsip_cred_info cred_info[8]
Definition: pjsua-lib/pjsua.h:3947
pj_str_t id
Definition: pjsua-lib/pjsua.h:3731
unsigned cred_count
Definition: pjsua-lib/pjsua.h:3938
Definition: pjsua-lib/pjsua.h:5097
pjsua_call_media_status media_status
Definition: pjsua-lib/pjsua.h:5145
pj_str_t state_text
Definition: pjsua-lib/pjsua.h:5129
pj_str_t remote_info
Definition: pjsua-lib/pjsua.h:5114
pjsua_conf_port_id conf_slot
Definition: pjsua-lib/pjsua.h:5155
void(* on_call_media_state)(pjsua_call_id call_id)
Definition: pjsua-lib/pjsua.h:1137
void(* on_call_state)(pjsua_call_id call_id, pjsip_event *e)
Definition: pjsua-lib/pjsua.h:1099
void(* on_incoming_call)(pjsua_acc_id acc_id, pjsua_call_id call_id, pjsip_rx_data *rdata)
Definition: pjsua-lib/pjsua.h:1109
Definition: pjsua-lib/pjsua.h:2040
pjsua_callback cb
Definition: pjsua-lib/pjsua.h:2248
Definition: pjsua-lib/pjsua.h:474
unsigned console_level
Definition: pjsua-lib/pjsua.h:488
Definition: pjsua-lib/pjsua.h:3021
unsigned port
Definition: pjsua-lib/pjsua.h:3028