1
0
mirror of https://github.com/undera/pylgbst.git synced 2020-11-18 19:37:26 -08:00

Fix hanging on button subscribe

This commit is contained in:
Andrey Pokhilko 2019-08-14 13:17:15 +03:00
parent 3f2b3dcb3a
commit 33364e4e3b

View File

@ -18,14 +18,15 @@ class Message(object):
see https://lego.github.io/lego-ble-wireless-protocol-docs/#common-message-header see https://lego.github.io/lego-ble-wireless-protocol-docs/#common-message-header
""" """
msglen = len(self.payload) + 3 msglen = len(self.payload) + 3
assert msglen < 127, "TODO: handle logner messages with 2-byte len" assert msglen < 127, "TODO: handle longer messages with 2-byte len"
return pack("<B", msglen) + pack("<B", self.hub_id) + pack("<B", self.TYPE) + self.payload return pack("<B", msglen) + pack("<B", self.hub_id) + pack("<B", self.TYPE) + self.payload
def __repr__(self): def __repr__(self):
# assert self.bytes() # to trigger any field changes
data = self.__dict__ data = self.__dict__
data = {x: (str2hex(y) if isinstance(y, bytes) else y) data = {x: (str2hex(y) if isinstance(y, bytes) else y)
for x, y in data.items() for x, y in data.items()
if x not in ('hub_id', 'needs_reply')} if x not in ('hub_id',)}
return self.__class__.__name__ + "(%s)" % data return self.__class__.__name__ + "(%s)" % data
@ -125,7 +126,7 @@ class MsgHubProperties(DownstreamMsg, UpstreamMsg):
self.parameters = parameters self.parameters = parameters
def bytes(self): def bytes(self):
if self.operation == self.UPD_REQUEST: if self.operation in (self.UPD_REQUEST, self.UPD_ENABLE):
self.needs_reply = True self.needs_reply = True
self.payload = pack("<B", self.property) + pack("<B", self.operation) + self.parameters self.payload = pack("<B", self.property) + pack("<B", self.operation) + self.parameters
return super(MsgHubProperties, self).bytes() return super(MsgHubProperties, self).bytes()