firmware/shared/sim_display.py
Peter D. Gray f2c5a6fe91 more
2023-12-05 12:42:42 +01:00

87 lines
2.0 KiB
Python

# (c) Copyright 2018 by Coinkite Inc. This file is covered by license found in COPYING-CC.
#
# DEBUG ONLY -- only installed for debug builds
# Hack to monitor screen contents, as text.
# Import this file to install the hacks.
#
import ux, version
global contents, full_contents, story
# dictionary, where key is the line number on screen, and rest is text line
contents = {}
# text string of screen, using newlines
full_contents = ''
# copy of the story being shown
story = None
if version.hw_label == 'q1':
from lcd_display import Display
else:
from display import Display
orig_text = Display.text
orig_clear = Display.clear
orig_show = Display.show
Display.text = lambda *a, **kw: hack_text(*a, **kw)
Display.clear = lambda *a, **kw: hack_clear(*a, **kw)
Display.show = lambda *a, **kw: hack_show(*a, **kw)
def hack_text(themself, *a, **kw):
#print('of=%r ts=%r a=%r kw=%r' % (orig_func, themself, a, kw))
x, y, msg = a[0:3]
global contents
contents[y] = msg
#print('text (%s, %s): %s' % (x,y, msg))
return orig_text(themself, *a, **kw)
def hack_clear(themself, *a, **kw):
global contents
contents = {}
return orig_clear(themself, *a, **kw)
def hack_show(themself, *a, **kw):
global contents, full_contents
scr = '\n'.join(contents[y] for y in sorted(contents))
#print("\n---\n%s\n---\n" % scr)
full_contents = scr
return orig_show(themself, *a, **kw)
# Also monitor "UX stories"
orig_show_story = ux.ux_show_story
async def hack_story(msg, title=None, **kw):
global story
if hasattr(msg, 'readline'):
story = (title or 'NO-TITLE', msg.getvalue())
else:
story = (title or 'NO-TITLE', msg)
#print("Story: %s: %s" % (title, msg))
rv = await orig_show_story(msg, title, **kw)
story = None
return rv
ux.ux_show_story = hack_story
# remove pauses that lengthen test case times...
async def no_drama(msg, seconds):
print("Pause (%ds): %s" % (seconds, msg))
ux.ux_dramatic_pause = no_drama
# EOF