fix: use adv_lat/adv_lon keys for device coordinates

Device info from meshcore uses adv_lat/adv_lon, not lat/lon.
Fixed in get_param, set_param (lat/lon individually), and the new
/api/device/config endpoint.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
MarekWo
2026-04-06 19:26:42 +02:00
parent 58d7d9af18
commit bbfca38d34
2 changed files with 5 additions and 5 deletions

View File

@@ -2873,7 +2873,7 @@ class DeviceManager:
elif param == 'tx':
return {'success': True, 'data': {'tx': info.get('tx_power', '?')}}
elif param in ('coords', 'lat', 'lon'):
return {'success': True, 'data': {'lat': info.get('lat', 0), 'lon': info.get('lon', 0)}}
return {'success': True, 'data': {'lat': info.get('adv_lat', 0), 'lon': info.get('adv_lon', 0)}}
elif param == 'bat':
bat = self.get_battery()
return {'success': True, 'data': bat or {}}
@@ -2928,12 +2928,12 @@ class DeviceManager:
return {'success': True, 'message': f'Coords set to: {lat}, {lon}'}
elif param == 'lat':
info = self.get_device_info()
lon = info.get('lon', 0)
lon = info.get('adv_lon', 0)
self.execute(self.mc.commands.set_coords(float(value), lon), timeout=5)
return {'success': True, 'message': f'Lat set to: {value}'}
elif param == 'lon':
info = self.get_device_info()
lat = info.get('lat', 0)
lat = info.get('adv_lat', 0)
self.execute(self.mc.commands.set_coords(lat, float(value)), timeout=5)
return {'success': True, 'message': f'Lon set to: {value}'}
elif param == 'radio':

View File

@@ -1135,8 +1135,8 @@ def get_device_config():
'success': True,
'config': {
'name': info.get('name', info.get('adv_name', '')),
'lat': info.get('lat', 0),
'lon': info.get('lon', 0),
'lat': info.get('adv_lat', 0),
'lon': info.get('adv_lon', 0),
'advert_loc_policy': info.get('adv_loc_policy', 0),
'radio_freq': info.get('radio_freq', 0),
'radio_bw': info.get('radio_bw', 0),