trezor-core/micropython/bootloader/messages.c

56 lines
2.2 KiB
C
Raw Normal View History

#include "usb.h"
#include "version.h"
#include "messages.h"
void send_msg_success(int iface)
{
// send response: Success message (id 2), payload len 0
usb_hid_write_blocking(iface, (const uint8_t *)
"?##" // header
"\x00\x02" // msg_id
"\x00\x00\x00\x00" // payload_len
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
, 64, 1);
}
void send_msg_failure(int iface)
{
// send response: Failure message (id 3), payload len 2
// code = 99 (Failure_FirmwareError)
usb_hid_write_blocking(iface, (const uint8_t *)
"?##" // header
"\x00\x03" // msg_id
"\x00\x00\x00\x02" // payload_len
"\x08\x63" // data
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
, 64, 1);
}
void send_msg_features(int iface, bool firmware_present)
{
// send response: Features message (id 17), payload len 22
// vendor = "trezor.io"
// major_version = VERSION_MAJOR
// minor_version = VERSION_MINOR
// patch_version = VERSION_PATCH
// bootloader_mode = True
// firmware_present = True/False
if (firmware_present) {
usb_hid_write_blocking(iface, (const uint8_t *)
"?##" // header
"\x00\x11" // msg_id
"\x00\x00\x00\x16" // payload_len
"\x0a\x09" "trezor.io\x10" VERSION_MAJOR_CHAR "\x18" VERSION_MINOR_CHAR " " VERSION_PATCH_CHAR "(\x01" // data
"\x90\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
, 64, 1);
} else {
usb_hid_write_blocking(iface, (const uint8_t *)
"?##" // header
"\x00\x11" // msg_id
"\x00\x00\x00\x16" // payload_len
"\x0a\x09" "trezor.io\x10" VERSION_MAJOR_CHAR "\x18" VERSION_MINOR_CHAR " " VERSION_PATCH_CHAR "(\x01" // data
"\x90\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
, 64, 1);
}
}