void MainWin::call() { if (callButton_->text() == "Answer") { pjsua_call_setting call_setting; pj_assert(currentCall_ != -1); pjsua_call_setting_default(&call_setting); call_setting.vid_cnt = (vidEnabled_->checkState()==Qt::Checked); pjsua_call_answer2(currentCall_, &call_setting, 200, NULL, NULL); callButton_->setEnabled(false); } else { pj_status_t status; QString dst = url_->text(); char uri[256]; pjsua_call_setting call_setting; pj_ansi_strncpy(uri, dst.toAscii().data(), sizeof(uri)); pj_str_t uri2 = pj_str((char*)uri); pj_assert(currentCall_ == -1); pjsua_call_setting_default(&call_setting); call_setting.vid_cnt = (vidEnabled_->checkState()==Qt::Checked); status = pjsua_call_make_call(accountId_, &uri2, &call_setting, NULL, NULL, ¤tCall_); if (status != PJ_SUCCESS) { showError("make call", status); return; } } }
static void ui_answer_call() { pjsua_call_info call_info; char buf[128]; pjsua_msg_data msg_data; if (current_call != -1) { pjsua_call_get_info(current_call, &call_info); } else { /* Make compiler happy */ call_info.role = PJSIP_ROLE_UAC; call_info.state = PJSIP_INV_STATE_DISCONNECTED; } if (current_call == -1 || call_info.role != PJSIP_ROLE_UAS || call_info.state >= PJSIP_INV_STATE_CONNECTING) { puts("No pending incoming call"); fflush(stdout); return; } else { int st_code; char contact[120]; pj_str_t hname = { "Contact", 7 }; pj_str_t hvalue; pjsip_generic_string_hdr hcontact; if (!simple_input("Answer with code (100-699)", buf, sizeof(buf))) return; st_code = my_atoi(buf); if (st_code < 100) return; pjsua_msg_data_init(&msg_data); if (st_code/100 == 3) { if (!simple_input("Enter URL to be put in Contact", contact, sizeof(contact))) return; hvalue = pj_str(contact); pjsip_generic_string_hdr_init2(&hcontact, &hname, &hvalue); pj_list_push_back(&msg_data.hdr_list, &hcontact); } /* * Must check again! * Call may have been disconnected while we're waiting for * keyboard input. */ if (current_call == -1) { puts("Call has been disconnected"); fflush(stdout); return; } pjsua_call_answer2(current_call, &call_opt, st_code, NULL, &msg_data); } }