From 331f2e71f8f7b663e15f6af7c27204e9aa910dfd Mon Sep 17 00:00:00 2001 From: Greg Quinn <greg.quinn@ssec.wisc.edu> Date: Tue, 3 Oct 2017 13:27:43 +0000 Subject: [PATCH] Allow callables in pkted --- edosl0util/pkted.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/edosl0util/pkted.py b/edosl0util/pkted.py index e6615d8..478c8a6 100644 --- a/edosl0util/pkted.py +++ b/edosl0util/pkted.py @@ -27,9 +27,14 @@ def edit_packets(file_path, specs): ini = spec.start_bit sz = spec.num_bits fin = ini + sz - new_arr = np.asarray(spec.new_value) - new_arr = new_arr.astype(new_arr.dtype.newbyteorder('>')) - bits[ini:fin] = np.unpackbits(new_arr[None].view(np.uint8))[-sz:] + if callable(spec.new_value): + old_value = bits[ini:fin].copy() + new_value = spec.new_value(old_value) + else: + new_value = np.asarray(spec.new_value) + new_value = new_value.astype(new_value.dtype.newbyteorder('>')) + new_value = np.unpackbits(new_value[None].view(np.uint8))[-sz:] + bits[ini:fin] = new_value pkt.write(np.packbits(bits).tobytes()) -- GitLab