diff --git a/locales/en/messages.json b/locales/en/messages.json
index 0840e057..cfe97855 100755
--- a/locales/en/messages.json
+++ b/locales/en/messages.json
@@ -90,6 +90,10 @@
"message": "--- I can't find my Bluetooth device---",
"description": "Option in the port selection dropdown to allow the user to give permissions to the system to access a Bluetooth device."
},
+ "portsSelectPermissionDFU": {
+ "message": "--- I can't find my DFU device ---",
+ "description": "Option in the port selection dropdown to allow the user to give permissions to the system to access a DFU device."
+ },
"bluetoothConnected": {
"message": "Connected to Bluetooth device: $1"
},
diff --git a/src/components/port-picker/PortsInput.vue b/src/components/port-picker/PortsInput.vue
index bfd9409d..ec6016a8 100644
--- a/src/components/port-picker/PortsInput.vue
+++ b/src/components/port-picker/PortsInput.vue
@@ -45,6 +45,9 @@
+
@@ -159,6 +162,8 @@ export default defineComponent({
EventBus.$emit("ports-input:request-permission");
} else if (value === "requestpermissionbluetooth") {
EventBus.$emit("ports-input:request-permission-bluetooth");
+ } else if (value === "requestpermissionusb") {
+ EventBus.$emit("ports-input:request-permission-usb");
} else {
EventBus.$emit("ports-input:change", value);
}
diff --git a/src/js/port_handler.js b/src/js/port_handler.js
index 0b37592b..b6fd2d2b 100644
--- a/src/js/port_handler.js
+++ b/src/js/port_handler.js
@@ -36,6 +36,7 @@ const PortHandler = new (function () {
PortHandler.initialize = function () {
EventBus.$on("ports-input:request-permission-bluetooth", () => this.requestDevicePermission("bluetooth"));
EventBus.$on("ports-input:request-permission", () => this.requestDevicePermission("serial"));
+ EventBus.$on("ports-input:request-permission-usb", () => this.requestDevicePermission("usb"));
EventBus.$on("ports-input:change", this.onChangeSelectedPort.bind(this));
// Use serial for all protocol events
@@ -134,25 +135,27 @@ PortHandler.onChangeSelectedPort = function (port) {
/**
* Request permission for a device of the specified type
- * @param {string} deviceType - Type of device ('serial' or 'bluetooth')
+ * @param {string} deviceType - Type of device ('serial', 'bluetooth', 'usb')
*/
-PortHandler.requestDevicePermission = function (deviceType = "serial") {
- // Determine whether to show all devices based on device type
- const showAllDevices = deviceType === "serial" ? this.showAllSerialDevices : false;
+PortHandler.requestDevicePermission = function (deviceType) {
+ const requestPromise =
+ deviceType === "usb"
+ ? WEBUSBDFU.requestPermission()
+ : serial.requestPermissionDevice(this.showAllSerialDevices, deviceType);
- // Use serial facade to request permission
- serial
- .requestPermissionDevice(showAllDevices, deviceType)
+ console.log(`${this.logHead} Requesting permission for ${deviceType} device...`);
+
+ requestPromise
.then((port) => {
if (port) {
console.log(`${this.logHead} Permission granted for ${deviceType} device:`, port);
this.selectActivePort(port);
} else {
- console.log(`${this.logHead} Permission request cancelled or failed for ${deviceType}`);
+ console.log(`${this.logHead} Permission request cancelled or failed for ${deviceType} device`);
}
})
.catch((error) => {
- console.error(`${this.logHead} Error requesting permission for ${deviceType}:`, error);
+ console.error(`${this.logHead} Error requesting permission for ${deviceType} device:`, error);
});
};