mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-01-27 15:51:02 +00:00
modtrezorio: move write() to HID
This commit is contained in:
parent
552444c856
commit
b1b84fb233
@ -21,6 +21,15 @@
|
|||||||
|
|
||||||
/// def poll(ifaces: Iterable[int], list_ref: List, timeout_us: int) -> bool:
|
/// def poll(ifaces: Iterable[int], list_ref: List, timeout_us: int) -> bool:
|
||||||
/// '''
|
/// '''
|
||||||
|
/// Wait until one of `ifaces` is ready to read or write (using masks
|
||||||
|
// `io.POLL_READ` and `io.POLL_WRITE`) and assign the result into
|
||||||
|
/// `list_ref`:
|
||||||
|
///
|
||||||
|
/// `list_ref[0]` - the interface number, including the mask
|
||||||
|
/// `list_ref[1]` - for touch event, tuple of (event_type, x_position, y_position)
|
||||||
|
/// - for HID read event, received bytes
|
||||||
|
///
|
||||||
|
/// If timeout occurs, False is returned, True otherwise.
|
||||||
/// '''
|
/// '''
|
||||||
STATIC mp_obj_t mod_trezorio_poll(mp_obj_t ifaces, mp_obj_t list_ref, mp_obj_t timeout_us) {
|
STATIC mp_obj_t mod_trezorio_poll(mp_obj_t ifaces, mp_obj_t list_ref, mp_obj_t timeout_us) {
|
||||||
mp_obj_list_t *ret = MP_OBJ_TO_PTR(list_ref);
|
mp_obj_list_t *ret = MP_OBJ_TO_PTR(list_ref);
|
||||||
@ -180,8 +189,22 @@ STATIC mp_obj_t mod_trezorio_HID_iface_num(mp_obj_t self) {
|
|||||||
}
|
}
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorio_HID_iface_num_obj, mod_trezorio_HID_iface_num);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorio_HID_iface_num_obj, mod_trezorio_HID_iface_num);
|
||||||
|
|
||||||
|
/// def write(self, msg: bytes) -> int:
|
||||||
|
/// '''
|
||||||
|
/// Sends message using USB HID (device) or UDP (emulator).
|
||||||
|
/// '''
|
||||||
|
STATIC mp_obj_t mod_trezorio_HID_write(mp_obj_t self, mp_obj_t msg) {
|
||||||
|
mp_obj_HID_t *o = MP_OBJ_TO_PTR(self);
|
||||||
|
mp_buffer_info_t buf;
|
||||||
|
mp_get_buffer_raise(msg, &buf, MP_BUFFER_READ);
|
||||||
|
ssize_t r = usb_hid_write(o->info.iface_num, buf.buf, buf.len);
|
||||||
|
return MP_OBJ_NEW_SMALL_INT(r);
|
||||||
|
}
|
||||||
|
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorio_HID_write_obj, mod_trezorio_HID_write);
|
||||||
|
|
||||||
STATIC const mp_rom_map_elem_t mod_trezorio_HID_locals_dict_table[] = {
|
STATIC const mp_rom_map_elem_t mod_trezorio_HID_locals_dict_table[] = {
|
||||||
{ MP_ROM_QSTR(MP_QSTR_iface_num), MP_ROM_PTR(&mod_trezorio_HID_iface_num_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_iface_num), MP_ROM_PTR(&mod_trezorio_HID_iface_num_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_write), MP_ROM_PTR(&mod_trezorio_HID_write_obj) },
|
||||||
};
|
};
|
||||||
STATIC MP_DEFINE_CONST_DICT(mod_trezorio_HID_locals_dict, mod_trezorio_HID_locals_dict_table);
|
STATIC MP_DEFINE_CONST_DICT(mod_trezorio_HID_locals_dict, mod_trezorio_HID_locals_dict_table);
|
||||||
|
|
||||||
@ -397,7 +420,7 @@ STATIC mp_obj_t mod_trezorio_USB_add(mp_obj_t self, mp_obj_t iface) {
|
|||||||
}
|
}
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorio_USB_add_obj, mod_trezorio_USB_add);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorio_USB_add_obj, mod_trezorio_USB_add);
|
||||||
|
|
||||||
/// def start(self) -> None:
|
/// def open(self) -> None:
|
||||||
/// '''
|
/// '''
|
||||||
/// Initializes the USB stack.
|
/// Initializes the USB stack.
|
||||||
/// '''
|
/// '''
|
||||||
@ -457,7 +480,7 @@ STATIC mp_obj_t mod_trezorio_USB_open(mp_obj_t self) {
|
|||||||
}
|
}
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorio_USB_open_obj, mod_trezorio_USB_open);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorio_USB_open_obj, mod_trezorio_USB_open);
|
||||||
|
|
||||||
/// def stop(self) -> None:
|
/// def close(self) -> None:
|
||||||
/// '''
|
/// '''
|
||||||
/// Cleans up the USB stack.
|
/// Cleans up the USB stack.
|
||||||
/// '''
|
/// '''
|
||||||
@ -483,23 +506,6 @@ STATIC mp_obj_t mod_trezorio_USB_close(mp_obj_t self) {
|
|||||||
}
|
}
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorio_USB_close_obj, mod_trezorio_USB_close);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorio_USB_close_obj, mod_trezorio_USB_close);
|
||||||
|
|
||||||
/// def write(self, iface: int, msg: bytes) -> int:
|
|
||||||
/// '''
|
|
||||||
/// Sends message using USB HID (device) or UDP (emulator).
|
|
||||||
/// '''
|
|
||||||
STATIC mp_obj_t mod_trezorio_USB_write(mp_obj_t self, mp_obj_t iface, mp_obj_t msg) {
|
|
||||||
mp_obj_USB_t *o = MP_OBJ_TO_PTR(self);
|
|
||||||
if (o->state != USB_OPENED) {
|
|
||||||
mp_raise_msg(&mp_type_RuntimeError, "not initialized");
|
|
||||||
}
|
|
||||||
mp_buffer_info_t buf;
|
|
||||||
mp_get_buffer_raise(msg, &buf, MP_BUFFER_READ);
|
|
||||||
uint8_t i = mp_obj_get_int(iface);
|
|
||||||
ssize_t r = usb_hid_write(i, buf.buf, buf.len);
|
|
||||||
return MP_OBJ_NEW_SMALL_INT(r);
|
|
||||||
}
|
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_3(mod_trezorio_USB_write_obj, mod_trezorio_USB_write);
|
|
||||||
|
|
||||||
STATIC mp_obj_t mod_trezorio_USB___del__(mp_obj_t self) {
|
STATIC mp_obj_t mod_trezorio_USB___del__(mp_obj_t self) {
|
||||||
mp_obj_USB_t *o = MP_OBJ_TO_PTR(self);
|
mp_obj_USB_t *o = MP_OBJ_TO_PTR(self);
|
||||||
if (o->state != USB_CLOSED) {
|
if (o->state != USB_CLOSED) {
|
||||||
@ -515,7 +521,6 @@ STATIC const mp_rom_map_elem_t mod_trezorio_USB_locals_dict_table[] = {
|
|||||||
{ MP_ROM_QSTR(MP_QSTR_add), MP_ROM_PTR(&mod_trezorio_USB_add_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_add), MP_ROM_PTR(&mod_trezorio_USB_add_obj) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_open), MP_ROM_PTR(&mod_trezorio_USB_open_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_open), MP_ROM_PTR(&mod_trezorio_USB_open_obj) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_close), MP_ROM_PTR(&mod_trezorio_USB_close_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_close), MP_ROM_PTR(&mod_trezorio_USB_close_obj) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_write), MP_ROM_PTR(&mod_trezorio_USB_write_obj) },
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&mod_trezorio_USB___del___obj) },
|
{ MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&mod_trezorio_USB___del___obj) },
|
||||||
};
|
};
|
||||||
STATIC MP_DEFINE_CONST_DICT(mod_trezorio_USB_locals_dict, mod_trezorio_USB_locals_dict_table);
|
STATIC MP_DEFINE_CONST_DICT(mod_trezorio_USB_locals_dict, mod_trezorio_USB_locals_dict_table);
|
||||||
|
Loading…
Reference in New Issue
Block a user