Example #1
0
    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)
Example #2
0
    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
Example #3
0
 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)
Example #4
0
    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
Example #5
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
Example #6
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
Example #7
0
    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
Example #8
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
Example #9
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
Example #10
0
    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()
Example #11
0
    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()
Example #12
0
    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)
Example #13
0
    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)
Example #14
0
    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)
Example #15
0
    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
Example #16
0
    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
Example #17
0
 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)
Example #18
0
 def close(self):
     PM.log("Closing serial connection", self._log_id)
     pass
Example #19
0
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)
Example #20
0
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)
Example #21
0
    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(),
Example #22
0
	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)
Example #23
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())
Example #24
0
    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")
Example #25
0
 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)
Example #26
0
 def close(self):
     PM.log("Closing serial connection", self._log_id)
     pass
Example #27
0
 def log_progress(self):
     PM.log(
         self._message + " " + str(self._element_no) + " elements, " +
         str(len(self._parameters)) + " parameters", self._log_id)
Example #28
0
 def log_progress(self):
     PM.log(self._message + " " + str(self._element_no) + " elements, " + str(len(self._parameters)) + " parameters",
            self._log_id)