From 5e3ec3c511c15a5b6c773faece1dc0939c7ba734 Mon Sep 17 00:00:00 2001 From: coon Date: Tue, 23 Sep 2025 21:48:28 +0200 Subject: [PATCH] add optional filter for recv() function --- mixer.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/mixer.py b/mixer.py index bd1a7a7..c62ed21 100755 --- a/mixer.py +++ b/mixer.py @@ -27,7 +27,7 @@ class Mixer: GET_METER_DATA_REQUEST = 0x12 GET_METER_DATA_RESPONSE = 0x13 - def recv(self): + def recv(self, response_msg_filter: SysExMessageId = None): p = mido.Parser() while True: @@ -41,12 +41,21 @@ class Mixer: if p.pending(): msg = p.get_message() - print(msg.type) + print(f"msg.type: '{msg.type}', '{response_msg_filter.value}'") print(vars(msg)) if hasattr(msg, "data"): print("Hex: ", " ".join(f"{b:02X}" for b in msg.data)) + if response_msg_filter is not None: + if msg.type != 'sysex': + continue + + msg_id = int(msg.data[8]) + + if msg_id != response_msg_filter.value: + continue + return msg def get_system_state(self): @@ -109,7 +118,7 @@ class Mixer: print("Sent:", " ".join(f"{b:02X}" for b in msg_bytes)) self.sock.sendall(msg_bytes) - response = self.recv() + response = self.recv(self.SysExMessageId.GET_NAME_FROM_QU_RESPONSE) sysex_header = response.data[:8]