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",
|