mirror of
https://github.com/liberatedsystems/openCom-Companion.git
synced 2024-11-25 23:00:36 +01:00
Added custom info and receiver metrics to telemeter
This commit is contained in:
parent
761fb86033
commit
6921a12f59
@ -36,6 +36,8 @@ class Telemeter():
|
|||||||
def __init__(self, from_packed=False):
|
def __init__(self, from_packed=False):
|
||||||
self.sids = {
|
self.sids = {
|
||||||
Sensor.SID_TIME: Time,
|
Sensor.SID_TIME: Time,
|
||||||
|
Sensor.SID_RECEIVED: Received,
|
||||||
|
Sensor.SID_INFORMATION: Information,
|
||||||
Sensor.SID_BATTERY: Battery,
|
Sensor.SID_BATTERY: Battery,
|
||||||
Sensor.SID_PRESSURE: Pressure,
|
Sensor.SID_PRESSURE: Pressure,
|
||||||
Sensor.SID_LOCATION: Location,
|
Sensor.SID_LOCATION: Location,
|
||||||
@ -51,6 +53,8 @@ class Telemeter():
|
|||||||
}
|
}
|
||||||
self.available = {
|
self.available = {
|
||||||
"time": Sensor.SID_TIME,
|
"time": Sensor.SID_TIME,
|
||||||
|
"information": Sensor.SID_INFORMATION,
|
||||||
|
"received": Sensor.SID_RECEIVED,
|
||||||
"battery": Sensor.SID_BATTERY,
|
"battery": Sensor.SID_BATTERY,
|
||||||
"pressure": Sensor.SID_PRESSURE,
|
"pressure": Sensor.SID_PRESSURE,
|
||||||
"location": Sensor.SID_LOCATION,
|
"location": Sensor.SID_LOCATION,
|
||||||
@ -154,6 +158,8 @@ class Sensor():
|
|||||||
SID_GRAVITY = 0x0B
|
SID_GRAVITY = 0x0B
|
||||||
SID_ANGULAR_VELOCITY = 0x0C
|
SID_ANGULAR_VELOCITY = 0x0C
|
||||||
SID_PROXIMITY = 0x0E
|
SID_PROXIMITY = 0x0E
|
||||||
|
SID_INFORMATION = 0x0F
|
||||||
|
SID_RECEIVED = 0x10
|
||||||
|
|
||||||
def __init__(self, sid = None, stale_time = None):
|
def __init__(self, sid = None, stale_time = None):
|
||||||
self._sid = sid or Sensor.SID_NONE
|
self._sid = sid or Sensor.SID_NONE
|
||||||
@ -258,6 +264,113 @@ class Time(Sensor):
|
|||||||
|
|
||||||
return rendered
|
return rendered
|
||||||
|
|
||||||
|
class Information(Sensor):
|
||||||
|
SID = Sensor.SID_INFORMATION
|
||||||
|
STALE_TIME = 5
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__(type(self).SID, type(self).STALE_TIME)
|
||||||
|
self.contents = ""
|
||||||
|
|
||||||
|
def setup_sensor(self):
|
||||||
|
self.update_data()
|
||||||
|
|
||||||
|
def teardown_sensor(self):
|
||||||
|
self.data = None
|
||||||
|
|
||||||
|
def update_data(self):
|
||||||
|
self.data = {"contents":str(self.contents)}
|
||||||
|
|
||||||
|
def pack(self):
|
||||||
|
if self.data == None:
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
return self.data["contents"]
|
||||||
|
|
||||||
|
def unpack(self, packed):
|
||||||
|
try:
|
||||||
|
if packed == None:
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
return {"contents": str(packed)}
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
|
def render(self, relative_to=None):
|
||||||
|
rendered = {
|
||||||
|
"icon": "information-variant",
|
||||||
|
"name": "Information",
|
||||||
|
"values": { "contents": self.data["contents"] },
|
||||||
|
}
|
||||||
|
|
||||||
|
return rendered
|
||||||
|
|
||||||
|
class Received(Sensor):
|
||||||
|
SID = Sensor.SID_RECEIVED
|
||||||
|
STALE_TIME = 5
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__(type(self).SID, type(self).STALE_TIME)
|
||||||
|
self.by = None
|
||||||
|
self.via = None
|
||||||
|
self.geodesic_distance = None
|
||||||
|
self.euclidian_distance = None
|
||||||
|
|
||||||
|
def setup_sensor(self):
|
||||||
|
self.update_data()
|
||||||
|
|
||||||
|
def teardown_sensor(self):
|
||||||
|
self.data = None
|
||||||
|
|
||||||
|
def set_distance(self, c1, c2):
|
||||||
|
self.euclidian_distance = euclidian_distance(c1, c2)
|
||||||
|
self.geodesic_distance = orthodromic_distance(c1, c2)
|
||||||
|
self.update_data()
|
||||||
|
|
||||||
|
def update_data(self):
|
||||||
|
self.data = {
|
||||||
|
"by":self.by,
|
||||||
|
"via":self.via,
|
||||||
|
"distance": {
|
||||||
|
"geodesic": self.geodesic_distance,
|
||||||
|
"euclidian": self.euclidian_distance,
|
||||||
|
}}
|
||||||
|
|
||||||
|
def pack(self):
|
||||||
|
if self.data == None:
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
return [
|
||||||
|
self.data["by"],
|
||||||
|
self.data["via"],
|
||||||
|
self.geodesic_distance,
|
||||||
|
self.euclidian_distance,
|
||||||
|
]
|
||||||
|
|
||||||
|
def unpack(self, packed):
|
||||||
|
try:
|
||||||
|
if packed == None:
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
return {
|
||||||
|
"by":packed[0],
|
||||||
|
"via":packed[1],
|
||||||
|
"distance": {
|
||||||
|
"geodesic": packed[2],
|
||||||
|
"euclidian": packed[3],
|
||||||
|
}}
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
|
def render(self, relative_to=None):
|
||||||
|
rendered = {
|
||||||
|
"icon": "arrow-down-bold-hexagon-outline",
|
||||||
|
"name": "Received",
|
||||||
|
"values": self.data,
|
||||||
|
}
|
||||||
|
|
||||||
|
return rendered
|
||||||
|
|
||||||
class Battery(Sensor):
|
class Battery(Sensor):
|
||||||
SID = Sensor.SID_BATTERY
|
SID = Sensor.SID_BATTERY
|
||||||
STALE_TIME = 10
|
STALE_TIME = 10
|
||||||
|
Loading…
Reference in New Issue
Block a user