use progress_bar_show when possible

This commit is contained in:
Peter D. Gray 2023-01-17 14:14:27 -05:00 committed by scgbckbone
parent 020cef6706
commit 645a172801
6 changed files with 67 additions and 6 deletions

View File

@ -102,7 +102,7 @@ class UserAuthorizedAction:
# do nothing more for HSM case: msg will be available over USB
if hsm_active:
dis.progress_bar(1) # finish the Validating... or whatever was up
dis.progress_bar_show(1) # finish the Validating... or whatever was up
return
# may be a user-abort waiting, but we want to see error msg; so clear it
@ -660,6 +660,7 @@ class ApproveTransaction(UserAuthorizedAction):
dis.progress_bar_show(0.66)
self.psbt.consider_outputs()
self.psbt.consider_dangerous_sighash()
dis.progress_bar_show(0.85)
except FraudulentChangeOutput as exc:
print('FraudulentChangeOutput: ' + exc.args[0])
@ -731,6 +732,7 @@ class ApproveTransaction(UserAuthorizedAction):
ch = await ux_show_story(msg, title="OK TO SEND?")
else:
ch = await hsm_active.approve_transaction(self.psbt, self.psbt_sha, msg.getvalue())
dis.progress_bar_show(1) # finish the Validating...
except MemoryError:
# recovery? maybe.
@ -1295,7 +1297,7 @@ class ShowAddressBase(UserAuthorizedAction):
break
else:
# finish the Wait...
dis.progress_bar(1)
dis.progress_bar_show(1)
if self.restore_menu:
self.pop_menu()
else:

View File

@ -180,8 +180,7 @@ class Display:
if utime.ticks_diff(utime.ticks_ms(), self.last_bar_update) < 100:
return
self.last_bar_update = utime.ticks_ms()
self.progress_bar(done / total)
self.show()
self.progress_bar_show(done / total)
def progress_bar_show(self, percent):
# useful as a callback

View File

@ -233,8 +233,7 @@ class LoginUX:
dis.text(None, 40, "(%d failures)" % pa.num_fails)
while pa.is_delay_needed():
dis.progress_bar(pa.delay_achieved / pa.delay_required)
dis.show()
dis.progress_bar_show(pa.delay_achieved / pa.delay_required)
pa.delay()

View File

@ -21,6 +21,8 @@ if 0:
import ckcc
ckcc.vcp_enabled(True)
from h import *
if 1:
from h import dfu
if 0:
raise SystemExit

View File

@ -4,6 +4,7 @@ freeze_as_mpy('', [
'mk4.py',
'q1.py',
'keyboard.py',
'scanner.py',
'lcd_display.py',
'vdisk.py',
'nfc.py',

58
shared/scanner.py Normal file
View File

@ -0,0 +1,58 @@
# (c) Copyright 2023 by Coinkite Inc. This file is covered by license found in COPYING-CC.
#
# scanner.py - QR scanner submodule on Q1 (only)
#
import utime
from struct import pack
from utils import B2A
def wrap(body, fid=0):
# wrap w/ their weird framing
# LATER: USB? serial port doesn't need this! just send the string!
body = body if isinstance(body, bytes) else body.encode('ascii')
rv = pack(b'>bH', fid, len(body)) + body
bcc = 0
for c in rv:
bcc ^= c
return b'\x5A' + rv + bytes([bcc]) + b'\xA5' # STX ... ETX
class QRScanner:
def __init__(self):
from machine import UART, Pin
self.serial = UART(2, 9600)
self.reset = Pin('QR_RESET', Pin.OUT_OD)
self.trigger = Pin('QR_TRIG', Pin.OUT_OD)
# trigger/reset are active low (open drain)
self.trigger(1)
self.reset(0)
utime.sleep_ms(10)
self.reset(1)
def scan(self):
if q.trigger() == 0:
# need to release/re-press
q.trigger(1)
utime.sleep_ms(100)
q.trigger(0);
def rx(self):
# untested
return self.serial.read()
def tx(self, m):
# not working
x = wrap(m)
print('Sending: ' + B2A(x))
self.serial.write(x)
def test(self):
m = bytes([90, 0, 0, 10, 95, 67, 77, 68, 95, 48, 48, 48, 49, 18, 165])
self.serial.write(m)
return self.serial.read()
q = QRScanner()
# EOF