feat: add traceroute (#620)

This commit is contained in:
Andre K 2023-04-16 06:16:41 -03:00 committed by GitHub
parent 72c278c92c
commit da5f1d529d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 95 additions and 2 deletions

View file

@ -13,6 +13,7 @@ import androidx.core.os.bundleOf
import androidx.core.text.HtmlCompat
import androidx.fragment.app.activityViewModels
import androidx.fragment.app.setFragmentResult
import androidx.lifecycle.asLiveData
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.geeksville.mesh.NodeInfo
@ -86,6 +87,12 @@ class UsersFragment : ScreenFragment("Users"), Logging {
model.requestPosition(node.num)
}
}
R.id.traceroute -> {
if (position > 0 && user != null) {
debug("requesting traceroute for ${user.longName}")
model.requestTraceroute(node.num)
}
}
R.id.reboot -> {
MaterialAlertDialogBuilder(requireContext())
.setTitle("${getString(R.string.reboot)}\n${user?.longName}?")
@ -323,6 +330,25 @@ class UsersFragment : ScreenFragment("Users"), Logging {
model.nodeDB.nodes.observe(viewLifecycleOwner) {
nodesAdapter.onNodesChanged(it.values.toTypedArray())
}
model.packetResponse.asLiveData().observe(viewLifecycleOwner) { meshLog ->
meshLog?.meshPacket?.let { meshPacket ->
val routeList = meshLog.routeDiscovery?.routeList
fun nodeName(num: Int) = model.nodeDB.nodesByNum?.get(num)?.user?.longName
var routeStr = "${nodeName(meshPacket.from)} --> "
routeList?.forEach { num -> routeStr += "${nodeName(num)} --> " }
routeStr += "${nodeName(meshPacket.to)}"
MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.traceroute)
.setMessage(routeStr)
.setPositiveButton(R.string.okay) { _, _ -> }
.show()
model.clearPacketResponse()
}
}
}
override fun onDestroyView() {