From d822538c0ee91039b96d18e803327a7bbc3dba67 Mon Sep 17 00:00:00 2001 From: Ludovic Goix Date: Wed, 1 Jul 2020 08:28:06 -0400 Subject: [PATCH] Display battery level of remote nodes #64 --- .../main/java/com/geeksville/mesh/NodeInfo.kt | 8 +++- .../java/com/geeksville/mesh/model/NodeDB.kt | 8 ++-- .../com/geeksville/mesh/ui/UsersFragment.kt | 11 +++++ app/src/main/res/drawable/ic_antenna_24.xml | 12 ++++++ .../main/res/drawable/ic_battery_full_24.xml | 11 +++++ .../main/res/layout/adapter_node_layout.xml | 43 +++++++++++++++++++ 6 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 app/src/main/res/drawable/ic_antenna_24.xml create mode 100644 app/src/main/res/drawable/ic_battery_full_24.xml diff --git a/app/src/main/java/com/geeksville/mesh/NodeInfo.kt b/app/src/main/java/com/geeksville/mesh/NodeInfo.kt index b06a9619f..c683d78d5 100644 --- a/app/src/main/java/com/geeksville/mesh/NodeInfo.kt +++ b/app/src/main/java/com/geeksville/mesh/NodeInfo.kt @@ -28,7 +28,8 @@ data class Position( val latitude: Double, val longitude: Double, val altitude: Int, - val time: Int = currentTime() // default to current time in secs + val time: Int = currentTime(), // default to current time in secs + val batteryPctLevel: Int ) : Parcelable { companion object { /// Convert to a double representation of degrees @@ -45,7 +46,8 @@ data class Position( degD(p.latitudeI), degD(p.longitudeI), p.altitude, - if (p.time != 0) p.time else defaultTime + if (p.time != 0) p.time else defaultTime, + p.batteryLevel ) /// @return distance in meters to some other node (or null if unknown) @@ -71,6 +73,8 @@ data class NodeInfo( /// Return the last time we've seen this node in secs since 1970 val lastSeen get() = position?.time ?: 0 + val batteryPctLevel get() = position?.batteryPctLevel + /** * true if the device was heard from recently * diff --git a/app/src/main/java/com/geeksville/mesh/model/NodeDB.kt b/app/src/main/java/com/geeksville/mesh/model/NodeDB.kt index 1e8beaf46..f3e31eaf3 100644 --- a/app/src/main/java/com/geeksville/mesh/model/NodeDB.kt +++ b/app/src/main/java/com/geeksville/mesh/model/NodeDB.kt @@ -10,12 +10,14 @@ import com.geeksville.mesh.Position /// NodeDB lives inside the UIViewModel, but it needs a backpointer to reach the service class NodeDB(private val ui: UIViewModel) { private val testPositions = arrayOf( - Position(32.776665, -96.796989, 35), // dallas - Position(32.960758, -96.733521, 35), // richardson + Position(32.776665, -96.796989, 35, 123, 40), // dallas + Position(32.960758, -96.733521, 35, 456, 50), // richardson Position( 32.912901, -96.781776, - 35 + 35, + 789, + 60 ) // north dallas ) diff --git a/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt index 91c9e0e81..15cce77cc 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt @@ -26,6 +26,7 @@ class UsersFragment : ScreenFragment("Users"), Logging { class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val nodeNameView = itemView.nodeNameView val distance_view = itemView.distance_view + val batteryPctView = itemView.batteryPercentageView } private val nodesAdapter = object : RecyclerView.Adapter() { @@ -106,6 +107,16 @@ class UsersFragment : ScreenFragment("Users"), Logging { } else { holder.distance_view.visibility = View.INVISIBLE } + + val battery = n.batteryPctLevel + if (battery != null) + { + holder.batteryPctView.text = "$battery%" + } + else + { + holder.batteryPctView.text = "?" + } } private var nodes = arrayOf() diff --git a/app/src/main/res/drawable/ic_antenna_24.xml b/app/src/main/res/drawable/ic_antenna_24.xml new file mode 100644 index 000000000..c806236a9 --- /dev/null +++ b/app/src/main/res/drawable/ic_antenna_24.xml @@ -0,0 +1,12 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_battery_full_24.xml b/app/src/main/res/drawable/ic_battery_full_24.xml new file mode 100644 index 000000000..d966141d1 --- /dev/null +++ b/app/src/main/res/drawable/ic_battery_full_24.xml @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/layout/adapter_node_layout.xml b/app/src/main/res/layout/adapter_node_layout.xml index 60a894d15..10fce9962 100644 --- a/app/src/main/res/layout/adapter_node_layout.xml +++ b/app/src/main/res/layout/adapter_node_layout.xml @@ -1,6 +1,7 @@ @@ -49,6 +50,48 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/imageView" /> + + + + + + + + \ No newline at end of file