Tidy up broadcast in python client

This commit is contained in:
zvecr 2023-08-29 02:36:21 +01:00
parent e9206d2b16
commit 87fd4b42f5
4 changed files with 19 additions and 4 deletions

View File

@ -25,6 +25,7 @@ class {{ name }}(namedtuple('{{ name }}', '{{ members }}')):
{% set type_definitions = [
{'name':'XAPRequest', 'members': 'token length data', 'fmt':'<HB61s'},
{'name':'XAPResponse', 'members': 'token flags length data', 'fmt':'<HBB60s'},
{'name':'XAPBroadcast', 'members': 'token event length data', 'fmt':'<HBB60s'},
{'name':'XAPConfigBacklight', 'members': 'enable mode val', 'fmt':'<BBB'},
{'name':'XAPConfigRgblight', 'members': 'enable mode hue sat val speed', 'fmt':'<BBBBBB'},
{'name':'XAPConfigRgbMatrix', 'members': 'enable mode hue sat val speed flags', 'fmt':'<BBBBBBB'}

View File

@ -40,7 +40,7 @@
type_docs: {
bool:
'''
Data type that contains values 0 and 1. Implementaed as an alias of `u8`.
Data type that contains values 0 and 1. Implemented as an alias of `u8`.
'''
u64:
'''

View File

@ -10,7 +10,7 @@ from typing import Optional
from struct import pack, unpack
from platform import platform
from .types import XAPSecureStatus, XAPFlags, XAPRequest, XAPResponse
from .types import XAPSecureStatus, XAPFlags, XAPRequest, XAPResponse, XAPBroadcast
from .routes import XAPRoutes, XAPRouteError
@ -116,8 +116,8 @@ class XAPDeviceBase:
while not hasattr(event, '_ret'):
event.wait(timeout=0.25)
r = XAPResponse.from_bytes(event._ret)
return (r.flags, r.data[:r.length])
r = XAPBroadcast.from_bytes(event._ret)
return (r.event, r.data[:r.length])
class XAPDevice(XAPDeviceBase):

View File

@ -59,6 +59,20 @@ class XAPResponse(namedtuple('XAPResponse', 'token flags length data')):
return self.fmt.pack(*list(self))
class XAPBroadcast(namedtuple('XAPBroadcast', 'token event length data')):
fmt = Struct('<HBB60s')
def __new__(cls, *args):
return super().__new__(cls, *args)
@classmethod
def from_bytes(cls, data):
return cls._make(cls.fmt.unpack(data))
def to_bytes(self):
return self.fmt.pack(*list(self))
class XAPConfigBacklight(namedtuple('XAPConfigBacklight', 'enable mode val')):
fmt = Struct('<BBB')