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