Enable setting and removing fixed position via remote admin

This commit is contained in:
DJ Holt
2024-09-19 02:22:04 -06:00
parent 48a06c6e1e
commit 9949d144a1
2 changed files with 16 additions and 15 deletions

View File

@@ -286,19 +286,14 @@ def onConnected(interface):
print("Connected to radio")
if args.remove_position:
if args.dest != BROADCAST_ADDR:
print("Setting positions of remote nodes is not supported.")
return
closeNow = True
waitForAckNak = True
print("Removing fixed position and disabling fixed position setting")
interface.localNode.removeFixedPosition()
interface.getNode(args.dest, False, **getNode_kwargs).removeFixedPosition()
elif args.setlat or args.setlon or args.setalt:
if args.dest != BROADCAST_ADDR:
print(
"Setting latitude, longitude, and altitude of remote nodes is not supported."
)
return
closeNow = True
waitForAckNak = True
alt = 0
lat = 0
@@ -321,7 +316,7 @@ def onConnected(interface):
print("Setting device position and enabling fixed position setting")
# can include lat/long/alt etc: latitude = 37.5, longitude = -122.1
interface.localNode.setFixedPosition(lat, lon, alt)
interface.getNode(args.dest, False, **getNode_kwargs).setFixedPosition(lat, lon, alt)
if args.set_owner or args.set_owner_short:
closeNow = True

View File

@@ -685,9 +685,6 @@ class Node:
def setFixedPosition(self, lat: Union[int, float], lon: Union[int, float], alt: int):
"""Tell the node to set fixed position to the provided value and enable the fixed position setting"""
self.ensureSessionKey()
if self != self.iface.localNode:
logging.error("Setting position of remote nodes is not supported.")
return None
p = mesh_pb2.Position()
if isinstance(lat, float) and lat != 0.0:
@@ -705,7 +702,12 @@ class Node:
a = admin_pb2.AdminMessage()
a.set_fixed_position.CopyFrom(p)
return self._sendAdmin(a)
if self == self.iface.localNode:
onResponse = None
else:
onResponse = self.onAckNak
return self._sendAdmin(a, onResponse=onResponse)
def removeFixedPosition(self):
"""Tell the node to remove the fixed position and set the fixed position setting to false"""
@@ -714,7 +716,11 @@ class Node:
p.remove_fixed_position = True
logging.info(f"Telling node to remove fixed position")
return self._sendAdmin(p)
if self == self.iface.localNode:
onResponse = None
else:
onResponse = self.onAckNak
return self._sendAdmin(p, onResponse=onResponse)
def _fixupChannels(self):
"""Fixup indexes and add disabled channels as needed"""