diff --git a/edosl0util/pkted.py b/edosl0util/pkted.py index e6615d89805cd5d5471502b4aeaa8e33ccb068d4..478c8a643dbb0769702b696fffe69953c6eb6a7f 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())