Use Long type instead of String to pass pointers
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@ -6,7 +6,7 @@ import kotlin.collections.ArrayList
|
||||
import java.net.URLEncoder
|
||||
import java.net.URLDecoder
|
||||
|
||||
class Account(val accp: String) {
|
||||
class Account(val accp: Long) {
|
||||
|
||||
var displayName = Api.account_display_name(accp)
|
||||
val aor = Api.account_aor(accp)
|
||||
|
||||
@ -9,59 +9,59 @@ object Api {
|
||||
const val DTMFMODE_RTP_EVENT = 0
|
||||
const val DTMFMODE_SIP_INFO = 1
|
||||
|
||||
external fun account_set_display_name(acc: String, dn: String): Int
|
||||
external fun account_display_name(acc: String): String
|
||||
external fun account_aor(acc: String): String
|
||||
external fun account_luri(acc: String): String
|
||||
external fun account_auth_user(acc: String): String
|
||||
external fun account_set_auth_user(acc: String, user: String): Int
|
||||
external fun account_auth_pass(acc: String): String
|
||||
external fun account_set_auth_pass(acc: String, pass: String): Int
|
||||
external fun account_outbound(acc: String, ix: Int): String
|
||||
external fun account_set_outbound(acc: String, ob: String, ix: Int): Int
|
||||
external fun account_set_sipnat(acc: String, sipnat: String): Int
|
||||
external fun account_audio_codec(acc: String, ix: Int): String
|
||||
external fun account_regint(acc: String): Int
|
||||
external fun account_set_regint(acc: String, regint: Int): Int
|
||||
external fun account_stun_uri(acc: String): String
|
||||
external fun account_set_stun_uri(acc: String, uri: String): Int
|
||||
external fun account_stun_user(acc: String): String
|
||||
external fun account_set_stun_user(acc: String, user: String): Int
|
||||
external fun account_stun_pass(acc: String): String
|
||||
external fun account_set_stun_pass(acc: String, pass: String): Int
|
||||
external fun account_mediaenc(acc: String): String
|
||||
external fun account_set_mediaenc(acc: String, mediaenc: String): Int
|
||||
external fun account_medianat(acc: String): String
|
||||
external fun account_set_medianat(acc: String, medianat: String): Int
|
||||
external fun account_set_audio_codecs(acc: String, codecs: String): Int
|
||||
external fun account_set_video_codecs(acc: String, codecs: String): Int
|
||||
external fun account_set_mwi(acc: String, value: String): Int
|
||||
external fun account_vm_uri(acc: String): String
|
||||
external fun account_answermode(acc: String): Int
|
||||
external fun account_set_answermode(acc: String, mode: Int): Int
|
||||
external fun account_dtmfmode(acc: String): Int
|
||||
external fun account_set_dtmfmode(acc: String, mode: Int): Int
|
||||
external fun account_extra(acc: String): String
|
||||
external fun account_debug(acc: String)
|
||||
external fun account_set_display_name(acc: Long, dn: String): Int
|
||||
external fun account_display_name(acc: Long): String
|
||||
external fun account_aor(acc: Long): String
|
||||
external fun account_luri(acc: Long): String
|
||||
external fun account_auth_user(acc: Long): String
|
||||
external fun account_set_auth_user(acc: Long, user: String): Int
|
||||
external fun account_auth_pass(acc: Long): String
|
||||
external fun account_set_auth_pass(acc: Long, pass: String): Int
|
||||
external fun account_outbound(acc: Long, ix: Int): String
|
||||
external fun account_set_outbound(acc: Long, ob: String, ix: Int): Int
|
||||
external fun account_set_sipnat(acc: Long, sipnat: String): Int
|
||||
external fun account_audio_codec(acc: Long, ix: Int): String
|
||||
external fun account_regint(acc: Long): Int
|
||||
external fun account_set_regint(acc: Long, regint: Int): Int
|
||||
external fun account_stun_uri(acc: Long): String
|
||||
external fun account_set_stun_uri(acc: Long, uri: String): Int
|
||||
external fun account_stun_user(acc: Long): String
|
||||
external fun account_set_stun_user(acc: Long, user: String): Int
|
||||
external fun account_stun_pass(acc: Long): String
|
||||
external fun account_set_stun_pass(acc: Long, pass: String): Int
|
||||
external fun account_mediaenc(acc: Long): String
|
||||
external fun account_set_mediaenc(acc: Long, mediaenc: String): Int
|
||||
external fun account_medianat(acc: Long): String
|
||||
external fun account_set_medianat(acc: Long, medianat: String): Int
|
||||
external fun account_set_audio_codecs(acc: Long, codecs: String): Int
|
||||
external fun account_set_video_codecs(acc: Long, codecs: String): Int
|
||||
external fun account_set_mwi(acc: Long, value: String): Int
|
||||
external fun account_vm_uri(acc: Long): String
|
||||
external fun account_answermode(acc: Long): Int
|
||||
external fun account_set_answermode(acc: Long, mode: Int): Int
|
||||
external fun account_dtmfmode(acc: Long): Int
|
||||
external fun account_set_dtmfmode(acc: Long, mode: Int): Int
|
||||
external fun account_extra(acc: Long): String
|
||||
external fun account_debug(acc: Long)
|
||||
|
||||
external fun uag_reset_transp(register: Boolean, reinvite: Boolean)
|
||||
external fun uag_enable_sip_trace(enable: Boolean)
|
||||
|
||||
external fun ua_account(ua: String): String
|
||||
external fun ua_alloc(uri: String): String
|
||||
external fun ua_update_account(ua: String): Int
|
||||
external fun ua_destroy(ua: String)
|
||||
external fun ua_register(ua: String): Int
|
||||
external fun ua_isregistered(ua: String): Boolean
|
||||
external fun ua_unregister(ua: String)
|
||||
external fun ua_hangup(uap: String, callp: String, code: Int, reason: String)
|
||||
external fun ua_call_alloc(uap: String, xcallp: String, video: Int): String
|
||||
external fun ua_answer(uap: String, callp: String, video: Int)
|
||||
external fun ua_debug(uap: String)
|
||||
external fun ua_account(uap: Long): Long
|
||||
external fun ua_alloc(uri: String): Long
|
||||
external fun ua_update_account(uap: Long): Int
|
||||
external fun ua_destroy(uap: Long)
|
||||
external fun ua_register(uap: Long): Int
|
||||
external fun ua_isregistered(uap: Long): Boolean
|
||||
external fun ua_unregister(uap: Long)
|
||||
external fun ua_hangup(uap: Long, callp: Long, code: Int, reason: String)
|
||||
external fun ua_call_alloc(uap: Long, xcallp: Long, video: Int): Long
|
||||
external fun ua_answer(uap: Long, callp: Long, video: Int)
|
||||
external fun ua_debug(uap: Long)
|
||||
|
||||
external fun calls_mute(mute: Boolean)
|
||||
|
||||
external fun message_send(uap: String, peer_uri: String, message: String, time: String): Int
|
||||
external fun message_send(uap: Long, peer_uri: String, message: String, time: String): Int
|
||||
|
||||
external fun audio_codecs(): String
|
||||
external fun video_codecs(): String
|
||||
|
||||
@ -431,8 +431,8 @@ class BaresipService: Service() {
|
||||
}
|
||||
|
||||
"Call Answer" -> {
|
||||
val uap = intent!!.getStringExtra("uap")!!
|
||||
val callp = intent.getStringExtra("callp")!!
|
||||
val uap = intent!!.getLongExtra("uap", 0L)
|
||||
val callp = intent.getLongExtra("callp", 0L)
|
||||
val vidMode = intent.getIntExtra("video", Api.VIDMODE_OFF)
|
||||
stopRinging()
|
||||
stopMediaPlayer()
|
||||
@ -445,7 +445,7 @@ class BaresipService: Service() {
|
||||
}
|
||||
|
||||
"Call Reject" -> {
|
||||
val callp = intent!!.getStringExtra("callp")!!
|
||||
val callp = intent!!.getLongExtra("callp", 0L)
|
||||
val call = Call.ofCallp(callp)
|
||||
if (call == null) {
|
||||
Log.w(TAG, "onStartCommand did not find call $callp")
|
||||
@ -459,7 +459,7 @@ class BaresipService: Service() {
|
||||
}
|
||||
|
||||
"Transfer Deny" -> {
|
||||
val callp = intent!!.getStringExtra("callp")!!
|
||||
val callp = intent!!.getLongExtra("callp", 0L)
|
||||
val call = Call.ofCallp(callp)
|
||||
if (call == null)
|
||||
Log.w(TAG, "onStartCommand did not find call $callp")
|
||||
@ -469,7 +469,7 @@ class BaresipService: Service() {
|
||||
}
|
||||
|
||||
"Message Save" -> {
|
||||
val uap = intent!!.getStringExtra("uap")!!
|
||||
val uap = intent!!.getLongExtra("uap", 0L)
|
||||
val ua = UserAgent.ofUap(uap)
|
||||
if (ua == null)
|
||||
Log.w(TAG, "onStartCommand did not find UA $uap")
|
||||
@ -482,7 +482,7 @@ class BaresipService: Service() {
|
||||
}
|
||||
|
||||
"Message Delete" -> {
|
||||
val uap = intent!!.getStringExtra("uap")!!
|
||||
val uap = intent!!.getLongExtra("uap", 0L)
|
||||
val ua = UserAgent.ofUap(uap)
|
||||
if (ua == null)
|
||||
Log.w(TAG, "onStartCommand did not find UA $uap")
|
||||
@ -531,7 +531,7 @@ class BaresipService: Service() {
|
||||
}
|
||||
|
||||
@Keep
|
||||
fun uaAdd(uap: String) {
|
||||
fun uaAdd(uap: Long) {
|
||||
val ua = UserAgent(uap)
|
||||
Log.d(TAG, "uaAdd ${ua.account.aor} at BaresipService")
|
||||
uas.add(ua)
|
||||
@ -549,7 +549,7 @@ class BaresipService: Service() {
|
||||
|
||||
@SuppressLint("UnspecifiedImmutableFlag")
|
||||
@Keep
|
||||
fun uaEvent(event: String, uap: String, callp: String) {
|
||||
fun uaEvent(event: String, uap: Long, callp: Long) {
|
||||
|
||||
if (!isServiceRunning) return
|
||||
|
||||
@ -565,7 +565,7 @@ class BaresipService: Service() {
|
||||
}
|
||||
|
||||
val call = Call.ofCallp(callp)
|
||||
if (call == null && callp != "0" && ev[0] != "call incoming" && ev[0] != "call rejected") {
|
||||
if (call == null && callp != 0L && ev[0] != "call incoming" && ev[0] != "call rejected") {
|
||||
Log.w(TAG, "uaEvent $event did not find call $callp")
|
||||
return
|
||||
}
|
||||
@ -922,7 +922,8 @@ class BaresipService: Service() {
|
||||
}
|
||||
}
|
||||
|
||||
postServiceEvent(ServiceEvent(newEvent ?: event, arrayListOf(uap, callp), System.nanoTime()))
|
||||
postServiceEvent(ServiceEvent(newEvent ?: event, arrayListOf(uap, callp),
|
||||
System.nanoTime()))
|
||||
|
||||
}
|
||||
|
||||
@ -938,7 +939,7 @@ class BaresipService: Service() {
|
||||
|
||||
@SuppressLint("UnspecifiedImmutableFlag")
|
||||
@Keep
|
||||
fun messageEvent(uap: String, peer: String, msg: ByteArray) {
|
||||
fun messageEvent(uap: Long, peer: String, msg: ByteArray) {
|
||||
var text = "Decoding of message failed!"
|
||||
try {
|
||||
text = String(msg, StandardCharsets.UTF_8)
|
||||
|
||||
@ -3,7 +3,7 @@ package com.tutpro.baresip
|
||||
import android.text.TextWatcher
|
||||
import java.util.*
|
||||
|
||||
class Call(val callp: String, val ua: UserAgent, val peerUri: String, val dir: String,
|
||||
class Call(val callp: Long, val ua: UserAgent, val peerUri: String, val dir: String,
|
||||
var status: String, val dtmfWatcher: TextWatcher?) {
|
||||
|
||||
var onhold = false
|
||||
@ -67,17 +67,17 @@ class Call(val callp: String, val ua: UserAgent, val peerUri: String, val dir: S
|
||||
if (ua.account.mediaEnc != "") security = R.drawable.box_red
|
||||
}
|
||||
|
||||
private external fun call_connect(callp: String, peer_uri: String): Int
|
||||
private external fun call_hold(callp: String, hold: Boolean): Int
|
||||
private external fun call_ismuted(callp: String): Boolean
|
||||
private external fun call_transfer(callp: String, peer_uri: String): Int
|
||||
private external fun call_send_digit(callp: String, digit: Char): Int
|
||||
private external fun call_notify_sipfrag(callp: String, code: Int, reason: String)
|
||||
private external fun call_start_audio(callp: String)
|
||||
private external fun call_audio_codecs(callp: String): String
|
||||
private external fun call_duration(callp: String): Int
|
||||
private external fun call_stats(callp: String, stream: String): String
|
||||
private external fun call_has_video(callp: String): Boolean
|
||||
private external fun call_connect(callp: Long, peer_uri: String): Int
|
||||
private external fun call_hold(callp: Long, hold: Boolean): Int
|
||||
private external fun call_ismuted(callp: Long): Boolean
|
||||
private external fun call_transfer(callp: Long, peer_uri: String): Int
|
||||
private external fun call_send_digit(callp: Long, digit: Char): Int
|
||||
private external fun call_notify_sipfrag(callp: Long, code: Int, reason: String)
|
||||
private external fun call_start_audio(callp: Long)
|
||||
private external fun call_audio_codecs(callp: Long): String
|
||||
private external fun call_duration(callp: Long): Int
|
||||
private external fun call_stats(callp: Long, stream: String): String
|
||||
private external fun call_has_video(callp: Long): Boolean
|
||||
|
||||
companion object {
|
||||
|
||||
@ -92,7 +92,7 @@ class Call(val callp: String, val ua: UserAgent, val peerUri: String, val dir: S
|
||||
return result
|
||||
}
|
||||
|
||||
fun ofCallp(callp: String): Call? {
|
||||
fun ofCallp(callp: Long): Call? {
|
||||
for (c in BaresipService.calls)
|
||||
if (c.callp == callp) return c
|
||||
return null
|
||||
|
||||
@ -93,7 +93,7 @@ class MainActivity : AppCompatActivity() {
|
||||
private var atStartup = false
|
||||
|
||||
private var resumeUri = ""
|
||||
private var resumeUap = ""
|
||||
private var resumeUap = 0L
|
||||
private var resumeCall: Call? = null
|
||||
private var resumeAction = ""
|
||||
private var firstRun = false
|
||||
@ -808,7 +808,7 @@ class MainActivity : AppCompatActivity() {
|
||||
Toast.LENGTH_SHORT).show()
|
||||
return
|
||||
}
|
||||
val uap = intent.getStringExtra("uap")!!
|
||||
val uap = intent.getLongExtra("uap", 0L)
|
||||
val ua = UserAgent.ofUap(uap)
|
||||
if (ua == null) {
|
||||
Log.w(TAG, "handleIntent 'call' did not find ua $uap")
|
||||
@ -820,7 +820,7 @@ class MainActivity : AppCompatActivity() {
|
||||
ua.account.resumeUri = intent.getStringExtra("peer")!!
|
||||
}
|
||||
"call show", "call answer" -> {
|
||||
val callp = intent.getStringExtra("callp")!!
|
||||
val callp = intent.getLongExtra("callp", 0L)
|
||||
val call = Call.ofCallp(callp)
|
||||
if (call == null) {
|
||||
Log.w(TAG, "handleIntent '$action' did not find call $callp")
|
||||
@ -833,7 +833,7 @@ class MainActivity : AppCompatActivity() {
|
||||
resumeCall = call
|
||||
}
|
||||
"call missed" -> {
|
||||
val uap = intent.getStringExtra("uap")!!
|
||||
val uap = intent.getLongExtra("uap", 0L)
|
||||
val ua = UserAgent.ofUap(uap)
|
||||
if (ua == null) {
|
||||
Log.w(TAG, "handleIntent did not find ua $uap")
|
||||
@ -844,7 +844,7 @@ class MainActivity : AppCompatActivity() {
|
||||
resumeAction = action
|
||||
}
|
||||
"call transfer", "transfer show", "transfer accept" -> {
|
||||
val callp = intent.getStringExtra("callp")!!
|
||||
val callp = intent.getLongExtra("callp", 0L)
|
||||
val call = Call.ofCallp(callp)
|
||||
if (call == null) {
|
||||
Log.w(TAG, "handleIntent '$action' did not find call $callp")
|
||||
@ -859,7 +859,7 @@ class MainActivity : AppCompatActivity() {
|
||||
intent.getStringExtra("uri")!!
|
||||
}
|
||||
"message", "message show", "message reply" -> {
|
||||
val uap = intent.getStringExtra("uap")!!
|
||||
val uap = intent.getLongExtra("uap", 0L)
|
||||
val ua = UserAgent.ofUap(uap)
|
||||
if (ua == null) {
|
||||
Log.w(TAG, "onNewIntent did not find ua $uap")
|
||||
@ -893,7 +893,7 @@ class MainActivity : AppCompatActivity() {
|
||||
return super.onKeyDown(keyCode, event)
|
||||
}
|
||||
|
||||
private fun handleServiceEvent(event: String, params: ArrayList<String>) {
|
||||
private fun handleServiceEvent(event: String, params: ArrayList<Any>) {
|
||||
|
||||
fun handleNextEvent(logMessage: String? = null) {
|
||||
if (logMessage != null)
|
||||
@ -913,7 +913,7 @@ class MainActivity : AppCompatActivity() {
|
||||
}
|
||||
|
||||
if (event == "started") {
|
||||
val callActionUri = params[0]
|
||||
val callActionUri = params[0] as String
|
||||
Log.d(TAG, "Handling service event 'started' with '$callActionUri'")
|
||||
if (!this::uaAdapter.isInitialized) {
|
||||
// Android has restarted baresip when permission has been denied in app settings
|
||||
@ -959,7 +959,7 @@ class MainActivity : AppCompatActivity() {
|
||||
return
|
||||
}
|
||||
|
||||
val uap = params[0]
|
||||
val uap = params[0] as Long
|
||||
val ua = UserAgent.ofUap(uap)
|
||||
if (ua == null) {
|
||||
handleNextEvent("handleServiceEvent '$event' did not find ua $uap")
|
||||
@ -980,7 +980,7 @@ class MainActivity : AppCompatActivity() {
|
||||
}
|
||||
}
|
||||
"call incoming", "call outgoing" -> {
|
||||
val callp = params[1]
|
||||
val callp = params[1] as Long
|
||||
if (BaresipService.isMainVisible) {
|
||||
if (aor != aorSpinner.tag)
|
||||
spinToAor(aor)
|
||||
@ -1011,7 +1011,7 @@ class MainActivity : AppCompatActivity() {
|
||||
showCall(ua)
|
||||
}
|
||||
"call verify" -> {
|
||||
val callp = params[1]
|
||||
val callp = params[1] as Long
|
||||
val call = Call.ofCallp(callp)
|
||||
if (call == null) {
|
||||
handleNextEvent("Call $callp to be verified is not found")
|
||||
@ -1051,7 +1051,7 @@ class MainActivity : AppCompatActivity() {
|
||||
}
|
||||
}
|
||||
"call verified", "call secure" -> {
|
||||
val callp = params[1]
|
||||
val callp = params[1] as Long
|
||||
val call = Call.ofCallp(callp)
|
||||
if (call == null) {
|
||||
handleNextEvent("Call $callp that is verified is not found")
|
||||
@ -1067,7 +1067,7 @@ class MainActivity : AppCompatActivity() {
|
||||
}
|
||||
}
|
||||
"call transfer", "transfer show" -> {
|
||||
val callp = params[1]
|
||||
val callp = params[1] as Long
|
||||
if (!BaresipService.isMainVisible) {
|
||||
Log.d(TAG, "Reordering to front")
|
||||
BaresipService.activities.clear()
|
||||
@ -1099,7 +1099,7 @@ class MainActivity : AppCompatActivity() {
|
||||
}
|
||||
}
|
||||
"transfer accept" -> {
|
||||
val callp = params[1]
|
||||
val callp = params[1] as Long
|
||||
val call = Call.ofCallp(callp)
|
||||
if (call in Call.calls())
|
||||
Api.ua_hangup(uap, callp, 0, "")
|
||||
@ -1132,7 +1132,7 @@ class MainActivity : AppCompatActivity() {
|
||||
i.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP
|
||||
val b = Bundle()
|
||||
b.putString("aor", aor)
|
||||
b.putString("peer", params[1])
|
||||
b.putString("peer", params[1] as String)
|
||||
b.putBoolean("focus", ev[0] == "message reply")
|
||||
i.putExtras(b)
|
||||
chatRequests.launch(i)
|
||||
@ -1611,8 +1611,8 @@ class MainActivity : AppCompatActivity() {
|
||||
private fun call(ua: UserAgent, uri: String): Boolean {
|
||||
if (ua.account.aor != aorSpinner.tag)
|
||||
spinToAor(ua.account.aor)
|
||||
val callp = Api.ua_call_alloc(ua.uap, "", Api.VIDMODE_OFF)
|
||||
return if (callp != "") {
|
||||
val callp = Api.ua_call_alloc(ua.uap, 0L, Api.VIDMODE_OFF)
|
||||
return if (callp != 0L) {
|
||||
Log.d(TAG, "Adding outgoing call ${ua.uap}/$callp/$uri")
|
||||
val call = Call(callp, ua, uri, "out", "outgoing", Utils.dtmfWatcher(callp))
|
||||
call.add()
|
||||
@ -1632,7 +1632,7 @@ class MainActivity : AppCompatActivity() {
|
||||
|
||||
private fun acceptTransfer(ua: UserAgent, call: Call, uri: String) {
|
||||
val newCallp = Api.ua_call_alloc(ua.uap, call.callp, Api.VIDMODE_OFF)
|
||||
if (newCallp != "") {
|
||||
if (newCallp != 0L) {
|
||||
Log.d(TAG, "Adding outgoing call ${ua.uap}/$newCallp/$uri")
|
||||
val newCall = Call(newCallp, ua, uri, "out", "transferring",
|
||||
Utils.dtmfWatcher(newCallp))
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
package com.tutpro.baresip
|
||||
|
||||
class ServiceEvent (val event: String, val params: ArrayList<String>, val timeStamp: Long)
|
||||
class ServiceEvent (val event: String, val params: ArrayList<Any>, val timeStamp: Long)
|
||||
@ -1,6 +1,6 @@
|
||||
package com.tutpro.baresip
|
||||
|
||||
class UserAgent(val uap: String) {
|
||||
class UserAgent(val uap: Long) {
|
||||
|
||||
val account = Account(Api.ua_account(uap))
|
||||
|
||||
@ -41,7 +41,7 @@ class UserAgent(val uap: String) {
|
||||
return null
|
||||
}
|
||||
|
||||
fun ofUap(uap: String): UserAgent? {
|
||||
fun ofUap(uap: Long): UserAgent? {
|
||||
for (ua in BaresipService.uas)
|
||||
if (ua.uap == uap) return ua
|
||||
return null
|
||||
@ -49,7 +49,7 @@ class UserAgent(val uap: String) {
|
||||
|
||||
fun uaAlloc(uri: String): UserAgent? {
|
||||
val uap = Api.ua_alloc(uri)
|
||||
if (uap != "") return UserAgent(uap)
|
||||
if (uap != 0L) return UserAgent(uap)
|
||||
Log.e(TAG, "Failed to allocate UserAgent for $uri")
|
||||
return null
|
||||
}
|
||||
|
||||
@ -414,7 +414,7 @@ object Utils {
|
||||
return result
|
||||
}
|
||||
|
||||
fun dtmfWatcher(callp: String): TextWatcher {
|
||||
fun dtmfWatcher(callp: Long): TextWatcher {
|
||||
return object : TextWatcher {
|
||||
override fun beforeTextChanged(sequence: CharSequence, start: Int, count: Int, after: Int) {}
|
||||
override fun onTextChanged(sequence: CharSequence, start: Int, before: Int, count: Int) {
|
||||
|
||||
Reference in New Issue
Block a user