parent
80d8ab7825
commit
00f566c434
@ -0,0 +1,56 @@
|
||||
#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);
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
#ifndef __MESSAGES_H__
|
||||
#define __MESSAGES_H__
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
void send_msg_success(int iface);
|
||||
void send_msg_failure(int iface);
|
||||
void send_msg_features(int iface, bool firmware_present);
|
||||
|
||||
#endif
|
Loading…
Reference in new issue