zigbee-herdsman 6.0.1 → 6.0.3
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.
- package/CHANGELOG.md +16 -0
- package/dist/adapter/ezsp/driver/uart.js +1 -1
- package/dist/adapter/ezsp/driver/uart.js.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.js +4 -4
- package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.js +4 -4
- package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
- package/dist/controller/model/device.d.ts.map +1 -1
- package/dist/controller/model/device.js +1 -0
- package/dist/controller/model/device.js.map +1 -1
- package/package.json +14 -6
- package/.github/ISSUE_TEMPLATE/config.yml +0 -5
- package/.github/dependabot.yml +0 -22
- package/.github/workflows/ci.yml +0 -64
- package/.github/workflows/release-please.yml +0 -18
- package/.github/workflows/stale.yml +0 -20
- package/.github/workflows/typedoc.yaml +0 -47
- package/.release-please-manifest.json +0 -3
- package/.vscode/extensions.json +0 -3
- package/.vscode/settings.json +0 -11
- package/biome.json +0 -98
- package/examples/join-and-log.js +0 -24
- package/release-please-config.json +0 -9
- package/src/adapter/adapter.ts +0 -189
- package/src/adapter/adapterDiscovery.ts +0 -666
- package/src/adapter/const.ts +0 -12
- package/src/adapter/deconz/adapter/deconzAdapter.ts +0 -877
- package/src/adapter/deconz/driver/constants.ts +0 -246
- package/src/adapter/deconz/driver/driver.ts +0 -1540
- package/src/adapter/deconz/driver/frame.ts +0 -11
- package/src/adapter/deconz/driver/frameParser.ts +0 -753
- package/src/adapter/deconz/driver/parser.ts +0 -45
- package/src/adapter/deconz/driver/writer.ts +0 -22
- package/src/adapter/deconz/types.d.ts +0 -13
- package/src/adapter/ember/adapter/emberAdapter.ts +0 -2265
- package/src/adapter/ember/adapter/endpoints.ts +0 -86
- package/src/adapter/ember/adapter/oneWaitress.ts +0 -324
- package/src/adapter/ember/adapter/tokensManager.ts +0 -782
- package/src/adapter/ember/consts.ts +0 -178
- package/src/adapter/ember/enums.ts +0 -1746
- package/src/adapter/ember/ezsp/buffalo.ts +0 -1392
- package/src/adapter/ember/ezsp/consts.ts +0 -148
- package/src/adapter/ember/ezsp/enums.ts +0 -1114
- package/src/adapter/ember/ezsp/ezsp.ts +0 -9061
- package/src/adapter/ember/ezspError.ts +0 -10
- package/src/adapter/ember/types.ts +0 -866
- package/src/adapter/ember/uart/ash.ts +0 -1960
- package/src/adapter/ember/uart/consts.ts +0 -109
- package/src/adapter/ember/uart/enums.ts +0 -192
- package/src/adapter/ember/uart/parser.ts +0 -48
- package/src/adapter/ember/uart/queues.ts +0 -247
- package/src/adapter/ember/uart/writer.ts +0 -53
- package/src/adapter/ember/utils/initters.ts +0 -58
- package/src/adapter/ember/utils/math.ts +0 -73
- package/src/adapter/events.ts +0 -21
- package/src/adapter/ezsp/adapter/backup.ts +0 -109
- package/src/adapter/ezsp/adapter/ezspAdapter.ts +0 -614
- package/src/adapter/ezsp/driver/commands.ts +0 -2497
- package/src/adapter/ezsp/driver/consts.ts +0 -11
- package/src/adapter/ezsp/driver/driver.ts +0 -1002
- package/src/adapter/ezsp/driver/ezsp.ts +0 -802
- package/src/adapter/ezsp/driver/frame.ts +0 -101
- package/src/adapter/ezsp/driver/index.ts +0 -4
- package/src/adapter/ezsp/driver/multicast.ts +0 -78
- package/src/adapter/ezsp/driver/parser.ts +0 -81
- package/src/adapter/ezsp/driver/types/basic.ts +0 -201
- package/src/adapter/ezsp/driver/types/index.ts +0 -239
- package/src/adapter/ezsp/driver/types/named.ts +0 -2330
- package/src/adapter/ezsp/driver/types/struct.ts +0 -844
- package/src/adapter/ezsp/driver/uart.ts +0 -460
- package/src/adapter/ezsp/driver/utils/crc16ccitt.ts +0 -44
- package/src/adapter/ezsp/driver/utils/index.ts +0 -32
- package/src/adapter/ezsp/driver/writer.ts +0 -64
- package/src/adapter/index.ts +0 -3
- package/src/adapter/serialPort.ts +0 -58
- package/src/adapter/socketPortUtils.ts +0 -16
- package/src/adapter/tstype.ts +0 -78
- package/src/adapter/z-stack/adapter/adapter-backup.ts +0 -519
- package/src/adapter/z-stack/adapter/adapter-nv-memory.ts +0 -457
- package/src/adapter/z-stack/adapter/endpoints.ts +0 -57
- package/src/adapter/z-stack/adapter/manager.ts +0 -543
- package/src/adapter/z-stack/adapter/tstype.ts +0 -6
- package/src/adapter/z-stack/adapter/zStackAdapter.ts +0 -1190
- package/src/adapter/z-stack/constants/af.ts +0 -27
- package/src/adapter/z-stack/constants/common.ts +0 -285
- package/src/adapter/z-stack/constants/dbg.ts +0 -23
- package/src/adapter/z-stack/constants/index.ts +0 -11
- package/src/adapter/z-stack/constants/mac.ts +0 -128
- package/src/adapter/z-stack/constants/sapi.ts +0 -25
- package/src/adapter/z-stack/constants/sys.ts +0 -72
- package/src/adapter/z-stack/constants/util.ts +0 -82
- package/src/adapter/z-stack/constants/utils.ts +0 -14
- package/src/adapter/z-stack/constants/zdo.ts +0 -103
- package/src/adapter/z-stack/models/startup-options.ts +0 -13
- package/src/adapter/z-stack/structs/entries/address-manager-entry.ts +0 -44
- package/src/adapter/z-stack/structs/entries/address-manager-table.ts +0 -19
- package/src/adapter/z-stack/structs/entries/aps-link-key-data-entry.ts +0 -12
- package/src/adapter/z-stack/structs/entries/aps-link-key-data-table.ts +0 -21
- package/src/adapter/z-stack/structs/entries/aps-tc-link-key-entry.ts +0 -19
- package/src/adapter/z-stack/structs/entries/aps-tc-link-key-table.ts +0 -21
- package/src/adapter/z-stack/structs/entries/channel-list.ts +0 -8
- package/src/adapter/z-stack/structs/entries/has-configured.ts +0 -16
- package/src/adapter/z-stack/structs/entries/index.ts +0 -16
- package/src/adapter/z-stack/structs/entries/nib.ts +0 -66
- package/src/adapter/z-stack/structs/entries/nwk-key-descriptor.ts +0 -15
- package/src/adapter/z-stack/structs/entries/nwk-key.ts +0 -13
- package/src/adapter/z-stack/structs/entries/nwk-pan-id.ts +0 -8
- package/src/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.ts +0 -20
- package/src/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.ts +0 -19
- package/src/adapter/z-stack/structs/entries/security-manager-entry.ts +0 -33
- package/src/adapter/z-stack/structs/entries/security-manager-table.ts +0 -22
- package/src/adapter/z-stack/structs/index.ts +0 -4
- package/src/adapter/z-stack/structs/serializable-memory-object.ts +0 -14
- package/src/adapter/z-stack/structs/struct.ts +0 -367
- package/src/adapter/z-stack/structs/table.ts +0 -198
- package/src/adapter/z-stack/unpi/constants.ts +0 -33
- package/src/adapter/z-stack/unpi/frame.ts +0 -62
- package/src/adapter/z-stack/unpi/index.ts +0 -4
- package/src/adapter/z-stack/unpi/parser.ts +0 -56
- package/src/adapter/z-stack/unpi/writer.ts +0 -21
- package/src/adapter/z-stack/utils/channel-list.ts +0 -40
- package/src/adapter/z-stack/utils/index.ts +0 -2
- package/src/adapter/z-stack/utils/network-options.ts +0 -26
- package/src/adapter/z-stack/znp/buffaloZnp.ts +0 -175
- package/src/adapter/z-stack/znp/definition.ts +0 -2713
- package/src/adapter/z-stack/znp/index.ts +0 -2
- package/src/adapter/z-stack/znp/parameterType.ts +0 -22
- package/src/adapter/z-stack/znp/tstype.ts +0 -44
- package/src/adapter/z-stack/znp/utils.ts +0 -10
- package/src/adapter/z-stack/znp/znp.ts +0 -342
- package/src/adapter/z-stack/znp/zpiObject.ts +0 -148
- package/src/adapter/zboss/adapter/zbossAdapter.ts +0 -526
- package/src/adapter/zboss/commands.ts +0 -1184
- package/src/adapter/zboss/consts.ts +0 -9
- package/src/adapter/zboss/driver.ts +0 -422
- package/src/adapter/zboss/enums.ts +0 -360
- package/src/adapter/zboss/frame.ts +0 -227
- package/src/adapter/zboss/reader.ts +0 -65
- package/src/adapter/zboss/types.ts +0 -0
- package/src/adapter/zboss/uart.ts +0 -428
- package/src/adapter/zboss/utils.ts +0 -58
- package/src/adapter/zboss/writer.ts +0 -49
- package/src/adapter/zigate/adapter/patchZdoBuffaloBE.ts +0 -27
- package/src/adapter/zigate/adapter/zigateAdapter.ts +0 -618
- package/src/adapter/zigate/driver/LICENSE +0 -17
- package/src/adapter/zigate/driver/buffaloZiGate.ts +0 -212
- package/src/adapter/zigate/driver/commandType.ts +0 -418
- package/src/adapter/zigate/driver/constants.ts +0 -150
- package/src/adapter/zigate/driver/frame.ts +0 -197
- package/src/adapter/zigate/driver/messageType.ts +0 -287
- package/src/adapter/zigate/driver/parameterType.ts +0 -32
- package/src/adapter/zigate/driver/ziGateObject.ts +0 -146
- package/src/adapter/zigate/driver/zigate.ts +0 -423
- package/src/adapter/zoh/adapter/utils.ts +0 -27
- package/src/adapter/zoh/adapter/zohAdapter.ts +0 -838
- package/src/buffalo/buffalo.ts +0 -342
- package/src/buffalo/index.ts +0 -1
- package/src/controller/controller.ts +0 -1022
- package/src/controller/database.ts +0 -124
- package/src/controller/events.ts +0 -52
- package/src/controller/greenPower.ts +0 -603
- package/src/controller/helpers/index.ts +0 -1
- package/src/controller/helpers/installCodes.ts +0 -107
- package/src/controller/helpers/request.ts +0 -96
- package/src/controller/helpers/requestQueue.ts +0 -125
- package/src/controller/helpers/zclFrameConverter.ts +0 -47
- package/src/controller/helpers/zclTransactionSequenceNumber.ts +0 -19
- package/src/controller/index.ts +0 -6
- package/src/controller/model/device.ts +0 -1248
- package/src/controller/model/endpoint.ts +0 -1105
- package/src/controller/model/entity.ts +0 -23
- package/src/controller/model/group.ts +0 -424
- package/src/controller/model/index.ts +0 -5
- package/src/controller/model/zigbeeEntity.ts +0 -30
- package/src/controller/touchlink.ts +0 -189
- package/src/controller/tstype.ts +0 -274
- package/src/index.ts +0 -12
- package/src/models/backup-storage-legacy.ts +0 -48
- package/src/models/backup-storage-unified.ts +0 -47
- package/src/models/backup.ts +0 -37
- package/src/models/index.ts +0 -5
- package/src/models/network-options.ts +0 -11
- package/src/utils/backup.ts +0 -152
- package/src/utils/index.ts +0 -5
- package/src/utils/logger.ts +0 -20
- package/src/utils/patchBigIntSerialization.ts +0 -8
- package/src/utils/queue.ts +0 -76
- package/src/utils/types.d.ts +0 -3
- package/src/utils/utils.ts +0 -19
- package/src/utils/wait.ts +0 -5
- package/src/utils/waitress.ts +0 -96
- package/src/zspec/consts.ts +0 -84
- package/src/zspec/enums.ts +0 -22
- package/src/zspec/index.ts +0 -3
- package/src/zspec/tstypes.ts +0 -18
- package/src/zspec/utils.ts +0 -247
- package/src/zspec/zcl/buffaloZcl.ts +0 -1220
- package/src/zspec/zcl/definition/cluster.ts +0 -5915
- package/src/zspec/zcl/definition/clusters-typegen.ts +0 -588
- package/src/zspec/zcl/definition/clusters-types.ts +0 -7331
- package/src/zspec/zcl/definition/consts.ts +0 -24
- package/src/zspec/zcl/definition/enums.ts +0 -203
- package/src/zspec/zcl/definition/foundation.ts +0 -329
- package/src/zspec/zcl/definition/manufacturerCode.ts +0 -729
- package/src/zspec/zcl/definition/status.ts +0 -69
- package/src/zspec/zcl/definition/tstype.ts +0 -377
- package/src/zspec/zcl/index.ts +0 -11
- package/src/zspec/zcl/utils.ts +0 -321
- package/src/zspec/zcl/zclFrame.ts +0 -356
- package/src/zspec/zcl/zclHeader.ts +0 -102
- package/src/zspec/zcl/zclStatusError.ts +0 -10
- package/src/zspec/zdo/buffaloZdo.ts +0 -2336
- package/src/zspec/zdo/definition/clusters.ts +0 -722
- package/src/zspec/zdo/definition/consts.ts +0 -16
- package/src/zspec/zdo/definition/enums.ts +0 -99
- package/src/zspec/zdo/definition/status.ts +0 -105
- package/src/zspec/zdo/definition/tstypes.ts +0 -1062
- package/src/zspec/zdo/index.ts +0 -7
- package/src/zspec/zdo/utils.ts +0 -76
- package/src/zspec/zdo/zdoStatusError.ts +0 -10
- package/test/adapter/adapter.test.ts +0 -1062
- package/test/adapter/ember/ash.test.ts +0 -337
- package/test/adapter/ember/consts.ts +0 -131
- package/test/adapter/ember/emberAdapter.test.ts +0 -3449
- package/test/adapter/ember/ezsp.test.ts +0 -385
- package/test/adapter/ember/ezspBuffalo.test.ts +0 -93
- package/test/adapter/ember/ezspError.test.ts +0 -12
- package/test/adapter/ember/math.test.ts +0 -206
- package/test/adapter/ezsp/frame.test.ts +0 -30
- package/test/adapter/ezsp/uart.test.ts +0 -181
- package/test/adapter/z-stack/adapter.test.ts +0 -3984
- package/test/adapter/z-stack/constants.test.ts +0 -33
- package/test/adapter/z-stack/structs.test.ts +0 -115
- package/test/adapter/z-stack/unpi.test.ts +0 -213
- package/test/adapter/z-stack/znp.test.ts +0 -1284
- package/test/adapter/zboss/fixZdoResponse.test.ts +0 -179
- package/test/adapter/zigate/patchZdoBuffaloBE.test.ts +0 -81
- package/test/adapter/zigate/zdo.test.ts +0 -187
- package/test/adapter/zoh/utils.test.ts +0 -36
- package/test/adapter/zoh/zohAdapter.test.ts +0 -1307
- package/test/buffalo.test.ts +0 -431
- package/test/controller.bench.ts +0 -193
- package/test/controller.test.ts +0 -8702
- package/test/greenpower.test.ts +0 -1408
- package/test/mockAdapters.ts +0 -65
- package/test/mockDevices.ts +0 -598
- package/test/requests.bench.ts +0 -206
- package/test/testUtils.ts +0 -20
- package/test/tsconfig.json +0 -9
- package/test/utils/math.ts +0 -19
- package/test/utils.test.ts +0 -279
- package/test/vitest.config.mts +0 -27
- package/test/zcl.test.ts +0 -2831
- package/test/zspec/utils.test.ts +0 -68
- package/test/zspec/zcl/buffalo.test.ts +0 -1374
- package/test/zspec/zcl/frame.test.ts +0 -960
- package/test/zspec/zcl/utils.test.ts +0 -273
- package/test/zspec/zdo/buffalo.test.ts +0 -1850
- package/test/zspec/zdo/utils.test.ts +0 -241
- package/tsconfig.json +0 -24
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/* v8 ignore start */
|
|
2
|
-
//--------------------------------------------------------------
|
|
3
|
-
// Define macros for handling 3-bit frame numbers modulo 8
|
|
4
|
-
|
|
5
|
-
/** mask to frame number modulus */
|
|
6
|
-
export const mod8 = (n: number): number => n & 7;
|
|
7
|
-
/** increment in frame number modulus */
|
|
8
|
-
export const inc8 = (n: number): number => mod8(n + 1);
|
|
9
|
-
/** Return true if n is within the range lo through hi, computed (mod 8) */
|
|
10
|
-
export const withinRange = (lo: number, n: number, hi: number): boolean => mod8(n - lo) <= mod8(hi - lo);
|
|
11
|
-
|
|
12
|
-
//--------------------------------------------------------------
|
|
13
|
-
// CRC
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Calculates 16-bit cyclic redundancy code (CITT CRC 16).
|
|
17
|
-
*
|
|
18
|
-
* Applies the standard CITT CRC 16 polynomial to a
|
|
19
|
-
* single byte. It should support being called first with an initial
|
|
20
|
-
* value, then repeatedly until all data is processed.
|
|
21
|
-
*
|
|
22
|
-
* @param newByte The new byte to be run through CRC.
|
|
23
|
-
* @param prevResult The previous CRC result.
|
|
24
|
-
* @returns The new CRC result.
|
|
25
|
-
*/
|
|
26
|
-
export const halCommonCrc16 = (newByte: number, prevResult: number): number => {
|
|
27
|
-
/*
|
|
28
|
-
* 16bit CRC notes:
|
|
29
|
-
* "CRC-CCITT"
|
|
30
|
-
* poly is g(X) = X^16 + X^12 + X^5 + 1 (0x1021)
|
|
31
|
-
* used in the FPGA (green boards and 15.4)
|
|
32
|
-
* initial remainder should be 0xFFFF
|
|
33
|
-
*/
|
|
34
|
-
prevResult = ((prevResult >> 8) & 0xffff) | ((prevResult << 8) & 0xffff);
|
|
35
|
-
prevResult ^= newByte;
|
|
36
|
-
prevResult ^= (prevResult & 0xff) >> 4;
|
|
37
|
-
prevResult ^= (((prevResult << 8) & 0xffff) << 4) & 0xffff;
|
|
38
|
-
|
|
39
|
-
prevResult ^= (((prevResult & 0xff) << 5) & 0xff) | (((((prevResult & 0xff) >> 3) & 0xffff) << 8) & 0xffff);
|
|
40
|
-
|
|
41
|
-
return prevResult;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
//--------------------------------------------------------------
|
|
45
|
-
// Byte manipulation
|
|
46
|
-
|
|
47
|
-
/** Returns the low bits of the 8-bit value 'n' as uint8_t. */
|
|
48
|
-
export const lowBits = (n: number): number => n & 0xf;
|
|
49
|
-
/** Returns the high bits of the 8-bit value 'n' as uint8_t. */
|
|
50
|
-
export const highBits = (n: number): number => lowBits(n >> 4) & 0xf;
|
|
51
|
-
/** Returns the low byte of the 16-bit value 'n' as uint8_t. */
|
|
52
|
-
export const lowByte = (n: number): number => n & 0xff;
|
|
53
|
-
/** Returns the high byte of the 16-bit value 'n' as uint8_t. */
|
|
54
|
-
export const highByte = (n: number): number => lowByte(n >> 8) & 0xff;
|
|
55
|
-
/** Returns the value built from the two uint8_t values high and low. */
|
|
56
|
-
export const highLowToInt = (high: number, low: number): number => ((high & 0xffff) << 8) + (low & 0xffff & 0xff);
|
|
57
|
-
/** Useful to reference a single bit of a byte. */
|
|
58
|
-
export const bit = (x: number): number => 1 << x;
|
|
59
|
-
/** Useful to reference a single bit of an uint32_t type. */
|
|
60
|
-
export const bit32 = (x: number): number => 1 << x;
|
|
61
|
-
/** Returns both the low and high bytes (in that order) of the same 16-bit value 'n' as uint8_t. */
|
|
62
|
-
export const lowHighBytes = (n: number): [number, highByte: number] => [lowByte(n), highByte(n)];
|
|
63
|
-
/** Returns both the low and high bits (in that order) of the same 8-bit value 'n' as uint8_t. */
|
|
64
|
-
export const lowHighBits = (n: number): [number, highBits: number] => [lowBits(n), highBits(n)];
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Get byte as an 8-bit string (`n` assumed of proper range).
|
|
68
|
-
* @param n
|
|
69
|
-
* @returns
|
|
70
|
-
*/
|
|
71
|
-
export const byteToBits = (n: number): string => {
|
|
72
|
-
return (n >>> 0).toString(2).padStart(8, "0");
|
|
73
|
-
};
|
package/src/adapter/events.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type {Header as ZclHeader} from "../zspec/zcl";
|
|
2
|
-
|
|
3
|
-
export type DeviceJoinedPayload = {
|
|
4
|
-
networkAddress: number;
|
|
5
|
-
ieeeAddr: string;
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
export type DeviceLeavePayload = {networkAddress?: number; ieeeAddr: string} | {networkAddress: number; ieeeAddr?: string};
|
|
9
|
-
|
|
10
|
-
export interface ZclPayload {
|
|
11
|
-
clusterID: number;
|
|
12
|
-
address: number | string;
|
|
13
|
-
header: ZclHeader | undefined;
|
|
14
|
-
// This buffer contains the whole Zcl.Frame (including the ZclHeader)
|
|
15
|
-
data: Buffer;
|
|
16
|
-
endpoint: number;
|
|
17
|
-
linkquality: number;
|
|
18
|
-
groupID: number;
|
|
19
|
-
wasBroadcast: boolean;
|
|
20
|
-
destinationEndpoint: number;
|
|
21
|
-
}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
/* v8 ignore start */
|
|
2
|
-
|
|
3
|
-
import * as fs from "node:fs";
|
|
4
|
-
|
|
5
|
-
import type * as Models from "../../../models";
|
|
6
|
-
import {BackupUtils} from "../../../utils";
|
|
7
|
-
import {logger} from "../../../utils/logger";
|
|
8
|
-
import {uint32MaskToChannels} from "../../../zspec/utils";
|
|
9
|
-
import type {Driver} from "../driver";
|
|
10
|
-
import {
|
|
11
|
-
type EmberKeyData,
|
|
12
|
-
type EmberKeyStruct,
|
|
13
|
-
EmberKeyType,
|
|
14
|
-
type EmberNetworkParameters,
|
|
15
|
-
type EmberSecurityManagerNetworkKeyInfo,
|
|
16
|
-
} from "../driver/types";
|
|
17
|
-
|
|
18
|
-
const NS = "zh:ezsp:backup";
|
|
19
|
-
|
|
20
|
-
export class EZSPAdapterBackup {
|
|
21
|
-
private driver: Driver;
|
|
22
|
-
private defaultPath: string;
|
|
23
|
-
|
|
24
|
-
public constructor(driver: Driver, path: string) {
|
|
25
|
-
this.driver = driver;
|
|
26
|
-
this.defaultPath = path;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
public async createBackup(): Promise<Models.Backup> {
|
|
30
|
-
logger.debug("creating backup", NS);
|
|
31
|
-
const version: number = await this.driver.ezsp.version();
|
|
32
|
-
const linkResult = await this.driver.getKey(EmberKeyType.TRUST_CENTER_LINK_KEY);
|
|
33
|
-
const netParams = await this.driver.ezsp.execCommand("getNetworkParameters");
|
|
34
|
-
const networkParams: EmberNetworkParameters = netParams.parameters;
|
|
35
|
-
const netResult = await this.driver.getKey(EmberKeyType.CURRENT_NETWORK_KEY);
|
|
36
|
-
let tclKey: Buffer;
|
|
37
|
-
let netKey: Buffer;
|
|
38
|
-
let netKeySequenceNumber = 0;
|
|
39
|
-
let netKeyFrameCounter = 0;
|
|
40
|
-
|
|
41
|
-
if (version < 13) {
|
|
42
|
-
tclKey = Buffer.from((linkResult.keyStruct as EmberKeyStruct).key.contents);
|
|
43
|
-
netKey = Buffer.from((netResult.keyStruct as EmberKeyStruct).key.contents);
|
|
44
|
-
netKeySequenceNumber = (netResult.keyStruct as EmberKeyStruct).sequenceNumber;
|
|
45
|
-
netKeyFrameCounter = (netResult.keyStruct as EmberKeyStruct).outgoingFrameCounter;
|
|
46
|
-
} else {
|
|
47
|
-
tclKey = Buffer.from((linkResult.keyData as EmberKeyData).contents);
|
|
48
|
-
netKey = Buffer.from((netResult.keyData as EmberKeyData).contents);
|
|
49
|
-
// get rest of info from second cmd in EZSP 13+
|
|
50
|
-
const netKeyInfoResult = await this.driver.getNetworkKeyInfo();
|
|
51
|
-
const networkKeyInfo: EmberSecurityManagerNetworkKeyInfo = netKeyInfoResult.networkKeyInfo;
|
|
52
|
-
netKeySequenceNumber = networkKeyInfo.networkKeySequenceNumber;
|
|
53
|
-
netKeyFrameCounter = networkKeyInfo.networkKeyFrameCounter;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
const ieee = (await this.driver.ezsp.execCommand("getEui64")).eui64;
|
|
57
|
-
/* return backup structure */
|
|
58
|
-
return {
|
|
59
|
-
ezsp: {
|
|
60
|
-
version: version,
|
|
61
|
-
hashed_tclk: tclKey,
|
|
62
|
-
},
|
|
63
|
-
networkOptions: {
|
|
64
|
-
panId: networkParams.panId,
|
|
65
|
-
extendedPanId: Buffer.from(networkParams.extendedPanId),
|
|
66
|
-
channelList: uint32MaskToChannels(networkParams.channels),
|
|
67
|
-
networkKey: netKey,
|
|
68
|
-
networkKeyDistribute: true,
|
|
69
|
-
},
|
|
70
|
-
logicalChannel: networkParams.radioChannel,
|
|
71
|
-
networkKeyInfo: {
|
|
72
|
-
sequenceNumber: netKeySequenceNumber,
|
|
73
|
-
frameCounter: netKeyFrameCounter,
|
|
74
|
-
},
|
|
75
|
-
securityLevel: 5,
|
|
76
|
-
networkUpdateId: networkParams.nwkUpdateId,
|
|
77
|
-
coordinatorIeeeAddress: ieee,
|
|
78
|
-
devices: [],
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Loads currently stored backup and returns it in internal backup model.
|
|
84
|
-
*/
|
|
85
|
-
public getStoredBackup(): Models.Backup | undefined {
|
|
86
|
-
try {
|
|
87
|
-
fs.accessSync(this.defaultPath);
|
|
88
|
-
} catch {
|
|
89
|
-
return undefined;
|
|
90
|
-
}
|
|
91
|
-
let data: Models.UnifiedBackupStorage;
|
|
92
|
-
try {
|
|
93
|
-
data = JSON.parse(fs.readFileSync(this.defaultPath).toString());
|
|
94
|
-
} catch (error) {
|
|
95
|
-
throw new Error(`Coordinator backup is corrupted (${(error as Error).stack})`);
|
|
96
|
-
}
|
|
97
|
-
if (data.metadata?.format === "zigpy/open-coordinator-backup" && data.metadata?.version) {
|
|
98
|
-
if (data.metadata?.version !== 1) {
|
|
99
|
-
throw new Error(`Unsupported open coordinator backup version (version=${data.metadata?.version})`);
|
|
100
|
-
}
|
|
101
|
-
if (!data.metadata.internal?.ezspVersion) {
|
|
102
|
-
throw new Error("This open coordinator backup format not for EZSP adapter");
|
|
103
|
-
}
|
|
104
|
-
return BackupUtils.fromUnifiedBackup(data);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
throw new Error("Unknown backup format");
|
|
108
|
-
}
|
|
109
|
-
}
|