Skip to content

Commit aa50591

Browse files
committed
Batch telemetry updates
1 parent d315776 commit aa50591

File tree

3 files changed

+73
-17
lines changed

3 files changed

+73
-17
lines changed

backend.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,36 @@ def update_node_batt(self, n_id, batt):
127127
}
128128
self.endpoint(mutation)
129129

130+
def update_node_telemetry(self, n_id, temp, batt, heading, source="TELEMETRY"):
131+
mutation = \
132+
"""
133+
mutation {
134+
updateNode(id: "%(id)s", node: {
135+
pose: {
136+
orientation: {
137+
heading: %(heading).2f
138+
source: %(source)s
139+
}
140+
}
141+
telemetry: {
142+
temp: %(temp).2f
143+
batt: %(batt).2f
144+
}
145+
}) {
146+
id
147+
}
148+
}
149+
"""
150+
151+
mutation = mutation % {
152+
'id': n_id,
153+
'temp': temp,
154+
'batt': batt,
155+
'heading': heading,
156+
'source': source
157+
}
158+
self.endpoint(mutation)
159+
130160
def translate_node_to_gps_coords(self, node):
131161
if not self.base_1_node or not self.base_2_node:
132162
return node.x, node.y

eng_display.py

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,17 @@ def move_to(self, x, y):
111111
# "batt": float,
112112
# }
113113
# }
114+
#
115+
# {
116+
# "cmd": "backend_update_node_telemetry"
117+
# "args": {
118+
# "id": str,
119+
# "temp": float,
120+
# "batt": float,
121+
# "heading": float,
122+
# "source": TELEMETRY or POSITION
123+
# }
124+
# }
114125

115126
class EngDisplay:
116127
def __init__(self, src=None):
@@ -229,6 +240,14 @@ def main_loop(self):
229240
self.backend.update_node_temp(msg['args']['id'], msg['args']['temp'])
230241
elif msg['cmd'] == "backend_update_node_batt":
231242
self.backend.update_node_batt(msg['args']['id'], msg['args']['batt'])
243+
elif msg['cmd'] == "backend_update_node_telemetry":
244+
try:
245+
self.backend.update_node_telemetry(msg['args']['id'], msg['args']['temp'],
246+
msg['args']['batt'], msg['args']['heading'],
247+
msg['args']['source'])
248+
except KeyError:
249+
self.backend.update_node_telemetry(msg['args']['id'], msg['args']['temp'],
250+
msg['args']['batt'], msg['args']['heading'])
232251
else:
233252
print(f"Unknown command: {msg['cmd']}")
234253
else:
@@ -373,10 +392,10 @@ def draw_circle(self, args):
373392
self.create_circle(x, y, r, extra_tags=tags, fill=fill, width=width, outline=outline)
374393

375394
if text is not None:
376-
ypos = y-r-20
395+
ypos = y - r - 20
377396
if ypos < 0:
378-
ypos = y+r+20
379-
self.create_text(x,ypos,text=text)
397+
ypos = y + r + 20
398+
self.create_text(x, ypos, text=text)
380399

381400
def connect_points(self, args):
382401
pos1 = self.get_val_from_args(args, "pos1")
@@ -399,7 +418,8 @@ def connect_points(self, args):
399418
pos2_scaled = (pos2[0] * self.meas_to_map * self.universal_scale + self.canvas.x_pos,
400419
pos2[1] * self.meas_to_map * self.universal_scale + self.canvas.y_pos)
401420

402-
self._connect_points(pos1_scaled, pos2_scaled, text=text, text_size=text_size, text_color=text_color, dashed=dashed, color=color)
421+
self._connect_points(pos1_scaled, pos2_scaled, text=text, text_size=text_size, text_color=text_color,
422+
dashed=dashed, color=color)
403423

404424
def create_circle(self, x, y, r, extra_tags=[], **kwargs):
405425
(x, y) = self.translate_canvas_pos_to_screen_pos(x, y)
@@ -409,11 +429,12 @@ def create_circle(self, x, y, r, extra_tags=[], **kwargs):
409429
def create_text(self, x, y, text="", extra_tags=[], **kwargs):
410430
(x, y) = self.translate_canvas_pos_to_screen_pos(x, y)
411431
tags = ["obj"]
412-
self.canvas.create_text(x,y,text=text,
413-
fill="white", font=font.Font(family='Courier New', size=14),
414-
justify=tk.LEFT,tags=(tags + extra_tags))
432+
self.canvas.create_text(x, y, text=text,
433+
fill="white", font=font.Font(family='Courier New', size=14),
434+
justify=tk.LEFT, tags=(tags + extra_tags))
415435

416-
def _connect_points(self, node1_pos, node2_pos, text=None, text_size=None, text_color=None, dashed=True, color="#3c4048"):
436+
def _connect_points(self, node1_pos, node2_pos, text=None, text_size=None, text_color=None, dashed=True,
437+
color="#3c4048"):
417438
if node2_pos[0] is None or node2_pos[1] is None or node1_pos[0] is None or node1_pos[1] is None:
418439
return
419440
if text is not None:

main.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -214,15 +214,20 @@ def process_stats(self, packet):
214214
p_heading = float(p_heading)
215215
p_temp = float(p_temp)
216216
p_batt = volts_to_percentage(float(p_batt))
217+
# self.multi_pipe.send(
218+
# {"cmd": "backend_update_node_heading", "args": {"id": p_from, "heading": p_heading}}) if self.multi_pipe \
219+
# else self.backend.update_node_heading(p_from, p_heading, "TELEMETRY")
220+
# self.multi_pipe.send(
221+
# {"cmd": "backend_update_node_temp", "args": {"id": p_from, "temp": p_temp}}) if self.multi_pipe \
222+
# else self.backend.update_node_temp(p_from, p_temp)
223+
# self.multi_pipe.send(
224+
# {"cmd": "backend_update_node_batt", "args": {"id": p_from, "batt": p_batt}}) if self.multi_pipe \
225+
# else self.backend.update_node_batt(p_from, p_batt)
217226
self.multi_pipe.send(
218-
{"cmd": "backend_update_node_heading", "args": {"id": p_from, "heading": p_heading}}) if self.multi_pipe \
219-
else self.backend.update_node_heading(p_from, p_heading, "TELEMETRY")
220-
self.multi_pipe.send(
221-
{"cmd": "backend_update_node_temp", "args": {"id": p_from, "temp": p_temp}}) if self.multi_pipe \
222-
else self.backend.update_node_temp(p_from, p_temp)
223-
self.multi_pipe.send(
224-
{"cmd": "backend_update_node_batt", "args": {"id": p_from, "batt": p_batt}}) if self.multi_pipe \
225-
else self.backend.update_node_batt(p_from, p_batt)
227+
{"cmd": "backend_update_node_telemetry",
228+
"args": {"id": p_from, "temp": p_temp, "batt": p_batt, "heading": p_heading,
229+
"source": "TELEMETRY"}}) if self.multi_pipe \
230+
else self.backend.update_node_telemetry(p_from, p_temp, p_batt, p_heading, "TELEMETRY")
226231

227232

228233
#################
@@ -236,7 +241,7 @@ def __init__(self, outputPipe):
236241
self.outputPipe = outputPipe
237242

238243
def run(self):
239-
# Infinate loop (kinda sucks)
244+
# Infinite loop (kinda sucks)
240245
while (True):
241246
# See if we have anything to read in
242247
if sys.stdin in select.select([sys.stdin], [], [], 0)[0]:

0 commit comments

Comments
 (0)