tools: Correct coding style of idf_monitor

This commit is contained in:
Roland Dobai
2018-11-20 14:10:35 +01:00
parent 9273de8b43
commit 1b464d23a9
2 changed files with 47 additions and 37 deletions

View File

@@ -125,7 +125,6 @@ exclude =
tools/esp_prov/utils/convenience.py, tools/esp_prov/utils/convenience.py,
tools/gen_esp_err_to_name.py, tools/gen_esp_err_to_name.py,
tools/idf.py, tools/idf.py,
tools/idf_monitor.py,
tools/idf_size.py, tools/idf_size.py,
tools/kconfig_new/confgen.py, tools/kconfig_new/confgen.py,
tools/kconfig_new/confserver.py, tools/kconfig_new/confserver.py,

View File

@@ -29,8 +29,6 @@
# #
from __future__ import print_function, division from __future__ import print_function, division
from __future__ import unicode_literals from __future__ import unicode_literals
from future import standard_library
standard_library.install_aliases()
from builtins import chr from builtins import chr
from builtins import object from builtins import object
from builtins import bytes from builtins import bytes
@@ -71,16 +69,20 @@ ANSI_RED = '\033[1;31m'
ANSI_YELLOW = '\033[0;33m' ANSI_YELLOW = '\033[0;33m'
ANSI_NORMAL = '\033[0m' ANSI_NORMAL = '\033[0m'
def color_print(message, color): def color_print(message, color):
""" Print a message to stderr with colored highlighting """ """ Print a message to stderr with colored highlighting """
sys.stderr.write("%s%s%s\n" % (color, message, ANSI_NORMAL)) sys.stderr.write("%s%s%s\n" % (color, message, ANSI_NORMAL))
def yellow_print(message): def yellow_print(message):
color_print(message, ANSI_YELLOW) color_print(message, ANSI_YELLOW)
def red_print(message): def red_print(message):
color_print(message, ANSI_RED) color_print(message, ANSI_RED)
__version__ = "1.1" __version__ = "1.1"
# Tags for tuples in queues # Tags for tuples in queues
@@ -95,6 +97,7 @@ DEFAULT_TOOLCHAIN_PREFIX = "xtensa-esp32-elf-"
DEFAULT_PRINT_FILTER = "" DEFAULT_PRINT_FILTER = ""
class StoppableThread(object): class StoppableThread(object):
""" """
Provide a Thread-like class which can be 'cancelled' via a subclass-provided Provide a Thread-like class which can be 'cancelled' via a subclass-provided
@@ -138,6 +141,7 @@ class StoppableThread(object):
self._cancel() self._cancel()
old_thread.join() old_thread.join()
class ConsoleReader(StoppableThread): class ConsoleReader(StoppableThread):
""" Read input keys from the console and push them to the queue, """ Read input keys from the console and push them to the queue,
until stopped. until stopped.
@@ -192,9 +196,11 @@ class ConsoleReader(StoppableThread):
# TODO: introduce some workaround to make it work there. # TODO: introduce some workaround to make it work there.
# #
# Note: This would throw exception in testing mode when the stdin is connected to PTY. # Note: This would throw exception in testing mode when the stdin is connected to PTY.
import fcntl, termios import fcntl
import termios
fcntl.ioctl(self.console.fd, termios.TIOCSTI, b'\0') fcntl.ioctl(self.console.fd, termios.TIOCSTI, b'\0')
class SerialReader(StoppableThread): class SerialReader(StoppableThread):
""" Read serial data from the serial port and push to the """ Read serial data from the serial port and push to the
event queue, until stopped. event queue, until stopped.
@@ -227,9 +233,10 @@ class SerialReader(StoppableThread):
if hasattr(self.serial, 'cancel_read'): if hasattr(self.serial, 'cancel_read'):
try: try:
self.serial.cancel_read() self.serial.cancel_read()
except: except Exception:
pass pass
class LineMatcher(object): class LineMatcher(object):
""" """
Assembles a dictionary of filtering rules based on the --print_filter Assembles a dictionary of filtering rules based on the --print_filter
@@ -267,6 +274,7 @@ class LineMatcher(object):
else: else:
raise ValueError('Missing ":" in filter ' + f) raise ValueError('Missing ":" in filter ' + f)
self._dict[s[0]] = lev self._dict[s[0]] = lev
def match(self, line): def match(self, line):
try: try:
m = self._re.search(line) m = self._re.search(line)
@@ -282,12 +290,14 @@ class LineMatcher(object):
# We need something more than "*.N" for printing. # We need something more than "*.N" for printing.
return self._dict.get("*", self.LEVEL_N) > self.LEVEL_N return self._dict.get("*", self.LEVEL_N) > self.LEVEL_N
class SerialStopException(Exception): class SerialStopException(Exception):
""" """
This exception is used for stopping the IDF monitor in testing mode. This exception is used for stopping the IDF monitor in testing mode.
""" """
pass pass
class Monitor(object): class Monitor(object):
""" """
Monitor application main class. Monitor application main class.
@@ -381,7 +391,7 @@ class Monitor(object):
# Cancelling _invoke_processing_last_line_timer is not # Cancelling _invoke_processing_last_line_timer is not
# important here because receiving empty data doesn't matter. # important here because receiving empty data doesn't matter.
self._invoke_processing_last_line_timer = None self._invoke_processing_last_line_timer = None
except: except Exception:
pass pass
sys.stderr.write(ANSI_NORMAL + "\n") sys.stderr.write(ANSI_NORMAL + "\n")
@@ -427,7 +437,7 @@ class Monitor(object):
# to make a decision. # to make a decision.
if self._last_line_part != b"": if self._last_line_part != b"":
if self._force_line_print or (finalize_line and self._line_matcher.match(self._last_line_part.decode(errors="ignore"))): if self._force_line_print or (finalize_line and self._line_matcher.match(self._last_line_part.decode(errors="ignore"))):
self._force_line_print = True; self._force_line_print = True
if self._output_enabled: if self._output_enabled:
self.console.write_bytes(self._last_line_part) self.console.write_bytes(self._last_line_part)
self.handle_possible_pc_address_in_line(self._last_line_part) self.handle_possible_pc_address_in_line(self._last_line_part)
@@ -559,7 +569,7 @@ class Monitor(object):
["%saddr2line" % self.toolchain_prefix, ["%saddr2line" % self.toolchain_prefix,
"-pfiaC", "-e", self.elf_file, pc_addr], "-pfiaC", "-e", self.elf_file, pc_addr],
cwd=".") cwd=".")
if not b"?? ??:0" in translation: if b"?? ??:0" not in translation:
yellow_print(translation.decode()) yellow_print(translation.decode())
def check_gdbstub_trigger(self, line): def check_gdbstub_trigger(self, line):
@@ -577,7 +587,6 @@ class Monitor(object):
else: else:
red_print("Malformed gdb message... calculated checksum %02x received %02x" % (chsum, calc_chsum)) red_print("Malformed gdb message... calculated checksum %02x received %02x" % (chsum, calc_chsum))
def run_gdb(self): def run_gdb(self):
with self: # disable console control with self: # disable console control
sys.stderr.write(ANSI_NORMAL) sys.stderr.write(ANSI_NORMAL)
@@ -594,12 +603,12 @@ class Monitor(object):
try: try:
# on Linux, maybe other OSes, gdb sometimes seems to be alive even after wait() returns... # on Linux, maybe other OSes, gdb sometimes seems to be alive even after wait() returns...
process.terminate() process.terminate()
except: except Exception:
pass pass
try: try:
# also on Linux, maybe other OSes, gdb sometimes exits uncleanly and breaks the tty mode # also on Linux, maybe other OSes, gdb sometimes exits uncleanly and breaks the tty mode
subprocess.call(["stty", "sane"]) subprocess.call(["stty", "sane"])
except: except Exception:
pass # don't care if there's no stty, we tried... pass # don't care if there's no stty, we tried...
self.prompt_next_action("gdb exited") self.prompt_next_action("gdb exited")
@@ -610,6 +619,7 @@ class Monitor(object):
self._output_enabled = not self._output_enabled self._output_enabled = not self._output_enabled
yellow_print("\nToggle output display: {}, Type Ctrl-T Ctrl-Y to show/disable output again.".format(self._output_enabled)) yellow_print("\nToggle output display: {}, Type Ctrl-T Ctrl-Y to show/disable output again.".format(self._output_enabled))
def main(): def main():
parser = argparse.ArgumentParser("idf_monitor - a serial output monitor for esp-idf") parser = argparse.ArgumentParser("idf_monitor - a serial output monitor for esp-idf")
@@ -690,6 +700,7 @@ def main():
monitor.main_loop() monitor.main_loop()
if os.name == 'nt': if os.name == 'nt':
# Windows console stuff # Windows console stuff
@@ -745,10 +756,10 @@ if os.name == 'nt':
data = bytearray(data, 'utf-8') data = bytearray(data, 'utf-8')
for b in data: for b in data:
b = bytes([b]) b = bytes([b])
l = len(self.matched) length = len(self.matched)
if b == b'\033': # ESC if b == b'\033': # ESC
self.matched = b self.matched = b
elif (l == 1 and b == b'[') or (1 < l < 7): elif (length == 1 and b == b'[') or (1 < length < 7):
self.matched += b self.matched += b
if self.matched == ANSI_NORMAL.encode('latin-1'): # reset console if self.matched == ANSI_NORMAL.encode('latin-1'): # reset console
# Flush is required only with Python3 - switching color before it is printed would mess up the console # Flush is required only with Python3 - switching color before it is printed would mess up the console