From 8c2da7d3afd6b8fdae57eacb8754dcd279667a9e Mon Sep 17 00:00:00 2001 From: dzollo Date: Mon, 8 Jun 2020 12:19:33 -0700 Subject: [PATCH 1/4] add framer constructor arg to add a sender_id filter list --- python/sbp/client/framer.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/python/sbp/client/framer.py b/python/sbp/client/framer.py index c84dda9557..0cc76f38b0 100644 --- a/python/sbp/client/framer.py +++ b/python/sbp/client/framer.py @@ -42,7 +42,8 @@ def __init__(self, verbose=False, dispatcher=dispatch, into_buffer=True, - skip_metadata=False): + skip_metadata=False, + sender_id_filter=[]): self._read = read self._write = write self._verbose = verbose @@ -52,6 +53,7 @@ def __init__(self, self._buffer = np.zeros(16*1024, dtype=np.uint8) self._into_buffer = into_buffer self._skip_metadata = skip_metadata + self._sender_id_filter = sender_id_filter def __iter__(self): self._broken = False @@ -135,12 +137,13 @@ def _receive(self): if self._verbose: print("crc mismatch: 0x%04X 0x%04X" % (msg_crc, crc)) return None - msg = SBP(msg_type, sender, msg_len, data, crc) - try: - msg = self._dispatch(msg) - except Exception as exc: - warnings.warn("SBP dispatch error: %s" % (exc,)) - return msg + if (len(self._sender_id_filter) == 0 or sender in self._sender_id_filter): + msg = SBP(msg_type, sender, msg_len, data, crc) + try: + msg = self._dispatch(msg) + except Exception as exc: + warnings.warn("SBP dispatch error: %s" % (exc,)) + return msg def __call__(self, *msgs, **metadata): """ From 5aee1a5e9e52764bcb3e4432bcaa719f8a1a3670 Mon Sep 17 00:00:00 2001 From: dzollo Date: Mon, 8 Jun 2020 12:51:55 -0700 Subject: [PATCH 2/4] explicitely return None if sender-id doesn't match --- python/sbp/client/framer.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python/sbp/client/framer.py b/python/sbp/client/framer.py index 0cc76f38b0..0b0eba5bb5 100644 --- a/python/sbp/client/framer.py +++ b/python/sbp/client/framer.py @@ -144,6 +144,8 @@ def _receive(self): except Exception as exc: warnings.warn("SBP dispatch error: %s" % (exc,)) return msg + else: + return None def __call__(self, *msgs, **metadata): """ From 4fbc20e239e763b01fb0ac9f0feb7d1143fc3aea Mon Sep 17 00:00:00 2001 From: dzollo Date: Mon, 8 Jun 2020 13:23:46 -0700 Subject: [PATCH 3/4] Add complete help string to Framer --- python/sbp/client/framer.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/python/sbp/client/framer.py b/python/sbp/client/framer.py index 0b0eba5bb5..70bdf2b1bb 100644 --- a/python/sbp/client/framer.py +++ b/python/sbp/client/framer.py @@ -34,6 +34,14 @@ class Framer(six.Iterator): Stream of bytes to read from. write : port Stream of bytes to write to. + verbose: boolean + verbosify stdout / stderr. Default False + dispatcher: function + function to call on each deframed message + skip_medata: boolean + do not add "time" and "session-uuid" metadata + sender_id_filter: list + list of integer sender_ids to frame, with the exlusion of all others """ def __init__(self, From 3d17d5fac4fb6796ed57e3a56974eaf88866987d Mon Sep 17 00:00:00 2001 From: dzollo Date: Mon, 8 Jun 2020 13:24:32 -0700 Subject: [PATCH 4/4] Explicitely name arg sender_id_filter_list for clarity --- python/sbp/client/framer.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/python/sbp/client/framer.py b/python/sbp/client/framer.py index 70bdf2b1bb..8e25895a77 100644 --- a/python/sbp/client/framer.py +++ b/python/sbp/client/framer.py @@ -51,7 +51,7 @@ def __init__(self, dispatcher=dispatch, into_buffer=True, skip_metadata=False, - sender_id_filter=[]): + sender_id_filter_list=[]): self._read = read self._write = write self._verbose = verbose @@ -61,7 +61,7 @@ def __init__(self, self._buffer = np.zeros(16*1024, dtype=np.uint8) self._into_buffer = into_buffer self._skip_metadata = skip_metadata - self._sender_id_filter = sender_id_filter + self._sender_id_filter_list = sender_id_filter_list def __iter__(self): self._broken = False @@ -145,7 +145,7 @@ def _receive(self): if self._verbose: print("crc mismatch: 0x%04X 0x%04X" % (msg_crc, crc)) return None - if (len(self._sender_id_filter) == 0 or sender in self._sender_id_filter): + if (len(self._sender_id_filter_list) == 0 or sender in self._sender_id_filter_list): msg = SBP(msg_type, sender, msg_len, data, crc) try: msg = self._dispatch(msg)