@onekeyfe/hd-transport-react-native 0.0.10 → 0.1.2

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.
@@ -1,5 +1,7 @@
1
1
  export declare const PERMISSION_ERROR = "Bluetooth required to be turned on";
2
2
  export declare const LOCATION_ERROR = "Device is not authorized to use BluetoothLE";
3
+ export declare const IOS_PACKET_LENGTH = 128;
4
+ export declare const ANDROID_PACKET_LENGTH = 192;
3
5
  export declare const isOnekeyDevice: (name: string | null, id?: string | undefined) => boolean;
4
6
  export declare const getBluetoothServiceUuids: () => string[];
5
7
  export declare const getInfosForServiceUuid: (serviceUuid: string, deviceType: 'classic') => {
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,uCAAuC,CAAC;AACrE,eAAO,MAAM,cAAc,gDAAgD,CAAC;AAE5E,eAAO,MAAM,cAAc,SAAU,MAAM,GAAG,IAAI,8BAAgB,OAYjE,CAAC;AA8BF,eAAO,MAAM,wBAAwB,gBAA0B,CAAC;AAChE,eAAO,MAAM,sBAAsB,gBAAiB,MAAM,cAAc,SAAS;iBA1BhE,MAAM;;;QAoCtB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,uCAAuC,CAAC;AACrE,eAAO,MAAM,cAAc,gDAAgD,CAAC;AAE5E,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,eAAO,MAAM,cAAc,SAAU,MAAM,GAAG,IAAI,8BAAgB,OAYjE,CAAC;AA8BF,eAAO,MAAM,wBAAwB,gBAA0B,CAAC;AAChE,eAAO,MAAM,sBAAsB,gBAAiB,MAAM,cAAc,SAAS;iBA1BhE,MAAM;;;QAoCtB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -39,6 +39,7 @@ declare class ReactNativeBleTransport {
39
39
  release(uuid: string): Promise<boolean>;
40
40
  call(uuid: string, name: string, data: Record<string, unknown>): Promise<any>;
41
41
  stop(): void;
42
+ cancel(): void;
42
43
  }
43
44
 
44
45
  export { LOCATION_ERROR, PERMISSION_ERROR, ReactNativeBleTransport as default };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,SAAiC,MAAM,wBAAwB,CAAC;AACvE,OAAO,EACL,UAAU,IAAI,aAAa,EAC3B,MAAM,EAEN,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,gBAAgB,EAChB,cAAc,EAIf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAA4B,MAAM,kBAAkB,CAAC;AAItE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAmBjE,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAC1C,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IAEzC,SAAS,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IAEnE,UAAU,UAAS;IAEnB,OAAO,UAAS;IAEhB,WAAW,SAAQ;IAEnB,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAQ;gBAE5B,OAAO,EAAE,gBAAgB;IAIrC,IAAI;IAEJ,SAAS,CAAC,UAAU,EAAE,GAAG;IAMzB,MAAM;IAIN,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC;IAYjC,SAAS;IAoET,OAAO,CAAC,KAAK,EAAE,eAAe;;;IA2JpC,sBAAsB,CAAC,cAAc,EAAE,cAAc;IA+C/C,OAAO,CAAC,IAAI,EAAE,MAAM;IAepB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAmDpE,IAAI;CAGL;AAED,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,SAAiC,MAAM,wBAAwB,CAAC;AACvE,OAAO,EACL,UAAU,IAAI,aAAa,EAC3B,MAAM,EAEN,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EACL,gBAAgB,EAChB,cAAc,EAMf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAA4B,MAAM,kBAAkB,CAAC;AAItE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAmBjE,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAC1C,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IAEzC,SAAS,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IAEnE,UAAU,UAAS;IAEnB,OAAO,UAAS;IAEhB,WAAW,SAAQ;IAEnB,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAQ;gBAE5B,OAAO,EAAE,gBAAgB;IAIrC,IAAI;IAEJ,SAAS,CAAC,UAAU,EAAE,GAAG;IAMzB,MAAM;IAIN,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC;IAYjC,SAAS;IAoET,OAAO,CAAC,KAAK,EAAE,eAAe;;;IA2JpC,sBAAsB,CAAC,cAAc,EAAE,cAAc;IA+C/C,OAAO,CAAC,IAAI,EAAE,MAAM;IAepB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA4EpE,IAAI;IAIJ,MAAM;CAOP;AAED,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -6,11 +6,13 @@ var reactNative = require('react-native');
6
6
  var buffer = require('buffer');
7
7
  var transport = require('@onekeyfe/hd-transport');
8
8
  var reactNativeBlePlx = require('react-native-ble-plx');
9
+ var ByteBuffer = require('bytebuffer');
9
10
  var BleManager = require('react-native-ble-manager');
10
11
 
11
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
13
 
13
14
  var transport__default = /*#__PURE__*/_interopDefaultLegacy(transport);
15
+ var ByteBuffer__default = /*#__PURE__*/_interopDefaultLegacy(ByteBuffer);
14
16
  var BleManager__default = /*#__PURE__*/_interopDefaultLegacy(BleManager);
15
17
 
16
18
  /******************************************************************************
@@ -58,6 +60,8 @@ const getBondedDevices = () => __awaiter(void 0, void 0, void 0, function* () {
58
60
 
59
61
  const PERMISSION_ERROR = 'Bluetooth required to be turned on';
60
62
  const LOCATION_ERROR = 'Device is not authorized to use BluetoothLE';
63
+ const IOS_PACKET_LENGTH = 128;
64
+ const ANDROID_PACKET_LENGTH = 192;
61
65
  const isOnekeyDevice = (name, id) => {
62
66
  var _a;
63
67
  if ((_a = id === null || id === void 0 ? void 0 : id.startsWith) === null || _a === void 0 ? void 0 : _a.call(id, 'MI')) {
@@ -479,16 +483,41 @@ class ReactNativeBleTransport {
479
483
  const messages = this._messages;
480
484
  console.log('transport-react-native', 'call-', ' name: ', name, ' data: ', data);
481
485
  const buffers = buildBuffers(messages, name, data);
482
- for (const o of buffers) {
483
- const outData = o.toString('base64');
484
- console.log('@onekey/hd-ble-sdk send hex strting: ', o.toString('hex'));
485
- try {
486
- yield transport.writeCharacteristic.writeWithResponse(outData);
486
+ if (name === 'FirmwareUpload') {
487
+ const packetCapacity = reactNative.Platform.OS === 'ios' ? IOS_PACKET_LENGTH : ANDROID_PACKET_LENGTH;
488
+ let index = 0;
489
+ let chunk = ByteBuffer__default["default"].allocate(packetCapacity);
490
+ while (index < buffers.length) {
491
+ const buffer = buffers[index].toBuffer();
492
+ chunk.append(buffer);
493
+ index += 1;
494
+ if (chunk.offset === packetCapacity || index >= buffers.length) {
495
+ chunk.reset();
496
+ console.log('@onekey/hd-ble-sdk send more packet hex strting: ', chunk.toString('hex'));
497
+ try {
498
+ yield transport.writeCharacteristic.writeWithoutResponse(chunk.toString('base64'));
499
+ chunk = ByteBuffer__default["default"].allocate(packetCapacity);
500
+ }
501
+ catch (e) {
502
+ this.runPromise = null;
503
+ console.log('writeCharacteristic write error: ', e);
504
+ return;
505
+ }
506
+ }
487
507
  }
488
- catch (e) {
489
- this.runPromise = null;
490
- console.log('writeCharacteristic write error: ', e);
491
- return;
508
+ }
509
+ else {
510
+ for (const o of buffers) {
511
+ const outData = o.toString('base64');
512
+ console.log('@onekey/hd-ble-sdk send hex strting: ', o.toString('hex'));
513
+ try {
514
+ yield transport.writeCharacteristic.writeWithResponse(outData);
515
+ }
516
+ catch (e) {
517
+ this.runPromise = null;
518
+ console.log('writeCharacteristic write error: ', e);
519
+ return;
520
+ }
492
521
  }
493
522
  }
494
523
  try {
@@ -512,6 +541,11 @@ class ReactNativeBleTransport {
512
541
  stop() {
513
542
  this.stopped = true;
514
543
  }
544
+ cancel() {
545
+ console.log('transport-react-native canceled');
546
+ if (this.runPromise) ;
547
+ this.runPromise = null;
548
+ }
515
549
  }
516
550
 
517
551
  exports.LOCATION_ERROR = LOCATION_ERROR;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/hd-transport-react-native",
3
- "version": "0.0.10",
3
+ "version": "0.1.2",
4
4
  "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -20,9 +20,9 @@
20
20
  "lint:fix": "eslint . --fix"
21
21
  },
22
22
  "dependencies": {
23
- "@onekeyfe/hd-transport": "^0.0.10",
23
+ "@onekeyfe/hd-transport": "^0.1.2",
24
24
  "react-native-ble-manager": "^8.1.0",
25
25
  "react-native-ble-plx": "^2.0.3"
26
26
  },
27
- "gitHead": "b1f3f06c56fda840f4e55f2d033f7b84f16e8873"
27
+ "gitHead": "5640e7870a99d8f3bade996fb5f57af055c749d8"
28
28
  }
package/src/constants.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  export const PERMISSION_ERROR = 'Bluetooth required to be turned on';
2
2
  export const LOCATION_ERROR = 'Device is not authorized to use BluetoothLE';
3
3
 
4
+ export const IOS_PACKET_LENGTH = 128;
5
+ export const ANDROID_PACKET_LENGTH = 192;
6
+
4
7
  export const isOnekeyDevice = (name: string | null, id?: string): boolean => {
5
8
  if (id?.startsWith?.('MI')) {
6
9
  return true;
package/src/index.ts CHANGED
@@ -8,6 +8,7 @@ import {
8
8
  Characteristic,
9
9
  ScanMode,
10
10
  } from 'react-native-ble-plx';
11
+ import ByteBuffer from 'bytebuffer';
11
12
  import { initializeBleManager, getConnectedDeviceIds, getBondedDevices } from './BleManager';
12
13
  import { subscribeBleOn } from './subscribeBleOn';
13
14
  import {
@@ -16,6 +17,8 @@ import {
16
17
  isOnekeyDevice,
17
18
  getBluetoothServiceUuids,
18
19
  getInfosForServiceUuid,
20
+ IOS_PACKET_LENGTH,
21
+ ANDROID_PACKET_LENGTH,
19
22
  } from './constants';
20
23
  import { Deferred, create as createDeferred } from './utils/deferred';
21
24
  import { isHeaderChunk } from './utils/validateNotify';
@@ -388,17 +391,42 @@ export default class ReactNativeBleTransport {
388
391
  const messages = this._messages;
389
392
  console.log('transport-react-native', 'call-', ' name: ', name, ' data: ', data);
390
393
  const buffers = buildBuffers(messages, name, data);
391
- for (const o of buffers) {
392
- const outData = o.toString('base64');
393
- console.log('@onekey/hd-ble-sdk send hex strting: ', o.toString('hex'));
394
- try {
395
- await transport.writeCharacteristic.writeWithResponse(outData);
396
- } catch (e) {
397
- this.runPromise = null;
398
- console.log('writeCharacteristic write error: ', e);
399
- return;
394
+
395
+ if (name === 'FirmwareUpload') {
396
+ const packetCapacity = Platform.OS === 'ios' ? IOS_PACKET_LENGTH : ANDROID_PACKET_LENGTH;
397
+ let index = 0;
398
+ let chunk = ByteBuffer.allocate(packetCapacity);
399
+ while (index < buffers.length) {
400
+ const buffer = buffers[index].toBuffer();
401
+ chunk.append(buffer);
402
+ index += 1;
403
+ if (chunk.offset === packetCapacity || index >= buffers.length) {
404
+ chunk.reset();
405
+ console.log('@onekey/hd-ble-sdk send more packet hex strting: ', chunk.toString('hex'));
406
+ try {
407
+ await transport.writeCharacteristic.writeWithoutResponse(chunk.toString('base64'));
408
+ chunk = ByteBuffer.allocate(packetCapacity);
409
+ } catch (e) {
410
+ this.runPromise = null;
411
+ console.log('writeCharacteristic write error: ', e);
412
+ return;
413
+ }
414
+ }
415
+ }
416
+ } else {
417
+ for (const o of buffers) {
418
+ const outData = o.toString('base64');
419
+ console.log('@onekey/hd-ble-sdk send hex strting: ', o.toString('hex'));
420
+ try {
421
+ await transport.writeCharacteristic.writeWithResponse(outData);
422
+ } catch (e) {
423
+ this.runPromise = null;
424
+ console.log('writeCharacteristic write error: ', e);
425
+ return;
426
+ }
400
427
  }
401
428
  }
429
+
402
430
  try {
403
431
  const response = await this.runPromise.promise;
404
432
 
@@ -420,6 +448,14 @@ export default class ReactNativeBleTransport {
420
448
  stop() {
421
449
  this.stopped = true;
422
450
  }
451
+
452
+ cancel() {
453
+ console.log('transport-react-native canceled');
454
+ if (this.runPromise) {
455
+ // this.runPromise.reject(new Error('Transport_CallCanceled'));
456
+ }
457
+ this.runPromise = null;
458
+ }
423
459
  }
424
460
 
425
461
  export { PERMISSION_ERROR, LOCATION_ERROR };