61 lines
2.0 KiB
JavaScript
61 lines
2.0 KiB
JavaScript
/**
|
|
* Checks if the required JS API for WebUSB is available.
|
|
* @returns {boolean}
|
|
*/
|
|
function isWebUsbAvailable() {
|
|
return navigator.usb !== null;
|
|
}
|
|
|
|
// Tool-centric stuff
|
|
{
|
|
/** @type {HTMLElement} */
|
|
const eApiSupportedText = document.querySelector("#web-usb-test-api-supported");
|
|
/** @type {HTMLElement} */
|
|
const eApiNonSupportedText = document.querySelector("#web-usb-test-api-not-supported");
|
|
/** @type {HTMLElement} */
|
|
const eApiSupportUnknownText = document.querySelector("#web-usb-test-api-support-unknown");
|
|
|
|
/** @type {HTMLButtonElement} */
|
|
const eListAllButton = document.querySelector("button#web-usb-test-list-all");
|
|
|
|
/** @type {HTMLButtonElement} */
|
|
const eBa63GetterButton = document.querySelector("button#web-usb-test-ba63-getter");
|
|
|
|
window.onload = function () {
|
|
if (!isWebUsbAvailable()) {
|
|
eApiSupportUnknownText.hidden = true;
|
|
eApiNonSupportedText.hidden = false;
|
|
return;
|
|
}
|
|
eApiSupportUnknownText.hidden = true;
|
|
eApiSupportedText.hidden = false;
|
|
|
|
eListAllButton.addEventListener("click", function () {
|
|
navigator.usb.getDevices().then((devices) => {
|
|
console.log(`Total devices: ${devices.length}`);
|
|
devices.forEach((device) => {
|
|
console.log(
|
|
`Product name: ${device.productName}, serial number ${device.serialNumber}`,
|
|
);
|
|
console.log(device);
|
|
});
|
|
});
|
|
});
|
|
|
|
eBa63GetterButton.addEventListener("click", function () {
|
|
const filters = [
|
|
{vendorId: 0x0AA7, productId: 0x0200},
|
|
];
|
|
navigator.usb
|
|
.requestDevice({filters})
|
|
.then((usbDevice) => {
|
|
console.log(`Product name: ${usbDevice.productName}`);
|
|
})
|
|
.catch((e) => {
|
|
console.error(`There is no device. ${e}`);
|
|
});
|
|
});
|
|
|
|
}
|
|
}
|