def init(self, target): PM.log('Initializing CU for target: ' + str(target), self._log_id) if target == 1 or target == 3: response = [ 0x80, 0xF0, 0x10, 0x69, 0xFF, 0xA2, 0x10, 0x02, 0x4D, 0x12, 0x04, 0x40, 0x06, 0xF3, 0xFA, 0xC9, 0x8E, 0x22, 0x04, 0x02, 0xAC, 0x00, 0x00, 0x00, 0x60, 0xCE, 0x54, 0xF8, 0xB9, 0x84, 0x00, 0x6C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x45, 0x1F, 0x30, 0x80, 0xF0, 0x20, 0x1F, 0x02, 0x43, 0xFB, 0x00, 0xF1, 0xC1, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26 ] if target == 2: response = [ 0x80, 0xF0, 0x18, 0x39, 0xFF, 0xA2, 0x10, 0x21, 0xD0, 0xF3, 0x70, 0x31, 0x00, 0x01, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0xBD, 0xC3, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x3E, 0x00, 0x0B, 0x21, 0xC0, 0x00, 0x00, 0x01, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51 ] return PMPacket.from_array(response)
def open(self): message = 'Opening serial connection...' self._log_id = PM.log(message) time.sleep(0.2) PM.log(message + " [DONE]", self._log_id) return True
def init(self, target): PM.log('Initializing CU for target: ' + str(target), self._log_id) if target == 1 or target == 3: response = [0x80, 0xF0, 0x10, 0x69, 0xFF, 0xA2, 0x10, 0x02, 0x4D, 0x12, 0x04, 0x40, 0x06, 0xF3, 0xFA, 0xC9, 0x8E, 0x22, 0x04, 0x02, 0xAC, 0x00, 0x00, 0x00, 0x60, 0xCE, 0x54, 0xF8, 0xB9, 0x84, 0x00, 0x6C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x45, 0x1F, 0x30, 0x80, 0xF0, 0x20, 0x1F, 0x02, 0x43, 0xFB, 0x00, 0xF1, 0xC1, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26] if target == 2: response = [0x80, 0xF0, 0x18, 0x39, 0xFF, 0xA2, 0x10, 0x21, 0xD0, 0xF3, 0x70, 0x31, 0x00, 0x01, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0xBD, 0xC3, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x3E, 0x00, 0x0B, 0x21, 0xC0, 0x00, 0x00, 0x01, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51] return PMPacket.from_array(response)
def __init__(self): """ Constructor """ pygame.init() pygame.mouse.set_visible(False) # seems to suit RPi self._color_depth = 16 if platform.system() == "Linux": pygame.display.set_mode((0, 0), pygame.FULLSCREEN, self._color_depth) else: pygame.display.set_mode((320, 240), 0, self._color_depth) self._surface = pygame.display.get_surface() self._clock = pygame.time.Clock() self._width = self._surface.get_width() self._height = self._surface.get_height() self._subwindow_alpha = 200 self._font_size = int(self._height / 14) self._font = pygame.font.SysFont(pygame.font.get_default_font(), self._font_size) self._font_aa = 0 self._fg_color = pygame.Color(255, 191, 0) self._bg_color = pygame.Color(0, 0, 0) self._dim_color = pygame.Color(200, 140, 0) self._log_lines = 4 self._log_msg_id = 0 self._log_surface = pygame.Surface( (self._width / 2, self._font_size * self._log_lines), 0, self._color_depth) self._log_surface.set_alpha(self._subwindow_alpha) self._log_queue = [] logger = PM() logger.set(self.log) self._fps_log_id = 0 self._frame_no = 0 self.load_resources() pygame.time.set_timer(PMScreen.LOG_FPS_EVENT, 10000) pygame.time.set_timer(PMScreen.LOG_STATS_EVENT, 30000) pygame.time.set_timer(PMScreen.ONE_SEC_EVENT, 1000) self._window = None self._windows = [] self._pos_log_id = 0 self._mouse_down_pos = (0, 0) self._mouse_down_mark_timeout = 0
def parse(self, file_name): self._message = 'Parsing XML data' self._log_id = PM.log(self._message) file_path = os.path.join("data", file_name) source = open(file_path) xml.sax.parse(source, self) self.log_progress() PM.log(self._message + " [DONE]") return self._parameters
def __init__(self): """ Constructor """ pygame.init() pygame.mouse.set_visible(False) # seems to suit RPi self._color_depth = 16 if platform.system() == "Linux": pygame.display.set_mode((0, 0), pygame.FULLSCREEN, self._color_depth) else: pygame.display.set_mode((320, 240), 0, self._color_depth) self._surface = pygame.display.get_surface() self._clock = pygame.time.Clock() self._width = self._surface.get_width() self._height = self._surface.get_height() self._subwindow_alpha = 200 self._font_size = int(self._height / 14) self._font = pygame.font.SysFont(pygame.font.get_default_font(), self._font_size) self._font_aa = 0 self._fg_color = pygame.Color(255, 191, 0) self._bg_color = pygame.Color(0, 0, 0) self._dim_color = pygame.Color(200, 140, 0) self._log_lines = 4 self._log_msg_id = 0 self._log_surface = pygame.Surface((self._width / 2, self._font_size * self._log_lines), 0, self._color_depth) self._log_surface.set_alpha(self._subwindow_alpha) self._log_queue = [] logger = PM() logger.set(self.log) self._fps_log_id = 0 self._frame_no = 0 self.load_resources() pygame.time.set_timer(PMScreen.LOG_FPS_EVENT, 10000) pygame.time.set_timer(PMScreen.LOG_STATS_EVENT, 30000) pygame.time.set_timer(PMScreen.ONE_SEC_EVENT, 1000) self._window = None self._windows = [] self._pos_log_id = 0 self._mouse_down_pos = (0, 0) self._mouse_down_mark_timeout = 0
def parse(self, file_name): self._parameters = set() self._parameter = None self._element_no = 0 self._message = "Parsing XML data" self._log_id = PM.log(self._message) source = open(os.path.join("data", file_name)) xml.sax.parse(source, self) PM.log(self._message + " [DONE]", self._log_id) return self._parameters
def render(self): self._clock.tick() for event in pygame.event.get(): if event.type == PMScreen.LOG_FPS_EVENT: self._frame_no += 1 self._fps_log_id = PM.log("FPS %.2f" % self._clock.get_fps(), self._fps_log_id) elif event.type == PMScreen.LOG_STATS_EVENT: #if platform.system() == "Linux": # PMUtils.log_os_stats() pass elif event.type == pygame.QUIT: self.close() sys.exit() elif event.type == pygame.MOUSEBUTTONUP: self._mouse_down_mark_timeout = 0 self._mouse_down_pos = pygame.mouse.get_pos() self._pos_log_id = PM.log( 'Mouse up at: %s/%s' % pygame.mouse.get_pos(), self._pos_log_id) if self._mouse_down_pos[0] < self._width / 2: self.prev_window() else: self.next_window() elif event.type == pygame.K_LEFT: self.prev_window() elif event.type == pygame.K_RIGHT: self.next_window() elif event.type == PMScreen.ONE_SEC_EVENT: self._mouse_down_mark_timeout += 1 self.clear() if self._window is None: self.render_bg() if self._window is not None: self._window.render() self.render_log() if self._mouse_down_mark_timeout < 2: pygame.draw.circle(self._surface, self._dim_color, self._mouse_down_pos, 16) pygame.display.update()
def render(self): self._clock.tick() for event in pygame.event.get(): if event.type == PMScreen.LOG_FPS_EVENT: self._frame_no += 1 self._fps_log_id = PM.log("FPS %.2f" % self._clock.get_fps(), self._fps_log_id) elif event.type == PMScreen.LOG_STATS_EVENT: #if platform.system() == "Linux": # PMUtils.log_os_stats() pass elif event.type == pygame.QUIT: self.close() sys.exit() elif event.type == pygame.MOUSEBUTTONUP: self._mouse_down_mark_timeout = 0 self._mouse_down_pos = pygame.mouse.get_pos() self._pos_log_id = PM.log('Mouse up at: %s/%s' % pygame.mouse.get_pos(), self._pos_log_id) if self._mouse_down_pos[0] < self._width / 2: self.prev_window() else: self.next_window() elif event.type == pygame.K_LEFT: self.prev_window() elif event.type == pygame.K_RIGHT: self.next_window() elif event.type == PMScreen.ONE_SEC_EVENT: self._mouse_down_mark_timeout += 1 self.clear() if self._window is None: self.render_bg() if self._window is not None: self._window.render() self.render_log() if self._mouse_down_mark_timeout < 2: pygame.draw.circle(self._surface, self._dim_color, self._mouse_down_pos, 16) pygame.display.update()
def endElement(self, name): if name == "parameter": self._parameters.add(self._parameter) self._parameter = None self._addrlen = None if name == "address": self._addrlen = 0 if name == "depends": pass self._name = "" self._element_no += 1 if self._element_no % 1000 == 0: PM.log(self._message + " " + str(self._element_no) + " elements", self._log_id)
def setUp(self): self._ecu_packet = None self._tcu_packet = None self._connection = None self._parameters = None self._ecu_context = None self._tcu_context = None self._ecu_parameters = None self._ecu_switch_parameters = None self._ecu_calculated_parameters = None self._tcu_parameters = None self._tcu_calculated_parameters = None self._tcu_switch_parameters = None logger = PM() logger.set(self.log)
def log_os_stats(cls): try: cpu_temp = PMUtils.get_cpu_temperature() if len(cpu_temp) > 0: PM.log("CPU temp: " + cpu_temp) ram_stats = PMUtils.get_ram_info() if len(ram_stats) == 3: ram_free = round(int(ram_stats[2]) / 1000, 1) PM.log("RAM free: " + str(ram_free)) cpu_usage = PMUtils.get_cpu_use() if len(cpu_usage) > 0: PM.log("CPU usage: " + str(cpu_usage)) except IOError: pass
def log_window(self, index): if self._window is not None: PM.log(str(index + 1) + '/' + str(len(self._windows)) + ': ' + self._window.get_parameters()[0].get_id(), 0)
def close(self): PM.log("Closing serial connection", self._log_id) pass
if __name__ == '__main__': from evdev import InputDevice, list_devices devices = map(InputDevice, list_devices()) eventX = "" for dev in devices: if dev.name == "ADS7846 Touchscreen": eventX = dev.fn os.environ["SDL_FBDEV"] = "/dev/fb1" os.environ["SDL_MOUSEDRV"] = "TSLIB" os.environ["SDL_MOUSEDEV"] = eventX screen = PMScreen() log_id = PM.log('Application started') screen.render() parser = PMXmlParser() supported_parameters = [] if os.path.isfile("data/data.pkl"): input = open("data/data.pkl", "rb") defined_parameters = pickle.load(input) input.close() else: defined_parameters = parser.parse("logger_METRIC_EN_v131.xml") output = open("data/data.pkl", "wb") pickle.dump(defined_parameters, output, -1)
if __name__ == '__main__': from evdev import InputDevice, list_devices devices = map(InputDevice, list_devices()) eventX = "" for dev in devices: if dev.name == "ADS7846 Touchscreen": eventX = dev.fn os.environ["SDL_FBDEV"] = "/dev/fb1" os.environ["SDL_MOUSEDRV"] = "TSLIB" os.environ["SDL_MOUSEDEV"] = eventX screen = PMScreen() log_id = PM.log('Application started') screen.render() parser = PMXmlParser(); supported_parameters = [] if os.path.isfile("data/data.pkl"): input = open("data/data.pkl", "rb") defined_parameters = pickle.load(input) input.close() else: defined_parameters = parser.parse("logger_METRIC_EN_v290.xml") output = open("data/data.pkl", "wb") pickle.dump(defined_parameters, output, -1)
if platform.system() == "Linux": from evdev import InputDevice, list_devices devices = map(InputDevice, list_devices()) eventX = "" for dev in devices: if dev.name == "ADS7846 Touchscreen": eventX = dev.fn os.environ["SDL_FBDEV"] = "/dev/fb1" os.environ["SDL_MOUSEDRV"] = "TSLIB" os.environ["SDL_MOUSEDEV"] = eventX screen = PMScreen() log_id = PM.log('Application started') screen.render() parser = PMXmlParser() supported_parameters = [] if os.path.isfile("data/data.pkl"): serializedDataFile = open("data/data.pkl", "rb") defined_parameters = pickle.load(serializedDataFile) serializedDataFile.close() else: defined_parameters = parser.parse("logger_METRIC_EN_v263.xml") defined_parameters = sorted(defined_parameters, key=lambda x: x.get_id(),
def log_window(self, index): if self._window != None: PM.log(str(index + 1) + '/' + str(len(self._windows)) + ': ' + self._window.get_parameter().get_id(), 0)
log_and_csv_name_ts = time.time() logFormatter = logging.Formatter("%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s] %(message)s") logger = logging.getLogger() fileHandler = logging.FileHandler('/media/datalogs/pimonitor-log/{}.log'.format(log_and_csv_name_ts)) fileHandler.setFormatter(logFormatter) logger.addHandler(fileHandler) consoleHandler = logging.StreamHandler(sys.stdout) consoleHandler.setFormatter(logFormatter) logger.addHandler(consoleHandler) logger.setLevel(logging.DEBUG) foo = PM() foo.set(logger) logger.info('Lets do this!') csv_file = open('/media/datalogs/pimonitor-log/{}.csv'.format(log_and_csv_name_ts), 'w') writer = csv.writer(csv_file) # TODO: Maybe pickle the parameters. Does it load faster? parser = PMXmlParser() defined_parameters = parser.parse("logger_STD_EN_v336.xml") logger.info('-----------------------------------------------------------------------') logger.info('Defined Parameters') logger.info('-----------------------------------------------------------------------') for p in defined_parameters: logger.info(p.to_string())
if platform.system() == "Linux": from evdev import InputDevice, list_devices devices = map(InputDevice, list_devices()) eventX = "" for dev in devices: if dev.name == "ADS7846 Touchscreen": eventX = dev.fn os.environ["SDL_FBDEV"] = "/dev/fb1" os.environ["SDL_MOUSEDRV"] = "TSLIB" os.environ["SDL_MOUSEDEV"] = eventX screen = PMScreen() log_id = PM.log('Application started') screen.render() parser = PMXmlParser() supported_parameters = [] if os.path.isfile("data/data.pkl"): serializedDataFile = open("data/data.pkl", "rb") defined_parameters = pickle.load(serializedDataFile) serializedDataFile.close() else: defined_parameters = parser.parse("logger_METRIC_EN_v263.xml") defined_parameters = sorted(defined_parameters, key=lambda x: x.get_id(), reverse=True) output = open("data/data.pkl", "wb")
def log_window(self, index): if self._window is not None: PM.log( str(index + 1) + '/' + str(len(self._windows)) + ': ' + self._window.get_parameters()[0].get_id(), 0)
def log_progress(self): PM.log( self._message + " " + str(self._element_no) + " elements, " + str(len(self._parameters)) + " parameters", self._log_id)
def log_progress(self): PM.log(self._message + " " + str(self._element_no) + " elements, " + str(len(self._parameters)) + " parameters", self._log_id)