NERDDISCO commited on
Commit
982ff9b
Β·
1 Parent(s): 8841ff3

fix: make sure that findPort works in iframe

Browse files
Files changed (1) hide show
  1. 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
- // Step 1: Request both permissions simultaneously to preserve user gesture
182
- let serialPortPromise = navigator.serial.requestPort();
183
- let usbDevicePromise: Promise<{
184
- serialNumber: string;
185
- usbMetadata: RobotConnection["usbMetadata"];
186
- }> | null = null;
187
 
188
- if (isWebUSBSupported()) {
189
- onMessage?.("πŸ“± Requesting device access permissions...");
190
- usbDevicePromise = requestUSBDeviceMetadata();
191
- }
192
 
193
- // Wait for serial port
194
- const port = await serialPortPromise;
 
195
  await port.open({ baudRate: 1000000 });
196
 
197
- const portName = getPortDisplayName(port);
198
- onMessage?.(`βœ… Connected to ${portName}`);
199
 
200
- // Get USB metadata
201
- let serialNumber: string;
202
- let usbMetadata: RobotConnection["usbMetadata"];
203
-
204
- if (usbDevicePromise) {
205
  try {
206
- const usbData = await usbDevicePromise;
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: portName,
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",