diff --git a/app/src/main/cpp/baresip.c b/app/src/main/cpp/baresip.c index a03aee1d..e365729e 100644 --- a/app/src/main/cpp/baresip.c +++ b/app/src/main/cpp/baresip.c @@ -7,16 +7,18 @@ #include #define LOGD(...) \ - ((void)__android_log_print(ANDROID_LOG_DEBUG, "Baresip", __VA_ARGS__)) + if (log_level_get() < LEVEL_INFO) ((void)__android_log_print(ANDROID_LOG_DEBUG, "Baresip Lib", __VA_ARGS__)) #define LOGI(...) \ - ((void)__android_log_print(ANDROID_LOG_INFO, "Baresip", __VA_ARGS__)) + if (log_level_get() < LEVEL_WARN) ((void)__android_log_print(ANDROID_LOG_DEBUG, "Baresip Lib", __VA_ARGS__)) #define LOGW(...) \ - ((void)__android_log_print(ANDROID_LOG_WARN, "Baresip", __VA_ARGS__)) + if (log_level_get() < LEVEL_ERROR) ((void)__android_log_print(ANDROID_LOG_DEBUG, "Baresip Lib", __VA_ARGS__)) #define LOGE(...) \ - ((void)__android_log_print(ANDROID_LOG_ERROR, "Baresip", __VA_ARGS__)) + if (log_level_get() <= LEVEL_ERROR) ((void)__android_log_print(ANDROID_LOG_DEBUG, "Baresip Lib", __VA_ARGS__)) + + typedef struct baresip_context { JavaVM *javaVM; @@ -1305,7 +1307,6 @@ Java_com_tutpro_baresip_Api_contact_1add(JNIEnv *env, jobject thiz, jstring java } else { LOGD("added contact %s\n", native_contact); } - return; } JNIEXPORT void JNICALL @@ -1316,7 +1317,12 @@ Java_com_tutpro_baresip_Api_contacts_1remove(JNIEnv *env, jobject thiz) { struct contact *c = le->data; contact_remove(baresip_contacts(), c); } - return; } +JNIEXPORT void JNICALL +Java_com_tutpro_baresip_Api_log_1level_1set(JNIEnv *env, jobject thiz, jint level) { + const enum log_level native_level = (enum log_level)level; + LOGD("seting log level '%u'\n", native_level); + log_level_set(native_level); +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt index 95a25884..7b9369f5 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt @@ -2,7 +2,6 @@ package com.tutpro.baresip import android.os.Bundle import android.support.v7.app.AppCompatActivity -import android.util.Log import android.view.Menu import android.view.MenuItem import android.view.View diff --git a/app/src/main/kotlin/com/tutpro/baresip/AccountListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/AccountListAdapter.kt index 44916fa9..c9bfc1e3 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/AccountListAdapter.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/AccountListAdapter.kt @@ -5,7 +5,6 @@ import android.content.Context import android.content.Intent import android.os.Bundle import android.support.v7.app.AlertDialog -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup diff --git a/app/src/main/kotlin/com/tutpro/baresip/AccountsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/AccountsActivity.kt index 441ddc54..62926fe7 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/AccountsActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/AccountsActivity.kt @@ -4,7 +4,6 @@ import android.app.Activity import android.content.Intent import android.os.Bundle import android.support.v7.app.AppCompatActivity -import android.util.Log import android.view.MenuItem import android.widget.* diff --git a/app/src/main/kotlin/com/tutpro/baresip/Api.kt b/app/src/main/kotlin/com/tutpro/baresip/Api.kt index fcf335b6..540b5df2 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/Api.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/Api.kt @@ -30,5 +30,6 @@ object Api { external fun cmd_exec(cmd: String): Int external fun contact_add(contact: String) external fun contacts_remove() + external fun log_level_set(level: Int) } diff --git a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt index 48f32e92..ea7f5b79 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt @@ -11,20 +11,19 @@ import android.os.IBinder import android.os.PowerManager import android.support.annotation.Keep import android.support.v4.app.NotificationCompat -import android.util.Log import android.view.View import android.widget.RemoteViews import android.support.v4.content.LocalBroadcastManager import android.os.Build import android.support.v4.app.NotificationCompat.VISIBILITY_PRIVATE import android.support.v4.content.ContextCompat +import android.net.Network +import android.net.NetworkRequest import java.io.File import java.nio.charset.StandardCharsets import java.io.InputStream import java.util.* -import android.net.Network -import android.net.NetworkRequest class BaresipService: Service() { @@ -149,10 +148,21 @@ class BaresipService: Service() { contents = "${contents}opus_application voip\n" write = true } + if (!contents.contains("log_level")) { + contents = "${contents}log_level 2\n" + Api.log_level_set(2) + Log.logLevel = Log.LogLevel.WARN + write = true + } else { + val ll = Utils.getNameValue(contents, "log_level")[0].toInt() + Api.log_level_set(ll) + Log.logLevelSet(ll) + } if (write) { Log.d(LOG_TAG, "Writing $contents") Utils.putFileContents(file, contents) } + } } } diff --git a/app/src/main/kotlin/com/tutpro/baresip/Call.kt b/app/src/main/kotlin/com/tutpro/baresip/Call.kt index 27ea79be..7c39e828 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/Call.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/Call.kt @@ -1,7 +1,6 @@ package com.tutpro.baresip import android.text.TextWatcher -import android.util.Log import java.util.ArrayList class Call(val callp: String, val ua: UserAgent, val peerURI: String, val dir: String, diff --git a/app/src/main/kotlin/com/tutpro/baresip/CallHistory.kt b/app/src/main/kotlin/com/tutpro/baresip/CallHistory.kt index d1355c11..c5b1c2b8 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/CallHistory.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/CallHistory.kt @@ -1,6 +1,5 @@ package com.tutpro.baresip -import android.util.Log import java.io.* import java.util.ArrayList import java.util.GregorianCalendar diff --git a/app/src/main/kotlin/com/tutpro/baresip/CallsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/CallsActivity.kt index df943555..ea55ff18 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/CallsActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/CallsActivity.kt @@ -6,7 +6,6 @@ import android.content.Intent import android.os.Bundle import android.support.v7.app.AlertDialog import android.support.v7.app.AppCompatActivity -import android.util.Log import android.view.MenuItem import android.widget.AdapterView import android.widget.ListView diff --git a/app/src/main/kotlin/com/tutpro/baresip/ChatActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ChatActivity.kt index 362d72c1..2736e563 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ChatActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ChatActivity.kt @@ -6,7 +6,6 @@ import android.os.Bundle import android.support.v4.content.LocalBroadcastManager import android.support.v7.app.AlertDialog import android.support.v7.app.AppCompatActivity -import android.util.Log import android.view.Menu import android.view.MenuItem import android.view.View diff --git a/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt index 64dbed7e..24a66ac0 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt @@ -5,7 +5,6 @@ import android.content.* import android.os.Bundle import android.support.v7.app.AlertDialog import android.support.v7.app.AppCompatActivity -import android.util.Log import android.view.MenuItem import android.widget.* diff --git a/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt index 37f9c8a9..22ab2713 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt @@ -4,7 +4,6 @@ import android.app.Activity import android.content.Intent import android.os.Bundle import android.support.v7.app.AppCompatActivity -import android.util.Log import android.view.Menu import android.view.MenuItem import android.view.View @@ -19,12 +18,15 @@ class ConfigActivity : AppCompatActivity() { internal lateinit var dnsServers: EditText internal lateinit var opusBitRate: EditText internal lateinit var iceLite: CheckBox + internal lateinit var debug: CheckBox private var oldAutoStart = "" private var oldDnsServers = "" private var oldOpusBitrate = "" private var oldIceMode = "" + private var oldLogLevel = "" private var save = false + private var restart = false private var config = "" override fun onCreate(savedInstanceState: Bundle?) { @@ -62,6 +64,14 @@ class ConfigActivity : AppCompatActivity() { oldIceMode = if (imCv.size == 0) "full" else imCv[0] iceLite.isChecked = oldIceMode == "lite" + debug = findViewById(R.id.Debug) as CheckBox + val dbCv = Utils.getNameValue(config, "log_level") + if (dbCv.size == 0) + oldLogLevel = "2" + else + oldLogLevel = dbCv[0] + debug.isChecked = oldLogLevel == "0" + } override fun onCreateOptionsMenu(menu: Menu): Boolean { @@ -83,6 +93,7 @@ class ConfigActivity : AppCompatActivity() { config = Utils.removeLinesStartingWithName(config, "auto_start") config += "\nauto_start $autoStartString\n" save = true + restart = false } val dnsServers = dnsServers.text.toString().trim() @@ -95,6 +106,7 @@ class ConfigActivity : AppCompatActivity() { for (server in dnsServers.split(",")) config += "\ndns_server ${server.trim()}\n" save = true + restart = true } val opusBitRate = opusBitRate.text.toString().trim() @@ -106,6 +118,7 @@ class ConfigActivity : AppCompatActivity() { config = Utils.removeLinesStartingWithName(config, "opus_bitrate") config += "\nopus_bitrate $opusBitRate\n" save = true + restart = true } var iceModeString = "full" @@ -114,6 +127,17 @@ class ConfigActivity : AppCompatActivity() { config = Utils.removeLinesStartingWithName(config, "ice_mode") config += "\nice_mode $iceModeString\n" save = true + restart = true + } + + var logLevelString = "2" + if (debug.isChecked) logLevelString = "0" + if (oldLogLevel != logLevelString) { + config = Utils.removeLinesStartingWithName(config, "log_level") + config += "\nlog_level $logLevelString\n" + Api.log_level_set(logLevelString.toInt()) + Log.logLevelSet(logLevelString.toInt()) + save = true } if (save) { @@ -127,6 +151,8 @@ class ConfigActivity : AppCompatActivity() { Utils.putFileContents(configFile, newConfig) // Api.reload_config() } + + intent.putExtra("restart", restart ) setResult(RESULT_OK, intent) finish() return true @@ -155,6 +181,9 @@ class ConfigActivity : AppCompatActivity() { findViewById(R.id.IceLiteTitle) as TextView-> { Utils.alertView(this, "ICE Lite Mode", getString(R.string.iceLite)) } + findViewById(R.id.DebugTitle) as TextView-> { + Utils.alertView(this, "Debug", getString(R.string.debug)) + } } } diff --git a/app/src/main/kotlin/com/tutpro/baresip/ContactActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ContactActivity.kt index 565dbd27..79773385 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ContactActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ContactActivity.kt @@ -4,7 +4,6 @@ import android.app.Activity import android.content.Intent import android.os.Bundle import android.support.v7.app.AppCompatActivity -import android.util.Log import android.view.Menu import android.view.MenuItem import android.widget.* diff --git a/app/src/main/kotlin/com/tutpro/baresip/ContactListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/ContactListAdapter.kt index 260d542a..cc50580b 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ContactListAdapter.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ContactListAdapter.kt @@ -6,7 +6,6 @@ import android.content.DialogInterface import android.content.Intent import android.os.Bundle import android.support.v7.app.AlertDialog -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup diff --git a/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt index 08e14cee..ff04e530 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt @@ -5,7 +5,6 @@ import android.content.* import android.os.Bundle import android.os.Environment import android.support.v7.app.AppCompatActivity -import android.util.Log import android.view.Menu import android.view.MenuItem import android.widget.ImageButton diff --git a/app/src/main/kotlin/com/tutpro/baresip/Log.kt b/app/src/main/kotlin/com/tutpro/baresip/Log.kt new file mode 100644 index 00000000..174516eb --- /dev/null +++ b/app/src/main/kotlin/com/tutpro/baresip/Log.kt @@ -0,0 +1,36 @@ +package com.tutpro.baresip + +object Log { + + enum class LogLevel { + DEBUG, INFO, WARN, ERROR, OFF + } + + var logLevel: LogLevel = LogLevel.INFO + + fun logLevelSet(value: Int) { + when (value) { + 0 -> logLevel = Log.LogLevel.DEBUG + 1 -> logLevel = Log.LogLevel.INFO + 2 -> logLevel = Log.LogLevel.WARN + 3 -> logLevel = Log.LogLevel.ERROR + 4 -> logLevel = Log.LogLevel.OFF + } + } + + fun d(tag: String, msg: String) { + if (logLevel < LogLevel.INFO) android.util.Log.d(tag, msg) + } + + fun i(tag: String, msg: String) { + if (logLevel < LogLevel.WARN) android.util.Log.i(tag, msg) + } + + fun w(tag: String, msg: String) { + if (logLevel < LogLevel.ERROR) android.util.Log.w(tag, msg) + } + + fun e(tag: String, msg: String) { + if (logLevel < LogLevel.OFF) android.util.Log.w(tag, msg) + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt index 2a94def8..8b79ab44 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MainActivity.kt @@ -9,7 +9,6 @@ import android.support.v4.content.ContextCompat import android.support.v7.app.AlertDialog import android.support.v7.app.AppCompatActivity import android.os.Bundle -import android.util.Log import android.view.Menu import android.view.MenuItem import android.content.pm.PackageManager @@ -930,7 +929,8 @@ class MainActivity : AppCompatActivity() { } CONFIG_CODE -> { - if (resultCode == RESULT_OK) + if ((resultCode == RESULT_OK) && + (data!!.getBooleanExtra("restart", true))) Utils.alertView(this, "Notice", "You need to restart baresip in order to activate saved config!") if (resultCode == RESULT_CANCELED) diff --git a/app/src/main/kotlin/com/tutpro/baresip/RunOnStartup.kt b/app/src/main/kotlin/com/tutpro/baresip/RunOnStartup.kt index c00a8ea6..775722da 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/RunOnStartup.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/RunOnStartup.kt @@ -4,7 +4,6 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Bundle -import android.util.Log import java.io.File diff --git a/app/src/main/kotlin/com/tutpro/baresip/UserAgent.kt b/app/src/main/kotlin/com/tutpro/baresip/UserAgent.kt index 98c49a04..1e073697 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/UserAgent.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/UserAgent.kt @@ -1,7 +1,5 @@ package com.tutpro.baresip -import android.util.Log - class UserAgent (val uap: String) { val account = Account(Api.ua_account(uap)) diff --git a/app/src/main/kotlin/com/tutpro/baresip/Utils.kt b/app/src/main/kotlin/com/tutpro/baresip/Utils.kt index c4d106ce..2f55bf68 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/Utils.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/Utils.kt @@ -3,7 +3,6 @@ package com.tutpro.baresip import android.app.ActivityManager import android.content.Context import android.support.v7.app.AlertDialog -import android.util.Log import android.os.PowerManager import android.app.KeyguardManager import android.content.Intent diff --git a/app/src/main/res/layout/activity_config.xml b/app/src/main/res/layout/activity_config.xml index 89f39c93..fcc8e545 100644 --- a/app/src/main/res/layout/activity_config.xml +++ b/app/src/main/res/layout/activity_config.xml @@ -123,6 +123,31 @@ + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 32c608d6..cda7ec6a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -54,4 +54,5 @@ Average maximum bit rate used by Opus audio stream. Valid value are 6000-510000. Factory default is 28000. If checked, ICE Lite Mode is used. + If checked, debug and info level log messages are available in logcat. \ No newline at end of file