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,337 +0,0 @@
|
|
|
1
|
-
import {MockBinding, type MockPortBinding} from "@serialport/binding-mock";
|
|
2
|
-
import type {OpenOptions} from "@serialport/stream";
|
|
3
|
-
import {afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi} from "vitest";
|
|
4
|
-
import {EzspStatus} from "../../../src/adapter/ember/enums";
|
|
5
|
-
import {EzspBuffalo} from "../../../src/adapter/ember/ezsp/buffalo";
|
|
6
|
-
import {
|
|
7
|
-
EZSP_EXTENDED_FRAME_CONTROL_LB_INDEX,
|
|
8
|
-
EZSP_FRAME_CONTROL_COMMAND,
|
|
9
|
-
EZSP_FRAME_CONTROL_NETWORK_INDEX_MASK,
|
|
10
|
-
EZSP_FRAME_CONTROL_NETWORK_INDEX_OFFSET,
|
|
11
|
-
EZSP_FRAME_CONTROL_SLEEP_MODE_MASK,
|
|
12
|
-
EZSP_FRAME_ID_INDEX,
|
|
13
|
-
EZSP_MAX_FRAME_LENGTH,
|
|
14
|
-
EZSP_PARAMETERS_INDEX,
|
|
15
|
-
EZSP_SEQUENCE_INDEX,
|
|
16
|
-
} from "../../../src/adapter/ember/ezsp/consts";
|
|
17
|
-
import {EzspFrameID} from "../../../src/adapter/ember/ezsp/enums";
|
|
18
|
-
import {CONFIG_TX_K, UartAsh} from "../../../src/adapter/ember/uart/ash";
|
|
19
|
-
import {EZSP_HOST_RX_POOL_SIZE, TX_POOL_BUFFERS} from "../../../src/adapter/ember/uart/consts";
|
|
20
|
-
import {EzspBuffer} from "../../../src/adapter/ember/uart/queues";
|
|
21
|
-
import {lowByte} from "../../../src/adapter/ember/utils/math";
|
|
22
|
-
import {wait} from "../../../src/utils/";
|
|
23
|
-
import {ASH_ACK_FIRST_BYTES, adapterSONOFFDongleE, RECD_RSTACK_BYTES, SEND_ACK_FIRST_BYTES, SEND_RST_BYTES} from "./consts";
|
|
24
|
-
|
|
25
|
-
const mockSerialPortCloseEvent = vi.fn();
|
|
26
|
-
const mockSerialPortErrorEvent = vi.fn();
|
|
27
|
-
|
|
28
|
-
// todo doesnt reset if closing
|
|
29
|
-
// todo doesnt start if closing or connected
|
|
30
|
-
// todo doesnt close port if already closed on stop
|
|
31
|
-
// todo port error triggers stop
|
|
32
|
-
// todo emit `reset` only on port error
|
|
33
|
-
// todo emit `close` only when ASH layer stopped
|
|
34
|
-
// todo emit `frame` only on valid DATA frame
|
|
35
|
-
|
|
36
|
-
const mocks = [mockSerialPortCloseEvent, mockSerialPortErrorEvent];
|
|
37
|
-
|
|
38
|
-
describe("Ember UART ASH Protocol", () => {
|
|
39
|
-
const openOpts: OpenOptions<MockPortBinding> = {path: "/dev/ttyACM0", baudRate: 115200, binding: MockBinding};
|
|
40
|
-
/**
|
|
41
|
-
* Mock binding provides:
|
|
42
|
-
*
|
|
43
|
-
* uartAsh.serialPort.port.recording => Buffer of all data written if record==true
|
|
44
|
-
*
|
|
45
|
-
* uartAsh.serialPort.port.lastWrite => Buffer of last write
|
|
46
|
-
*/
|
|
47
|
-
let uartAsh: UartAsh;
|
|
48
|
-
let buffalo: EzspBuffalo;
|
|
49
|
-
let frameSequence: number;
|
|
50
|
-
|
|
51
|
-
beforeAll(() => {
|
|
52
|
-
vi.useRealTimers(); // messes with serialport promise handling otherwise?
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
afterAll(() => {
|
|
56
|
-
vi.useRealTimers();
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
beforeEach(() => {
|
|
60
|
-
for (const mock of mocks) {
|
|
61
|
-
mock.mockClear();
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
frameSequence = 0;
|
|
65
|
-
uartAsh = new UartAsh(openOpts);
|
|
66
|
-
buffalo = new EzspBuffalo(Buffer.alloc(EZSP_MAX_FRAME_LENGTH));
|
|
67
|
-
MockBinding.createPort("/dev/ttyACM0", {/*echo: true,*/ record: true, /*readyData: emitRSTACK,*/ ...adapterSONOFFDongleE});
|
|
68
|
-
|
|
69
|
-
buffalo.setPosition(0);
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
afterEach(async () => {
|
|
73
|
-
await uartAsh.stop();
|
|
74
|
-
MockBinding.reset();
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
it("Inits properly and allocates buffers as needed", () => {
|
|
78
|
-
expect(uartAsh.connected).toStrictEqual(false);
|
|
79
|
-
expect(uartAsh.txQueue).toBeDefined();
|
|
80
|
-
expect(uartAsh.reTxQueue).toBeDefined();
|
|
81
|
-
expect(uartAsh.txFree).toBeDefined();
|
|
82
|
-
expect(uartAsh.rxQueue).toBeDefined();
|
|
83
|
-
expect(uartAsh.rxFree).toBeDefined();
|
|
84
|
-
expect(uartAsh.ncpSleepEnabled).toStrictEqual(false);
|
|
85
|
-
expect(uartAsh.ncpHasCallbacks).toStrictEqual(false);
|
|
86
|
-
expect(uartAsh.txQueue.length).toStrictEqual(0);
|
|
87
|
-
expect(uartAsh.reTxQueue.length).toStrictEqual(0);
|
|
88
|
-
expect(uartAsh.txFree.length).toStrictEqual(TX_POOL_BUFFERS);
|
|
89
|
-
expect(uartAsh.rxQueue.length).toStrictEqual(0);
|
|
90
|
-
expect(uartAsh.rxFree.length).toStrictEqual(EZSP_HOST_RX_POOL_SIZE);
|
|
91
|
-
expect(uartAsh.txQueue.tail).toStrictEqual(undefined);
|
|
92
|
-
expect(uartAsh.reTxQueue.tail).toStrictEqual(undefined);
|
|
93
|
-
expect(uartAsh.txFree.link).toBeInstanceOf(EzspBuffer);
|
|
94
|
-
expect(uartAsh.txFree.link!.data.length).toStrictEqual(EZSP_MAX_FRAME_LENGTH);
|
|
95
|
-
expect(uartAsh.rxQueue.tail).toStrictEqual(undefined);
|
|
96
|
-
expect(uartAsh.rxFree.link).toBeInstanceOf(EzspBuffer);
|
|
97
|
-
expect(uartAsh.rxFree.link!.data.length).toStrictEqual(EZSP_MAX_FRAME_LENGTH);
|
|
98
|
-
|
|
99
|
-
for (const c in uartAsh.counters) {
|
|
100
|
-
expect(uartAsh.counters[c]).toStrictEqual(0);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// this is mostly Queues testing, but make sure it works in "real" context
|
|
104
|
-
const link = uartAsh.txFree.link;
|
|
105
|
-
const buffer = uartAsh.txFree.allocBuffer();
|
|
106
|
-
|
|
107
|
-
expect(buffer).toStrictEqual(link);
|
|
108
|
-
expect(uartAsh.txFree.link).toStrictEqual(buffer!.link);
|
|
109
|
-
expect(uartAsh.txFree.length).toStrictEqual(TX_POOL_BUFFERS - 1);
|
|
110
|
-
|
|
111
|
-
uartAsh.txQueue.addTail(buffer!);
|
|
112
|
-
|
|
113
|
-
expect(buffer!.link).toStrictEqual(undefined);
|
|
114
|
-
expect(uartAsh.txQueue.tail).toStrictEqual(buffer);
|
|
115
|
-
expect(uartAsh.txQueue.length).toStrictEqual(1);
|
|
116
|
-
|
|
117
|
-
const head = uartAsh.txQueue.removeHead();
|
|
118
|
-
|
|
119
|
-
expect(head).toStrictEqual(buffer);
|
|
120
|
-
expect(head).toStrictEqual(link);
|
|
121
|
-
expect(uartAsh.txQueue.tail).toStrictEqual(undefined);
|
|
122
|
-
expect(uartAsh.txQueue.length).toStrictEqual(0);
|
|
123
|
-
|
|
124
|
-
uartAsh.txFree.freeBuffer(head);
|
|
125
|
-
|
|
126
|
-
uartAsh.txQueue.addTail(uartAsh.txFree.allocBuffer()!);
|
|
127
|
-
uartAsh.txQueue.addTail(uartAsh.txFree.allocBuffer()!);
|
|
128
|
-
|
|
129
|
-
expect(uartAsh.txQueue.length).toStrictEqual(2);
|
|
130
|
-
expect(uartAsh.txFree.length).toStrictEqual(TX_POOL_BUFFERS - 2);
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
it("Reaches CONNECTED state", async () => {
|
|
134
|
-
//@ts-expect-error private
|
|
135
|
-
const initPortSpy = vi.spyOn(uartAsh, "initPort");
|
|
136
|
-
const resetNcpSpy = vi.spyOn(uartAsh, "resetNcp");
|
|
137
|
-
const sendExecSpy = vi.spyOn(uartAsh, "sendExec");
|
|
138
|
-
//@ts-expect-error private
|
|
139
|
-
const onPortCloseSpy = vi.spyOn(uartAsh, "onPortClose");
|
|
140
|
-
//@ts-expect-error private
|
|
141
|
-
const onPortErrorSpy = vi.spyOn(uartAsh, "onPortError");
|
|
142
|
-
|
|
143
|
-
const resetResult = await uartAsh.resetNcp();
|
|
144
|
-
|
|
145
|
-
//@ts-expect-error private
|
|
146
|
-
expect(uartAsh.serialPort.settings.binding).toBe(MockBinding); // just making sure mock was registered
|
|
147
|
-
expect(resetResult).toStrictEqual(EzspStatus.SUCCESS);
|
|
148
|
-
expect(resetNcpSpy).toHaveBeenCalledTimes(1);
|
|
149
|
-
expect(initPortSpy).toHaveBeenCalledTimes(1);
|
|
150
|
-
//@ts-expect-error private
|
|
151
|
-
expect(uartAsh.flags).toStrictEqual(48); // RST|CAN
|
|
152
|
-
//@ts-expect-error private
|
|
153
|
-
expect(uartAsh.serialPort).toBeDefined();
|
|
154
|
-
//@ts-expect-error private
|
|
155
|
-
expect(uartAsh.writer).toBeDefined();
|
|
156
|
-
//@ts-expect-error private
|
|
157
|
-
expect(uartAsh.parser).toBeDefined();
|
|
158
|
-
expect(uartAsh.portOpen).toBeTruthy();
|
|
159
|
-
|
|
160
|
-
//@ts-expect-error private
|
|
161
|
-
vi.spyOn(uartAsh.serialPort, "asyncFlush").mockImplementationOnce(vi.fn());
|
|
162
|
-
//@ts-expect-error private
|
|
163
|
-
uartAsh.serialPort.port.emitData(Buffer.from(RECD_RSTACK_BYTES));
|
|
164
|
-
const startResult = await uartAsh.start();
|
|
165
|
-
|
|
166
|
-
expect(startResult).toStrictEqual(EzspStatus.SUCCESS);
|
|
167
|
-
expect(sendExecSpy).toHaveBeenCalled();
|
|
168
|
-
await new Promise(setImmediate); // flush
|
|
169
|
-
//@ts-expect-error private
|
|
170
|
-
expect(uartAsh.serialPort.port.recording).toStrictEqual(Buffer.from([...SEND_RST_BYTES, ...ASH_ACK_FIRST_BYTES]));
|
|
171
|
-
expect(uartAsh.connected).toBeTruthy();
|
|
172
|
-
expect(uartAsh.counters.txAllFrames).toStrictEqual(2); // RST + ACK
|
|
173
|
-
expect(uartAsh.counters.txAckFrames).toStrictEqual(1); // post-RSTACK ACK
|
|
174
|
-
expect(uartAsh.counters.rxAllFrames).toStrictEqual(1); // RSTACK
|
|
175
|
-
|
|
176
|
-
for (const key in uartAsh.counters) {
|
|
177
|
-
if (key !== "txAllFrames" && key !== "rxAllFrames" && key !== "txAckFrames") {
|
|
178
|
-
expect(uartAsh.counters[key]).toStrictEqual(0);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
await uartAsh.stop();
|
|
183
|
-
|
|
184
|
-
expect(onPortErrorSpy).toHaveBeenCalledTimes(0);
|
|
185
|
-
expect(onPortCloseSpy).toHaveBeenCalledTimes(1);
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
it.skip("Resets but failed to start b/c error in RSTACK frame returned by NCP", async () => {
|
|
189
|
-
//@ts-expect-error private
|
|
190
|
-
const rejectFrameSpy = vi.spyOn(uartAsh, "rejectFrame");
|
|
191
|
-
//@ts-expect-error private
|
|
192
|
-
const receiveFrameSpy = vi.spyOn(uartAsh, "receiveFrame");
|
|
193
|
-
//@ts-expect-error private
|
|
194
|
-
const decodeByteSpy = vi.spyOn(uartAsh, "decodeByte");
|
|
195
|
-
|
|
196
|
-
const resetResult = await uartAsh.resetNcp();
|
|
197
|
-
|
|
198
|
-
expect(resetResult).toStrictEqual(EzspStatus.SUCCESS);
|
|
199
|
-
|
|
200
|
-
const badCrcRSTACK = Buffer.from(RECD_RSTACK_BYTES);
|
|
201
|
-
badCrcRSTACK[badCrcRSTACK.length - 2] = 0; // throw CRC low
|
|
202
|
-
|
|
203
|
-
//@ts-expect-error private
|
|
204
|
-
vi.spyOn(uartAsh.serialPort, "asyncFlush").mockImplementationOnce(vi.fn());
|
|
205
|
-
//@ts-expect-error private
|
|
206
|
-
uartAsh.serialPort.port.emitData(badCrcRSTACK);
|
|
207
|
-
const startResult = await uartAsh.start();
|
|
208
|
-
|
|
209
|
-
await wait(10);
|
|
210
|
-
|
|
211
|
-
expect(startResult).toStrictEqual(EzspStatus.HOST_FATAL_ERROR);
|
|
212
|
-
expect(uartAsh.counters.txAllFrames).toStrictEqual(1);
|
|
213
|
-
expect(uartAsh.counters.rxAllFrames).toStrictEqual(0);
|
|
214
|
-
expect(uartAsh.counters.rxCrcErrors).toStrictEqual(1);
|
|
215
|
-
expect(rejectFrameSpy).toHaveBeenCalledTimes(1); // received bad RSTACK
|
|
216
|
-
expect(decodeByteSpy.mock.results[decodeByteSpy.mock.results.length - 1].value[0]).toStrictEqual(EzspStatus.ASH_BAD_CRC);
|
|
217
|
-
expect(receiveFrameSpy).toHaveLastReturnedWith(EzspStatus.NO_RX_DATA);
|
|
218
|
-
expect(uartAsh.connected).toBeFalsy();
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
describe("In CONNECTED state...", () => {
|
|
222
|
-
beforeEach(async () => {
|
|
223
|
-
const resetResult = await uartAsh.resetNcp();
|
|
224
|
-
//@ts-expect-error private
|
|
225
|
-
vi.spyOn(uartAsh.serialPort, "asyncFlush").mockImplementationOnce(vi.fn());
|
|
226
|
-
//@ts-expect-error private
|
|
227
|
-
uartAsh.serialPort.port.emitData(Buffer.from(RECD_RSTACK_BYTES));
|
|
228
|
-
const startResult = await uartAsh.start();
|
|
229
|
-
|
|
230
|
-
expect(resetResult).toStrictEqual(EzspStatus.SUCCESS);
|
|
231
|
-
expect(startResult).toStrictEqual(EzspStatus.SUCCESS);
|
|
232
|
-
expect(uartAsh.connected).toBeTruthy();
|
|
233
|
-
|
|
234
|
-
uartAsh.sendExec(); // ACK for RSTACK == 8070787e
|
|
235
|
-
expect(uartAsh.idle).toBeTruthy();
|
|
236
|
-
expect(uartAsh.counters.txAckFrames).toStrictEqual(1); // ACK for RSTACK
|
|
237
|
-
});
|
|
238
|
-
afterEach(async () => {});
|
|
239
|
-
|
|
240
|
-
it("Sends DATA frame to NCP", async () => {
|
|
241
|
-
buffalo.setPosition(EZSP_PARAMETERS_INDEX);
|
|
242
|
-
buffalo.setCommandByte(EZSP_FRAME_ID_INDEX, lowByte(EzspFrameID.VERSION));
|
|
243
|
-
buffalo.setCommandByte(EZSP_SEQUENCE_INDEX, frameSequence++);
|
|
244
|
-
buffalo.setCommandByte(
|
|
245
|
-
EZSP_EXTENDED_FRAME_CONTROL_LB_INDEX,
|
|
246
|
-
EZSP_FRAME_CONTROL_COMMAND |
|
|
247
|
-
(0x00 & EZSP_FRAME_CONTROL_SLEEP_MODE_MASK) |
|
|
248
|
-
((0x00 << EZSP_FRAME_CONTROL_NETWORK_INDEX_OFFSET) & EZSP_FRAME_CONTROL_NETWORK_INDEX_MASK),
|
|
249
|
-
);
|
|
250
|
-
buffalo.writeUInt8(13); // desiredProtocolVersion
|
|
251
|
-
|
|
252
|
-
const sendBuf = buffalo.getWritten();
|
|
253
|
-
|
|
254
|
-
uartAsh.send(sendBuf.length, sendBuf);
|
|
255
|
-
|
|
256
|
-
await wait(10);
|
|
257
|
-
|
|
258
|
-
expect(uartAsh.counters.txDataFrames).toStrictEqual(1);
|
|
259
|
-
//@ts-expect-error private
|
|
260
|
-
expect(uartAsh.serialPort.port.recording).toStrictEqual(
|
|
261
|
-
Buffer.concat([
|
|
262
|
-
Buffer.from("1ac038bc7e", "hex"), // RST
|
|
263
|
-
Buffer.from("8070787e", "hex"), // RSTACK ACK
|
|
264
|
-
Buffer.from("004221a8597c057e", "hex"), // DATA
|
|
265
|
-
]),
|
|
266
|
-
);
|
|
267
|
-
});
|
|
268
|
-
|
|
269
|
-
it("Sends DATA frame and receives response from NCP", async () => {
|
|
270
|
-
buffalo.setPosition(EZSP_PARAMETERS_INDEX);
|
|
271
|
-
buffalo.setCommandByte(EZSP_FRAME_ID_INDEX, lowByte(EzspFrameID.VERSION));
|
|
272
|
-
buffalo.setCommandByte(EZSP_SEQUENCE_INDEX, frameSequence++);
|
|
273
|
-
buffalo.setCommandByte(
|
|
274
|
-
EZSP_EXTENDED_FRAME_CONTROL_LB_INDEX,
|
|
275
|
-
EZSP_FRAME_CONTROL_COMMAND |
|
|
276
|
-
(0x00 & EZSP_FRAME_CONTROL_SLEEP_MODE_MASK) |
|
|
277
|
-
((0x00 << EZSP_FRAME_CONTROL_NETWORK_INDEX_OFFSET) & EZSP_FRAME_CONTROL_NETWORK_INDEX_MASK),
|
|
278
|
-
);
|
|
279
|
-
buffalo.writeUInt8(2); // desiredProtocolVersion
|
|
280
|
-
|
|
281
|
-
const sendBuf = buffalo.getWritten();
|
|
282
|
-
|
|
283
|
-
uartAsh.send(sendBuf.length, sendBuf);
|
|
284
|
-
|
|
285
|
-
await wait(10);
|
|
286
|
-
|
|
287
|
-
//@ts-expect-error private
|
|
288
|
-
uartAsh.serialPort.port.emitData(Buffer.from(SEND_ACK_FIRST_BYTES)); // just an ACK, doesn't matter what it is
|
|
289
|
-
|
|
290
|
-
await wait(10); // force wait new frame
|
|
291
|
-
|
|
292
|
-
expect(uartAsh.counters.txAckFrames).toStrictEqual(1);
|
|
293
|
-
expect(uartAsh.counters.rxAckFrames).toStrictEqual(1);
|
|
294
|
-
});
|
|
295
|
-
|
|
296
|
-
it("TODO: Sends DATA frame with NR flags when buffers are low on host", async () => {});
|
|
297
|
-
|
|
298
|
-
it("TODO: Sends DATA frame but times out waiting for response", async () => {});
|
|
299
|
-
|
|
300
|
-
it("TODO: Resends DATA frame", async () => {});
|
|
301
|
-
|
|
302
|
-
it("Allows sending up to TX_K frames before receiving ACK", async () => {
|
|
303
|
-
buffalo.setPosition(EZSP_PARAMETERS_INDEX);
|
|
304
|
-
buffalo.setCommandByte(EZSP_FRAME_ID_INDEX, lowByte(EzspFrameID.VERSION));
|
|
305
|
-
buffalo.setCommandByte(EZSP_SEQUENCE_INDEX, frameSequence++);
|
|
306
|
-
buffalo.setCommandByte(
|
|
307
|
-
EZSP_EXTENDED_FRAME_CONTROL_LB_INDEX,
|
|
308
|
-
EZSP_FRAME_CONTROL_COMMAND |
|
|
309
|
-
(0x00 & EZSP_FRAME_CONTROL_SLEEP_MODE_MASK) |
|
|
310
|
-
((0x00 << EZSP_FRAME_CONTROL_NETWORK_INDEX_OFFSET) & EZSP_FRAME_CONTROL_NETWORK_INDEX_MASK),
|
|
311
|
-
);
|
|
312
|
-
buffalo.writeUInt8(13); // desiredProtocolVersion
|
|
313
|
-
|
|
314
|
-
const sendBuf = buffalo.getWritten();
|
|
315
|
-
|
|
316
|
-
for (let i = 0; i <= CONFIG_TX_K; i++) {
|
|
317
|
-
uartAsh.send(sendBuf.length, sendBuf);
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
await wait(10);
|
|
321
|
-
|
|
322
|
-
expect(uartAsh.counters.txDataFrames).toStrictEqual(3);
|
|
323
|
-
expect(uartAsh.txQueue.length).toStrictEqual(1);
|
|
324
|
-
|
|
325
|
-
//@ts-expect-error private
|
|
326
|
-
expect(uartAsh.serialPort.port.recording).toStrictEqual(
|
|
327
|
-
Buffer.concat([
|
|
328
|
-
Buffer.from("1ac038bc7e", "hex"), // RST
|
|
329
|
-
Buffer.from("8070787e", "hex"), // RSTACK ACK
|
|
330
|
-
Buffer.from("004221a8597c057e", "hex"), // DATA 1
|
|
331
|
-
Buffer.from("104221a859785f7e", "hex"), // DATA 2
|
|
332
|
-
Buffer.from("204221a85974b17e", "hex"), // DATA 3
|
|
333
|
-
]),
|
|
334
|
-
);
|
|
335
|
-
});
|
|
336
|
-
});
|
|
337
|
-
});
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import {ASH_VERSION} from "../../../src/adapter/ember/uart/consts";
|
|
2
|
-
import {AshFrameType, AshReservedByte, NcpFailedCode} from "../../../src/adapter/ember/uart/enums";
|
|
3
|
-
|
|
4
|
-
export const adapterSONOFFDongleE = {manufacturer: "ITEAD", vendorId: "1a86", productId: "55d4"};
|
|
5
|
-
export const adapterHASkyConnect = {manufacturer: "Nabu Casa", vendorId: "10c4", productId: "ea60"};
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Bytes sent to NCP on init
|
|
9
|
-
*
|
|
10
|
-
* 1ac038bc7e
|
|
11
|
-
*/
|
|
12
|
-
export const SEND_RST_BYTES = [
|
|
13
|
-
AshReservedByte.CANCEL, // 26 - 0x1a
|
|
14
|
-
AshFrameType.RST, // 192 - 0xc0
|
|
15
|
-
56, // CRC high - 0x38
|
|
16
|
-
188, // CRC low - 0xbc
|
|
17
|
-
AshReservedByte.FLAG, // 126 - 0x7e
|
|
18
|
-
];
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Pre-decoding values.
|
|
22
|
-
*
|
|
23
|
-
* [193, 2, 2, 155, 123, 126]
|
|
24
|
-
*
|
|
25
|
-
* 1ac1020b0a527e
|
|
26
|
-
*/
|
|
27
|
-
export const RECD_RSTACK_BYTES = [
|
|
28
|
-
AshReservedByte.CANCEL, // 26 - 0x1a
|
|
29
|
-
AshFrameType.RSTACK, // 193 - 0xc1
|
|
30
|
-
ASH_VERSION, // 2 - 0x02
|
|
31
|
-
NcpFailedCode.RESET_SOFTWARE, // 11 - 0x0b
|
|
32
|
-
10, // CRC high - 0x0a
|
|
33
|
-
82, // CRC low - 0x52
|
|
34
|
-
AshReservedByte.FLAG, // 126 - 0x7e
|
|
35
|
-
];
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* ACK following first DATA frame sent.
|
|
39
|
-
*
|
|
40
|
-
* ACK(1)+
|
|
41
|
-
*/
|
|
42
|
-
export const SEND_ACK_FIRST_BYTES = [
|
|
43
|
-
AshFrameType.ACK + 1,
|
|
44
|
-
0x60, // CRC High
|
|
45
|
-
0x59, // CRC Low
|
|
46
|
-
AshReservedByte.FLAG,
|
|
47
|
-
];
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* ACK sent by ASH (Z2M) after RSTACK received.
|
|
51
|
-
*
|
|
52
|
-
* ACK(0)+
|
|
53
|
-
*/
|
|
54
|
-
export const ASH_ACK_FIRST_BYTES = [
|
|
55
|
-
AshFrameType.ACK,
|
|
56
|
-
0x70, // CRC High
|
|
57
|
-
0x78, // CRC Low
|
|
58
|
-
AshReservedByte.FLAG,
|
|
59
|
-
];
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Pre-decoding values.
|
|
63
|
-
*
|
|
64
|
-
* [194, 2, 81, 168, 189, 126]
|
|
65
|
-
*
|
|
66
|
-
* c20251a8bd7e
|
|
67
|
-
*/
|
|
68
|
-
export const RECD_ERROR_ACK_TIMEOUT_BYTES = [
|
|
69
|
-
AshFrameType.ERROR,
|
|
70
|
-
ASH_VERSION,
|
|
71
|
-
NcpFailedCode.ERROR_EXCEEDED_MAXIMUM_ACK_TIMEOUT_COUNT,
|
|
72
|
-
0xa8, // CRC High
|
|
73
|
-
0xbd, // CRC Low
|
|
74
|
-
AshReservedByte.FLAG,
|
|
75
|
-
];
|
|
76
|
-
|
|
77
|
-
export const RCED_ERROR_WATCHDOG_BYTES = [
|
|
78
|
-
AshFrameType.ERROR,
|
|
79
|
-
ASH_VERSION,
|
|
80
|
-
NcpFailedCode.RESET_WATCHDOG,
|
|
81
|
-
0xd2, // CRC High
|
|
82
|
-
0x0a, // CRC Low
|
|
83
|
-
AshReservedByte.FLAG,
|
|
84
|
-
];
|
|
85
|
-
|
|
86
|
-
export const RCED_DATA_WITH_CRC_ERROR = Buffer.from("b658904124ab5593499cdd93623cd29874f5de5083f97b1e66efc9af417e", "hex");
|
|
87
|
-
|
|
88
|
-
export const RCED_DATA_RETRY = Buffer.from("0eafb1a96b2a7d334fa674eb04aaa760499d4e27cdd9ce6192f2c46989fcfb817e", "hex");
|
|
89
|
-
|
|
90
|
-
/** desiredProtocolVersion: 13 */
|
|
91
|
-
export const SEND_DATA_VERSION = Buffer.from("004221a8597c057e", "hex");
|
|
92
|
-
/** protocolVersion: 13, stackType: 2, stackVersion: 29712 */
|
|
93
|
-
export const RCED_DATA_VERSION = Buffer.from("0142a1a8592805c6a8777e", "hex");
|
|
94
|
-
export const RCED_DATA_VERSION_RES = [13, 2, 29712];
|
|
95
|
-
|
|
96
|
-
// [ZCL to=51678 apsFrame={"profileId":260,"clusterId":6,"sourceEndpoint":1,"destinationEndpoint":1,"options":4416,"groupId":0,"sequence":0} header={"frameControl":{"reservedBits":0,"frameType":1,"direction":0,"disableDefaultResponse":false,"manufacturerSpecific":false},"manufacturerCode":null,"transactionSequenceNumber":4,"commandIdentifier":0}]
|
|
97
|
-
// [FRAME: ID=52:"SEND_UNICAST" Seq=39 Len=25]
|
|
98
|
-
// [FRAME type=DATA frmTx=7 frmRx=0]
|
|
99
|
-
export const SEND_UNICAST_ASH_RAW = "706521a9602a156c90904b23aa5493098d4e27abeece648af9c677b97e";
|
|
100
|
-
// [FRAME type=DATA ackNum=0 frmNum=0]
|
|
101
|
-
export const SEND_UNICAST_REPLY_FN0_ASH_RAW = "0065a1a9602a15b25994d0954c7e";
|
|
102
|
-
// [FRAME: ID=52:"SEND_UNICAST" Seq=39 Len=10]
|
|
103
|
-
// [SENT type=DIRECT apsSequence=154 messageTag=3 status=OK]
|
|
104
|
-
export const SEND_UNICAST_REPLY_FN0_EZSP = "2780013400000000009a";
|
|
105
|
-
|
|
106
|
-
// [FRAME type=DATA ackNum=0 frmNum=1]
|
|
107
|
-
export const MESSAGE_SENT_HANDLER_FN1_ASH_RAW = "1065b1a96b2a15b259944afb6351934f9c4f26ebfcce677d31fec66357897e";
|
|
108
|
-
// [CBFRAME: ID=63:"MESSAGE_SENT_HANDLER" Seq=39 Len=26]
|
|
109
|
-
// ezspMessageSentHandler(): callback called with: [status=OK], [type=DIRECT], [indexOrDestination=51678], [apsFrame={"profileId":260,"clusterId":6,"sourceEndpoint":1,"destinationEndpoint":1,"options":4416,"groupId":0,"sequence":154}], [messageTag=3]
|
|
110
|
-
export const MESSAGE_SENT_HANDLER_FN1_EZSP = "2790013f000000000000dec9040106000101401100009a030000";
|
|
111
|
-
|
|
112
|
-
// [FRAME type=DATA ackNum=0 frmNum=2]
|
|
113
|
-
export const INCOMING_MESSAGE_HANDLER_FN2_ASH_RAW = "2065b1a97d312a15b658924a24ab5593499c3ef962edce678bfdc6638903813ca7edcdde6f8ae7c3d0d5d26b68937e";
|
|
114
|
-
// [CBFRAME: ID=69:"INCOMING_MESSAGE_HANDLER" Seq=39 Len=42]
|
|
115
|
-
// ezspIncomingMessageHandler(): callback called with: [type=UNICAST], [apsFrame={"profileId":260,"clusterId":6,"sourceEndpoint":1,"destinationEndpoint":1,"options":256,"groupId":0,"sequence":112}], [packetInfo:{"senderShortId":51678,"senderLongId":"0x0000000000000000","bindingIndex":255,"addressIndex":255,"lastHopLqi":3,"lastHopRssi":0,"lastHopTimestamp":6}], [messageContents=18040b0000]
|
|
116
|
-
// Received payload: clusterID=6, address=51678, groupID=0, endpoint=1, destinationEndpoint=1, wasBroadcast=false, linkQuality=3, frame={"header":{"frameControl":{"frameType":0,"manufacturerSpecific":false,"direction":1,"disableDefaultResponse":true,"reservedBits":0},"manufacturerCode":null,"transactionSequenceNumber":4,"commandIdentifier":11},"payload":{"cmdId":0,"statusCode":0},"command":{"ID":11,"name":"defaultRsp","parameters":[{"name":"cmdId","type":32},{"name":"statusCode","type":32}]}}
|
|
117
|
-
export const INCOMING_MESSAGE_HANDLER_FN2_EZSP = "2790014500000401060001010001000070dec90000000000000000ffff0300060000000518040b000002";
|
|
118
|
-
|
|
119
|
-
// [FRAME type=DATA ackNum=0 frmNum=0]
|
|
120
|
-
export const MESSAGE_SENT_HANDLER_FN0_ASH_RAW = "0065b1a96b2a15b259944afb6351934f9c4f26ebfcce6766fec66302907e";
|
|
121
|
-
// [CBFRAME: ID=63:"MESSAGE_SENT_HANDLER" Seq=39 Len=26]
|
|
122
|
-
// ezspMessageSentHandler(): callback called with: [status=OK], [type=DIRECT], [indexOrDestination=51678], [apsFrame={"profileId":260,"clusterId":6,"sourceEndpoint":1,"destinationEndpoint":1,"options":4416,"groupId":0,"sequence":237}], [messageTag=3]
|
|
123
|
-
export const MESSAGE_SENT_HANDLER_FN0_EZSP = "2790013f000000000000dec904010600010140110000ed030000";
|
|
124
|
-
|
|
125
|
-
// [FRAME: ID=85:"SET_POLICY" Seq=79 Len=7]
|
|
126
|
-
// [FRAME type=DATA frmTx=7 frmRx=0]
|
|
127
|
-
export const SET_POLICY_ASH_RAW = "700d21a9012a15b0f5667e";
|
|
128
|
-
// [FRAME type=DATA ackNum=0 frmNum=1]
|
|
129
|
-
export const SET_POLICY_REPLY_FN1_ASH_RAW = "100da1a9012a15b259944fb87e";
|
|
130
|
-
// [FRAME: ID=85:"SET_POLICY" Seq=79 Len=9]
|
|
131
|
-
export const SET_POLICY_REPLY_FN1_EZSP = "4f8001550000000000";
|