pretty display for messages, send range request, etc

This commit is contained in:
Laura Klünder 2023-10-20 16:54:21 +02:00
parent 502e251b54
commit 7dc745c1f0
4 changed files with 44 additions and 8 deletions

View file

@ -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

View file

@ -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

View file

@ -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)})