diff --git a/us/iona_stub.js b/us/iona_stub.js index de568de..9d62d48 100644 --- a/us/iona_stub.js +++ b/us/iona_stub.js @@ -95,6 +95,26 @@ export class IONA { this.exports.iona_poll(); } + state() { + const digitals = this.exports.iona_get_digital_states(); + const buttons = []; + for (let bit = 0x0200; bit != 0; bit >>= 1) { + buttons.push((digitals & bit) != 0); + } + const analogs = []; + for (let i = 0; i < 6; ++i) { + analogs.push(this.exports.iona_get_analog_state(i)); + } + return { + up: (digitals & 0x2000) != 0, + down: (digitals & 0x1000) != 0, + left: (digitals & 0x0800) != 0, + right: (digitals & 0x0400) != 0, + buttons: buttons, + analogs: analogs, + }; + } + createPseudoDeviceDescriptor(pid, vid) { const desc = new Uint8Array(18); desc[0] = 0x12; // bLength diff --git a/us/wasm.c b/us/wasm.c index 558bf20..8a63a7b 100644 --- a/us/wasm.c +++ b/us/wasm.c @@ -114,7 +114,11 @@ iona_usb_host_check_configuration_desc(const uint8_t* desc) { error(); return 0; } - return usb_host->check_configuration_desc(0, desc); + uint8_t intf = usb_host->check_configuration_desc(0, desc); + if (intf == 255) { + intf = 0; + } + return intf; } EMSCRIPTEN_KEEPALIVE void iona_usb_host_check_hid_report_desc(