diff --git a/src/c3nav/control/templates/control/mesh_messages.html b/src/c3nav/control/templates/control/mesh_messages.html index 27b99e84..19d3b867 100644 --- a/src/c3nav/control/templates/control/mesh_messages.html +++ b/src/c3nav/control/templates/control/mesh_messages.html @@ -34,17 +34,31 @@ {{ msg.src_node }} {{ msg.get_message_type_display }} - {% if msg.get_message_type_display == "CONFIG_HARDWARE" %} - Chip: {{ msg.parsed.get_chip_display }} rev{{ msg.parsed.revision_major }}.{{ msg.parsed.revision_minor }} - {% elif msg.get_message_type_display == "CONFIG_FIRMWARE" %} + {% if msg.message_type == "CONFIG_HARDWARE" %} + Chip: {{ msg.parsed.chip.pretty_name }} rev{{ msg.parsed.revision_major }}.{{ msg.parsed.revision_minor }} + + {% elif msg.message_type == "CONFIG_BOARD" %} + Board: {{ msg.parsed.board_config.board.pretty_name }} + + {% if msg.parsed.led %} +
+ Status LED: {{ msg.parsed.led }} + {% endif %} + + {% if msg.parsed.uwb %} +
+ UWB: {{ msg.parsed.led }} + {% endif %} + + {% elif msg.message_type == "CONFIG_FIRMWARE" %} Firmware: {{ msg.parsed.app_desc.project_name }} {{ msg.parsed.app_desc.version }} (IDF {{ msg.parsed.app_desc.idf_version }})
Compile Date: {{ msg.parsed.app_desc.compile_date }} {{ msg.parsed.app_desc.compile_time }}
SHA256: {{ msg.parsed.app_desc.app_elf_sha256 }} - {% elif msg.get_message_type_display == "CONFIG_UPLINK" %} + {% elif msg.message_type == "CONFIG_UPLINK" %} Enabled: {{ msg.parsed.enabled }}, SSID: {{ msg.parsed.ssid }}, Channel: {{ msg.parsed.channel }}
@@ -53,13 +67,13 @@ UDP: {{ msg.parsed.udp }}, SSL: {{ msg.parsed.ssl }} - {% elif msg.get_message_type_display == "CONFIG_LED" %} + {% elif msg.message_type == "CONFIG_LED" %} LED config: {{ msg.parsed.led_config }} - {% elif msg.get_message_type_display == "CONFIG_POSITION" %} + {% elif msg.message_type == "CONFIG_POSITION" %} X={{ msg.parsed.x_pos }}, Y={{ msg.parsed.y_pos }}, Z={{ msg.parsed.z_pos }} - {% elif msg.get_message_type_display == "MESH_ADD_DESTINATIONS" or msg.get_message_type_display == "MESH_REMOVE_DESTINATIONS" %} + {% elif msg.message_type == "MESH_ADD_DESTINATIONS" or msg.message_type == "MESH_REMOVE_DESTINATIONS" %} adresses:
+ {% elif msg.message_type == "LOCATE_RANGE_RESULTS" %} + ranges:
+ + {% else %} {% for key, value in msg.data.items %} {% if key != "src" and key != "dst" and key != "msg_type" %} diff --git a/src/c3nav/mesh/baseformats.py b/src/c3nav/mesh/baseformats.py index e30e7069..440ce86a 100644 --- a/src/c3nav/mesh/baseformats.py +++ b/src/c3nav/mesh/baseformats.py @@ -209,6 +209,16 @@ class VarArrayFormat(BaseVarFormat): result.append(item) return result, data + def fromjson(self, data): + return [ + self.child_type.fromjson(item) for item in data + ] + + def tojson(self, data): + return [ + item.tojson(item) for item in data + ] + def get_c_parts(self): pre, post = self.child_type.get_c_parts() return super().get_num_c_code() + "\n" + pre, "[0]" + post diff --git a/src/c3nav/mesh/forms.py b/src/c3nav/mesh/forms.py index 5e0c1b08..f5db1c48 100644 --- a/src/c3nav/mesh/forms.py +++ b/src/c3nav/mesh/forms.py @@ -262,6 +262,10 @@ class ConfigPositionMessageForm(MeshMessageForm): z_pos = forms.IntegerField(min_value=0, max_value=2 ** 16 - 1, label=_('Z')) +class LocateRequestRangeMessageForm(MeshMessageForm): + msg_type = MeshMessageType.LOCATE_REQUEST_RANGE + + class MeshNodeForm(forms.ModelForm): class Meta: model = MeshNode diff --git a/src/c3nav/mesh/messages.py b/src/c3nav/mesh/messages.py index 3a3be1f7..4ad5e8f5 100644 --- a/src/c3nav/mesh/messages.py +++ b/src/c3nav/mesh/messages.py @@ -340,4 +340,4 @@ class LocateRequestRangeMessage(MeshMessage, msg_type=MeshMessageType.LOCATE_REQ @dataclass class LocateRangeResults(MeshMessage, msg_type=MeshMessageType.LOCATE_RANGE_RESULTS): """ reports distance to given nodes """ - ranges: dict[str, int] = field(metadata={"format": VarArrayFormat(RangeItemType)}) + ranges: list[RangeItemType] = field(metadata={"format": VarArrayFormat(RangeItemType)})