From a0b2a85ee29dcd5809f128e4f433fda5ebbae69a Mon Sep 17 00:00:00 2001 From: Marat Fayzullin Date: Sat, 25 May 2024 21:26:07 -0400 Subject: [PATCH] Now removing cached repeaters file when receiver location moves. --- CHANGELOG.md | 1 + debian/changelog | 1 + owrx/gps.py | 3 +-- owrx/repeaters.py | 18 ++++++++++++++++++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fbcae041..99d3b371 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ - Added copyright-free Mirics driver for SDRPlay and clones. - Fixed OpenWebRX startup failure if MQTT connection fails. - Volume control is now logarithmic, in -55db to +5db range. +- Removing repeaters.json when receiver moves by >10km. - Added Aircraft Emergency Frequency bookmark. **1.2.58** diff --git a/debian/changelog b/debian/changelog index cf9b7d52..7ba6652e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,7 @@ openwebrx (1.2.59) bullseye jammy; urgency=low * Added copyright-free Mirics driver for SDRPlay and clones. * Fixed OpenWebRX startup failure if MQTT connection fails. * Volume control is now logarithmic, in -55db to +5db range. + * Removing repeaters.json when receiver moves by >10km. * Added Aircraft Emergency Frequency bookmark. -- Marat Fayzullin Mon, 27 May 2024 16:12:00 +0000 diff --git a/owrx/gps.py b/owrx/gps.py index fa54a7cb..881110a4 100644 --- a/owrx/gps.py +++ b/owrx/gps.py @@ -56,8 +56,7 @@ class GpsUpdater(object): self.event = threading.Event() self.thread = None # Start/stop main thread when setting changes - pm = Config.get() - pm.wireProperty("gps_updates", self._toggleUpdates) + Config.get().wireProperty("gps_updates", self._toggleUpdates) # Toggle GPS updates when setting changes def _toggleUpdates(self, enable): diff --git a/owrx/repeaters.py b/owrx/repeaters.py index 7545976e..57ef25b7 100644 --- a/owrx/repeaters.py +++ b/owrx/repeaters.py @@ -74,6 +74,24 @@ class Repeaters(object): self.refreshPeriod = 60*60*24 self.lock = threading.Lock() self.repeaters = [] + # Update repeater list when receiver location changes + pm = Config.get() + self.location = (pm["receiver_gps"]["lat"], pm["receiver_gps"]["lon"]) + pm.wireProperty("receiver_gps", self._updateLocation) + + # Delete current repeater list when receiver location changes. + def _updateLocation(self, location): + location = (location["lat"], location["lon"]) + file = self._getCachedDatabaseFile() + dist = self.distKm(location, self.location) + if not os.path.exists(file): + # If there are no repeaters loaded, just keep new location + self.location = location + elif dist > 10: + # Do not delete repeater list unless receiver moved a lot + logger.debug("Receiver moved by {0}km, deleting '{1}'...".format(dist, file)) + self.location = location + os.remove(file) # # Load cached database or refresh it from the web.