zigbee-herdsman 0.40.3 → 0.41.0
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/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +7 -0
- package/dist/adapter/adapter.d.ts +2 -4
- package/dist/adapter/adapter.d.ts.map +1 -1
- package/dist/adapter/adapter.js +15 -17
- package/dist/adapter/adapter.js.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +1 -2
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.js +65 -65
- package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
- package/dist/adapter/deconz/driver/driver.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/driver.js +44 -44
- package/dist/adapter/deconz/driver/driver.js.map +1 -1
- package/dist/adapter/deconz/driver/frameParser.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/frameParser.js +43 -43
- package/dist/adapter/deconz/driver/frameParser.js.map +1 -1
- package/dist/adapter/deconz/driver/parser.js +6 -6
- package/dist/adapter/deconz/driver/parser.js.map +1 -1
- package/dist/adapter/deconz/driver/writer.js +3 -3
- package/dist/adapter/deconz/driver/writer.js.map +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.d.ts +1 -2
- package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.js +142 -146
- package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.js +3 -1
- package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -1
- package/dist/adapter/ember/adapter/requestQueue.js +9 -12
- package/dist/adapter/ember/adapter/requestQueue.js.map +1 -1
- package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/tokensManager.js +23 -20
- package/dist/adapter/ember/adapter/tokensManager.js.map +1 -1
- package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -1
- package/dist/adapter/ember/ezsp/ezsp.js +136 -137
- package/dist/adapter/ember/ezsp/ezsp.js.map +1 -1
- package/dist/adapter/ember/uart/ash.d.ts.map +1 -1
- package/dist/adapter/ember/uart/ash.js +71 -75
- package/dist/adapter/ember/uart/ash.js.map +1 -1
- package/dist/adapter/ember/uart/parser.d.ts.map +1 -1
- package/dist/adapter/ember/uart/parser.js +3 -6
- package/dist/adapter/ember/uart/parser.js.map +1 -1
- package/dist/adapter/ember/uart/queues.d.ts.map +1 -1
- package/dist/adapter/ember/uart/queues.js +3 -1
- package/dist/adapter/ember/uart/queues.js.map +1 -1
- package/dist/adapter/ember/uart/writer.d.ts.map +1 -1
- package/dist/adapter/ember/uart/writer.js +3 -6
- package/dist/adapter/ember/uart/writer.js.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.d.ts +0 -1
- package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.js +3 -7
- package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +1 -2
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.js +23 -22
- package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
- package/dist/adapter/ezsp/driver/driver.d.ts +1 -3
- package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/driver.js +67 -64
- package/dist/adapter/ezsp/driver/driver.js.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.js +61 -50
- package/dist/adapter/ezsp/driver/ezsp.js.map +1 -1
- package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/multicast.js +8 -12
- package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
- package/dist/adapter/ezsp/driver/parser.js +5 -5
- package/dist/adapter/ezsp/driver/parser.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/basic.js +1 -1
- package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/named.js +2 -2
- package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/struct.js +2 -2
- package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
- package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/uart.js +46 -46
- package/dist/adapter/ezsp/driver/uart.js.map +1 -1
- package/dist/adapter/ezsp/driver/writer.js +3 -6
- package/dist/adapter/ezsp/driver/writer.js.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +0 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.js +25 -29
- package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.d.ts +1 -4
- package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.js +51 -60
- package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +1 -2
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.js +23 -22
- package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
- package/dist/adapter/z-stack/unpi/parser.js +6 -6
- package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
- package/dist/adapter/z-stack/unpi/writer.js +4 -7
- package/dist/adapter/z-stack/unpi/writer.js.map +1 -1
- package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/znp.js +18 -25
- package/dist/adapter/z-stack/znp/znp.js.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +1 -2
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.js +50 -50
- package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
- package/dist/adapter/zigate/driver/frame.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/frame.js +8 -8
- package/dist/adapter/zigate/driver/frame.js.map +1 -1
- package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/ziGateObject.js +5 -4
- package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
- package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/zigate.js +23 -23
- package/dist/adapter/zigate/driver/zigate.js.map +1 -1
- package/dist/controller/controller.d.ts +1 -3
- package/dist/controller/controller.d.ts.map +1 -1
- package/dist/controller/controller.js +47 -56
- package/dist/controller/controller.js.map +1 -1
- package/dist/controller/database.d.ts.map +1 -1
- package/dist/controller/database.js +3 -5
- package/dist/controller/database.js.map +1 -1
- package/dist/controller/greenPower.d.ts.map +1 -1
- package/dist/controller/greenPower.js +13 -20
- package/dist/controller/greenPower.js.map +1 -1
- package/dist/controller/helpers/requestQueue.d.ts.map +1 -1
- package/dist/controller/helpers/requestQueue.js +15 -25
- package/dist/controller/helpers/requestQueue.js.map +1 -1
- package/dist/controller/model/device.d.ts.map +1 -1
- package/dist/controller/model/device.js +44 -49
- package/dist/controller/model/device.js.map +1 -1
- package/dist/controller/model/endpoint.d.ts.map +1 -1
- package/dist/controller/model/endpoint.js +14 -18
- package/dist/controller/model/endpoint.js.map +1 -1
- package/dist/controller/model/group.d.ts.map +1 -1
- package/dist/controller/model/group.js +8 -11
- package/dist/controller/model/group.js.map +1 -1
- package/dist/controller/touchlink.js +21 -24
- package/dist/controller/touchlink.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/logger.d.ts +9 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +14 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/zcl/buffaloZcl.d.ts.map +1 -1
- package/dist/zcl/buffaloZcl.js +3 -9
- package/dist/zcl/buffaloZcl.js.map +1 -1
- package/package.json +4 -4
- package/dist/adapter/zigate/debug.d.ts +0 -8
- package/dist/adapter/zigate/debug.d.ts.map +0 -1
- package/dist/adapter/zigate/debug.js +0 -20
- package/dist/adapter/zigate/debug.js.map +0 -1
- package/dist/controller/logger-stub.d.ts +0 -7
- package/dist/controller/logger-stub.d.ts.map +0 -1
- package/dist/controller/logger-stub.js +0 -3
- package/dist/controller/logger-stub.js.map +0 -1
|
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.EmberAdapter = void 0;
|
|
7
7
|
/* istanbul ignore file */
|
|
8
|
-
const debug_1 = __importDefault(require("debug"));
|
|
9
8
|
const es6_1 = __importDefault(require("fast-deep-equal/es6"));
|
|
10
9
|
const mz_1 = require("mz");
|
|
11
10
|
const serialPortUtils_1 = __importDefault(require("../../serialPortUtils"));
|
|
@@ -28,8 +27,9 @@ const endpoints_1 = require("./endpoints");
|
|
|
28
27
|
const initters_1 = require("../utils/initters");
|
|
29
28
|
const crypto_1 = require("crypto");
|
|
30
29
|
const oneWaitress_1 = require("./oneWaitress");
|
|
30
|
+
const logger_1 = require("../../../utils/logger");
|
|
31
31
|
// import {EmberTokensManager} from "./tokensManager";
|
|
32
|
-
const
|
|
32
|
+
const NS = 'zh:ember';
|
|
33
33
|
/** Enum to pass strings from numbers up to Z2M. */
|
|
34
34
|
var RoutingTableStatus;
|
|
35
35
|
(function (RoutingTableStatus) {
|
|
@@ -245,15 +245,15 @@ class EmberAdapter extends __1.Adapter {
|
|
|
245
245
|
* NOTE: Do not use directly, use getter functions for it that check if valid or need retrieval from NCP.
|
|
246
246
|
*/
|
|
247
247
|
networkCache;
|
|
248
|
-
constructor(networkOptions, serialPortOptions, backupPath, adapterOptions
|
|
249
|
-
super(networkOptions, serialPortOptions, backupPath, adapterOptions
|
|
248
|
+
constructor(networkOptions, serialPortOptions, backupPath, adapterOptions) {
|
|
249
|
+
super(networkOptions, serialPortOptions, backupPath, adapterOptions);
|
|
250
250
|
// TODO config
|
|
251
251
|
// XXX: 'zigbeed': 4.4.x/7.4.x not supported by multiprotocol at the moment, will need refactoring when/if support is added
|
|
252
252
|
this.stackConfig = 'default';
|
|
253
253
|
// TODO config
|
|
254
254
|
this.concentratorType = consts_2.EMBER_HIGH_RAM_CONCENTRATOR;
|
|
255
255
|
const delay = (typeof this.adapterOptions.delay === 'number') ? Math.min(Math.max(this.adapterOptions.delay, 5), 60) : 5;
|
|
256
|
-
debug(`Using delay=${delay}
|
|
256
|
+
logger_1.logger.debug(`Using delay=${delay}.`, NS);
|
|
257
257
|
this.requestQueue = new requestQueue_1.EmberRequestQueue(delay);
|
|
258
258
|
this.oneWaitress = new oneWaitress_1.EmberOneWaitress();
|
|
259
259
|
this.zdoRequestBuffalo = new buffalo_1.EzspBuffalo(Buffer.alloc(consts_1.EZSP_MAX_FRAME_LENGTH));
|
|
@@ -277,12 +277,12 @@ class EmberAdapter extends __1.Adapter {
|
|
|
277
277
|
switch (status) {
|
|
278
278
|
case enums_2.EmberStatus.NETWORK_UP: {
|
|
279
279
|
this.oneWaitress.resolveEvent(oneWaitress_1.OneWaitressEvents.STACK_STATUS_NETWORK_UP);
|
|
280
|
-
|
|
280
|
+
logger_1.logger.info(`[STACK STATUS] Network up.`, NS);
|
|
281
281
|
break;
|
|
282
282
|
}
|
|
283
283
|
case enums_2.EmberStatus.NETWORK_DOWN: {
|
|
284
284
|
this.oneWaitress.resolveEvent(oneWaitress_1.OneWaitressEvents.STACK_STATUS_NETWORK_DOWN);
|
|
285
|
-
|
|
285
|
+
logger_1.logger.info(`[STACK STATUS] Network down.`, NS);
|
|
286
286
|
break;
|
|
287
287
|
}
|
|
288
288
|
case enums_2.EmberStatus.NETWORK_OPENED: {
|
|
@@ -290,29 +290,29 @@ class EmberAdapter extends __1.Adapter {
|
|
|
290
290
|
this.requestQueue.enqueue(async () => {
|
|
291
291
|
const setJPstatus = (await this.emberSetJoinPolicy(enums_2.EmberJoinDecision.USE_PRECONFIGURED_KEY));
|
|
292
292
|
if (setJPstatus !== enums_2.EzspStatus.SUCCESS) {
|
|
293
|
-
|
|
293
|
+
logger_1.logger.error(`[ZDO] Failed set join policy with status=${enums_2.EzspStatus[setJPstatus]}.`, NS);
|
|
294
294
|
return enums_2.EmberStatus.ERR_FATAL;
|
|
295
295
|
}
|
|
296
296
|
return enums_2.EmberStatus.SUCCESS;
|
|
297
|
-
},
|
|
297
|
+
}, (e) => logger_1.logger.error(e, NS), // no reject, just log error if any
|
|
298
298
|
true);
|
|
299
|
-
|
|
299
|
+
logger_1.logger.info(`[STACK STATUS] Network opened.`, NS);
|
|
300
300
|
break;
|
|
301
301
|
}
|
|
302
302
|
case enums_2.EmberStatus.NETWORK_CLOSED: {
|
|
303
303
|
this.oneWaitress.resolveEvent(oneWaitress_1.OneWaitressEvents.STACK_STATUS_NETWORK_CLOSED);
|
|
304
|
-
|
|
304
|
+
logger_1.logger.info(`[STACK STATUS] Network closed.`, NS);
|
|
305
305
|
break;
|
|
306
306
|
}
|
|
307
307
|
case enums_2.EmberStatus.CHANNEL_CHANGED: {
|
|
308
308
|
this.oneWaitress.resolveEvent(oneWaitress_1.OneWaitressEvents.STACK_STATUS_CHANNEL_CHANGED);
|
|
309
309
|
// invalidate cache
|
|
310
310
|
this.networkCache.parameters.radioChannel = consts_2.INVALID_RADIO_CHANNEL;
|
|
311
|
-
|
|
311
|
+
logger_1.logger.info(`[STACK STATUS] Channel changed.`, NS);
|
|
312
312
|
break;
|
|
313
313
|
}
|
|
314
314
|
default: {
|
|
315
|
-
debug(`[STACK STATUS] ${enums_2.EmberStatus[status]}
|
|
315
|
+
logger_1.logger.debug(`[STACK STATUS] ${enums_2.EmberStatus[status]}.`, NS);
|
|
316
316
|
break;
|
|
317
317
|
}
|
|
318
318
|
}
|
|
@@ -333,8 +333,8 @@ class EmberAdapter extends __1.Adapter {
|
|
|
333
333
|
case enums_2.EmberOutgoingMessageType.MULTICAST:
|
|
334
334
|
case enums_2.EmberOutgoingMessageType.MULTICAST_WITH_ALIAS: {
|
|
335
335
|
// BC/MC not checking for message sent, avoid unnecessary waitress lookups
|
|
336
|
-
|
|
337
|
-
+ `[apsFrame=${JSON.stringify(apsFrame)} messageTag=${messageTag}]
|
|
336
|
+
logger_1.logger.error(`Delivery of ${enums_2.EmberOutgoingMessageType[type]} failed for "${indexOrDestination}" `
|
|
337
|
+
+ `[apsFrame=${JSON.stringify(apsFrame)} messageTag=${messageTag}]`, NS);
|
|
338
338
|
break;
|
|
339
339
|
}
|
|
340
340
|
default: {
|
|
@@ -466,7 +466,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
466
466
|
this.emit(events_1.Events.zclData, payload);
|
|
467
467
|
}
|
|
468
468
|
catch (err) {
|
|
469
|
-
|
|
469
|
+
logger_1.logger.error(`<~x~ [GP] Failed creating ZCL payload. Skipping. ${err}`, NS);
|
|
470
470
|
return;
|
|
471
471
|
}
|
|
472
472
|
}
|
|
@@ -498,12 +498,12 @@ class EmberAdapter extends __1.Adapter {
|
|
|
498
498
|
const joinManufCode = WORKAROUND_JOIN_MANUF_IEEE_PREFIX_TO_CODE[newNodeEui64.substring(0, 8)] ?? DEFAULT_MANUFACTURER_CODE;
|
|
499
499
|
if (this.manufacturerCode !== joinManufCode) {
|
|
500
500
|
this.requestQueue.enqueue(async () => {
|
|
501
|
-
debug(`[WORKAROUND] Setting coordinator manufacturer code to ${zcl_1.ManufacturerCode[joinManufCode]}
|
|
501
|
+
logger_1.logger.debug(`[WORKAROUND] Setting coordinator manufacturer code to ${zcl_1.ManufacturerCode[joinManufCode]}.`, NS);
|
|
502
502
|
await this.ezsp.ezspSetManufacturerCode(joinManufCode);
|
|
503
503
|
this.manufacturerCode = joinManufCode;
|
|
504
504
|
this.emit(events_1.Events.deviceJoined, payload);
|
|
505
505
|
return enums_2.EmberStatus.SUCCESS;
|
|
506
|
-
},
|
|
506
|
+
}, (e) => logger_1.logger.error(e, NS), // no reject, just log error if any
|
|
507
507
|
true);
|
|
508
508
|
}
|
|
509
509
|
else {
|
|
@@ -511,7 +511,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
511
511
|
}
|
|
512
512
|
}
|
|
513
513
|
else {
|
|
514
|
-
|
|
514
|
+
logger_1.logger.warning(`[TRUST CENTER] Device ${newNodeId}:${newNodeEui64} was denied joining via ${parentOfNewNodeId}.`, NS);
|
|
515
515
|
}
|
|
516
516
|
}
|
|
517
517
|
}
|
|
@@ -519,13 +519,9 @@ class EmberAdapter extends __1.Adapter {
|
|
|
519
519
|
this.requestQueue.enqueue(async () => {
|
|
520
520
|
// listed as per EmberCounterType
|
|
521
521
|
const counters = (await this.ezsp.ezspReadAndClearCounters());
|
|
522
|
-
|
|
523
|
-
for (let i = 0; i < enums_2.EmberCounterType.COUNT; i++) {
|
|
524
|
-
countersLogString += `${enums_2.EmberCounterType[i]}: ${counters[i]} | `;
|
|
525
|
-
}
|
|
526
|
-
console.log(countersLogString);
|
|
522
|
+
logger_1.logger.info(`[NCP COUNTERS] ${counters.join(',')}`, NS);
|
|
527
523
|
return enums_2.EmberStatus.SUCCESS;
|
|
528
|
-
},
|
|
524
|
+
}, (e) => logger_1.logger.error(e, NS));
|
|
529
525
|
}
|
|
530
526
|
initVariables() {
|
|
531
527
|
this.ezsp.removeAllListeners(ezsp_1.EzspEvents.ncpNeedsResetAndInit);
|
|
@@ -571,7 +567,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
571
567
|
this.networkCache.parameters = parameters;
|
|
572
568
|
this.networkCache.status = (await this.ezsp.ezspNetworkState());
|
|
573
569
|
this.networkCache.eui64 = (await this.ezsp.ezspGetEui64());
|
|
574
|
-
debug(`[INIT] Network Ready! ${JSON.stringify(this.networkCache)}
|
|
570
|
+
logger_1.logger.debug(`[INIT] Network Ready! ${JSON.stringify(this.networkCache)}`, NS);
|
|
575
571
|
return result;
|
|
576
572
|
}
|
|
577
573
|
/**
|
|
@@ -657,7 +653,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
657
653
|
throw new Error(`[CONCENTRATOR] Failed to set concentrator with status=${status}.`);
|
|
658
654
|
}
|
|
659
655
|
const remainTilMTORR = (await this.ezsp.ezspSetSourceRouteDiscoveryMode(enums_2.EmberSourceRouteDiscoveryMode.RESCHEDULE));
|
|
660
|
-
|
|
656
|
+
logger_1.logger.info(`[CONCENTRATOR] Started source route discovery. ${remainTilMTORR}ms until next broadcast.`, NS);
|
|
661
657
|
}
|
|
662
658
|
/**
|
|
663
659
|
* Register fixed endpoints and set any related multicast entries that need to be.
|
|
@@ -666,7 +662,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
666
662
|
let mcTableIdx = 0;
|
|
667
663
|
for (const ep of endpoints_1.FIXED_ENDPOINTS) {
|
|
668
664
|
if (ep.networkIndex !== 0x00) {
|
|
669
|
-
debug(`Multi-network not currently supported. Skipping endpoint ${JSON.stringify(ep)}
|
|
665
|
+
logger_1.logger.debug(`Multi-network not currently supported. Skipping endpoint ${JSON.stringify(ep)}.`, NS);
|
|
670
666
|
continue;
|
|
671
667
|
}
|
|
672
668
|
const [epStatus,] = (await this.ezsp.ezspGetEndpointFlags(ep.endpoint));
|
|
@@ -677,14 +673,14 @@ class EmberAdapter extends __1.Adapter {
|
|
|
677
673
|
const status = (await this.ezsp.ezspAddEndpoint(ep.endpoint, ep.profileId, ep.deviceId, ep.deviceVersion, ep.inClusterList.slice(), // copy
|
|
678
674
|
ep.outClusterList.slice()));
|
|
679
675
|
if (status === enums_2.EzspStatus.SUCCESS) {
|
|
680
|
-
debug(`Registered endpoint "${ep.endpoint}" with status=${enums_2.EzspStatus[status]}
|
|
676
|
+
logger_1.logger.debug(`Registered endpoint "${ep.endpoint}" with status=${enums_2.EzspStatus[status]}.`, NS);
|
|
681
677
|
}
|
|
682
678
|
else {
|
|
683
679
|
throw new Error(`Failed to register endpoint "${ep.endpoint}" with status=${enums_2.EzspStatus[status]}.`);
|
|
684
680
|
}
|
|
685
681
|
}
|
|
686
682
|
else {
|
|
687
|
-
debug(`Endpoint "${ep.endpoint}" already registered
|
|
683
|
+
logger_1.logger.debug(`Endpoint "${ep.endpoint}" already registered.`, NS);
|
|
688
684
|
}
|
|
689
685
|
for (const multicastId of ep.multicastIds) {
|
|
690
686
|
const multicastEntry = {
|
|
@@ -696,7 +692,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
696
692
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
697
693
|
throw new Error(`Failed to register group "${multicastId}" in multicast table with status=${enums_2.EmberStatus[status]}.`);
|
|
698
694
|
}
|
|
699
|
-
debug(`Registered multicast table entry: ${JSON.stringify(multicastEntry)}
|
|
695
|
+
logger_1.logger.debug(`Registered multicast table entry: ${JSON.stringify(multicastEntry)}.`, NS);
|
|
700
696
|
}
|
|
701
697
|
}
|
|
702
698
|
}
|
|
@@ -729,7 +725,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
729
725
|
bitmask: (enums_2.EmberNetworkInitBitmask.PARENT_INFO_IN_TOKEN | enums_2.EmberNetworkInitBitmask.END_DEVICE_REJOIN_ON_REBOOT)
|
|
730
726
|
};
|
|
731
727
|
const initStatus = (await this.ezsp.ezspNetworkInit(networkInitStruct));
|
|
732
|
-
debug(`[INIT TC] Network init status=${enums_2.EmberStatus[initStatus]}
|
|
728
|
+
logger_1.logger.debug(`[INIT TC] Network init status=${enums_2.EmberStatus[initStatus]}.`, NS);
|
|
733
729
|
if ((initStatus !== enums_2.EmberStatus.SUCCESS) && (initStatus !== enums_2.EmberStatus.NOT_JOINED)) {
|
|
734
730
|
throw new Error(`[INIT TC] Failed network init request with status=${enums_2.EmberStatus[initStatus]}.`);
|
|
735
731
|
}
|
|
@@ -738,8 +734,8 @@ class EmberAdapter extends __1.Adapter {
|
|
|
738
734
|
// network
|
|
739
735
|
await this.oneWaitress.startWaitingForEvent({ eventName: oneWaitress_1.OneWaitressEvents.STACK_STATUS_NETWORK_UP }, DEFAULT_NETWORK_REQUEST_TIMEOUT, '[INIT TC] Network init');
|
|
740
736
|
const [npStatus, nodeType, netParams] = (await this.ezsp.ezspGetNetworkParameters());
|
|
741
|
-
debug(`[INIT TC] Current network config=${JSON.stringify(this.networkOptions)}
|
|
742
|
-
debug(`[INIT TC] Current NCP network: nodeType=${enums_2.EmberNodeType[nodeType]} params=${JSON.stringify(netParams)}
|
|
737
|
+
logger_1.logger.debug(`[INIT TC] Current network config=${JSON.stringify(this.networkOptions)}`, NS);
|
|
738
|
+
logger_1.logger.debug(`[INIT TC] Current NCP network: nodeType=${enums_2.EmberNodeType[nodeType]} params=${JSON.stringify(netParams)}`, NS);
|
|
743
739
|
if ((npStatus === enums_2.EmberStatus.SUCCESS) && (nodeType === enums_2.EmberNodeType.COORDINATOR) && (this.networkOptions.panID === netParams.panId)
|
|
744
740
|
&& ((0, es6_1.default)(this.networkOptions.extendedPanID, netParams.extendedPanId))) {
|
|
745
741
|
// config matches adapter so far, no error, we can check the network key
|
|
@@ -750,7 +746,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
750
746
|
if (nkStatus !== enums_2.SLStatus.OK) {
|
|
751
747
|
throw new Error(`[BACKUP] Failed to export Network Key with status=${enums_2.SLStatus[nkStatus]}.`);
|
|
752
748
|
}
|
|
753
|
-
debug(`[INIT TC] Current NCP network: networkKey=${networkKey.contents.toString('hex')}
|
|
749
|
+
logger_1.logger.debug(`[INIT TC] Current NCP network: networkKey=${networkKey.contents.toString('hex')}`, NS);
|
|
754
750
|
// config doesn't match adapter anymore
|
|
755
751
|
if (!networkKey.contents.equals(configNetworkKey)) {
|
|
756
752
|
action = NetworkInitAction.LEAVE;
|
|
@@ -761,7 +757,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
761
757
|
action = NetworkInitAction.LEAVE;
|
|
762
758
|
}
|
|
763
759
|
if (action === NetworkInitAction.LEAVE) {
|
|
764
|
-
|
|
760
|
+
logger_1.logger.info(`[INIT TC] NCP network does not match config. Leaving network...`, NS);
|
|
765
761
|
const leaveStatus = (await this.ezsp.ezspLeaveNetwork());
|
|
766
762
|
if (leaveStatus !== enums_2.EmberStatus.SUCCESS) {
|
|
767
763
|
throw new Error(`[INIT TC] Failed leave network request with status=${enums_2.EmberStatus[leaveStatus]}.`);
|
|
@@ -784,13 +780,13 @@ class EmberAdapter extends __1.Adapter {
|
|
|
784
780
|
}
|
|
785
781
|
else {
|
|
786
782
|
// config doesn't match backup
|
|
787
|
-
|
|
783
|
+
logger_1.logger.info(`[INIT TC] Config does not match backup.`, NS);
|
|
788
784
|
action = NetworkInitAction.FORM_CONFIG;
|
|
789
785
|
}
|
|
790
786
|
}
|
|
791
787
|
else {
|
|
792
788
|
// no backup
|
|
793
|
-
|
|
789
|
+
logger_1.logger.info(`[INIT TC] No valid backup found.`, NS);
|
|
794
790
|
action = NetworkInitAction.FORM_CONFIG;
|
|
795
791
|
}
|
|
796
792
|
}
|
|
@@ -798,7 +794,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
798
794
|
let result = 'resumed';
|
|
799
795
|
switch (action) {
|
|
800
796
|
case NetworkInitAction.FORM_BACKUP: {
|
|
801
|
-
|
|
797
|
+
logger_1.logger.info(`[INIT TC] Forming from backup.`, NS);
|
|
802
798
|
const keyList = backup.devices.map((device) => {
|
|
803
799
|
const octets = Array.from(device.ieeeAddress.reverse());
|
|
804
800
|
const deviceEui64 = '0x' + octets.map(octet => octet.toString(16).padStart(2, '0')).join("");
|
|
@@ -817,13 +813,13 @@ class EmberAdapter extends __1.Adapter {
|
|
|
817
813
|
break;
|
|
818
814
|
}
|
|
819
815
|
case NetworkInitAction.FORM_CONFIG: {
|
|
820
|
-
|
|
816
|
+
logger_1.logger.info(`[INIT TC] Forming from config.`, NS);
|
|
821
817
|
await this.formNetwork(false, /*from config*/ configNetworkKey, 0, this.networkOptions.panID, this.networkOptions.extendedPanID, this.networkOptions.channelList[0], (0, crypto_1.randomBytes)(consts_1.EMBER_ENCRYPTION_KEY_SIZE));
|
|
822
818
|
result = 'reset';
|
|
823
819
|
break;
|
|
824
820
|
}
|
|
825
821
|
case NetworkInitAction.DONE: {
|
|
826
|
-
|
|
822
|
+
logger_1.logger.info(`[INIT TC] NCP network matches config.`, NS);
|
|
827
823
|
break;
|
|
828
824
|
}
|
|
829
825
|
default: {
|
|
@@ -835,17 +831,17 @@ class EmberAdapter extends __1.Adapter {
|
|
|
835
831
|
// XXX: while this remains a pretty low occurrence in most (small) networks,
|
|
836
832
|
// currently Z2M won't support the key update because of one-way config...
|
|
837
833
|
// need to investigate handling this properly
|
|
838
|
-
//
|
|
839
|
-
// + `This may result in some devices (especially battery-powered) temporarily losing connection
|
|
834
|
+
// logger.warning(`[INIT TC] Network key frame counter is reaching its limit. Scheduling broadcast to update network key. `
|
|
835
|
+
// + `This may result in some devices (especially battery-powered) temporarily losing connection.`, NS);
|
|
840
836
|
// // XXX: no idea here on the proper timer value, but this will block the network for several seconds on exec
|
|
841
837
|
// // (probably have to take the behavior of sleepy-end devices into account to improve chances of reaching everyone right away?)
|
|
842
838
|
// setTimeout(async () => {
|
|
843
839
|
// this.requestQueue.enqueue(async (): Promise<EmberStatus> => {
|
|
844
840
|
// await this.broadcastNetworkKeyUpdate();
|
|
845
841
|
// return EmberStatus.SUCCESS;
|
|
846
|
-
// },
|
|
842
|
+
// }, logger.error, true);// no reject just log error if any, will retry next start, & prioritize so we know it'll run when expected
|
|
847
843
|
// }, 300000);
|
|
848
|
-
|
|
844
|
+
logger_1.logger.warning(`[INIT TC] Network key frame counter is reaching its limit. A new network key will have to be instaured soon.`, NS);
|
|
849
845
|
}
|
|
850
846
|
return result;
|
|
851
847
|
}
|
|
@@ -890,15 +886,15 @@ class EmberAdapter extends __1.Adapter {
|
|
|
890
886
|
nwkUpdateId: 0,
|
|
891
887
|
channels: consts_2.EMBER_ALL_802_15_4_CHANNELS_MASK,
|
|
892
888
|
};
|
|
893
|
-
|
|
889
|
+
logger_1.logger.info(`[INIT FORM] Forming new network with: ${JSON.stringify(netParams)}`, NS);
|
|
894
890
|
emberStatus = (await this.ezsp.ezspFormNetwork(netParams));
|
|
895
891
|
if (emberStatus !== enums_2.EmberStatus.SUCCESS) {
|
|
896
892
|
throw new Error(`[INIT FORM] Failed form network request with status=${enums_2.EmberStatus[emberStatus]}.`);
|
|
897
893
|
}
|
|
898
894
|
await this.oneWaitress.startWaitingForEvent({ eventName: oneWaitress_1.OneWaitressEvents.STACK_STATUS_NETWORK_UP }, DEFAULT_NETWORK_REQUEST_TIMEOUT, '[INIT FORM] Form network');
|
|
899
895
|
const stStatus = await this.ezsp.ezspStartWritingStackTokens();
|
|
900
|
-
debug(`[INIT FORM] Start writing stack tokens status=${enums_2.EzspStatus[stStatus]}
|
|
901
|
-
|
|
896
|
+
logger_1.logger.debug(`[INIT FORM] Start writing stack tokens status=${enums_2.EzspStatus[stStatus]}.`, NS);
|
|
897
|
+
logger_1.logger.info(`[INIT FORM] New network formed!`, NS);
|
|
902
898
|
}
|
|
903
899
|
/**
|
|
904
900
|
* Loads currently stored backup and returns it in internal backup model.
|
|
@@ -950,7 +946,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
950
946
|
const keyList = [];
|
|
951
947
|
for (let i = 0; i < keyTableSize; i++) {
|
|
952
948
|
[deviceEui64, plaintextKey, apsKeyMeta, status] = (await this.ezsp.ezspExportLinkKeyByIndex(i));
|
|
953
|
-
debug(`[BACKUP] Export link key at index ${i}, status=${enums_2.SLStatus[status]}
|
|
949
|
+
logger_1.logger.debug(`[BACKUP] Export link key at index ${i}, status=${enums_2.SLStatus[status]}.`, NS);
|
|
954
950
|
// only include key if we could retrieve one at index and hash it properly
|
|
955
951
|
if (status === enums_2.SLStatus.OK) {
|
|
956
952
|
// Rather than give the real link key, the backup contains a hashed version of the key.
|
|
@@ -967,11 +963,11 @@ class EmberAdapter extends __1.Adapter {
|
|
|
967
963
|
}
|
|
968
964
|
else {
|
|
969
965
|
// this should never happen?
|
|
970
|
-
|
|
966
|
+
logger_1.logger.error(`[BACKUP] Failed to hash link key at index ${i} with status=${enums_2.EmberStatus[hashStatus]}. Omitting from backup.`, NS);
|
|
971
967
|
}
|
|
972
968
|
}
|
|
973
969
|
}
|
|
974
|
-
|
|
970
|
+
logger_1.logger.info(`[BACKUP] Retrieved ${keyList.length} link keys.`, NS);
|
|
975
971
|
return keyList;
|
|
976
972
|
}
|
|
977
973
|
/**
|
|
@@ -1009,7 +1005,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1009
1005
|
+ `with status=${enums_2.EmberStatus[status]}`);
|
|
1010
1006
|
}
|
|
1011
1007
|
}
|
|
1012
|
-
debug(`[BACKUP] Imported ${backupData.length} keys
|
|
1008
|
+
logger_1.logger.debug(`[BACKUP] Imported ${backupData.length} keys.`, NS);
|
|
1013
1009
|
}
|
|
1014
1010
|
/**
|
|
1015
1011
|
* Routine to update the network key and broadcast the update to the network after a set time.
|
|
@@ -1020,11 +1016,11 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1020
1016
|
async broadcastNetworkKeyUpdate() {
|
|
1021
1017
|
return new Promise((resolve, reject) => {
|
|
1022
1018
|
this.requestQueue.enqueue(async () => {
|
|
1023
|
-
|
|
1019
|
+
logger_1.logger.warning(`[TRUST CENTER] Performing a network key update. This might take a while and disrupt normal operation.`, NS);
|
|
1024
1020
|
// zero-filled = let stack generate new random network key
|
|
1025
1021
|
let status = await this.ezsp.ezspBroadcastNextNetworkKey({ contents: Buffer.alloc(consts_1.EMBER_ENCRYPTION_KEY_SIZE) });
|
|
1026
1022
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
1027
|
-
|
|
1023
|
+
logger_1.logger.error(`[TRUST CENTER] Failed to broadcast next network key with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
1028
1024
|
return status;
|
|
1029
1025
|
}
|
|
1030
1026
|
// XXX: this will block other requests for a while, but should ensure the key propagates without interference?
|
|
@@ -1033,7 +1029,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1033
1029
|
status = (await this.ezsp.ezspBroadcastNetworkKeySwitch());
|
|
1034
1030
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
1035
1031
|
// XXX: Not sure how likely this is, but this is bad, probably should hard fail?
|
|
1036
|
-
|
|
1032
|
+
logger_1.logger.error(`[TRUST CENTER] Failed to broadcast network key switch with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
1037
1033
|
return status;
|
|
1038
1034
|
}
|
|
1039
1035
|
resolve();
|
|
@@ -1046,14 +1042,14 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1046
1042
|
* @param status
|
|
1047
1043
|
*/
|
|
1048
1044
|
async onNcpNeedsResetAndInit(status) {
|
|
1049
|
-
|
|
1045
|
+
logger_1.logger.error(`!!! NCP FATAL ERROR reason=${enums_2.EzspStatus[status]}. ATTEMPTING RESET... !!!`, NS);
|
|
1050
1046
|
try {
|
|
1051
1047
|
await this.stop();
|
|
1052
1048
|
await (0, utils_1.Wait)(500); // just because
|
|
1053
1049
|
await this.start();
|
|
1054
1050
|
}
|
|
1055
1051
|
catch (err) {
|
|
1056
|
-
|
|
1052
|
+
logger_1.logger.error(`Failed to reset and init NCP. ${err}`, NS);
|
|
1057
1053
|
this.emit(events_1.Events.disconnected);
|
|
1058
1054
|
}
|
|
1059
1055
|
}
|
|
@@ -1114,7 +1110,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1114
1110
|
this.networkCache.parameters = parameters;
|
|
1115
1111
|
}
|
|
1116
1112
|
else {
|
|
1117
|
-
|
|
1113
|
+
logger_1.logger.error(`Failed to get PAN ID (via network parameters) with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
1118
1114
|
}
|
|
1119
1115
|
}
|
|
1120
1116
|
return this.networkCache.parameters.panId;
|
|
@@ -1131,7 +1127,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1131
1127
|
this.networkCache.parameters = parameters;
|
|
1132
1128
|
}
|
|
1133
1129
|
else {
|
|
1134
|
-
|
|
1130
|
+
logger_1.logger.error(`Failed to get Extended PAN ID (via network parameters) with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
1135
1131
|
}
|
|
1136
1132
|
}
|
|
1137
1133
|
return this.networkCache.parameters.extendedPanId;
|
|
@@ -1148,7 +1144,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1148
1144
|
this.networkCache.parameters = parameters;
|
|
1149
1145
|
}
|
|
1150
1146
|
else {
|
|
1151
|
-
|
|
1147
|
+
logger_1.logger.error(`Failed to get radio channel (via network parameters) with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
1152
1148
|
}
|
|
1153
1149
|
}
|
|
1154
1150
|
return this.networkCache.parameters.radioChannel;
|
|
@@ -1159,7 +1155,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1159
1155
|
this.requestQueue.enqueue(async () => {
|
|
1160
1156
|
const status = (await this.ezsp.ezspStartScan(enums_2.EzspNetworkScanType.ENERGY_SCAN, consts_2.EMBER_ALL_802_15_4_CHANNELS_MASK, ENERGY_SCAN_DURATION));
|
|
1161
1157
|
if (status !== enums_2.SLStatus.OK) {
|
|
1162
|
-
|
|
1158
|
+
logger_1.logger.error(`Failed energy scan request with status=${enums_2.SLStatus[status]}.`, NS);
|
|
1163
1159
|
return enums_2.EmberStatus.ERR_FATAL;
|
|
1164
1160
|
}
|
|
1165
1161
|
// TODO: result in logs only atm, since UI doesn't support it
|
|
@@ -1193,7 +1189,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1193
1189
|
if (ncpEzspProtocolVer !== consts_1.EZSP_PROTOCOL_VERSION) {
|
|
1194
1190
|
throw new Error(`NCP EZSP protocol version of ${ncpEzspProtocolVer} does not match Host version ${hostEzspProtocolVer}`);
|
|
1195
1191
|
}
|
|
1196
|
-
debug(`NCP info: EZSPVersion=${ncpEzspProtocolVer} StackType=${ncpStackType} StackVersion=${ncpStackVer}
|
|
1192
|
+
logger_1.logger.debug(`NCP info: EZSPVersion=${ncpEzspProtocolVer} StackType=${ncpStackType} StackVersion=${ncpStackVer}`, NS);
|
|
1197
1193
|
const [status, versionStruct] = (await this.ezsp.ezspGetVersionStruct());
|
|
1198
1194
|
if (status !== enums_2.EzspStatus.SUCCESS) {
|
|
1199
1195
|
// Should never happen with support of only EZSP v13+
|
|
@@ -1205,9 +1201,9 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1205
1201
|
...versionStruct,
|
|
1206
1202
|
};
|
|
1207
1203
|
if (versionStruct.type !== enums_2.EmberVersionType.GA) {
|
|
1208
|
-
|
|
1204
|
+
logger_1.logger.warning(`NCP is running a non-GA version (${enums_2.EmberVersionType[versionStruct.type]}).`, NS);
|
|
1209
1205
|
}
|
|
1210
|
-
debug(`NCP version info: ${JSON.stringify(this.version)}
|
|
1206
|
+
logger_1.logger.debug(`NCP version info: ${JSON.stringify(this.version)}`, NS);
|
|
1211
1207
|
}
|
|
1212
1208
|
/**
|
|
1213
1209
|
* This function sets an EZSP config value.
|
|
@@ -1219,14 +1215,14 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1219
1215
|
*/
|
|
1220
1216
|
async emberSetEzspConfigValue(configId, value) {
|
|
1221
1217
|
const status = (await this.ezsp.ezspSetConfigurationValue(configId, value));
|
|
1222
|
-
debug(`[EzspConfigId] SET "${enums_1.EzspConfigId[configId]}" TO "${value}" with status=${enums_2.EzspStatus[status]}
|
|
1218
|
+
logger_1.logger.debug(`[EzspConfigId] SET "${enums_1.EzspConfigId[configId]}" TO "${value}" with status=${enums_2.EzspStatus[status]}.`, NS);
|
|
1223
1219
|
if (status === enums_2.EzspStatus.ERROR_INVALID_ID) {
|
|
1224
1220
|
// can be ZLL where not all NCPs need or support it.
|
|
1225
|
-
|
|
1221
|
+
logger_1.logger.warning(`[EzspConfigId] Unsupported configuration ID ${enums_1.EzspConfigId[configId]} by NCP.`, NS);
|
|
1226
1222
|
}
|
|
1227
1223
|
else if (status !== enums_2.EzspStatus.SUCCESS) {
|
|
1228
1224
|
// don't fail in case a set value gets called "out of time"
|
|
1229
|
-
|
|
1225
|
+
logger_1.logger.error(`[EzspConfigId] Failed to SET "${enums_1.EzspConfigId[configId]}" TO "${value}" with status=${enums_2.EzspStatus[status]}.`, NS);
|
|
1230
1226
|
}
|
|
1231
1227
|
return status;
|
|
1232
1228
|
}
|
|
@@ -1239,7 +1235,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1239
1235
|
*/
|
|
1240
1236
|
async emberSetEzspValue(valueId, valueLength, value) {
|
|
1241
1237
|
const status = (await this.ezsp.ezspSetValue(valueId, valueLength, value));
|
|
1242
|
-
debug(`[EzspValueId] SET "${enums_1.EzspValueId[valueId]}" TO "${value}" with status=${enums_2.EzspStatus[status]}
|
|
1238
|
+
logger_1.logger.debug(`[EzspValueId] SET "${enums_1.EzspValueId[valueId]}" TO "${value}" with status=${enums_2.EzspStatus[status]}.`, NS);
|
|
1243
1239
|
return status;
|
|
1244
1240
|
}
|
|
1245
1241
|
/**
|
|
@@ -1250,7 +1246,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1250
1246
|
*/
|
|
1251
1247
|
async emberSetEzspPolicy(policyId, decisionId) {
|
|
1252
1248
|
const status = (await this.ezsp.ezspSetPolicy(policyId, decisionId));
|
|
1253
|
-
debug(`[EzspPolicyId] SET "${enums_1.EzspPolicyId[policyId]}" TO "${decisionId}" with status=${enums_2.EzspStatus[status]}
|
|
1249
|
+
logger_1.logger.debug(`[EzspPolicyId] SET "${enums_1.EzspPolicyId[policyId]}" TO "${decisionId}" with status=${enums_2.EzspStatus[status]}.`, NS);
|
|
1254
1250
|
return status;
|
|
1255
1251
|
}
|
|
1256
1252
|
/**
|
|
@@ -1342,7 +1338,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1342
1338
|
let status = (await this.ezsp.ezspPermitJoining(duration));
|
|
1343
1339
|
let apsFrame = null;
|
|
1344
1340
|
let messageTag = null;
|
|
1345
|
-
debug(`Permit joining for ${duration} sec. status=${[status]}
|
|
1341
|
+
logger_1.logger.debug(`Permit joining for ${duration} sec. status=${[status]}`, NS);
|
|
1346
1342
|
if (broadcastMgmtPermitJoin) {
|
|
1347
1343
|
// `authentication`: TC significance always 1 (zb specs)
|
|
1348
1344
|
[status, apsFrame, messageTag] = (await this.emberPermitJoiningRequest(consts_2.EMBER_BROADCAST_ADDRESS, duration, 1, DEFAULT_APS_OPTIONS));
|
|
@@ -1386,7 +1382,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1386
1382
|
return value;
|
|
1387
1383
|
}
|
|
1388
1384
|
else {
|
|
1389
|
-
debug(`Failed to get source route overhead (via extended value), status=${enums_2.EzspStatus[status]}
|
|
1385
|
+
logger_1.logger.debug(`Failed to get source route overhead (via extended value), status=${enums_2.EzspStatus[status]}.`, NS);
|
|
1390
1386
|
}
|
|
1391
1387
|
return 0;
|
|
1392
1388
|
}
|
|
@@ -1504,17 +1500,17 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1504
1500
|
const messageContents = this.zdoRequestBuffalo.getWritten();
|
|
1505
1501
|
if (destination === consts_2.EMBER_BROADCAST_ADDRESS || destination === consts_2.EMBER_RX_ON_WHEN_IDLE_BROADCAST_ADDRESS
|
|
1506
1502
|
|| destination === consts_2.EMBER_SLEEPY_BROADCAST_ADDRESS) {
|
|
1507
|
-
debug(`~~~> [ZDO BROADCAST apsFrame=${JSON.stringify(apsFrame)} messageTag=${messageTag}]
|
|
1503
|
+
logger_1.logger.debug(`~~~> [ZDO BROADCAST apsFrame=${JSON.stringify(apsFrame)} messageTag=${messageTag}]`, NS);
|
|
1508
1504
|
const [status, apsSequence] = (await this.ezsp.ezspSendBroadcast(destination, apsFrame, this.getZDORequestRadius(), messageTag, messageContents));
|
|
1509
1505
|
apsFrame.sequence = apsSequence;
|
|
1510
|
-
debug(`~~~> [SENT ZDO type=BROADCAST apsFrame=${JSON.stringify(apsFrame)} messageTag=${messageTag} status=${enums_2.EmberStatus[status]}]
|
|
1506
|
+
logger_1.logger.debug(`~~~> [SENT ZDO type=BROADCAST apsFrame=${JSON.stringify(apsFrame)} messageTag=${messageTag} status=${enums_2.EmberStatus[status]}]`, NS);
|
|
1511
1507
|
return [status, apsFrame, messageTag];
|
|
1512
1508
|
}
|
|
1513
1509
|
else {
|
|
1514
|
-
debug(`~~~> [ZDO UNICAST apsFrame=${JSON.stringify(apsFrame)} messageTag=${messageTag}]
|
|
1510
|
+
logger_1.logger.debug(`~~~> [ZDO UNICAST apsFrame=${JSON.stringify(apsFrame)} messageTag=${messageTag}]`, NS);
|
|
1515
1511
|
const [status, apsSequence] = (await this.ezsp.ezspSendUnicast(enums_2.EmberOutgoingMessageType.DIRECT, destination, apsFrame, messageTag, messageContents));
|
|
1516
1512
|
apsFrame.sequence = apsSequence;
|
|
1517
|
-
debug(`~~~> [SENT ZDO type=DIRECT apsFrame=${JSON.stringify(apsFrame)} messageTag=${messageTag} status=${enums_2.EmberStatus[status]}]
|
|
1513
|
+
logger_1.logger.debug(`~~~> [SENT ZDO type=DIRECT apsFrame=${JSON.stringify(apsFrame)} messageTag=${messageTag} status=${enums_2.EmberStatus[status]}]`, NS);
|
|
1518
1514
|
return [status, apsFrame, messageTag];
|
|
1519
1515
|
}
|
|
1520
1516
|
}
|
|
@@ -1556,7 +1552,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1556
1552
|
this.zdoRequestBuffalo.writeListUInt16(inClusters);
|
|
1557
1553
|
this.zdoRequestBuffalo.writeUInt8(outClusters.length);
|
|
1558
1554
|
this.zdoRequestBuffalo.writeListUInt16(outClusters);
|
|
1559
|
-
debug(`~~~> [ZDO MATCH_DESCRIPTORS_REQUEST target=${target} profile=${profile} inClusters=${inClusters} outClusters=${outClusters}]
|
|
1555
|
+
logger_1.logger.debug(`~~~> [ZDO MATCH_DESCRIPTORS_REQUEST target=${target} profile=${profile} inClusters=${inClusters} outClusters=${outClusters}]`, NS);
|
|
1560
1556
|
return this.sendZDORequestBuffer(target, zdo_1.MATCH_DESCRIPTORS_REQUEST, options);
|
|
1561
1557
|
}
|
|
1562
1558
|
/**
|
|
@@ -1581,7 +1577,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1581
1577
|
this.zdoRequestBuffalo.writeIeeeAddr(target);
|
|
1582
1578
|
this.zdoRequestBuffalo.writeUInt8(reportKids ? 1 : 0);
|
|
1583
1579
|
this.zdoRequestBuffalo.writeUInt8(childStartIndex);
|
|
1584
|
-
debug(`~~~> [ZDO NETWORK_ADDRESS_REQUEST target=${target} reportKids=${reportKids} childStartIndex=${childStartIndex}]
|
|
1580
|
+
logger_1.logger.debug(`~~~> [ZDO NETWORK_ADDRESS_REQUEST target=${target} reportKids=${reportKids} childStartIndex=${childStartIndex}]`, NS);
|
|
1585
1581
|
return this.sendZDORequestBuffer(consts_2.EMBER_RX_ON_WHEN_IDLE_BROADCAST_ADDRESS, zdo_1.NETWORK_ADDRESS_REQUEST, enums_2.EmberApsOption.SOURCE_EUI64);
|
|
1586
1582
|
}
|
|
1587
1583
|
/**
|
|
@@ -1607,7 +1603,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1607
1603
|
this.zdoRequestBuffalo.writeUInt16(target);
|
|
1608
1604
|
this.zdoRequestBuffalo.writeUInt8(reportKids ? 1 : 0);
|
|
1609
1605
|
this.zdoRequestBuffalo.writeUInt8(childStartIndex);
|
|
1610
|
-
debug(`~~~> [ZDO IEEE_ADDRESS_REQUEST target=${target} reportKids=${reportKids} childStartIndex=${childStartIndex}]
|
|
1606
|
+
logger_1.logger.debug(`~~~> [ZDO IEEE_ADDRESS_REQUEST target=${target} reportKids=${reportKids} childStartIndex=${childStartIndex}]`, NS);
|
|
1611
1607
|
return this.sendZDORequestBuffer(target, zdo_1.IEEE_ADDRESS_REQUEST, options);
|
|
1612
1608
|
}
|
|
1613
1609
|
/**
|
|
@@ -1623,8 +1619,8 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1623
1619
|
this.zdoRequestBuffalo.writeUInt16(discoveryNodeId);
|
|
1624
1620
|
this.zdoRequestBuffalo.writeUInt8(reportKids ? 1 : 0);
|
|
1625
1621
|
this.zdoRequestBuffalo.writeUInt8(childStartIndex);
|
|
1626
|
-
debug(`~~~> [ZDO IEEE_ADDRESS_REQUEST targetNodeIdOfRequest=${targetNodeIdOfRequest} discoveryNodeId=${discoveryNodeId} `
|
|
1627
|
-
+ `reportKids=${reportKids} childStartIndex=${childStartIndex}]
|
|
1622
|
+
logger_1.logger.debug(`~~~> [ZDO IEEE_ADDRESS_REQUEST targetNodeIdOfRequest=${targetNodeIdOfRequest} discoveryNodeId=${discoveryNodeId} `
|
|
1623
|
+
+ `reportKids=${reportKids} childStartIndex=${childStartIndex}]`, NS);
|
|
1628
1624
|
return this.sendZDORequestBuffer(targetNodeIdOfRequest, zdo_1.IEEE_ADDRESS_REQUEST, options);
|
|
1629
1625
|
}
|
|
1630
1626
|
/**
|
|
@@ -1663,7 +1659,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1663
1659
|
this.zdoRequestBuffalo.setPosition(zdo_1.ZDO_MESSAGE_OVERHEAD);
|
|
1664
1660
|
this.zdoRequestBuffalo.writeUInt16(target);
|
|
1665
1661
|
this.zdoRequestBuffalo.writeUInt8(targetEndpoint);
|
|
1666
|
-
debug(`~~~> [ZDO SIMPLE_DESCRIPTOR_REQUEST target=${target} targetEndpoint=${targetEndpoint}]
|
|
1662
|
+
logger_1.logger.debug(`~~~> [ZDO SIMPLE_DESCRIPTOR_REQUEST target=${target} targetEndpoint=${targetEndpoint}]`, NS);
|
|
1667
1663
|
return this.sendZDORequestBuffer(target, zdo_1.SIMPLE_DESCRIPTOR_REQUEST, options);
|
|
1668
1664
|
}
|
|
1669
1665
|
/**
|
|
@@ -1738,8 +1734,8 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1738
1734
|
* @returns The tag used on the message.
|
|
1739
1735
|
*/
|
|
1740
1736
|
async emberBindRequest(target, source, sourceEndpoint, clusterId, type, destination, groupAddress, destinationEndpoint, options) {
|
|
1741
|
-
debug(`~~~> [ZDO BIND_REQUEST target=${target} source=${source} sourceEndpoint=${sourceEndpoint} clusterId=${clusterId} type=${type} `
|
|
1742
|
-
+ `destination=${destination} groupAddress=${groupAddress} destinationEndpoint=${destinationEndpoint}]
|
|
1737
|
+
logger_1.logger.debug(`~~~> [ZDO BIND_REQUEST target=${target} source=${source} sourceEndpoint=${sourceEndpoint} clusterId=${clusterId} type=${type} `
|
|
1738
|
+
+ `destination=${destination} groupAddress=${groupAddress} destinationEndpoint=${destinationEndpoint}]`, NS);
|
|
1743
1739
|
return this.emberSendZigDevBindRequest(target, zdo_1.BIND_REQUEST, source, sourceEndpoint, clusterId, type, destination, groupAddress, destinationEndpoint, options);
|
|
1744
1740
|
}
|
|
1745
1741
|
/**
|
|
@@ -1772,8 +1768,8 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1772
1768
|
* @returns The tag used on the message.
|
|
1773
1769
|
*/
|
|
1774
1770
|
async emberUnbindRequest(target, source, sourceEndpoint, clusterId, type, destination, groupAddress, destinationEndpoint, options) {
|
|
1775
|
-
debug(`~~~> [ZDO UNBIND_REQUEST target=${target} source=${source} sourceEndpoint=${sourceEndpoint} clusterId=${clusterId} type=${type} `
|
|
1776
|
-
+ `destination=${destination} groupAddress=${groupAddress} destinationEndpoint=${destinationEndpoint}]
|
|
1771
|
+
logger_1.logger.debug(`~~~> [ZDO UNBIND_REQUEST target=${target} source=${source} sourceEndpoint=${sourceEndpoint} clusterId=${clusterId} type=${type} `
|
|
1772
|
+
+ `destination=${destination} groupAddress=${groupAddress} destinationEndpoint=${destinationEndpoint}]`, NS);
|
|
1777
1773
|
return this.emberSendZigDevBindRequest(target, zdo_1.UNBIND_REQUEST, source, sourceEndpoint, clusterId, type, destination, groupAddress, destinationEndpoint, options);
|
|
1778
1774
|
}
|
|
1779
1775
|
/**
|
|
@@ -1790,7 +1786,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1790
1786
|
* ::EMBER_NETWORK_DOWN or ::EMBER_NETWORK_BUSY.
|
|
1791
1787
|
*/
|
|
1792
1788
|
async emberActiveEndpointsRequest(target, options) {
|
|
1793
|
-
debug(`~~~> [ZDO ACTIVE_ENDPOINTS_REQUEST target=${target}]
|
|
1789
|
+
logger_1.logger.debug(`~~~> [ZDO ACTIVE_ENDPOINTS_REQUEST target=${target}]`, NS);
|
|
1794
1790
|
return this.emberSendZigDevRequestTarget(target, zdo_1.ACTIVE_ENDPOINTS_REQUEST, options);
|
|
1795
1791
|
}
|
|
1796
1792
|
/**
|
|
@@ -1810,7 +1806,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1810
1806
|
* ::EMBER_NETWORK_DOWN or ::EMBER_NETWORK_BUSY.
|
|
1811
1807
|
*/
|
|
1812
1808
|
async emberPowerDescriptorRequest(target, options) {
|
|
1813
|
-
debug(`~~~> [ZDO POWER_DESCRIPTOR_REQUEST target=${target}]
|
|
1809
|
+
logger_1.logger.debug(`~~~> [ZDO POWER_DESCRIPTOR_REQUEST target=${target}]`, NS);
|
|
1814
1810
|
return this.emberSendZigDevRequestTarget(target, zdo_1.POWER_DESCRIPTOR_REQUEST, options);
|
|
1815
1811
|
}
|
|
1816
1812
|
/**
|
|
@@ -1829,7 +1825,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1829
1825
|
* ::EMBER_NETWORK_DOWN or ::EMBER_NETWORK_BUSY.
|
|
1830
1826
|
*/
|
|
1831
1827
|
async emberNodeDescriptorRequest(target, options) {
|
|
1832
|
-
debug(`~~~> [ZDO NODE_DESCRIPTOR_REQUEST target=${target}]
|
|
1828
|
+
logger_1.logger.debug(`~~~> [ZDO NODE_DESCRIPTOR_REQUEST target=${target}]`, NS);
|
|
1833
1829
|
return this.emberSendZigDevRequestTarget(target, zdo_1.NODE_DESCRIPTOR_REQUEST, options);
|
|
1834
1830
|
}
|
|
1835
1831
|
/**
|
|
@@ -1850,7 +1846,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1850
1846
|
* ::EMBER_NETWORK_DOWN or ::EMBER_NETWORK_BUSY.
|
|
1851
1847
|
*/
|
|
1852
1848
|
async emberLqiTableRequest(target, startIndex, options) {
|
|
1853
|
-
debug(`~~~> [ZDO LQI_TABLE_REQUEST target=${target} startIndex=${startIndex}]
|
|
1849
|
+
logger_1.logger.debug(`~~~> [ZDO LQI_TABLE_REQUEST target=${target} startIndex=${startIndex}]`, NS);
|
|
1854
1850
|
return this.emberTableRequest(zdo_1.LQI_TABLE_REQUEST, target, startIndex, options);
|
|
1855
1851
|
}
|
|
1856
1852
|
/**
|
|
@@ -1871,7 +1867,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1871
1867
|
* ::EMBER_NETWORK_DOWN or ::EMBER_NETWORK_BUSY.
|
|
1872
1868
|
*/
|
|
1873
1869
|
async emberRoutingTableRequest(target, startIndex, options) {
|
|
1874
|
-
debug(`~~~> [ZDO ROUTING_TABLE_REQUEST target=${target} startIndex=${startIndex}]
|
|
1870
|
+
logger_1.logger.debug(`~~~> [ZDO ROUTING_TABLE_REQUEST target=${target} startIndex=${startIndex}]`, NS);
|
|
1875
1871
|
return this.emberTableRequest(zdo_1.ROUTING_TABLE_REQUEST, target, startIndex, options);
|
|
1876
1872
|
}
|
|
1877
1873
|
/**
|
|
@@ -1893,7 +1889,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1893
1889
|
* ::EMBER_NETWORK_DOWN or ::EMBER_NETWORK_BUSY.
|
|
1894
1890
|
*/
|
|
1895
1891
|
async emberBindingTableRequest(target, startIndex, options) {
|
|
1896
|
-
debug(`~~~> [ZDO BINDING_TABLE_REQUEST target=${target} startIndex=${startIndex}]
|
|
1892
|
+
logger_1.logger.debug(`~~~> [ZDO BINDING_TABLE_REQUEST target=${target} startIndex=${startIndex}]`, NS);
|
|
1897
1893
|
return this.emberTableRequest(zdo_1.BINDING_TABLE_REQUEST, target, startIndex, options);
|
|
1898
1894
|
}
|
|
1899
1895
|
/**
|
|
@@ -1932,7 +1928,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1932
1928
|
this.zdoRequestBuffalo.setPosition(zdo_1.ZDO_MESSAGE_OVERHEAD);
|
|
1933
1929
|
this.zdoRequestBuffalo.writeIeeeAddr(deviceAddress);
|
|
1934
1930
|
this.zdoRequestBuffalo.writeUInt8(leaveRequestFlags);
|
|
1935
|
-
debug(`~~~> [ZDO LEAVE_REQUEST target=${target} deviceAddress=${deviceAddress} leaveRequestFlags=${leaveRequestFlags}]
|
|
1931
|
+
logger_1.logger.debug(`~~~> [ZDO LEAVE_REQUEST target=${target} deviceAddress=${deviceAddress} leaveRequestFlags=${leaveRequestFlags}]`, NS);
|
|
1936
1932
|
return this.sendZDORequestBuffer(target, zdo_1.LEAVE_REQUEST, options);
|
|
1937
1933
|
}
|
|
1938
1934
|
/**
|
|
@@ -1956,7 +1952,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1956
1952
|
this.zdoRequestBuffalo.setPosition(zdo_1.ZDO_MESSAGE_OVERHEAD);
|
|
1957
1953
|
this.zdoRequestBuffalo.writeUInt8(duration);
|
|
1958
1954
|
this.zdoRequestBuffalo.writeUInt8(authentication);
|
|
1959
|
-
debug(`~~~> [ZDO PERMIT_JOINING_REQUEST target=${target} duration=${duration} authentication=${authentication}]
|
|
1955
|
+
logger_1.logger.debug(`~~~> [ZDO PERMIT_JOINING_REQUEST target=${target} duration=${duration} authentication=${authentication}]`, NS);
|
|
1960
1956
|
return this.sendZDORequestBuffer(target, zdo_1.PERMIT_JOINING_REQUEST, options);
|
|
1961
1957
|
}
|
|
1962
1958
|
/**
|
|
@@ -1980,7 +1976,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
1980
1976
|
if (manager != null) {
|
|
1981
1977
|
this.zdoRequestBuffalo.writeUInt16(manager);
|
|
1982
1978
|
}
|
|
1983
|
-
debug(`~~~> [ZDO NWK_UPDATE_REQUEST target=${target} scanChannels=${scanChannels} duration=${duration} count=${count} manager=${manager}]
|
|
1979
|
+
logger_1.logger.debug(`~~~> [ZDO NWK_UPDATE_REQUEST target=${target} scanChannels=${scanChannels} duration=${duration} count=${count} manager=${manager}]`, NS);
|
|
1984
1980
|
return this.sendZDORequestBuffer(target, zdo_1.NWK_UPDATE_REQUEST, options);
|
|
1985
1981
|
}
|
|
1986
1982
|
async emberScanChannelsRequest(target, scanChannels, duration, count, options) {
|
|
@@ -2003,7 +1999,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2003
1999
|
return serialPortUtils_1.default.is((0, utils_1.RealpathSync)(path), autoDetectDefinitions);
|
|
2004
2000
|
}
|
|
2005
2001
|
catch (error) {
|
|
2006
|
-
debug(`Failed to determine if path is valid: '${error}'
|
|
2002
|
+
logger_1.logger.debug(`Failed to determine if path is valid: '${error}'`, NS);
|
|
2007
2003
|
return false;
|
|
2008
2004
|
}
|
|
2009
2005
|
}
|
|
@@ -2013,16 +2009,16 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2013
2009
|
return paths.length > 0 ? paths[0] : null;
|
|
2014
2010
|
}
|
|
2015
2011
|
async start() {
|
|
2016
|
-
|
|
2012
|
+
logger_1.logger.info(`======== Ember Adapter Starting ========`, NS);
|
|
2017
2013
|
this.initVariables();
|
|
2018
|
-
debug(`Starting EZSP with stack configuration: "${this.stackConfig}"
|
|
2014
|
+
logger_1.logger.debug(`Starting EZSP with stack configuration: "${this.stackConfig}".`, NS);
|
|
2019
2015
|
const result = await this.initEzsp();
|
|
2020
2016
|
return result;
|
|
2021
2017
|
}
|
|
2022
2018
|
async stop() {
|
|
2023
2019
|
await this.ezsp.stop();
|
|
2024
2020
|
this.initVariables();
|
|
2025
|
-
|
|
2021
|
+
logger_1.logger.info(`======== Ember Adapter Stopped ========`, NS);
|
|
2026
2022
|
}
|
|
2027
2023
|
// queued, non-InterPAN
|
|
2028
2024
|
async getCoordinator() {
|
|
@@ -2071,7 +2067,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2071
2067
|
// grab fresh version here, bypass cache
|
|
2072
2068
|
const [netStatus, , netParams] = (await this.ezsp.ezspGetNetworkParameters());
|
|
2073
2069
|
if (netStatus !== enums_2.EmberStatus.SUCCESS) {
|
|
2074
|
-
|
|
2070
|
+
logger_1.logger.error(`[BACKUP] Failed to get network parameters.`, NS);
|
|
2075
2071
|
return netStatus;
|
|
2076
2072
|
}
|
|
2077
2073
|
// update cache
|
|
@@ -2079,7 +2075,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2079
2075
|
this.networkCache.eui64 = (await this.ezsp.ezspGetEui64());
|
|
2080
2076
|
const [netKeyStatus, netKeyInfo] = (await this.ezsp.ezspGetNetworkKeyInfo());
|
|
2081
2077
|
if (netKeyStatus !== enums_2.SLStatus.OK) {
|
|
2082
|
-
|
|
2078
|
+
logger_1.logger.error(`[BACKUP] Failed to get network keys info.`, NS);
|
|
2083
2079
|
return ((netKeyStatus === enums_2.SLStatus.BUSY) || (netKeyStatus === enums_2.SLStatus.NOT_READY))
|
|
2084
2080
|
? enums_2.EmberStatus.NETWORK_BUSY : enums_2.EmberStatus.ERR_FATAL; // allow retry on statuses that should be temporary
|
|
2085
2081
|
}
|
|
@@ -2095,7 +2091,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2095
2091
|
// this.ezsp,
|
|
2096
2092
|
// Buffer.from(this.networkCache.eui64.substring(2/*0x*/), 'hex').reverse()
|
|
2097
2093
|
// ));
|
|
2098
|
-
//
|
|
2094
|
+
// logger.info(tokensBuf.toString('hex'), NS);
|
|
2099
2095
|
let context = (0, initters_1.initSecurityManagerContext)();
|
|
2100
2096
|
context.coreKeyType = enums_2.SecManKeyType.TC_LINK;
|
|
2101
2097
|
const [tcLinkKey, tclkStatus] = (await this.ezsp.ezspExportKey(context));
|
|
@@ -2177,7 +2173,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2177
2173
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2178
2174
|
const [status, apsFrame, messageTag] = (await this.emberChannelChangeRequest(consts_2.EMBER_SLEEPY_BROADCAST_ADDRESS, newChannel, DEFAULT_APS_OPTIONS));
|
|
2179
2175
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2180
|
-
|
|
2176
|
+
logger_1.logger.error(`[ZDO] Failed broadcast channel change to "${newChannel}" with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2181
2177
|
return status;
|
|
2182
2178
|
}
|
|
2183
2179
|
await this.oneWaitress.startWaitingForEvent({ eventName: oneWaitress_1.OneWaitressEvents.STACK_STATUS_CHANNEL_CHANGED }, DEFAULT_NETWORK_REQUEST_TIMEOUT * 2, // observed to ~9sec
|
|
@@ -2190,14 +2186,14 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2190
2186
|
// queued
|
|
2191
2187
|
async setTransmitPower(value) {
|
|
2192
2188
|
if (typeof value !== 'number') {
|
|
2193
|
-
|
|
2189
|
+
logger_1.logger.error(`Tried to set transmit power to non-number. Value ${value} of type ${typeof value}.`, NS);
|
|
2194
2190
|
return;
|
|
2195
2191
|
}
|
|
2196
2192
|
return new Promise((resolve, reject) => {
|
|
2197
2193
|
this.requestQueue.enqueue(async () => {
|
|
2198
2194
|
const status = await this.ezsp.ezspSetRadioPower(value);
|
|
2199
2195
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2200
|
-
|
|
2196
|
+
logger_1.logger.error(`Failed to set transmit power to ${value} status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2201
2197
|
return status;
|
|
2202
2198
|
}
|
|
2203
2199
|
resolve();
|
|
@@ -2232,17 +2228,17 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2232
2228
|
// Compute the key from the install code and CRC.
|
|
2233
2229
|
const [aesStatus, keyContents] = (await this.emberAesHashSimple(key));
|
|
2234
2230
|
if (aesStatus !== enums_2.EmberStatus.SUCCESS) {
|
|
2235
|
-
|
|
2231
|
+
logger_1.logger.error(`[ADD INSTALL CODE] Failed AES hash for "${ieeeAddress}" with status=${enums_2.EmberStatus[aesStatus]}.`, NS);
|
|
2236
2232
|
return aesStatus;
|
|
2237
2233
|
}
|
|
2238
2234
|
// Add the key to the transient key table.
|
|
2239
2235
|
// This will be used while the DUT joins.
|
|
2240
2236
|
const impStatus = (await this.ezsp.ezspImportTransientKey(ieeeAddress, { contents: keyContents }, enums_2.SecManFlag.NONE));
|
|
2241
2237
|
if (impStatus == enums_2.SLStatus.OK) {
|
|
2242
|
-
debug(`[ADD INSTALL CODE] Success for "${ieeeAddress}"
|
|
2238
|
+
logger_1.logger.debug(`[ADD INSTALL CODE] Success for "${ieeeAddress}".`, NS);
|
|
2243
2239
|
}
|
|
2244
2240
|
else {
|
|
2245
|
-
|
|
2241
|
+
logger_1.logger.error(`[ADD INSTALL CODE] Failed for "${ieeeAddress}" with status=${enums_2.SLStatus[impStatus]}.`, NS);
|
|
2246
2242
|
return enums_2.EmberStatus.ERR_FATAL;
|
|
2247
2243
|
}
|
|
2248
2244
|
resolve();
|
|
@@ -2279,19 +2275,19 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2279
2275
|
if (seconds) {
|
|
2280
2276
|
const plaintextKey = { contents: Buffer.from(consts_2.ZIGBEE_PROFILE_INTEROPERABILITY_LINK_KEY) };
|
|
2281
2277
|
const impKeyStatus = (await this.ezsp.ezspImportTransientKey(consts_2.BLANK_EUI64, plaintextKey, enums_2.SecManFlag.NONE));
|
|
2282
|
-
debug(`[ZDO] Pre joining import transient key status=${enums_2.SLStatus[impKeyStatus]}
|
|
2278
|
+
logger_1.logger.debug(`[ZDO] Pre joining import transient key status=${enums_2.SLStatus[impKeyStatus]}.`, NS);
|
|
2283
2279
|
return impKeyStatus === enums_2.SLStatus.OK ? enums_2.EmberStatus.SUCCESS : enums_2.EmberStatus.ERR_FATAL;
|
|
2284
2280
|
}
|
|
2285
2281
|
else {
|
|
2286
2282
|
if (this.manufacturerCode !== DEFAULT_MANUFACTURER_CODE) {
|
|
2287
|
-
debug(`[WORKAROUND] Reverting coordinator manufacturer code to default
|
|
2283
|
+
logger_1.logger.debug(`[WORKAROUND] Reverting coordinator manufacturer code to default.`, NS);
|
|
2288
2284
|
await this.ezsp.ezspSetManufacturerCode(DEFAULT_MANUFACTURER_CODE);
|
|
2289
2285
|
this.manufacturerCode = DEFAULT_MANUFACTURER_CODE;
|
|
2290
2286
|
}
|
|
2291
2287
|
await this.ezsp.ezspClearTransientLinkKeys();
|
|
2292
2288
|
const setJPstatus = (await this.emberSetJoinPolicy(enums_2.EmberJoinDecision.ALLOW_REJOINS_ONLY));
|
|
2293
2289
|
if (setJPstatus !== enums_2.EzspStatus.SUCCESS) {
|
|
2294
|
-
|
|
2290
|
+
logger_1.logger.error(`[ZDO] Failed set join policy for with status=${enums_2.EzspStatus[setJPstatus]}.`, NS);
|
|
2295
2291
|
return enums_2.EmberStatus.ERR_FATAL;
|
|
2296
2292
|
}
|
|
2297
2293
|
return enums_2.EmberStatus.SUCCESS;
|
|
@@ -2304,14 +2300,14 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2304
2300
|
this.checkInterpanLock();
|
|
2305
2301
|
const pjStatus = (await preJoining());
|
|
2306
2302
|
if (pjStatus !== enums_2.EmberStatus.SUCCESS) {
|
|
2307
|
-
|
|
2303
|
+
logger_1.logger.error(`[ZDO] Failed pre joining request for "${networkAddress}" with status=${enums_2.EmberStatus[pjStatus]}.`, NS);
|
|
2308
2304
|
return pjStatus;
|
|
2309
2305
|
}
|
|
2310
2306
|
// `authentication`: TC significance always 1 (zb specs)
|
|
2311
2307
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2312
2308
|
const [status, apsFrame, messageTag] = (await this.emberPermitJoiningRequest(networkAddress, seconds, 1, 0));
|
|
2313
2309
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2314
|
-
|
|
2310
|
+
logger_1.logger.error(`[ZDO] Failed permit joining request for "${networkAddress}" with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2315
2311
|
return status;
|
|
2316
2312
|
}
|
|
2317
2313
|
(await this.oneWaitress.startWaitingFor({
|
|
@@ -2331,14 +2327,14 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2331
2327
|
this.checkInterpanLock();
|
|
2332
2328
|
const pjStatus = (await preJoining());
|
|
2333
2329
|
if (pjStatus !== enums_2.EmberStatus.SUCCESS) {
|
|
2334
|
-
|
|
2330
|
+
logger_1.logger.error(`[ZDO] Failed pre joining request for "${networkAddress}" with status=${enums_2.EmberStatus[pjStatus]}.`, NS);
|
|
2335
2331
|
return pjStatus;
|
|
2336
2332
|
}
|
|
2337
2333
|
// local permit join if `Coordinator`-only requested, else local + broadcast
|
|
2338
2334
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2339
2335
|
const [status, apsFrame, messageTag] = (await this.emberPermitJoining(seconds, (networkAddress === consts_2.ZIGBEE_COORDINATOR_ADDRESS) ? false : true));
|
|
2340
2336
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2341
|
-
|
|
2337
|
+
logger_1.logger.error(`[ZDO] Failed permit joining request with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2342
2338
|
return status;
|
|
2343
2339
|
}
|
|
2344
2340
|
// NOTE: because Z2M is refreshing the permit join duration early to prevent it from closing
|
|
@@ -2371,7 +2367,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2371
2367
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2372
2368
|
const [reqStatus, apsFrame, messageTag] = (await this.emberLqiTableRequest(networkAddress, startIndex, DEFAULT_APS_OPTIONS));
|
|
2373
2369
|
if (reqStatus !== enums_2.EmberStatus.SUCCESS) {
|
|
2374
|
-
|
|
2370
|
+
logger_1.logger.error(`[ZDO] Failed LQI request for "${networkAddress}" (index "${startIndex}") with status=${enums_2.EmberStatus[reqStatus]}.`, NS);
|
|
2375
2371
|
return [reqStatus, null, null];
|
|
2376
2372
|
}
|
|
2377
2373
|
const result = (await this.oneWaitress.startWaitingFor({
|
|
@@ -2418,7 +2414,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2418
2414
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2419
2415
|
const [reqStatus, apsFrame, messageTag] = (await this.emberRoutingTableRequest(networkAddress, startIndex, DEFAULT_APS_OPTIONS));
|
|
2420
2416
|
if (reqStatus !== enums_2.EmberStatus.SUCCESS) {
|
|
2421
|
-
|
|
2417
|
+
logger_1.logger.error(`[ZDO] Failed routing table request for "${networkAddress}" (index "${startIndex}") with status=${enums_2.EmberStatus[reqStatus]}.`, NS);
|
|
2422
2418
|
return [reqStatus, null, null];
|
|
2423
2419
|
}
|
|
2424
2420
|
const result = (await this.oneWaitress.startWaitingFor({
|
|
@@ -2464,7 +2460,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2464
2460
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2465
2461
|
const [status, apsFrame, messageTag] = (await this.emberNodeDescriptorRequest(networkAddress, DEFAULT_APS_OPTIONS));
|
|
2466
2462
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2467
|
-
|
|
2463
|
+
logger_1.logger.error(`[ZDO] Failed node descriptor for "${networkAddress}" with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2468
2464
|
return status;
|
|
2469
2465
|
}
|
|
2470
2466
|
const result = (await this.oneWaitress.startWaitingFor({
|
|
@@ -2486,9 +2482,9 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2486
2482
|
}
|
|
2487
2483
|
// always 0 before rev. 21 where field was added
|
|
2488
2484
|
if (result.stackRevision < CURRENT_ZIGBEE_SPEC_REVISION) {
|
|
2489
|
-
|
|
2485
|
+
logger_1.logger.warning(`[ZDO] Node descriptor for "${networkAddress}" reports device is only compliant to revision `
|
|
2490
2486
|
+ `"${(result.stackRevision < 21) ? 'pre-21' : result.stackRevision}" of the ZigBee specification `
|
|
2491
|
-
+ `(current revision: ${CURRENT_ZIGBEE_SPEC_REVISION})
|
|
2487
|
+
+ `(current revision: ${CURRENT_ZIGBEE_SPEC_REVISION}).`, NS);
|
|
2492
2488
|
}
|
|
2493
2489
|
resolve({ type, manufacturerCode: result.manufacturerCode });
|
|
2494
2490
|
return enums_2.EmberStatus.SUCCESS;
|
|
@@ -2503,7 +2499,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2503
2499
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2504
2500
|
const [status, apsFrame, messageTag] = (await this.emberActiveEndpointsRequest(networkAddress, DEFAULT_APS_OPTIONS));
|
|
2505
2501
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2506
|
-
|
|
2502
|
+
logger_1.logger.error(`[ZDO] Failed active endpoints request for "${networkAddress}" with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2507
2503
|
return status;
|
|
2508
2504
|
}
|
|
2509
2505
|
const result = (await this.oneWaitress.startWaitingFor({
|
|
@@ -2524,8 +2520,8 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2524
2520
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2525
2521
|
const [status, apsFrame, messageTag] = (await this.emberSimpleDescriptorRequest(networkAddress, endpointID, DEFAULT_APS_OPTIONS));
|
|
2526
2522
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2527
|
-
|
|
2528
|
-
+ `with status=${enums_2.EmberStatus[status]}
|
|
2523
|
+
logger_1.logger.error(`[ZDO] Failed simple descriptor request for "${networkAddress}" endpoint "${endpointID}" `
|
|
2524
|
+
+ `with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2529
2525
|
return status;
|
|
2530
2526
|
}
|
|
2531
2527
|
const result = (await this.oneWaitress.startWaitingFor({
|
|
@@ -2555,8 +2551,8 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2555
2551
|
const [status, apsFrame, messageTag] = (await this.emberBindRequest(destinationNetworkAddress, sourceIeeeAddress, sourceEndpoint, clusterID, zdo_1.UNICAST_BINDING, destinationAddressOrGroup, null, // doesn't matter
|
|
2556
2552
|
destinationEndpoint, DEFAULT_APS_OPTIONS));
|
|
2557
2553
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2558
|
-
|
|
2559
|
-
+ `endpoint "${destinationEndpoint}" with status=${enums_2.EmberStatus[status]}
|
|
2554
|
+
logger_1.logger.error(`[ZDO] Failed bind request for "${destinationNetworkAddress}" destination "${destinationAddressOrGroup}" `
|
|
2555
|
+
+ `endpoint "${destinationEndpoint}" with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2560
2556
|
return status;
|
|
2561
2557
|
}
|
|
2562
2558
|
await this.oneWaitress.startWaitingFor({
|
|
@@ -2579,8 +2575,8 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2579
2575
|
destinationAddressOrGroup, destinationEndpoint, // doesn't matter
|
|
2580
2576
|
DEFAULT_APS_OPTIONS));
|
|
2581
2577
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2582
|
-
|
|
2583
|
-
+ `with status=${enums_2.EmberStatus[status]}
|
|
2578
|
+
logger_1.logger.error(`[ZDO] Failed bind request for "${destinationNetworkAddress}" group "${destinationAddressOrGroup}" `
|
|
2579
|
+
+ `with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2584
2580
|
return status;
|
|
2585
2581
|
}
|
|
2586
2582
|
await this.oneWaitress.startWaitingFor({
|
|
@@ -2605,8 +2601,8 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2605
2601
|
const [status, apsFrame, messageTag] = (await this.emberUnbindRequest(destinationNetworkAddress, sourceIeeeAddress, sourceEndpoint, clusterID, zdo_1.UNICAST_BINDING, destinationAddressOrGroup, null, // doesn't matter
|
|
2606
2602
|
destinationEndpoint, DEFAULT_APS_OPTIONS));
|
|
2607
2603
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2608
|
-
|
|
2609
|
-
+ `endpoint "${destinationEndpoint}" with status=${enums_2.EmberStatus[status]}
|
|
2604
|
+
logger_1.logger.error(`[ZDO] Failed unbind request for "${destinationNetworkAddress}" destination "${destinationAddressOrGroup}" `
|
|
2605
|
+
+ `endpoint "${destinationEndpoint}" with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2610
2606
|
return status;
|
|
2611
2607
|
}
|
|
2612
2608
|
await this.oneWaitress.startWaitingFor({
|
|
@@ -2629,8 +2625,8 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2629
2625
|
destinationAddressOrGroup, destinationEndpoint, // doesn't matter
|
|
2630
2626
|
DEFAULT_APS_OPTIONS));
|
|
2631
2627
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2632
|
-
|
|
2633
|
-
+ `with status=${enums_2.EmberStatus[status]}
|
|
2628
|
+
logger_1.logger.error(`[ZDO] Failed unbind request for "${destinationNetworkAddress}" group "${destinationAddressOrGroup}" `
|
|
2629
|
+
+ `with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2634
2630
|
return status;
|
|
2635
2631
|
}
|
|
2636
2632
|
await this.oneWaitress.startWaitingFor({
|
|
@@ -2652,8 +2648,8 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2652
2648
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2653
2649
|
const [status, apsFrame, messageTag] = (await this.emberLeaveRequest(networkAddress, ieeeAddr, enums_2.EmberLeaveRequestFlags.WITHOUT_REJOIN, DEFAULT_APS_OPTIONS));
|
|
2654
2650
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2655
|
-
|
|
2656
|
-
+ `with status=${enums_2.EmberStatus[status]}
|
|
2651
|
+
logger_1.logger.error(`[ZDO] Failed remove device request for "${networkAddress}" target "${ieeeAddr}" `
|
|
2652
|
+
+ `with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2657
2653
|
return status;
|
|
2658
2654
|
}
|
|
2659
2655
|
await this.oneWaitress.startWaitingFor({
|
|
@@ -2702,12 +2698,12 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2702
2698
|
return enums_2.EmberStatus.MESSAGE_TOO_LONG; // queue will reject
|
|
2703
2699
|
}
|
|
2704
2700
|
}
|
|
2705
|
-
debug(`~~~> [ZCL to=${networkAddress} apsFrame=${JSON.stringify(apsFrame)} header=${JSON.stringify(zclFrame.Header)}]
|
|
2701
|
+
logger_1.logger.debug(`~~~> [ZCL to=${networkAddress} apsFrame=${JSON.stringify(apsFrame)} header=${JSON.stringify(zclFrame.Header)}]`, NS);
|
|
2706
2702
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2707
2703
|
const [status, messageTag] = (await this.ezsp.send(enums_2.EmberOutgoingMessageType.DIRECT, networkAddress, apsFrame, data, 0, // alias
|
|
2708
2704
|
0));
|
|
2709
2705
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2710
|
-
|
|
2706
|
+
logger_1.logger.error(`~x~> [ZCL to=${networkAddress}] Failed to send request with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2711
2707
|
return status; // let queue handle retry based on status
|
|
2712
2708
|
}
|
|
2713
2709
|
if (commandResponseId != null) {
|
|
@@ -2750,13 +2746,13 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2750
2746
|
return enums_2.EmberStatus.MESSAGE_TOO_LONG; // queue will reject
|
|
2751
2747
|
}
|
|
2752
2748
|
}
|
|
2753
|
-
debug(`~~~> [ZCL GROUP apsFrame=${JSON.stringify(apsFrame)} header=${JSON.stringify(zclFrame.Header)}]
|
|
2749
|
+
logger_1.logger.debug(`~~~> [ZCL GROUP apsFrame=${JSON.stringify(apsFrame)} header=${JSON.stringify(zclFrame.Header)}]`, NS);
|
|
2754
2750
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2755
2751
|
const [status, messageTag] = (await this.ezsp.send(enums_2.EmberOutgoingMessageType.MULTICAST, apsFrame.groupId, // not used for MC
|
|
2756
2752
|
apsFrame, data, 0, // alias
|
|
2757
2753
|
0));
|
|
2758
2754
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2759
|
-
|
|
2755
|
+
logger_1.logger.error(`~x~> [ZCL GROUP] Failed to send with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2760
2756
|
return status; // let queue handle retry based on status
|
|
2761
2757
|
}
|
|
2762
2758
|
// NOTE: since ezspMessageSentHandler could take a while here, we don't block, it'll just be logged if the delivery failed
|
|
@@ -2788,12 +2784,12 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2788
2784
|
return enums_2.EmberStatus.MESSAGE_TOO_LONG; // queue will reject
|
|
2789
2785
|
}
|
|
2790
2786
|
}
|
|
2791
|
-
debug(`~~~> [ZCL BROADCAST apsFrame=${JSON.stringify(apsFrame)} header=${JSON.stringify(zclFrame.Header)}]
|
|
2787
|
+
logger_1.logger.debug(`~~~> [ZCL BROADCAST apsFrame=${JSON.stringify(apsFrame)} header=${JSON.stringify(zclFrame.Header)}]`, NS);
|
|
2792
2788
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2793
2789
|
const [status, messageTag] = (await this.ezsp.send(enums_2.EmberOutgoingMessageType.BROADCAST, consts_2.EMBER_RX_ON_WHEN_IDLE_BROADCAST_ADDRESS, apsFrame, data, 0, // alias
|
|
2794
2790
|
0));
|
|
2795
2791
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2796
|
-
|
|
2792
|
+
logger_1.logger.error(`~x~> [ZCL BROADCAST] Failed to send with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2797
2793
|
return status; // let queue handle retry based on status
|
|
2798
2794
|
}
|
|
2799
2795
|
// NOTE: since ezspMessageSentHandler could take a while here, we don't block, it'll just be logged if the delivery failed
|
|
@@ -2808,7 +2804,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2808
2804
|
// queued
|
|
2809
2805
|
async setChannelInterPAN(channel) {
|
|
2810
2806
|
if (typeof channel !== 'number') {
|
|
2811
|
-
|
|
2807
|
+
logger_1.logger.error(`Tried to set channel InterPAN to non-number. Channel ${channel} of type ${typeof channel}.`, NS);
|
|
2812
2808
|
return;
|
|
2813
2809
|
}
|
|
2814
2810
|
return new Promise((resolve, reject) => {
|
|
@@ -2817,7 +2813,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2817
2813
|
const status = (await this.ezsp.ezspSetLogicalAndRadioChannel(channel));
|
|
2818
2814
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2819
2815
|
this.interpanLock = false; // XXX: ok?
|
|
2820
|
-
|
|
2816
|
+
logger_1.logger.error(`Failed to set InterPAN channel to ${channel} with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2821
2817
|
return status;
|
|
2822
2818
|
}
|
|
2823
2819
|
resolve();
|
|
@@ -2843,10 +2839,10 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2843
2839
|
msgBuffalo.writeUInt8((enums_2.EmberInterpanMessageType.UNICAST | consts_2.INTERPAN_APS_FRAME_TYPE)); // apsFrameControl
|
|
2844
2840
|
msgBuffalo.writeUInt16(zclFrame.Cluster.ID);
|
|
2845
2841
|
msgBuffalo.writeUInt16(consts_2.TOUCHLINK_PROFILE_ID);
|
|
2846
|
-
debug(`~~~> [ZCL TOUCHLINK to=${ieeeAddress} header=${JSON.stringify(zclFrame.Header)}]
|
|
2842
|
+
logger_1.logger.debug(`~~~> [ZCL TOUCHLINK to=${ieeeAddress} header=${JSON.stringify(zclFrame.Header)}]`, NS);
|
|
2847
2843
|
const status = (await this.ezsp.ezspSendRawMessage(Buffer.concat([msgBuffalo.getWritten(), zclFrame.toBuffer()])));
|
|
2848
2844
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2849
|
-
|
|
2845
|
+
logger_1.logger.error(`~x~> [ZCL TOUCHLINK to=${ieeeAddress}] Failed to send with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2850
2846
|
return status;
|
|
2851
2847
|
}
|
|
2852
2848
|
// NOTE: can use ezspRawTransmitCompleteHandler if needed here
|
|
@@ -2888,10 +2884,10 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2888
2884
|
msgBuffalo.writeUInt16(apsFrame.clusterId);
|
|
2889
2885
|
msgBuffalo.writeUInt16(apsFrame.profileId);
|
|
2890
2886
|
const data = Buffer.concat([msgBuffalo.getWritten(), zclFrame.toBuffer()]);
|
|
2891
|
-
debug(`~~~> [ZCL TOUCHLINK BROADCAST header=${JSON.stringify(zclFrame.Header)}]
|
|
2887
|
+
logger_1.logger.debug(`~~~> [ZCL TOUCHLINK BROADCAST header=${JSON.stringify(zclFrame.Header)}]`, NS);
|
|
2892
2888
|
const status = (await this.ezsp.ezspSendRawMessage(data));
|
|
2893
2889
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2894
|
-
|
|
2890
|
+
logger_1.logger.error(`~x~> [ZCL TOUCHLINK BROADCAST] Failed to send with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2895
2891
|
return status;
|
|
2896
2892
|
}
|
|
2897
2893
|
// NOTE: can use ezspRawTransmitCompleteHandler if needed here
|
|
@@ -2912,7 +2908,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2912
2908
|
this.requestQueue.enqueue(async () => {
|
|
2913
2909
|
const status = (await this.ezsp.ezspSetLogicalAndRadioChannel(this.networkOptions.channelList[0]));
|
|
2914
2910
|
if (status !== enums_2.EmberStatus.SUCCESS) {
|
|
2915
|
-
|
|
2911
|
+
logger_1.logger.error(`Failed to restore InterPAN channel to ${this.networkOptions.channelList[0]} with status=${enums_2.EmberStatus[status]}.`, NS);
|
|
2916
2912
|
return status;
|
|
2917
2913
|
}
|
|
2918
2914
|
// let adapter settle down
|
|
@@ -2926,7 +2922,7 @@ class EmberAdapter extends __1.Adapter {
|
|
|
2926
2922
|
//-- END Adapter implementation
|
|
2927
2923
|
checkInterpanLock() {
|
|
2928
2924
|
if (this.interpanLock) {
|
|
2929
|
-
|
|
2925
|
+
logger_1.logger.error(`[INTERPAN MODE] Cannot execute non-InterPAN commands.`, NS);
|
|
2930
2926
|
// will be caught by request queue and rejected internally.
|
|
2931
2927
|
throw new Error(enums_2.EzspStatus[enums_2.EzspStatus.ERROR_INVALID_CALL]);
|
|
2932
2928
|
}
|