mirror of
https://github.com/meshtastic/python.git
synced 2026-01-06 23:08:00 -05:00
Enable setting and removing fixed position via remote admin
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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"""
|
||||
|
||||
Reference in New Issue
Block a user