Call and answer related fixes and improvements
This commit is contained in:
@@ -1290,6 +1290,14 @@ Java_com_tutpro_baresip_Api_message_1send(JNIEnv *env, jobject thiz, jlong ua, j
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL
|
||||||
|
Java_com_tutpro_baresip_Api_call_1destroy(JNIEnv *env, jobject thiz, jlong call)
|
||||||
|
{
|
||||||
|
re_thread_enter();
|
||||||
|
mem_deref((struct call *)call);
|
||||||
|
re_thread_leave();
|
||||||
|
}
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL
|
JNIEXPORT jint JNICALL
|
||||||
Java_com_tutpro_baresip_Api_reload_1config(JNIEnv *env, jobject thiz)
|
Java_com_tutpro_baresip_Api_reload_1config(JNIEnv *env, jobject thiz)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ object Api {
|
|||||||
external fun call_replaces(callp: Long): Boolean
|
external fun call_replaces(callp: Long): Boolean
|
||||||
external fun call_replace_transfer(xfer_callp: Long, callp: Long): Boolean
|
external fun call_replace_transfer(xfer_callp: Long, callp: Long): Boolean
|
||||||
external fun call_diverter_uri(callp: Long): String
|
external fun call_diverter_uri(callp: Long): String
|
||||||
|
external fun call_destroy(callp: Long)
|
||||||
|
|
||||||
external fun calls_mute(mute: Boolean)
|
external fun calls_mute(mute: Boolean)
|
||||||
|
|
||||||
|
|||||||
@@ -86,6 +86,10 @@ class Call(val callp: Long, val ua: UserAgent, val peerUri: String, val dir: Str
|
|||||||
if (ua.account.mediaEnc != "") security = R.drawable.box_red
|
if (ua.account.mediaEnc != "") security = R.drawable.box_red
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun destroy() {
|
||||||
|
Api.call_destroy(callp)
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
fun calls(): ArrayList<Call> {
|
fun calls(): ArrayList<Call> {
|
||||||
|
|||||||
@@ -1669,7 +1669,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
private fun call(ua: UserAgent, uri: String, onHoldCall: Call? = null): Boolean {
|
private fun call(ua: UserAgent, uri: String, onHoldCall: Call? = null): Boolean {
|
||||||
if (ua.account.aor != aorSpinner.tag)
|
if (ua.account.aor != aorSpinner.tag)
|
||||||
spinToAor(ua.account.aor)
|
spinToAor(ua.account.aor)
|
||||||
val callp = Api.ua_call_alloc(ua.uap, 0L, Api.VIDMODE_OFF)
|
val callp = ua.callAlloc(0L, Api.VIDMODE_OFF)
|
||||||
return if (callp != 0L) {
|
return if (callp != 0L) {
|
||||||
Log.d(TAG, "Adding outgoing call ${ua.uap}/$callp/$uri")
|
Log.d(TAG, "Adding outgoing call ${ua.uap}/$callp/$uri")
|
||||||
val call = Call(callp, ua, uri, "out", "outgoing", Utils.dtmfWatcher(callp))
|
val call = Call(callp, ua, uri, "out", "outgoing", Utils.dtmfWatcher(callp))
|
||||||
@@ -1681,8 +1681,12 @@ class MainActivity : AppCompatActivity() {
|
|||||||
showCall(ua)
|
showCall(ua)
|
||||||
true
|
true
|
||||||
} else {
|
} else {
|
||||||
showCall(ua)
|
|
||||||
Log.w(TAG, "call_connect $callp failed")
|
Log.w(TAG, "call_connect $callp failed")
|
||||||
|
if (onHoldCall != null)
|
||||||
|
onHoldCall.newCall = null
|
||||||
|
call.remove()
|
||||||
|
call.destroy()
|
||||||
|
showCall(ua)
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -1692,7 +1696,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun acceptTransfer(ua: UserAgent, call: Call, uri: String) {
|
private fun acceptTransfer(ua: UserAgent, call: Call, uri: String) {
|
||||||
val newCallp = Api.ua_call_alloc(ua.uap, call.callp, Api.VIDMODE_OFF)
|
val newCallp = ua.callAlloc(call.callp, Api.VIDMODE_OFF)
|
||||||
if (newCallp != 0L) {
|
if (newCallp != 0L) {
|
||||||
Log.d(TAG, "Adding outgoing call ${ua.uap}/$newCallp/$uri")
|
Log.d(TAG, "Adding outgoing call ${ua.uap}/$newCallp/$uri")
|
||||||
val newCall = Call(newCallp, ua, uri, "out", "transferring",
|
val newCall = Call(newCallp, ua, uri, "out", "transferring",
|
||||||
|
|||||||
@@ -5,6 +5,10 @@ class UserAgent(val uap: Long) {
|
|||||||
val account = Account(Api.ua_account(uap))
|
val account = Account(Api.ua_account(uap))
|
||||||
var status = R.drawable.dot_white
|
var status = R.drawable.dot_white
|
||||||
|
|
||||||
|
fun callAlloc(xCall: Long, videoMode: Int): Long {
|
||||||
|
return Api.ua_call_alloc(uap, xCall, videoMode)
|
||||||
|
}
|
||||||
|
|
||||||
fun add() {
|
fun add() {
|
||||||
BaresipService.uas.add(this)
|
BaresipService.uas.add(this)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user