From 91912741aed45655c56854b52922b6f8f8b10710 Mon Sep 17 00:00:00 2001 From: Vadim Furman Date: Wed, 10 Feb 2021 21:34:26 -0800 Subject: [PATCH 1/2] Added "Ping" menu option for testing repeated message send. --- .../java/com/geeksville/mesh/MainActivity.kt | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/app/src/main/java/com/geeksville/mesh/MainActivity.kt b/app/src/main/java/com/geeksville/mesh/MainActivity.kt index 2a761eab1..dd82d2354 100644 --- a/app/src/main/java/com/geeksville/mesh/MainActivity.kt +++ b/app/src/main/java/com/geeksville/mesh/MainActivity.kt @@ -18,6 +18,7 @@ import android.hardware.usb.UsbManager import android.net.Uri import android.os.Build import android.os.Bundle +import android.os.Handler import android.os.RemoteException import android.view.Menu import android.view.MenuItem @@ -60,6 +61,8 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.cancel import java.nio.charset.Charset +import java.text.DateFormat +import java.util.* /* UI design @@ -923,6 +926,17 @@ class MainActivity : AppCompatActivity(), Logging, return true } + val handler: Handler by lazy { + Handler(mainLooper) + } + var pingRunning: Boolean = false + + override fun onPrepareOptionsMenu(menu: Menu): Boolean { + menu.findItem(R.id.start_ping).setVisible(!pingRunning) + menu.findItem(R.id.stop_ping).setVisible(pingRunning) + return super.onPrepareOptionsMenu(menu) + } + override fun onOptionsItemSelected(item: MenuItem): Boolean { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long @@ -945,6 +959,31 @@ class MainActivity : AppCompatActivity(), Logging, fragmentTransaction.commit() return true } + R.id.start_ping -> { + fun postPing() { + // Schedule sending ping message and recursion. + handler.postDelayed( + Runnable { + debug("Sending message") + val str = DateFormat.getTimeInstance(DateFormat.SHORT) + .format(Date(System.currentTimeMillis())) + model.messagesState.sendMessage("Ping " + str) + postPing() + }, + 30000 + ) + } + postPing() + pingRunning = true + invalidateOptionsMenu() + return true + } + R.id.stop_ping -> { + handler.removeCallbacksAndMessages(null) + pingRunning = false + invalidateOptionsMenu() + return true + } else -> super.onOptionsItemSelected(item) } } From 36b478b263bbfdb0eb707712852762dffbfb195f Mon Sep 17 00:00:00 2001 From: Vadim Furman Date: Wed, 10 Feb 2021 21:36:45 -0800 Subject: [PATCH 2/2] Added comments --- app/src/main/java/com/geeksville/mesh/MainActivity.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/MainActivity.kt b/app/src/main/java/com/geeksville/mesh/MainActivity.kt index dd82d2354..e50440f9e 100644 --- a/app/src/main/java/com/geeksville/mesh/MainActivity.kt +++ b/app/src/main/java/com/geeksville/mesh/MainActivity.kt @@ -929,6 +929,7 @@ class MainActivity : AppCompatActivity(), Logging, val handler: Handler by lazy { Handler(mainLooper) } + // Keeps track of pings status so we update the menu properly. var pingRunning: Boolean = false override fun onPrepareOptionsMenu(menu: Menu): Boolean { @@ -961,13 +962,13 @@ class MainActivity : AppCompatActivity(), Logging, } R.id.start_ping -> { fun postPing() { - // Schedule sending ping message and recursion. + // Send ping message and arrange delayed recursion. + debug("Sending ping") + val str = "Ping " + DateFormat.getTimeInstance(DateFormat.SHORT) + .format(Date(System.currentTimeMillis())) + model.messagesState.sendMessage(str) handler.postDelayed( Runnable { - debug("Sending message") - val str = DateFormat.getTimeInstance(DateFormat.SHORT) - .format(Date(System.currentTimeMillis())) - model.messagesState.sendMessage("Ping " + str) postPing() }, 30000