diff --git a/htdocs/map.html b/htdocs/map.html
index 23aabeb..dbfd13d 100644
--- a/htdocs/map.html
+++ b/htdocs/map.html
@@ -7,6 +7,7 @@
+
diff --git a/htdocs/map.js b/htdocs/map.js
index 948e83b..339d1d5 100644
--- a/htdocs/map.js
+++ b/htdocs/map.js
@@ -250,6 +250,11 @@
case "update":
processUpdates(json.value);
break;
+ case 'receiver_details':
+ $('#webrx-top-container').header().setDetails(json['value']);
+ break;
+ default:
+ console.warn('received message of unknown type: ' + json['type']);
}
} catch (e) {
// don't lose exception
diff --git a/owrx/connection.py b/owrx/connection.py
index a1c7c82..14620fe 100644
--- a/owrx/connection.py
+++ b/owrx/connection.py
@@ -15,7 +15,7 @@ from owrx.modes import Modes, DigitalMode
from multiprocessing import Queue
from queue import Full
from js8py import Js8Frame
-from abc import ABC, abstractmethod
+from abc import ABC, ABCMeta, abstractmethod
import json
import threading
@@ -64,7 +64,33 @@ class Client(ABC):
self.close()
-class OpenWebRxReceiverClient(Client):
+class OpenWebRxClient(Client, metaclass=ABCMeta):
+ def __init__(self, conn):
+ super().__init__(conn)
+
+ receiver_details = Config.get().filter(
+ "receiver_name",
+ "receiver_location",
+ "receiver_asl",
+ "receiver_gps",
+ "photo_title",
+ "photo_desc",
+ )
+
+ def send_receiver_info(*args):
+ receiver_info = receiver_details.__dict__()
+ receiver_info["locator"] = Locator.fromCoordinates(receiver_info["receiver_gps"])
+ self.write_receiver_details(receiver_info)
+
+ # TODO unsubscribe
+ receiver_details.wire(send_receiver_info)
+ send_receiver_info()
+
+ def write_receiver_details(self, details):
+ self.send({"type": "receiver_details", "value": details})
+
+
+class OpenWebRxReceiverClient(OpenWebRxClient):
config_keys = [
"waterfall_colors",
"waterfall_min_level",
@@ -97,34 +123,14 @@ class OpenWebRxReceiverClient(Client):
self.close()
raise
- pm = Config.get()
-
self.setSdr()
- receiver_details = pm.filter(
- "receiver_name",
- "receiver_location",
- "receiver_asl",
- "receiver_gps",
- "photo_title",
- "photo_desc",
- )
-
- def send_receiver_info(*args):
- receiver_info = receiver_details.__dict__()
- receiver_info["locator"] = Locator.fromCoordinates(receiver_info["receiver_gps"])
- self.write_receiver_details(receiver_info)
-
features = FeatureDetector().feature_availability()
self.write_features(features)
modes = Modes.getModes()
self.write_modes(modes)
- # TODO unsubscribe
- receiver_details.wire(send_receiver_info)
- send_receiver_info()
-
self.__sendProfiles()
CpuUsageThread.getSharedInstance().add_client(self)
@@ -314,9 +320,6 @@ class OpenWebRxReceiverClient(Client):
def write_config(self, cfg):
self.send({"type": "config", "value": cfg})
- def write_receiver_details(self, details):
- self.send({"type": "receiver_details", "value": details})
-
def write_profiles(self, profiles):
self.send({"type": "profiles", "value": profiles})
@@ -382,7 +385,7 @@ class OpenWebRxReceiverClient(Client):
self.send({"type": "modes", "value": [to_json(m) for m in modes]})
-class MapConnection(Client):
+class MapConnection(OpenWebRxClient):
def __init__(self, conn):
super().__init__(conn)