| 30 | logger = logging.getLogger(__name__) |
| 31 | |
| 32 | class RecordManager: |
| 33 | def __init__(self): |
| 34 | self.WINDOW_SIZE = 10000 #ms |
| 35 | self.SLIDE_INTERVAL = 1000 #ms |
| 36 | self.HEADER_SIZE = 8 #B |
| 37 | self.TIMESTAMP_SIZE = 4 #B |
| 38 | self.data_buff = bytearray() |
| 39 | self.timestamp = [] |
| 40 | self.data_size = [] |
| 41 | self.interval = 0 |
| 42 | self.window = 0 |
| 43 | self.cnt = 0 |
| 44 | self.cnt_old = 0 |
| 45 | self.elapsed_time = 0 |
| 46 | self.timer_event_cnt = 0 |
| 47 | self.initial_interval = 0 |
| 48 | self.active_record_size = 0 |
| 49 | |
| 50 | # Flush variables |
| 51 | def flush(self): |
| 52 | logger.info("Flush Record Data") |
| 53 | self.data_buff = bytearray() |
| 54 | self.timestamp = [] |
| 55 | self.data_size = [] |
| 56 | self.interval = 0 |
| 57 | self.window = 0 |
| 58 | self.cnt = 0 |
| 59 | self.cnt_old = 0 |
| 60 | self.elapsed_time = 0 |
| 61 | self.timer_event_cnt = 0 |
| 62 | self.initial_interval = 0 |
| 63 | self.active_record_size = 0 |
| 64 | |
| 65 | # Read one Record from data file and save acquired data in corresponding buffers |
| 66 | def __getRecord(self): |
| 67 | logger.info("Get Record Data") |
| 68 | data = readFile(self.HEADER_SIZE) |
| 69 | if len(data) == self.HEADER_SIZE: |
| 70 | self.timestamp.append(unpack("I", data[:self.TIMESTAMP_SIZE])[0]) |
| 71 | self.data_size.append(unpack("I", data[self.TIMESTAMP_SIZE:])[0]) |
| 72 | self.data_buff.extend(readFile(self.data_size[-1])) |
| 73 | logger.debug(f"Record Data size: {len(self.data_buff)}") |
| 74 | else: |
| 75 | logger.info("No Record") |
| 76 | |
| 77 | # Extract requested number of bytes from data buffer |
| 78 | # If end of file is reached, return requested number of zeroes |
| 79 | def getData(self, size): |
| 80 | logger.info("Get Data from Record") |
| 81 | |
| 82 | if len(self.data_buff) == 0: |
| 83 | self.__getRecord() |
| 84 | |
| 85 | if len(self.data_buff) >= size: |
| 86 | data = self.data_buff[:size] |
| 87 | self.data_buff = self.data_buff[size:] |
| 88 | logger.debug(f"Requested Data size: {size}") |
| 89 | |