diff --git a/app/src/main/aidl/com/geeksville/mesh/IMeshService.aidl b/app/src/main/aidl/com/geeksville/mesh/IMeshService.aidl index bd807c8fc..cad2ba775 100644 --- a/app/src/main/aidl/com/geeksville/mesh/IMeshService.aidl +++ b/app/src/main/aidl/com/geeksville/mesh/IMeshService.aidl @@ -5,6 +5,7 @@ package com.geeksville.mesh; parcelable DataPacket; parcelable NodeInfo; parcelable MeshUser; +parcelable Position; parcelable MyNodeInfo; /** @@ -101,7 +102,7 @@ interface IMeshService { void commitEditSettings(); /// Send position packet with wantResponse to nodeNum - void requestPosition(in int idNum, in double lat, in double lon, in int alt); + void requestPosition(in int idNum, in Position position); /// Send Shutdown admin packet to nodeNum void requestShutdown(in int idNum); diff --git a/app/src/main/java/com/geeksville/mesh/model/UIState.kt b/app/src/main/java/com/geeksville/mesh/model/UIState.kt index 227880f2d..692d2c26f 100644 --- a/app/src/main/java/com/geeksville/mesh/model/UIState.kt +++ b/app/src/main/java/com/geeksville/mesh/model/UIState.kt @@ -207,9 +207,9 @@ class UIViewModel @Inject constructor( } } - fun requestPosition(destNum: Int, lat: Double = 0.0, lon: Double = 0.0, alt: Int = 0) { + fun requestPosition(destNum: Int, position: Position = Position(0.0, 0.0, 0)) { try { - meshService?.requestPosition(destNum, lat, lon, alt) + meshService?.requestPosition(destNum, position) } catch (ex: RemoteException) { errormsg("Request position error: ${ex.message}") } diff --git a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt index b8123fcc3..d3004e947 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt @@ -1741,8 +1741,9 @@ class MeshService : Service(), Logging { stopLocationRequests() } - override fun requestPosition(idNum: Int, lat: Double, lon: Double, alt: Int) = + override fun requestPosition(idNum: Int, position: Position) = toRemoteExceptions { + val (lat, lon, alt) = with(position) { Triple(latitude, longitude, altitude) } // request position if (idNum != 0) sendPosition(time = 1, destNum = idNum, wantResponse = true) // set local node's fixed position diff --git a/app/src/main/java/com/geeksville/mesh/ui/DeviceSettingsItemList.kt b/app/src/main/java/com/geeksville/mesh/ui/DeviceSettingsItemList.kt index 3d00844c9..bfc1ce4ba 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/DeviceSettingsItemList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/DeviceSettingsItemList.kt @@ -336,9 +336,8 @@ fun DeviceSettingsItemList(viewModel: UIViewModel = viewModel()) { }, onSaveClicked = { focusManager.clearFocus() - if (positionInfo != ourNodeInfo?.position && positionInput.fixedPosition) positionInfo?.let { - viewModel.requestPosition(0, it.latitude, it.longitude, it.altitude) - } + if (positionInfo != ourNodeInfo?.position && positionInput.fixedPosition) + positionInfo?.let { viewModel.requestPosition(0, it) } if (positionInput != localConfig.position) viewModel.updatePositionConfig { positionInput } }) }