def read_telemetry_buffer(raw): entries = [] with progressbar.ProgressBar(max_value=len(raw)) as bar: while len(raw) >= 230: if raw[0] == 0xCD: raw = raw[1:] part = raw[0:230] raw = raw[230:] try: all_bits = bitarray(endian='little') all_bits.frombytes(''.join(map(lambda x: pack('B', x), part))) reader = BitReader(all_bits) store = BeaconStorage() parsers = FullBeaconParser().GetParsers(reader, store) parsers.reverse() while len(parsers) > 0: parser = parsers.pop() parser.parse() entries.append(store.storage) except: pass bar.update(bar.value + 230) return entries
def __init__(self, payload): self._payload = payload try: all_bits = bitarray(endian='little') all_bits.frombytes(''.join(map(lambda x: pack('B', x), payload))) reader = BitReader(all_bits) store = BeaconStorage() parsers = FullBeaconParser().GetParsers(reader, store) parsers.reverse() while len(parsers) > 0: parser = parsers.pop() parser.parse() self._parsed = store.storage except: self._parsed = None
def parse(frame): if isinstance(frame, BeaconFrame): all_bits = bitarray(endian='little') all_bits.frombytes(''.join( map(lambda x: pack('B', x), frame.payload()))) reader = BitReader(all_bits) store = BeaconStorage() parsers = FullBeaconParser().GetParsers(reader, store) parsers.reverse() while len(parsers) > 0: parser = parsers.pop() parser.parse() result = store.storage else: result = None return result
with open(telemetry_file, 'rb') as f: raw = f.read() raw = ensure_byte_list(raw) entries = [] while len(raw) >= 230: print len(raw) part = raw[0:230] raw = raw[230:] all_bits = bitarray(endian='little') all_bits.frombytes(''.join(map(lambda x: pack('B', x), part))) reader = BitReader(all_bits) store = BeaconStorage() parsers = FullBeaconParser().GetParsers(reader, store) parsers.reverse() while len(parsers) > 0: parser = parsers.pop() parser.parse() entries.append(store.storage) def convert_values(o): if isinstance(o, timedelta): return o.total_seconds()