Spaces:
Running
Running
fix: make sure that findPort works in iframe
Browse files- packages/web/src/find_port.ts +13 -24
packages/web/src/find_port.ts
CHANGED
@@ -67,9 +67,7 @@ async function requestUSBDeviceMetadata(): Promise<{
|
|
67 |
}> {
|
68 |
try {
|
69 |
// Request USB device access for metadata (no filters - accept any device)
|
70 |
-
const usbDevice = await navigator.usb.requestDevice({
|
71 |
-
filters: [], // No filtering - let user choose any device
|
72 |
-
});
|
73 |
|
74 |
const serialNumber =
|
75 |
usbDevice.serialNumber ||
|
@@ -178,32 +176,23 @@ async function findPortInteractive(
|
|
178 |
onMessage?.("Opening device selection dialogs...");
|
179 |
|
180 |
try {
|
181 |
-
|
182 |
-
let
|
183 |
-
let usbDevicePromise: Promise<{
|
184 |
-
serialNumber: string;
|
185 |
-
usbMetadata: RobotConnection["usbMetadata"];
|
186 |
-
}> | null = null;
|
187 |
|
188 |
-
|
189 |
-
onMessage?.("π± Requesting device access permissions...");
|
190 |
-
usbDevicePromise = requestUSBDeviceMetadata();
|
191 |
-
}
|
192 |
|
193 |
-
//
|
194 |
-
|
|
|
195 |
await port.open({ baudRate: 1000000 });
|
196 |
|
197 |
-
|
198 |
-
onMessage?.(`β
Connected to ${portName}`);
|
199 |
|
200 |
-
//
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
if (usbDevicePromise) {
|
205 |
try {
|
206 |
-
const usbData = await
|
207 |
serialNumber = usbData.serialNumber;
|
208 |
usbMetadata = usbData.usbMetadata;
|
209 |
onMessage?.(`π Device ID: ${serialNumber}`);
|
@@ -236,7 +225,7 @@ async function findPortInteractive(
|
|
236 |
return [
|
237 |
{
|
238 |
port,
|
239 |
-
name:
|
240 |
isConnected: true,
|
241 |
robotType: "so100_follower", // Default, user can change
|
242 |
robotId: "interactive_robot",
|
|
|
67 |
}> {
|
68 |
try {
|
69 |
// Request USB device access for metadata (no filters - accept any device)
|
70 |
+
const usbDevice = await navigator.usb.requestDevice({ filters: [] });
|
|
|
|
|
71 |
|
72 |
const serialNumber =
|
73 |
usbDevice.serialNumber ||
|
|
|
176 |
onMessage?.("Opening device selection dialogs...");
|
177 |
|
178 |
try {
|
179 |
+
let serialNumber: string;
|
180 |
+
let usbMetadata: RobotConnection["usbMetadata"];
|
|
|
|
|
|
|
|
|
181 |
|
182 |
+
onMessage?.("π± Requesting device access permissions...");
|
|
|
|
|
|
|
183 |
|
184 |
+
// Step 1: Request serial port
|
185 |
+
onMessage?.("π‘ Step 1: Select serial port...");
|
186 |
+
const port = await navigator.serial.requestPort();
|
187 |
await port.open({ baudRate: 1000000 });
|
188 |
|
189 |
+
onMessage?.(`β
Connected to ${getPortDisplayName(port)}`);
|
|
|
190 |
|
191 |
+
// Step 2: Request USB device for identification
|
192 |
+
if (isWebUSBSupported()) {
|
193 |
+
onMessage?.("π Step 2: Select device for identification...");
|
|
|
|
|
194 |
try {
|
195 |
+
const usbData = await requestUSBDeviceMetadata();
|
196 |
serialNumber = usbData.serialNumber;
|
197 |
usbMetadata = usbData.usbMetadata;
|
198 |
onMessage?.(`π Device ID: ${serialNumber}`);
|
|
|
225 |
return [
|
226 |
{
|
227 |
port,
|
228 |
+
name: getPortDisplayName(port),
|
229 |
isConnected: true,
|
230 |
robotType: "so100_follower", // Default, user can change
|
231 |
robotId: "interactive_robot",
|