@onekeyfe/hd-shared 1.1.4-alpha.1 → 1.1.4-alpha.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.
@@ -55,6 +55,7 @@ export declare const HardwareErrorCode: {
55
55
  readonly NewFirmwareForceUpdate: 414;
56
56
  readonly DeviceNotSupportMethod: 415;
57
57
  readonly ForbiddenKeyPath: 416;
58
+ readonly DefectiveFirmware: 417;
58
59
  readonly NetworkError: 500;
59
60
  readonly TransportNotConfigured: 600;
60
61
  readonly TransportCallInProgress: 601;
@@ -111,9 +112,13 @@ export declare const HardwareErrorCodeMessage: HardwareErrorCodeMessageMapping;
111
112
  export declare const TypedError: (hardwareError: ErrorCodeUnion | string, message?: string, params?: any) => HardwareError;
112
113
  export declare const serializeError: (payload: any) => any;
113
114
  export declare const CreateErrorByMessage: (message: string) => HardwareError;
114
- declare const createNewFirmwareUnReleaseHardwareError: (currentVersion: string, requireVersion: string) => HardwareError;
115
- declare const createNeedUpgradeFirmwareHardwareError: (currentVersion: string, requireVersion: string) => HardwareError;
116
- declare const createNewFirmwareForceUpdateHardwareError: (connectId: string | undefined, deviceId: string | undefined) => HardwareError;
117
- declare const createDeprecatedHardwareError: (currentVersion: string, deprecatedVersion: string) => HardwareError;
118
- export { createNewFirmwareUnReleaseHardwareError, createNeedUpgradeFirmwareHardwareError, createNewFirmwareForceUpdateHardwareError, createDeprecatedHardwareError, };
115
+ declare const createNewFirmwareUnReleaseHardwareError: (currentVersion: string, requireVersion: string, methodName?: string) => HardwareError;
116
+ declare const createNeedUpgradeFirmwareHardwareError: (currentVersion: string, requireVersion: string, methodName?: string) => HardwareError;
117
+ declare const createNewFirmwareForceUpdateHardwareError: (connectId: string | undefined, deviceId: string | undefined, versionType?: 'firmware' | 'ble' | 'both', currentVersions?: {
118
+ firmware?: string;
119
+ ble?: string;
120
+ }) => HardwareError;
121
+ declare const createDeprecatedHardwareError: (currentVersion: string, deprecatedVersion: string, methodName?: string) => HardwareError;
122
+ declare const createDefectiveFirmwareError: (serialNo: string, seVersion: string, deviceType: string, connectId?: string, deviceId?: string) => HardwareError;
123
+ export { createNewFirmwareUnReleaseHardwareError, createNeedUpgradeFirmwareHardwareError, createNewFirmwareForceUpdateHardwareError, createDeprecatedHardwareError, createDefectiveFirmwareError, };
119
124
  //# sourceMappingURL=HardwareError.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HardwareError.d.ts","sourceRoot":"","sources":["../src/HardwareError.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAED,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5C,KAAK,+BAA+B,GAAG;KAAG,CAAC,IAAI,OAAO,CAAC,OAAO,iBAAiB,CAAC,GAAG,MAAM;CAAE,CAAC;AAE5F,KAAK,cAAc,GAAG,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAOxD,qBAAa,aAAc,SAAQ,KAAK;IACtC,SAAS,EAAE,cAAc,CAAkC;IAE3D,OAAO,SAAM;IAEb,MAAM,EAAE,GAAG,CAAM;gBAEL,aAAa,EAAE,cAAc,GAAG,MAAM;CAmBnD;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmXpB,CAAC;AAEX,eAAO,MAAM,wBAAwB,EAAE,+BAoI7B,CAAC;AAEX,eAAO,MAAM,UAAU,kBACN,cAAc,GAAG,MAAM,YAC5B,MAAM,WACP,GAAG,kBAMb,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,GAAG,QAe1C,CAAC;AAEF,eAAO,MAAM,oBAAoB,YAAa,MAAM,KAAG,aAOtD,CAAC;AAEF,QAAA,MAAM,uCAAuC,mBAAoB,MAAM,kBAAkB,MAAM,kBAK5F,CAAC;AAEJ,QAAA,MAAM,sCAAsC,mBAAoB,MAAM,kBAAkB,MAAM,kBAK3F,CAAC;AAEJ,QAAA,MAAM,yCAAyC,cAClC,MAAM,GAAG,SAAS,YACnB,MAAM,GAAG,SAAS,kBAM3B,CAAC;AAEJ,QAAA,MAAM,6BAA6B,mBAAoB,MAAM,qBAAqB,MAAM,kBAKrF,CAAC;AAEJ,OAAO,EACL,uCAAuC,EACvC,sCAAsC,EACtC,yCAAyC,EACzC,6BAA6B,GAC9B,CAAC"}
1
+ {"version":3,"file":"HardwareError.d.ts","sourceRoot":"","sources":["../src/HardwareError.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAED,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5C,KAAK,+BAA+B,GAAG;KAAG,CAAC,IAAI,OAAO,CAAC,OAAO,iBAAiB,CAAC,GAAG,MAAM;CAAE,CAAC;AAE5F,KAAK,cAAc,GAAG,OAAO,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAOxD,qBAAa,aAAc,SAAQ,KAAK;IACtC,SAAS,EAAE,cAAc,CAAkC;IAE3D,OAAO,SAAM;IAEb,MAAM,EAAE,GAAG,CAAM;gBAEL,aAAa,EAAE,cAAc,GAAG,MAAM;CAmBnD;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyXpB,CAAC;AAEX,eAAO,MAAM,wBAAwB,EAAE,+BAqI7B,CAAC;AAEX,eAAO,MAAM,UAAU,kBACN,cAAc,GAAG,MAAM,YAC5B,MAAM,WACP,GAAG,kBAMb,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,GAAG,QAe1C,CAAC;AAEF,eAAO,MAAM,oBAAoB,YAAa,MAAM,KAAG,aAOtD,CAAC;AAEF,QAAA,MAAM,uCAAuC,mBAC3B,MAAM,kBACN,MAAM,eACT,MAAM,kBAQpB,CAAC;AAEF,QAAA,MAAM,sCAAsC,mBAC1B,MAAM,kBACN,MAAM,eACT,MAAM,kBAQpB,CAAC;AAEF,QAAA,MAAM,yCAAyC,cAClC,MAAM,GAAG,SAAS,YACnB,MAAM,GAAG,SAAS,gBACd,UAAU,GAAG,KAAK,GAAG,MAAM,oBACvB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,kBAwCF,CAAC;AAEF,QAAA,MAAM,6BAA6B,mBACjB,MAAM,qBACH,MAAM,eACZ,MAAM,kBAQpB,CAAC;AAEF,QAAA,MAAM,4BAA4B,aACtB,MAAM,aACL,MAAM,cACL,MAAM,cACN,MAAM,aACP,MAAM,kBAWlB,CAAC;AAEF,OAAO,EACL,uCAAuC,EACvC,sCAAsC,EACtC,yCAAyC,EACzC,6BAA6B,EAC7B,4BAA4B,GAC7B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -97,6 +97,7 @@ declare const HardwareErrorCode: {
97
97
  readonly NewFirmwareForceUpdate: 414;
98
98
  readonly DeviceNotSupportMethod: 415;
99
99
  readonly ForbiddenKeyPath: 416;
100
+ readonly DefectiveFirmware: 417;
100
101
  readonly NetworkError: 500;
101
102
  readonly TransportNotConfigured: 600;
102
103
  readonly TransportCallInProgress: 601;
@@ -153,15 +154,20 @@ declare const HardwareErrorCodeMessage: HardwareErrorCodeMessageMapping;
153
154
  declare const TypedError: (hardwareError: ErrorCodeUnion | string, message?: string, params?: any) => HardwareError;
154
155
  declare const serializeError: (payload: any) => any;
155
156
  declare const CreateErrorByMessage: (message: string) => HardwareError;
156
- declare const createNewFirmwareUnReleaseHardwareError: (currentVersion: string, requireVersion: string) => HardwareError;
157
- declare const createNeedUpgradeFirmwareHardwareError: (currentVersion: string, requireVersion: string) => HardwareError;
158
- declare const createNewFirmwareForceUpdateHardwareError: (connectId: string | undefined, deviceId: string | undefined) => HardwareError;
159
- declare const createDeprecatedHardwareError: (currentVersion: string, deprecatedVersion: string) => HardwareError;
157
+ declare const createNewFirmwareUnReleaseHardwareError: (currentVersion: string, requireVersion: string, methodName?: string) => HardwareError;
158
+ declare const createNeedUpgradeFirmwareHardwareError: (currentVersion: string, requireVersion: string, methodName?: string) => HardwareError;
159
+ declare const createNewFirmwareForceUpdateHardwareError: (connectId: string | undefined, deviceId: string | undefined, versionType?: 'firmware' | 'ble' | 'both', currentVersions?: {
160
+ firmware?: string;
161
+ ble?: string;
162
+ }) => HardwareError;
163
+ declare const createDeprecatedHardwareError: (currentVersion: string, deprecatedVersion: string, methodName?: string) => HardwareError;
164
+ declare const createDefectiveFirmwareError: (serialNo: string, seVersion: string, deviceType: string, connectId?: string, deviceId?: string) => HardwareError;
160
165
 
161
166
  declare const HardwareError$1_createNewFirmwareUnReleaseHardwareError: typeof createNewFirmwareUnReleaseHardwareError;
162
167
  declare const HardwareError$1_createNeedUpgradeFirmwareHardwareError: typeof createNeedUpgradeFirmwareHardwareError;
163
168
  declare const HardwareError$1_createNewFirmwareForceUpdateHardwareError: typeof createNewFirmwareForceUpdateHardwareError;
164
169
  declare const HardwareError$1_createDeprecatedHardwareError: typeof createDeprecatedHardwareError;
170
+ declare const HardwareError$1_createDefectiveFirmwareError: typeof createDefectiveFirmwareError;
165
171
  type HardwareError$1_IHardwareError = IHardwareError;
166
172
  type HardwareError$1_HardwareError = HardwareError;
167
173
  declare const HardwareError$1_HardwareError: typeof HardwareError;
@@ -176,6 +182,7 @@ declare namespace HardwareError$1 {
176
182
  HardwareError$1_createNeedUpgradeFirmwareHardwareError as createNeedUpgradeFirmwareHardwareError,
177
183
  HardwareError$1_createNewFirmwareForceUpdateHardwareError as createNewFirmwareForceUpdateHardwareError,
178
184
  HardwareError$1_createDeprecatedHardwareError as createDeprecatedHardwareError,
185
+ HardwareError$1_createDefectiveFirmwareError as createDefectiveFirmwareError,
179
186
  HardwareError$1_IHardwareError as IHardwareError,
180
187
  HardwareError$1_HardwareError as HardwareError,
181
188
  HardwareError$1_HardwareErrorCode as HardwareErrorCode,
@@ -203,4 +210,4 @@ declare enum EFirmwareType {
203
210
  BitcoinOnly = "bitcoinonly"
204
211
  }
205
212
 
206
- export { CreateErrorByMessage, Deferred, EDeviceType, EFirmwareType, EOneKeyBleMessageKeys, HardwareError$1 as ERRORS, HardwareError, HardwareErrorCode, HardwareErrorCodeMessage, IHardwareError, ONEKEY_NOTIFY_CHARACTERISTIC_UUID, ONEKEY_SERVICE_UUID, ONEKEY_WEBUSB_FILTER, ONEKEY_WRITE_CHARACTERISTIC_UUID, TypedError, createDeferred, createDeprecatedHardwareError, createNeedUpgradeFirmwareHardwareError, createNewFirmwareForceUpdateHardwareError, createNewFirmwareUnReleaseHardwareError, isHeaderChunk, isOnekeyDevice, serializeError, wait };
213
+ export { CreateErrorByMessage, Deferred, EDeviceType, EFirmwareType, EOneKeyBleMessageKeys, HardwareError$1 as ERRORS, HardwareError, HardwareErrorCode, HardwareErrorCodeMessage, IHardwareError, ONEKEY_NOTIFY_CHARACTERISTIC_UUID, ONEKEY_SERVICE_UUID, ONEKEY_WEBUSB_FILTER, ONEKEY_WRITE_CHARACTERISTIC_UUID, TypedError, createDefectiveFirmwareError, createDeferred, createDeprecatedHardwareError, createNeedUpgradeFirmwareHardwareError, createNewFirmwareForceUpdateHardwareError, createNewFirmwareUnReleaseHardwareError, isHeaderChunk, isOnekeyDevice, serializeError, wait };
package/dist/index.js CHANGED
@@ -187,6 +187,7 @@ const HardwareErrorCode = {
187
187
  NewFirmwareForceUpdate: 414,
188
188
  DeviceNotSupportMethod: 415,
189
189
  ForbiddenKeyPath: 416,
190
+ DefectiveFirmware: 417,
190
191
  NetworkError: 500,
191
192
  TransportNotConfigured: 600,
192
193
  TransportCallInProgress: 601,
@@ -280,6 +281,7 @@ const HardwareErrorCodeMessage = {
280
281
  [HardwareErrorCode.UseDesktopToUpdateFirmware]: 'Please use OneKey desktop client to update the firmware',
281
282
  [HardwareErrorCode.DeviceNotSupportMethod]: 'Device not support this method',
282
283
  [HardwareErrorCode.ForbiddenKeyPath]: 'Forbidden key path',
284
+ [HardwareErrorCode.DefectiveFirmware]: 'Device firmware is defective, please update immediately',
283
285
  [HardwareErrorCode.NetworkError]: 'Network request error',
284
286
  [HardwareErrorCode.TransportNotConfigured]: 'Transport not configured',
285
287
  [HardwareErrorCode.TransportCallInProgress]: 'Transport call in progress',
@@ -362,10 +364,67 @@ const CreateErrorByMessage = (message) => {
362
364
  }
363
365
  return new HardwareError(message);
364
366
  };
365
- const createNewFirmwareUnReleaseHardwareError = (currentVersion, requireVersion) => TypedError(HardwareErrorCode.NewFirmwareUnRelease, 'Device firmware version is too low, please update to the latest version', { current: currentVersion, require: requireVersion });
366
- const createNeedUpgradeFirmwareHardwareError = (currentVersion, requireVersion) => TypedError(HardwareErrorCode.CallMethodNeedUpgradeFirmware, `Device firmware version is too low, please update to ${requireVersion}`, { current: currentVersion, require: requireVersion });
367
- const createNewFirmwareForceUpdateHardwareError = (connectId, deviceId) => TypedError(HardwareErrorCode.NewFirmwareForceUpdate, 'Device firmware version is too low, please update to the latest version', { connectId, deviceId });
368
- const createDeprecatedHardwareError = (currentVersion, deprecatedVersion) => TypedError(HardwareErrorCode.CallMethodDeprecated, `Device firmware version is too high, this method has been deprecated in ${deprecatedVersion}`, { current: currentVersion, deprecated: deprecatedVersion });
367
+ const createNewFirmwareUnReleaseHardwareError = (currentVersion, requireVersion, methodName) => {
368
+ const methodInfo = methodName ? ` for method '${methodName}'` : '';
369
+ return TypedError(HardwareErrorCode.NewFirmwareUnRelease, `Device firmware version is too low${methodInfo}, please update to the latest version`, { current: currentVersion, require: requireVersion, method: methodName });
370
+ };
371
+ const createNeedUpgradeFirmwareHardwareError = (currentVersion, requireVersion, methodName) => {
372
+ const methodInfo = methodName ? ` for method '${methodName}'` : '';
373
+ return TypedError(HardwareErrorCode.CallMethodNeedUpgradeFirmware, `Device firmware version is too low${methodInfo}, please update to ${requireVersion}`, { current: currentVersion, require: requireVersion, method: methodName });
374
+ };
375
+ const createNewFirmwareForceUpdateHardwareError = (connectId, deviceId, versionType, currentVersions) => {
376
+ let message = 'Device firmware version is too low, please update to the latest version';
377
+ if (versionType === 'firmware') {
378
+ const currentFirmware = (currentVersions === null || currentVersions === void 0 ? void 0 : currentVersions.firmware)
379
+ ? ` (current: ${currentVersions.firmware})`
380
+ : '';
381
+ message = `Device firmware version is too low${currentFirmware}, please update the firmware to the latest version`;
382
+ }
383
+ else if (versionType === 'ble') {
384
+ const currentBle = (currentVersions === null || currentVersions === void 0 ? void 0 : currentVersions.ble) ? ` (current: ${currentVersions.ble})` : '';
385
+ message = `Device BLE firmware version is too low${currentBle}, please update the BLE firmware to the latest version`;
386
+ }
387
+ else if (versionType === 'both') {
388
+ const currentFirmware = (currentVersions === null || currentVersions === void 0 ? void 0 : currentVersions.firmware)
389
+ ? ` firmware: ${currentVersions.firmware}`
390
+ : '';
391
+ const currentBle = (currentVersions === null || currentVersions === void 0 ? void 0 : currentVersions.ble) ? ` BLE: ${currentVersions.ble}` : '';
392
+ const currentInfo = currentFirmware || currentBle
393
+ ? ` (current -${currentFirmware}${currentFirmware && currentBle ? ',' : ''}${currentBle})`
394
+ : '';
395
+ message = `Device firmware and BLE firmware versions are too low${currentInfo}, please update both to the latest versions`;
396
+ }
397
+ else if ((currentVersions === null || currentVersions === void 0 ? void 0 : currentVersions.firmware) || (currentVersions === null || currentVersions === void 0 ? void 0 : currentVersions.ble)) {
398
+ const currentFirmware = (currentVersions === null || currentVersions === void 0 ? void 0 : currentVersions.firmware)
399
+ ? ` firmware: ${currentVersions.firmware}`
400
+ : '';
401
+ const currentBle = (currentVersions === null || currentVersions === void 0 ? void 0 : currentVersions.ble) ? ` BLE: ${currentVersions.ble}` : '';
402
+ const currentInfo = currentFirmware || currentBle
403
+ ? ` (current -${currentFirmware}${currentFirmware && currentBle ? ',' : ''}${currentBle})`
404
+ : '';
405
+ message = `Device firmware version is too low${currentInfo}, please update to the latest version`;
406
+ }
407
+ return TypedError(HardwareErrorCode.NewFirmwareForceUpdate, message, {
408
+ connectId,
409
+ deviceId,
410
+ versionType,
411
+ currentVersions,
412
+ });
413
+ };
414
+ const createDeprecatedHardwareError = (currentVersion, deprecatedVersion, methodName) => {
415
+ const methodInfo = methodName ? ` Method '${methodName}'` : 'This method';
416
+ return TypedError(HardwareErrorCode.CallMethodDeprecated, `Device firmware version is too high. ${methodInfo} has been deprecated in ${deprecatedVersion}`, { current: currentVersion, deprecated: deprecatedVersion, method: methodName });
417
+ };
418
+ const createDefectiveFirmwareError = (serialNo, seVersion, deviceType, connectId, deviceId) => {
419
+ const message = `Defective firmware detected (Serial: ${serialNo}, SE: ${seVersion}). Please update immediately.`;
420
+ return TypedError(HardwareErrorCode.DefectiveFirmware, message, {
421
+ serialNo,
422
+ seVersion,
423
+ deviceType,
424
+ connectId,
425
+ deviceId,
426
+ });
427
+ };
369
428
 
370
429
  var HardwareError$1 = /*#__PURE__*/Object.freeze({
371
430
  __proto__: null,
@@ -378,7 +437,8 @@ var HardwareError$1 = /*#__PURE__*/Object.freeze({
378
437
  createNewFirmwareUnReleaseHardwareError: createNewFirmwareUnReleaseHardwareError,
379
438
  createNeedUpgradeFirmwareHardwareError: createNeedUpgradeFirmwareHardwareError,
380
439
  createNewFirmwareForceUpdateHardwareError: createNewFirmwareForceUpdateHardwareError,
381
- createDeprecatedHardwareError: createDeprecatedHardwareError
440
+ createDeprecatedHardwareError: createDeprecatedHardwareError,
441
+ createDefectiveFirmwareError: createDefectiveFirmwareError
382
442
  });
383
443
 
384
444
  const wait = (ms) => new Promise(resolve => {
@@ -412,6 +472,7 @@ exports.ONEKEY_SERVICE_UUID = ONEKEY_SERVICE_UUID;
412
472
  exports.ONEKEY_WEBUSB_FILTER = ONEKEY_WEBUSB_FILTER;
413
473
  exports.ONEKEY_WRITE_CHARACTERISTIC_UUID = ONEKEY_WRITE_CHARACTERISTIC_UUID;
414
474
  exports.TypedError = TypedError;
475
+ exports.createDefectiveFirmwareError = createDefectiveFirmwareError;
415
476
  exports.createDeferred = createDeferred;
416
477
  exports.createDeprecatedHardwareError = createDeprecatedHardwareError;
417
478
  exports.createNeedUpgradeFirmwareHardwareError = createNeedUpgradeFirmwareHardwareError;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/hd-shared",
3
- "version": "1.1.4-alpha.1",
3
+ "version": "1.1.4-alpha.2",
4
4
  "description": "Hardware SDK's shared tool library",
5
5
  "keywords": [
6
6
  "Hardware-SDK",
@@ -25,5 +25,5 @@
25
25
  "lint": "eslint .",
26
26
  "lint:fix": "eslint . --fix"
27
27
  },
28
- "gitHead": "445b0a1622293e2e19ccb7d9e62cc43cd906eef1"
28
+ "gitHead": "90589e2c51eb9bd54651d77da60695f4e5a2aa50"
29
29
  }
@@ -250,6 +250,12 @@ export const HardwareErrorCode = {
250
250
  */
251
251
  ForbiddenKeyPath: 416,
252
252
 
253
+ /**
254
+ * Defective firmware detected
255
+ * @params:{ serialNo: string?, seVersion: string?, deviceType: string? }
256
+ */
257
+ DefectiveFirmware: 417,
258
+
253
259
  /**
254
260
  * Netword request error
255
261
  */
@@ -474,6 +480,7 @@ export const HardwareErrorCodeMessage: HardwareErrorCodeMessageMapping = {
474
480
  'Please use OneKey desktop client to update the firmware',
475
481
  [HardwareErrorCode.DeviceNotSupportMethod]: 'Device not support this method',
476
482
  [HardwareErrorCode.ForbiddenKeyPath]: 'Forbidden key path',
483
+ [HardwareErrorCode.DefectiveFirmware]: 'Device firmware is defective, please update immediately',
477
484
 
478
485
  /**
479
486
  * Network Errors
@@ -587,40 +594,116 @@ export const CreateErrorByMessage = (message: string): HardwareError => {
587
594
  return new HardwareError(message);
588
595
  };
589
596
 
590
- const createNewFirmwareUnReleaseHardwareError = (currentVersion: string, requireVersion: string) =>
591
- TypedError(
597
+ const createNewFirmwareUnReleaseHardwareError = (
598
+ currentVersion: string,
599
+ requireVersion: string,
600
+ methodName?: string
601
+ ) => {
602
+ const methodInfo = methodName ? ` for method '${methodName}'` : '';
603
+ return TypedError(
592
604
  HardwareErrorCode.NewFirmwareUnRelease,
593
- 'Device firmware version is too low, please update to the latest version',
594
- { current: currentVersion, require: requireVersion }
605
+ `Device firmware version is too low${methodInfo}, please update to the latest version`,
606
+ { current: currentVersion, require: requireVersion, method: methodName }
595
607
  );
608
+ };
596
609
 
597
- const createNeedUpgradeFirmwareHardwareError = (currentVersion: string, requireVersion: string) =>
598
- TypedError(
610
+ const createNeedUpgradeFirmwareHardwareError = (
611
+ currentVersion: string,
612
+ requireVersion: string,
613
+ methodName?: string
614
+ ) => {
615
+ const methodInfo = methodName ? ` for method '${methodName}'` : '';
616
+ return TypedError(
599
617
  HardwareErrorCode.CallMethodNeedUpgradeFirmware,
600
- `Device firmware version is too low, please update to ${requireVersion}`,
601
- { current: currentVersion, require: requireVersion }
618
+ `Device firmware version is too low${methodInfo}, please update to ${requireVersion}`,
619
+ { current: currentVersion, require: requireVersion, method: methodName }
602
620
  );
621
+ };
603
622
 
604
623
  const createNewFirmwareForceUpdateHardwareError = (
605
624
  connectId: string | undefined,
606
- deviceId: string | undefined
607
- ) =>
608
- TypedError(
609
- HardwareErrorCode.NewFirmwareForceUpdate,
610
- 'Device firmware version is too low, please update to the latest version',
611
- { connectId, deviceId }
612
- );
625
+ deviceId: string | undefined,
626
+ versionType?: 'firmware' | 'ble' | 'both',
627
+ currentVersions?: {
628
+ firmware?: string;
629
+ ble?: string;
630
+ }
631
+ ) => {
632
+ let message = 'Device firmware version is too low, please update to the latest version';
633
+
634
+ if (versionType === 'firmware') {
635
+ const currentFirmware = currentVersions?.firmware
636
+ ? ` (current: ${currentVersions.firmware})`
637
+ : '';
638
+ message = `Device firmware version is too low${currentFirmware}, please update the firmware to the latest version`;
639
+ } else if (versionType === 'ble') {
640
+ const currentBle = currentVersions?.ble ? ` (current: ${currentVersions.ble})` : '';
641
+ message = `Device BLE firmware version is too low${currentBle}, please update the BLE firmware to the latest version`;
642
+ } else if (versionType === 'both') {
643
+ const currentFirmware = currentVersions?.firmware
644
+ ? ` firmware: ${currentVersions.firmware}`
645
+ : '';
646
+ const currentBle = currentVersions?.ble ? ` BLE: ${currentVersions.ble}` : '';
647
+ const currentInfo =
648
+ currentFirmware || currentBle
649
+ ? ` (current -${currentFirmware}${currentFirmware && currentBle ? ',' : ''}${currentBle})`
650
+ : '';
651
+ message = `Device firmware and BLE firmware versions are too low${currentInfo}, please update both to the latest versions`;
652
+ } else if (currentVersions?.firmware || currentVersions?.ble) {
653
+ const currentFirmware = currentVersions?.firmware
654
+ ? ` firmware: ${currentVersions.firmware}`
655
+ : '';
656
+ const currentBle = currentVersions?.ble ? ` BLE: ${currentVersions.ble}` : '';
657
+ const currentInfo =
658
+ currentFirmware || currentBle
659
+ ? ` (current -${currentFirmware}${currentFirmware && currentBle ? ',' : ''}${currentBle})`
660
+ : '';
661
+ message = `Device firmware version is too low${currentInfo}, please update to the latest version`;
662
+ }
613
663
 
614
- const createDeprecatedHardwareError = (currentVersion: string, deprecatedVersion: string) =>
615
- TypedError(
664
+ return TypedError(HardwareErrorCode.NewFirmwareForceUpdate, message, {
665
+ connectId,
666
+ deviceId,
667
+ versionType,
668
+ currentVersions,
669
+ });
670
+ };
671
+
672
+ const createDeprecatedHardwareError = (
673
+ currentVersion: string,
674
+ deprecatedVersion: string,
675
+ methodName?: string
676
+ ) => {
677
+ const methodInfo = methodName ? ` Method '${methodName}'` : 'This method';
678
+ return TypedError(
616
679
  HardwareErrorCode.CallMethodDeprecated,
617
- `Device firmware version is too high, this method has been deprecated in ${deprecatedVersion}`,
618
- { current: currentVersion, deprecated: deprecatedVersion }
680
+ `Device firmware version is too high. ${methodInfo} has been deprecated in ${deprecatedVersion}`,
681
+ { current: currentVersion, deprecated: deprecatedVersion, method: methodName }
619
682
  );
683
+ };
684
+
685
+ const createDefectiveFirmwareError = (
686
+ serialNo: string,
687
+ seVersion: string,
688
+ deviceType: string,
689
+ connectId?: string,
690
+ deviceId?: string
691
+ ) => {
692
+ const message = `Defective firmware detected (Serial: ${serialNo}, SE: ${seVersion}). Please update immediately.`;
693
+
694
+ return TypedError(HardwareErrorCode.DefectiveFirmware, message, {
695
+ serialNo,
696
+ seVersion,
697
+ deviceType,
698
+ connectId,
699
+ deviceId,
700
+ });
701
+ };
620
702
 
621
703
  export {
622
704
  createNewFirmwareUnReleaseHardwareError,
623
705
  createNeedUpgradeFirmwareHardwareError,
624
706
  createNewFirmwareForceUpdateHardwareError,
625
707
  createDeprecatedHardwareError,
708
+ createDefectiveFirmwareError,
626
709
  };