diff --git a/src/trezor/wire/wire_codec.py b/src/trezor/wire/wire_codec.py index 168abbe59..096b775ef 100644 --- a/src/trezor/wire/wire_codec.py +++ b/src/trezor/wire/wire_codec.py @@ -76,8 +76,10 @@ Receives report payloads. Sends (msg_type, data_len) to target, followed by data chunks. Throws EOFError after last data chunk, in case of valid checksum. Throws MessageChecksumError to target if data doesn't match the checksum. + +Pass report payloads as `memoryview` for cheaper slicing. ''' - message = memoryview((yield)) # read first report + message = yield # read first report msg_type, data_len, data_tail = parse_message(message) target = genfunc(msg_type, data_len, session_id, *args) @@ -95,7 +97,7 @@ Throws MessageChecksumError to target if data doesn't match the checksum. checksum = ubinascii.crc32(data_chunk, checksum) if data_len > 0: - data_tail = memoryview((yield)) # read next report + data_tail = yield # read next report msg_footer = data_tail[:_MSG_FOOTER_LEN] if len(msg_footer) < _MSG_FOOTER_LEN: diff --git a/src/trezor/wire/wire_codec_v1.py b/src/trezor/wire/wire_codec_v1.py index 2c58dce18..9b7ef69e7 100644 --- a/src/trezor/wire/wire_codec_v1.py +++ b/src/trezor/wire/wire_codec_v1.py @@ -40,6 +40,8 @@ Receives report payloads. Sends (msg_type, data_len) to target, followed by data chunks. Throws EOFError after last data chunk, in case of valid checksum. Throws MessageChecksumError to target if data doesn't match the checksum. + +Pass report payloads as `memoryview` for cheaper slicing. ''' message = yield # read first report diff --git a/src/trezor/wire/wire_io.py b/src/trezor/wire/wire_io.py index 251d53ccc..fd371a46e 100644 --- a/src/trezor/wire/wire_io.py +++ b/src/trezor/wire/wire_io.py @@ -1,19 +1,19 @@ -import ubinascii +from ubinascii import hexlify from micropython import const from trezor import msg, loop, log -_DEFAULT_IFACE = const(0xFF00) # TODO: use proper interface +_DEFAULT_IFACE = const(0xFF00) # TODO: use proper interface def read_report_stream(target, iface=_DEFAULT_IFACE): while True: report, = yield loop.Select(iface) - log.debug(__name__, 'read report %s', ubinascii.hexlify(report)) - target.send(report) + log.debug(__name__, 'read report %s', hexlify(report)) + target.send(memoryview(report)) def write_report_stream(iface=_DEFAULT_IFACE): while True: report = yield - log.debug(__name__, 'write report %s', ubinascii.hexlify(report)) + log.debug(__name__, 'write report %s', hexlify(report)) msg.send(iface, report)