zigbee-herdsman
Version:
An open source ZigBee gateway solution with node.js.
73 lines • 2.87 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.channelsMask2list = exports.ember_security = exports.crc16ccitt = exports.Deferred = void 0;
/* istanbul ignore file */
const crc16ccitt_1 = __importDefault(require("./crc16ccitt"));
exports.crc16ccitt = crc16ccitt_1.default;
const struct_1 = require("../types/struct");
const named_1 = require("../types/named");
const crypto_1 = require("crypto");
if (!Symbol.asyncIterator) {
/* eslint-disable-next-line @typescript-eslint/no-explicit-any*/
Symbol.asyncIterator = Symbol.for("Symbol.asyncIterator");
}
class Deferred {
promise;
/* eslint-disable-next-line @typescript-eslint/ban-types*/
_resolve;
/* eslint-disable-next-line @typescript-eslint/ban-types*/
_reject;
_isResolved = false;
_isRejected = false;
constructor() {
this.promise = new Promise((resolve, reject) => {
this._resolve = resolve;
this._reject = reject;
});
}
resolve(value) {
this._isResolved = true;
this._resolve(value);
}
reject(value) {
this._isResolved = true;
this.reject(value);
}
get isResolved() {
return this._isResolved;
}
get isRejected() {
return this._isRejected;
}
get isFullfilled() {
return this._isResolved || this._isRejected;
}
}
exports.Deferred = Deferred;
/* eslint-disable-next-line @typescript-eslint/no-explicit-any*/
function ember_security(networkKey) {
const isc = new struct_1.EmberInitialSecurityState();
isc.bitmask = (named_1.EmberInitialSecurityBitmask.HAVE_PRECONFIGURED_KEY |
named_1.EmberInitialSecurityBitmask.TRUST_CENTER_GLOBAL_LINK_KEY |
named_1.EmberInitialSecurityBitmask.HAVE_NETWORK_KEY |
//EmberInitialSecurityBitmask.PRECONFIGURED_NETWORK_KEY_MODE |
named_1.EmberInitialSecurityBitmask.REQUIRE_ENCRYPTED_KEY |
named_1.EmberInitialSecurityBitmask.TRUST_CENTER_USES_HASHED_LINK_KEY);
isc.preconfiguredKey = new struct_1.EmberKeyData();
isc.preconfiguredKey.contents = (0, crypto_1.randomBytes)(16);
isc.networkKey = new struct_1.EmberKeyData();
isc.networkKey.contents = networkKey;
isc.networkKeySequenceNumber = 0;
isc.preconfiguredTrustCenterEui64 = new named_1.EmberEUI64([0, 0, 0, 0, 0, 0, 0, 0]);
return isc;
}
exports.ember_security = ember_security;
const allChannels = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26];
function channelsMask2list(channelMask) {
return allChannels.map((channel) => ((2 ** channel) & channelMask) ? channel : null).filter((x) => x);
}
exports.channelsMask2list = channelsMask2list;
//# sourceMappingURL=index.js.map