@onekeyfe/hd-transport-web-device 1.2.0-alpha.2 → 1.2.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28,21 +28,25 @@ const protocolV1Schema = {
28
28
 
29
29
  const protocolV2Schema = {
30
30
  nested: {
31
- GetProtoVersion: {
31
+ ProtocolInfoRequest: {
32
32
  fields: {},
33
33
  },
34
- ProtoVersion: {
34
+ ProtocolInfo: {
35
35
  fields: {
36
- major_version: {
36
+ version: {
37
37
  type: 'uint32',
38
38
  id: 1,
39
39
  },
40
- minor_version: {
40
+ supported_messages: {
41
+ rule: 'repeated',
41
42
  type: 'uint32',
42
43
  id: 2,
44
+ options: {
45
+ packed: false,
46
+ },
43
47
  },
44
- patch_version: {
45
- type: 'uint32',
48
+ protobuf_definition: {
49
+ type: 'string',
46
50
  id: 3,
47
51
  },
48
52
  },
@@ -65,8 +69,8 @@ const protocolV2Schema = {
65
69
  },
66
70
  MessageType: {
67
71
  values: {
68
- MessageType_GetProtoVersion: 60200,
69
- MessageType_ProtoVersion: 60201,
72
+ MessageType_ProtocolInfoRequest: 60200,
73
+ MessageType_ProtocolInfo: 60201,
70
74
  MessageType_Ping: 60206,
71
75
  MessageType_Success: 60207,
72
76
  },
@@ -62,7 +62,7 @@ export default class ElectronBleTransport {
62
62
  private probeProtocolV1;
63
63
  private probeProtocolV2;
64
64
  private writeWithChunking;
65
- private writeWithRetry;
65
+ private writeOnce;
66
66
  private handleNotification;
67
67
  private handleProtocolV2Notification;
68
68
  private getProtocolV2FrameQueue;
@@ -1 +1 @@
1
- {"version":3,"file":"electron-ble-transport.d.ts","sourceRoot":"","sources":["../src/electron-ble-transport.ts"],"names":[],"mappings":";AAmBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnG,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AAevC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB;CACF;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gBAAgB,CAAC,EAAE,YAAY,CAAC;CACjC,CAAC;AAuCF,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,OAAO,CAAC,SAAS,CAA0D;IAE3E,OAAO,CAAC,WAAW,CAA0D;IAE7E,IAAI,SAA0B;IAE9B,UAAU,UAAS;IAEnB,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI,CAAQ;IAExD,GAAG,CAAC,EAAE,GAAG,CAAC;IAEV,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,OAAO,CAAC,gBAAgB,CAA0B;IAElD,OAAO,CAAC,cAAc,CAAwC;IAE9D,OAAO,CAAC,mBAAmB,CAAwC;IAEnE,OAAO,CAAC,SAAS,CAAsE;IAEvF,OAAO,CAAC,YAAY,CAAoD;IAExE,OAAO,CAAC,aAAa,CAAwC;IAE7D,OAAO,CAAC,eAAe,CAAgD;IAEvE,OAAO,CAAC,oBAAoB,CAAgD;IAE5E,OAAO,CAAC,uBAAuB,CAAK;IAEpC,OAAO,CAAC,oBAAoB,CAAsC;IAElE,OAAO,CAAC,kBAAkB,CAAsC;IAEhE,OAAO,CAAC,kBAAkB,CAAkC;IAE5D,OAAO,CAAC,qBAAqB,CAAK;IAElC,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,kBAAkB;IA0B1B,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY;IAcxC,SAAS,CAAC,UAAU,EAAE,GAAG;IAKzB,mBAAmB,CAAC,UAAU,EAAE,GAAG;IAK7B,MAAM;IAIN,SAAS,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAqBxC,OAAO,CAAC,KAAK,EAAE,eAAe;;;;;;;;;;;IAuF9B,OAAO,CAAC,EAAE,EAAE,MAAM;IAexB,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,kBAAkB;YAMZ,cAAc;IA+C5B,OAAO,CAAC,8BAA8B;YAgBxB,iCAAiC;YAoCjC,eAAe;YAgBf,eAAe;YAuBf,iBAAiB;YAsBjB,cAAc;IA4B5B,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,4BAA4B;IA2BpC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,sBAAsB;YAIhB,mBAAmB;IAiBjC,OAAO,CAAC,4BAA4B;IAgB9B,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,oBAAoB;YA+BlB,cAAc;YAuEd,cAAc;IAmF5B,OAAO,CAAC,6BAA6B;IAsCrC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;CAGxD"}
1
+ {"version":3,"file":"electron-ble-transport.d.ts","sourceRoot":"","sources":["../src/electron-ble-transport.ts"],"names":[],"mappings":";AAmBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnG,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AAevC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB;CACF;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gBAAgB,CAAC,EAAE,YAAY,CAAC;CACjC,CAAC;AAqCF,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,OAAO,CAAC,SAAS,CAA0D;IAE3E,OAAO,CAAC,WAAW,CAA0D;IAE7E,IAAI,SAA0B;IAE9B,UAAU,UAAS;IAEnB,UAAU,EAAE,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI,CAAQ;IAExD,GAAG,CAAC,EAAE,GAAG,CAAC;IAEV,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,OAAO,CAAC,gBAAgB,CAA0B;IAElD,OAAO,CAAC,cAAc,CAAwC;IAE9D,OAAO,CAAC,mBAAmB,CAAwC;IAEnE,OAAO,CAAC,SAAS,CAAsE;IAEvF,OAAO,CAAC,YAAY,CAAoD;IAExE,OAAO,CAAC,aAAa,CAAwC;IAE7D,OAAO,CAAC,eAAe,CAAgD;IAEvE,OAAO,CAAC,oBAAoB,CAAgD;IAE5E,OAAO,CAAC,uBAAuB,CAAK;IAEpC,OAAO,CAAC,oBAAoB,CAAsC;IAElE,OAAO,CAAC,kBAAkB,CAAsC;IAEhE,OAAO,CAAC,kBAAkB,CAAkC;IAE5D,OAAO,CAAC,qBAAqB,CAAK;IAElC,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,kBAAkB;IA0B1B,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY;IAcxC,SAAS,CAAC,UAAU,EAAE,GAAG;IAKzB,mBAAmB,CAAC,UAAU,EAAE,GAAG;IAK7B,MAAM;IAIN,SAAS,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAqBxC,OAAO,CAAC,KAAK,EAAE,eAAe;;;;;;;;;;;IAuF9B,OAAO,CAAC,EAAE,EAAE,MAAM;IAexB,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,kBAAkB;YAMZ,cAAc;IA+C5B,OAAO,CAAC,8BAA8B;YAgBxB,iCAAiC;YAoCjC,eAAe;YAgBf,eAAe;YAuBf,iBAAiB;YAsBjB,SAAS;IASvB,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,4BAA4B;IA2BpC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,sBAAsB;YAIhB,mBAAmB;IAiBjC,OAAO,CAAC,4BAA4B;IAgB9B,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,oBAAoB;YA+BlB,cAAc;YAuEd,cAAc;IAmF5B,OAAO,CAAC,6BAA6B;IAsCrC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;CAGxD"}
package/dist/index.d.ts CHANGED
@@ -53,6 +53,7 @@ declare class WebUsbTransport {
53
53
  private getTransferInData;
54
54
  private toArrayBuffer;
55
55
  private transferOutWithRetry;
56
+ private transferOutOnce;
56
57
  private transferInWithRetry;
57
58
  private resetConnectionAfterProbe;
58
59
  private withProtocolReadTimeout;
@@ -126,7 +127,7 @@ declare class ElectronBleTransport {
126
127
  private probeProtocolV1;
127
128
  private probeProtocolV2;
128
129
  private writeWithChunking;
129
- private writeWithRetry;
130
+ private writeOnce;
130
131
  private handleNotification;
131
132
  private handleProtocolV2Notification;
132
133
  private getProtocolV2FrameQueue;
package/dist/index.js CHANGED
@@ -420,19 +420,11 @@ class WebUsbTransport {
420
420
  return copied.buffer;
421
421
  }
422
422
  transferOutWithRetry(path, packet) {
423
- var _a;
424
423
  return __awaiter(this, void 0, void 0, function* () {
425
424
  let lastError;
426
425
  for (let attempt = 1; attempt <= PACKET_IO_MAX_RETRIES; attempt += 1) {
427
426
  try {
428
- const device = yield this.findDevice(path);
429
- if (!device.opened) {
430
- yield this.connect(path, false);
431
- }
432
- const endpoints = this.deviceEndpoints.get(path);
433
- const endpointOut = (_a = endpoints === null || endpoints === void 0 ? void 0 : endpoints.endpointOut) !== null && _a !== void 0 ? _a : this.endpointId;
434
- const transferBuffer = this.toArrayBuffer(packet.buffer.slice(packet.byteOffset, packet.byteOffset + packet.byteLength));
435
- yield device.transferOut(endpointOut, transferBuffer);
427
+ yield this.transferOutOnce(path, packet);
436
428
  return;
437
429
  }
438
430
  catch (error) {
@@ -453,6 +445,19 @@ class WebUsbTransport {
453
445
  throw lastError;
454
446
  });
455
447
  }
448
+ transferOutOnce(path, packet) {
449
+ var _a;
450
+ return __awaiter(this, void 0, void 0, function* () {
451
+ const device = yield this.findDevice(path);
452
+ if (!device.opened) {
453
+ yield this.connect(path, false);
454
+ }
455
+ const endpoints = this.deviceEndpoints.get(path);
456
+ const endpointOut = (_a = endpoints === null || endpoints === void 0 ? void 0 : endpoints.endpointOut) !== null && _a !== void 0 ? _a : this.endpointId;
457
+ const transferBuffer = this.toArrayBuffer(packet.buffer.slice(packet.byteOffset, packet.byteOffset + packet.byteLength));
458
+ yield device.transferOut(endpointOut, transferBuffer);
459
+ });
460
+ }
456
461
  transferInWithRetry(path, length, cancelToken) {
457
462
  var _a;
458
463
  return __awaiter(this, void 0, void 0, function* () {
@@ -642,7 +647,7 @@ class WebUsbTransport {
642
647
  protocolV2: this.messagesV2,
643
648
  },
644
649
  router: transport.PROTOCOL_V2_CHANNEL_USB,
645
- writeFrame: (frame) => this.transferOutWithRetry(path, frame),
650
+ writeFrame: (frame) => this.transferOutOnce(path, frame),
646
651
  readFrame: () => this.receiveProtocolV2Frame(path, this.protocolV2ReadTimeouts.get(path)),
647
652
  logger: this.Log,
648
653
  logPrefix: 'ProtocolV2 WebUSB',
@@ -761,8 +766,6 @@ function inferProtocolHintFromDeviceName(name) {
761
766
  const toBleDescriptor = (device, protocolType) => (Object.assign({ id: device.id, name: device.name, path: device.id, debug: false, commType: 'electron-ble' }, (protocolType ? { protocolType } : {})));
762
767
  const BLE_PACKET_SIZE = 192;
763
768
  const BLE_WRITE_DELAY_MS = 5;
764
- const BLE_WRITE_MAX_RETRIES = 3;
765
- const BLE_WRITE_RETRY_DELAY_MS = 300;
766
769
  const BLE_RESPONSE_TIMEOUT_MS = 30000;
767
770
  const PROTOCOL_PROBE_TIMEOUT_MS = 1000;
768
771
  const PROTOCOL_V2_PROBE_TIMEOUT_MS = 5000;
@@ -1120,42 +1123,28 @@ class ElectronBleTransport {
1120
1123
  const totalBytes = hexData.length / 2;
1121
1124
  if (totalBytes <= BLE_PACKET_SIZE) {
1122
1125
  yield hdShared.wait(BLE_WRITE_DELAY_MS);
1123
- yield this.writeWithRetry(uuid, hexData);
1126
+ yield this.writeOnce(uuid, hexData);
1124
1127
  return;
1125
1128
  }
1126
1129
  for (let offset = 0; offset < hexData.length;) {
1127
1130
  const chunkHexLen = Math.min(BLE_PACKET_SIZE * 2, hexData.length - offset);
1128
1131
  const chunkHex = hexData.substring(offset, offset + chunkHexLen);
1129
1132
  offset += chunkHexLen;
1130
- yield this.writeWithRetry(uuid, chunkHex);
1133
+ yield this.writeOnce(uuid, chunkHex);
1131
1134
  if (offset < hexData.length) {
1132
1135
  yield hdShared.wait(BLE_WRITE_DELAY_MS);
1133
1136
  }
1134
1137
  }
1135
1138
  });
1136
1139
  }
1137
- writeWithRetry(uuid, hexData) {
1138
- var _a, _b, _c;
1140
+ writeOnce(uuid, hexData) {
1141
+ var _a;
1139
1142
  return __awaiter(this, void 0, void 0, function* () {
1140
- let lastError;
1141
1143
  const nobleBle = (_a = window.desktopApi) === null || _a === void 0 ? void 0 : _a.nobleBle;
1142
1144
  if (!nobleBle) {
1143
1145
  throw new Error('Noble BLE API not available');
1144
1146
  }
1145
- for (let attempt = 1; attempt <= BLE_WRITE_MAX_RETRIES; attempt++) {
1146
- try {
1147
- yield nobleBle.write(uuid, hexData);
1148
- return;
1149
- }
1150
- catch (error) {
1151
- lastError = error;
1152
- (_b = this.Log) === null || _b === void 0 ? void 0 : _b.error(`[Electron BLE] write failed (attempt ${attempt}/${BLE_WRITE_MAX_RETRIES}):`, error);
1153
- if (attempt < BLE_WRITE_MAX_RETRIES) {
1154
- yield hdShared.wait(BLE_WRITE_RETRY_DELAY_MS);
1155
- }
1156
- }
1157
- }
1158
- throw hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.BleWriteCharacteristicError, `BLE write failed after ${BLE_WRITE_MAX_RETRIES} attempts: ${(_c = lastError === null || lastError === void 0 ? void 0 : lastError.message) !== null && _c !== void 0 ? _c : lastError}`);
1147
+ yield nobleBle.write(uuid, hexData);
1159
1148
  });
1160
1149
  }
1161
1150
  handleNotification(deviceId, hexData) {
package/dist/webusb.d.ts CHANGED
@@ -50,6 +50,7 @@ export default class WebUsbTransport {
50
50
  private getTransferInData;
51
51
  private toArrayBuffer;
52
52
  private transferOutWithRetry;
53
+ private transferOutOnce;
53
54
  private transferInWithRetry;
54
55
  private resetConnectionAfterProbe;
55
56
  private withProtocolReadTimeout;
@@ -1 +1 @@
1
- {"version":3,"file":"webusb.d.ts","sourceRoot":"","sources":["../src/webusb.ts"],"names":[],"mappings":";AACA,OAAO,SAWN,MAAM,wBAAwB,CAAC;AAIhC,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAqChC,MAAM,WAAW,UAAW,SAAQ,oBAAoB;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAaD,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,QAAQ,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IAGlE,UAAU,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IAGpE,OAAO,CAAC,cAAc,CAAwC;IAE9D,OAAO,CAAC,mBAAmB,CAAwC;IAGnE,OAAO,CAAC,oBAAoB,CAAoD;IAGhF,OAAO,CAAC,kBAAkB,CAA6C;IAGvE,OAAO,CAAC,sBAAsB,CAA8C;IAG5E,OAAO,CAAC,eAAe,CAA2C;IAOlE,OAAO,CAAC,eAAe,CAA6C;IAEpE,OAAO,CAAC,iBAAiB,CAAK;IAE9B,IAAI,SAAqB;IAEzB,OAAO,UAAS;IAEhB,UAAU,UAAS;IAEnB,GAAG,CAAC,EAAE,GAAG,CAAC;IAEV,GAAG,CAAC,EAAE,GAAG,CAAC;IAMV,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAM;IAEnC,eAAe,SAAoB;IAEnC,UAAU,SAAe;IAEzB,WAAW,SAAgB;IAK3B,IAAI,CAAC,MAAM,EAAE,GAAG;IAgBhB,SAAS,CAAC,UAAU,EAAE,GAAG;IASzB,mBAAmB,CAAC,UAAU,EAAE,GAAG;IAY7B,kBAAkB;IAmBlB,SAAS;IASf,OAAO,CAAC,aAAa;IAmBf,mBAAmB;IAsCnB,OAAO,CAAC,KAAK,EAAE,YAAY;IA0BjC,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,4BAA4B;YAOtB,cAAc;IA6CtB,UAAU,CAAC,IAAI,EAAE,MAAM;IAwBvB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAkB1C,OAAO,CAAC,iBAAiB;IAiCnB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;YA0CpC,eAAe;YAmBf,iBAAiB;IAezB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIvE,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,wBAAwB;YAalB,yBAAyB;IAiCvC,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,aAAa;YASP,oBAAoB;YAoCpB,mBAAmB;YA2CnB,yBAAyB;YAyBzB,uBAAuB;YAoCvB,eAAe;YAcf,eAAe;IAiBvB,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,oBAAoB;YAkClB,cAAc;YAkCd,cAAc;YA4Cd,sBAAsB;IA4C9B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAgD5C,OAAO,CAAC,IAAI,EAAE,MAAM;IAiB1B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;CAGxD"}
1
+ {"version":3,"file":"webusb.d.ts","sourceRoot":"","sources":["../src/webusb.ts"],"names":[],"mappings":";AACA,OAAO,SAWN,MAAM,wBAAwB,CAAC;AAIhC,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAqChC,MAAM,WAAW,UAAW,SAAQ,oBAAoB;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAaD,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,QAAQ,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IAGlE,UAAU,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IAGpE,OAAO,CAAC,cAAc,CAAwC;IAE9D,OAAO,CAAC,mBAAmB,CAAwC;IAGnE,OAAO,CAAC,oBAAoB,CAAoD;IAGhF,OAAO,CAAC,kBAAkB,CAA6C;IAGvE,OAAO,CAAC,sBAAsB,CAA8C;IAG5E,OAAO,CAAC,eAAe,CAA2C;IAOlE,OAAO,CAAC,eAAe,CAA6C;IAEpE,OAAO,CAAC,iBAAiB,CAAK;IAE9B,IAAI,SAAqB;IAEzB,OAAO,UAAS;IAEhB,UAAU,UAAS;IAEnB,GAAG,CAAC,EAAE,GAAG,CAAC;IAEV,GAAG,CAAC,EAAE,GAAG,CAAC;IAMV,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAM;IAEnC,eAAe,SAAoB;IAEnC,UAAU,SAAe;IAEzB,WAAW,SAAgB;IAK3B,IAAI,CAAC,MAAM,EAAE,GAAG;IAgBhB,SAAS,CAAC,UAAU,EAAE,GAAG;IASzB,mBAAmB,CAAC,UAAU,EAAE,GAAG;IAY7B,kBAAkB;IAmBlB,SAAS;IASf,OAAO,CAAC,aAAa;IAmBf,mBAAmB;IAsCnB,OAAO,CAAC,KAAK,EAAE,YAAY;IA0BjC,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,4BAA4B;YAOtB,cAAc;IA6CtB,UAAU,CAAC,IAAI,EAAE,MAAM;IAwBvB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAkB1C,OAAO,CAAC,iBAAiB;IAiCnB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;YA0CpC,eAAe;YAmBf,iBAAiB;IAezB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIvE,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,wBAAwB;YAalB,yBAAyB;IAiCvC,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,aAAa;YASP,oBAAoB;YA2BpB,eAAe;YAaf,mBAAmB;YA2CnB,yBAAyB;YAyBzB,uBAAuB;YAoCvB,eAAe;YAcf,eAAe;IAiBvB,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,oBAAoB;YAkClB,cAAc;YAkCd,cAAc;YA4Cd,sBAAsB;IA4C9B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAgD5C,OAAO,CAAC,IAAI,EAAE,MAAM;IAiB1B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;CAGxD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/hd-transport-web-device",
3
- "version": "1.2.0-alpha.2",
3
+ "version": "1.2.0-alpha.4",
4
4
  "author": "OneKey",
5
5
  "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
6
6
  "license": "MIT",
@@ -20,13 +20,13 @@
20
20
  "lint:fix": "eslint . --fix"
21
21
  },
22
22
  "dependencies": {
23
- "@onekeyfe/hd-shared": "1.2.0-alpha.2",
24
- "@onekeyfe/hd-transport": "1.2.0-alpha.2"
23
+ "@onekeyfe/hd-shared": "1.2.0-alpha.4",
24
+ "@onekeyfe/hd-transport": "1.2.0-alpha.4"
25
25
  },
26
26
  "devDependencies": {
27
- "@onekeyfe/hd-transport-electron": "1.2.0-alpha.2",
27
+ "@onekeyfe/hd-transport-electron": "1.2.0-alpha.4",
28
28
  "@types/w3c-web-usb": "^1.0.6",
29
29
  "@types/web-bluetooth": "^0.0.17"
30
30
  },
31
- "gitHead": "6c183b7f7027f4b4d3db4f427f6360351a6c6680"
31
+ "gitHead": "6f83d130f022a75003385bc4b2386cd0b2b539b5"
32
32
  }
@@ -72,8 +72,6 @@ const toBleDescriptor = (
72
72
 
73
73
  const BLE_PACKET_SIZE = 192;
74
74
  const BLE_WRITE_DELAY_MS = 5;
75
- const BLE_WRITE_MAX_RETRIES = 3;
76
- const BLE_WRITE_RETRY_DELAY_MS = 300;
77
75
  const BLE_RESPONSE_TIMEOUT_MS = 30_000;
78
76
  const PROTOCOL_PROBE_TIMEOUT_MS = 1000;
79
77
  const PROTOCOL_V2_PROBE_TIMEOUT_MS = 5000;
@@ -496,7 +494,7 @@ export default class ElectronBleTransport {
496
494
 
497
495
  if (totalBytes <= BLE_PACKET_SIZE) {
498
496
  await wait(BLE_WRITE_DELAY_MS);
499
- await this.writeWithRetry(uuid, hexData);
497
+ await this.writeOnce(uuid, hexData);
500
498
  return;
501
499
  }
502
500
 
@@ -505,7 +503,7 @@ export default class ElectronBleTransport {
505
503
  const chunkHex = hexData.substring(offset, offset + chunkHexLen);
506
504
  offset += chunkHexLen;
507
505
 
508
- await this.writeWithRetry(uuid, chunkHex);
506
+ await this.writeOnce(uuid, chunkHex);
509
507
 
510
508
  if (offset < hexData.length) {
511
509
  await wait(BLE_WRITE_DELAY_MS);
@@ -513,32 +511,13 @@ export default class ElectronBleTransport {
513
511
  }
514
512
  }
515
513
 
516
- private async writeWithRetry(uuid: string, hexData: string): Promise<void> {
517
- let lastError: any;
514
+ private async writeOnce(uuid: string, hexData: string): Promise<void> {
518
515
  const nobleBle = window.desktopApi?.nobleBle;
519
516
  if (!nobleBle) {
520
517
  throw new Error('Noble BLE API not available');
521
518
  }
522
519
 
523
- for (let attempt = 1; attempt <= BLE_WRITE_MAX_RETRIES; attempt++) {
524
- try {
525
- await nobleBle.write(uuid, hexData);
526
- return;
527
- } catch (error) {
528
- lastError = error;
529
- this.Log?.error(
530
- `[Electron BLE] write failed (attempt ${attempt}/${BLE_WRITE_MAX_RETRIES}):`,
531
- error
532
- );
533
- if (attempt < BLE_WRITE_MAX_RETRIES) {
534
- await wait(BLE_WRITE_RETRY_DELAY_MS);
535
- }
536
- }
537
- }
538
- throw ERRORS.TypedError(
539
- HardwareErrorCode.BleWriteCharacteristicError,
540
- `BLE write failed after ${BLE_WRITE_MAX_RETRIES} attempts: ${lastError?.message ?? lastError}`
541
- );
520
+ await nobleBle.write(uuid, hexData);
542
521
  }
543
522
 
544
523
  private handleNotification(deviceId: string, hexData: string): void {
package/src/webusb.ts CHANGED
@@ -571,16 +571,7 @@ export default class WebUsbTransport {
571
571
  let lastError: unknown;
572
572
  for (let attempt = 1; attempt <= PACKET_IO_MAX_RETRIES; attempt += 1) {
573
573
  try {
574
- const device = await this.findDevice(path);
575
- if (!device.opened) {
576
- await this.connect(path, false);
577
- }
578
- const endpoints = this.deviceEndpoints.get(path);
579
- const endpointOut = endpoints?.endpointOut ?? this.endpointId;
580
- const transferBuffer = this.toArrayBuffer(
581
- packet.buffer.slice(packet.byteOffset, packet.byteOffset + packet.byteLength)
582
- );
583
- await device.transferOut(endpointOut, transferBuffer);
574
+ await this.transferOutOnce(path, packet);
584
575
  return;
585
576
  } catch (error) {
586
577
  lastError = error;
@@ -603,6 +594,19 @@ export default class WebUsbTransport {
603
594
  throw lastError;
604
595
  }
605
596
 
597
+ private async transferOutOnce(path: string, packet: Uint8Array) {
598
+ const device = await this.findDevice(path);
599
+ if (!device.opened) {
600
+ await this.connect(path, false);
601
+ }
602
+ const endpoints = this.deviceEndpoints.get(path);
603
+ const endpointOut = endpoints?.endpointOut ?? this.endpointId;
604
+ const transferBuffer = this.toArrayBuffer(
605
+ packet.buffer.slice(packet.byteOffset, packet.byteOffset + packet.byteLength)
606
+ );
607
+ await device.transferOut(endpointOut, transferBuffer);
608
+ }
609
+
606
610
  private async transferInWithRetry(
607
611
  path: string,
608
612
  length: number,
@@ -835,7 +839,7 @@ export default class WebUsbTransport {
835
839
  protocolV2: this.messagesV2,
836
840
  },
837
841
  router: PROTOCOL_V2_CHANNEL_USB,
838
- writeFrame: (frame: Uint8Array) => this.transferOutWithRetry(path, frame),
842
+ writeFrame: (frame: Uint8Array) => this.transferOutOnce(path, frame),
839
843
  readFrame: () => this.receiveProtocolV2Frame(path, this.protocolV2ReadTimeouts.get(path)),
840
844
  logger: this.Log,
841
845
  logPrefix: 'ProtocolV2 WebUSB',