zigbee-herdsman
Version:
An open source ZigBee gateway solution with node.js.
866 lines • 35.5 kB
JavaScript
"use strict";
/* istanbul ignore file */
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.EmberSecurityManagerNetworkKeyInfo = exports.EmberSecurityManagerContext = exports.EmberIeeeRawFrame = exports.EmberRawFrame = exports.EmberRoutingTable = exports.EmberRoutingTableEntry = exports.EmberNeighbors = exports.EmberNeighbor = exports.EmberMultiAddress = exports.EmberSimpleDescriptor = exports.EmberNodeDescriptor = exports.EmberGpSinkListEntry = exports.EmberGpAddress = exports.EmberRf4cePairingTableEntry = exports.EmberRf4ceApplicationInfo = exports.EmberRf4ceVendorInfo = exports.EmberTokTypeStackZllSecurity = exports.EmberTokTypeStackZllData = exports.EmberZllAddressAssignment = exports.EmberZllDeviceInfoRecord = exports.EmberZllInitialSecurityState = exports.EmberZllNetwork = exports.EmberZllSecurityAlgorithmData = exports.EmberNetworkInitStruct = exports.EmberKeyStruct = exports.EmberCurrentSecurityState = exports.EmberInitialSecurityState = exports.EmberRouteTableEntry = exports.EmberNeighborTableEntry = exports.EmberAesMmoHashContext = exports.EmberMessageDigest = exports.EmberSignature283k1Data = exports.EmberPrivateKey283k1Data = exports.EmberPublicKey283k1Data = exports.EmberCertificate283k1Data = exports.EmberSignatureData = exports.EmberSmacData = exports.EmberPrivateKeyData = exports.EmberPublicKeyData = exports.EmberCertificateData = exports.EmberKeyData = exports.EmberMulticastTableEntry = exports.EmberBindingTableEntry = exports.EmberApsFrame = exports.EmberZigbeeNetwork = exports.EmberNetworkParameters = exports.EzspStruct = void 0;
const basic = __importStar(require("./basic"));
const named = __importStar(require("./named"));
class EzspStruct {
/* eslint-disable-next-line @typescript-eslint/no-explicit-any*/
static serialize(cls, obj) {
return Buffer.concat(
/* eslint-disable-next-line @typescript-eslint/no-explicit-any*/
cls._fields.map((field) => {
const value = obj[field[0]];
// console.assert(field[1]);
return field[1].serialize(field[1], value);
}));
}
/* eslint-disable-next-line @typescript-eslint/no-explicit-any*/
static deserialize(cls, data) {
const r = new cls();
for (const [field_name, field_type] of cls._fields) {
let v;
[v, data] = field_type.deserialize(field_type, data);
r[field_name] = v;
}
return [r, data];
}
toString() {
return `${this.constructor.name}: ${JSON.stringify(this)}`;
}
}
exports.EzspStruct = EzspStruct;
class EmberNetworkParameters extends EzspStruct {
// @ts-expect-error set via _fields
extendedPanId;
// @ts-expect-error set via _fields
panId;
// @ts-expect-error set via _fields
radioTxPower;
// @ts-expect-error set via _fields
radioChannel;
// @ts-expect-error set via _fields
joinMethod;
// @ts-expect-error set via _fields
nwkManagerId;
// @ts-expect-error set via _fields
nwkUpdateId;
// @ts-expect-error set via _fields
channels;
static _fields = [
// The network's extended PAN identifier.
['extendedPanId', basic.fixed_list(8, basic.uint8_t)],
// The network's PAN identifier.
['panId', basic.uint16_t],
// A power setting, in dBm.
['radioTxPower', basic.uint8_t],
// A radio channel.
['radioChannel', basic.uint8_t],
// The method used to initially join the network.
['joinMethod', named.EmberJoinMethod],
// NWK Manager ID. The ID of the network manager in the current network.
// This may only be set at joining when using USE_NWK_COMMISSIONING as
// the join method.
['nwkManagerId', named.EmberNodeId],
// NWK Update ID. The value of the ZigBee nwkUpdateId known by the
// stack. This is used to determine the newest instance of the network
// after a PAN ID or channel change. This may only be set at joining
// when using USE_NWK_COMMISSIONING as the join method.
['nwkUpdateId', basic.uint8_t],
// NWK channel mask. The list of preferred channels that the NWK manager
// has told this device to use when searching for the network. This may
// only be set at joining when using USE_NWK_COMMISSIONING as the join
// method.
['channels', basic.uint32_t],
];
}
exports.EmberNetworkParameters = EmberNetworkParameters;
class EmberZigbeeNetwork extends EzspStruct {
// The parameters of a ZigBee network.
static _fields = [
// The 802.15.4 channel associated with the network.
['channel', basic.uint8_t],
// The network's PAN identifier.
['panId', basic.uint16_t],
// The network's extended PAN identifier.
['extendedPanId', basic.fixed_list(8, basic.uint8_t)],
// Whether the network is allowing MAC associations.
['allowingJoin', named.Bool],
// The Stack Profile associated with the network.
['stackProfile', basic.uint8_t],
// The instance of the Network.
['nwkUpdateId', basic.uint8_t],
];
}
exports.EmberZigbeeNetwork = EmberZigbeeNetwork;
class EmberApsFrame extends EzspStruct {
// @ts-expect-error set via _fields
profileId;
// @ts-expect-error set via _fields
sequence;
// @ts-expect-error set via _fields
clusterId;
// @ts-expect-error set via _fields
sourceEndpoint;
// @ts-expect-error set via _fields
destinationEndpoint;
groupId;
options;
// ZigBee APS frame parameters.
static _fields = [
// The application profile ID that describes the format of the message.
['profileId', basic.uint16_t],
// The cluster ID for this message.
['clusterId', basic.uint16_t],
// The source endpoint.
['sourceEndpoint', basic.uint8_t],
// The destination endpoint.
['destinationEndpoint', basic.uint8_t],
// A bitmask of options.
['options', named.EmberApsOption],
// The group ID for this message, if it is multicast mode.
['groupId', basic.uint16_t],
// The sequence number.
['sequence', basic.uint8_t],
];
}
exports.EmberApsFrame = EmberApsFrame;
class EmberBindingTableEntry extends EzspStruct {
// An entry in the binding table.
static _fields = [
// The type of binding.
['type', named.EmberBindingType],
// The endpoint on the local node.
['local', basic.uint8_t],
// A cluster ID that matches one from the local endpoint's simple
// descriptor.This cluster ID is set by the provisioning application to
// indicate which part an endpoint's functionality is bound to this
// particular remote node and is used to distinguish between unicast and
// multicast bindings.Note that a binding can be used to send messages
// with any cluster ID, not just that listed in the binding.
['clusterId', basic.uint16_t],
// The endpoint on the remote node [specified by identifier].
['remote', basic.uint8_t],
// A 64- bit identifier.This is either the destination EUI64 [for
// unicasts] or the 64- bit group address [for multicasts].
['identifier', named.EmberEUI64],
// The index of the network the binding belongs to.
['networkIndex', basic.uint8_t],
];
}
exports.EmberBindingTableEntry = EmberBindingTableEntry;
class EmberMulticastTableEntry extends EzspStruct {
// @ts-expect-error set via _fields
multicastId;
// @ts-expect-error set via _fields
endpoint;
// @ts-expect-error set via _fields
networkIndex;
// A multicast table entry indicates that a particular endpoint is a member
// of a particular multicast group.Only devices with an endpoint in a
// multicast group will receive messages sent to that multicast group.
static _fields = [
// The multicast group ID.
['multicastId', named.EmberMulticastId],
// The endpoint that is a member, or 0 if this entry is not in use[the
// ZDO is not a member of any multicast groups.]
['endpoint', basic.uint8_t],
// The network index of the network the entry is related to.
['networkIndex', basic.uint8_t],
];
}
exports.EmberMulticastTableEntry = EmberMulticastTableEntry;
class EmberKeyData extends EzspStruct {
// @ts-expect-error set via _fields
contents;
// A 128- bit key.
static _fields = [
// The key data.
['contents', basic.fixed_list(16, basic.uint8_t)],
];
}
exports.EmberKeyData = EmberKeyData;
class EmberCertificateData extends EzspStruct {
// @ts-expect-error set via _fields
contents;
// The implicit certificate used in CBKE.
static _fields = [
// The certificate data.
['contents', basic.fixed_list(48, basic.uint8_t)],
];
}
exports.EmberCertificateData = EmberCertificateData;
class EmberPublicKeyData extends EzspStruct {
// @ts-expect-error set via _fields
contents;
// The public key data used in CBKE.
static _fields = [
// The public key data.
['contents', basic.fixed_list(22, basic.uint8_t)],
];
}
exports.EmberPublicKeyData = EmberPublicKeyData;
class EmberPrivateKeyData extends EzspStruct {
// @ts-expect-error set via _fields
contents;
// The private key data used in CBKE.
static _fields = [
// The private key data.
['contents', basic.fixed_list(21, basic.uint8_t)],
];
}
exports.EmberPrivateKeyData = EmberPrivateKeyData;
class EmberSmacData extends EzspStruct {
// The Shared Message Authentication Code data used in CBKE.
static _fields = [
// The Shared Message Authentication Code data.
['contents', basic.fixed_list(16, basic.uint8_t)],
];
}
exports.EmberSmacData = EmberSmacData;
class EmberSignatureData extends EzspStruct {
// An ECDSA signature
static _fields = [
// The signature data.
['contents', basic.fixed_list(42, basic.uint8_t)],
];
}
exports.EmberSignatureData = EmberSignatureData;
class EmberCertificate283k1Data extends EzspStruct {
// The implicit certificate used in CBKE.
static _fields = [
// The 283k1 certificate data.
['contents', basic.fixed_list(74, basic.uint8_t)],
];
}
exports.EmberCertificate283k1Data = EmberCertificate283k1Data;
class EmberPublicKey283k1Data extends EzspStruct {
// The public key data used in CBKE.
static _fields = [
// The 283k1 public key data.
['contents', basic.fixed_list(37, basic.uint8_t)],
];
}
exports.EmberPublicKey283k1Data = EmberPublicKey283k1Data;
class EmberPrivateKey283k1Data extends EzspStruct {
// The private key data used in CBKE.
static _fields = [
// The 283k1 private key data.
['contents', basic.fixed_list(36, basic.uint8_t)],
];
}
exports.EmberPrivateKey283k1Data = EmberPrivateKey283k1Data;
class EmberSignature283k1Data extends EzspStruct {
// An ECDSA signature
static _fields = [
// The 283k1 signature data.
['contents', basic.fixed_list(72, basic.uint8_t)],
];
}
exports.EmberSignature283k1Data = EmberSignature283k1Data;
class EmberMessageDigest extends EzspStruct {
// The calculated digest of a message
static _fields = [
// The calculated digest of a message.
['contents', basic.fixed_list(16, basic.uint8_t)],
];
}
exports.EmberMessageDigest = EmberMessageDigest;
class EmberAesMmoHashContext extends EzspStruct {
// @ts-expect-error set via _fields
result;
// @ts-expect-error set via _fields
length;
// The hash context for an ongoing hash operation.
static _fields = [
// The result of ongoing the hash operation.
['result', basic.fixed_list(16, basic.uint8_t)],
// The total length of the data that has been hashed so far.
['length', basic.uint32_t],
];
}
exports.EmberAesMmoHashContext = EmberAesMmoHashContext;
class EmberNeighborTableEntry extends EzspStruct {
// A neighbor table entry stores information about the reliability of RF
// links to and from neighboring nodes.
static _fields = [
// The neighbor's two byte network id
['shortId', basic.uint16_t],
// An exponentially weighted moving average of the link quality values
// of incoming packets from this neighbor as reported by the PHY.
['averageLqi', basic.uint8_t],
// The incoming cost for this neighbor, computed from the average LQI.
// Values range from 1 for a good link to 7 for a bad link.
['inCost', basic.uint8_t],
// The outgoing cost for this neighbor, obtained from the most recently
// received neighbor exchange message from the neighbor. A value of zero
// means that a neighbor exchange message from the neighbor has not been
// received recently enough, or that our id was not present in the most
// recently received one.
['outCost', basic.uint8_t],
// The number of aging periods elapsed since a link status message was
// last received from this neighbor. The aging period is 16 seconds.
['age', basic.uint8_t],
// The 8 byte EUI64 of the neighbor.
['longId', named.EmberEUI64],
];
}
exports.EmberNeighborTableEntry = EmberNeighborTableEntry;
class EmberRouteTableEntry extends EzspStruct {
// A route table entry stores information about the next hop along the route
// to the destination.
static _fields = [
// The short id of the destination. A value of 0xFFFF indicates the
// entry is unused.
['destination', basic.uint16_t],
// The short id of the next hop to this destination.
['nextHop', basic.uint16_t],
// Indicates whether this entry is active [0], being discovered [1]],
// unused [3], or validating [4].
['status', basic.uint8_t],
// The number of seconds since this route entry was last used to send a
// packet.
['age', basic.uint8_t],
// Indicates whether this destination is a High RAM Concentrator [2], a
// Low RAM Concentrator [1], or not a concentrator [0].
['concentratorType', basic.uint8_t],
// For a High RAM Concentrator, indicates whether a route record is
// needed [2], has been sent [1], or is no long needed [0] because a
// source routed message from the concentrator has been received.
['routeRecordState', basic.uint8_t],
];
}
exports.EmberRouteTableEntry = EmberRouteTableEntry;
class EmberInitialSecurityState extends EzspStruct {
// @ts-expect-error set via _fields
bitmask;
// @ts-expect-error set via _fields
preconfiguredKey;
// @ts-expect-error set via _fields
networkKey;
// @ts-expect-error set via _fields
networkKeySequenceNumber;
// @ts-expect-error set via _fields
preconfiguredTrustCenterEui64;
// The security data used to set the configuration for the stack, or the
// retrieved configuration currently in use.
static _fields = [
// A bitmask indicating the security state used to indicate what the
// security configuration will be when the device forms or joins the
// network.
['bitmask', named.EmberInitialSecurityBitmask],
// The pre-configured Key data that should be used when forming or
// joining the network. The security bitmask must be set with the
// HAVE_PRECONFIGURED_KEY bit to indicate that the key contains valid
// data.
['preconfiguredKey', EmberKeyData],
// The Network Key that should be used by the Trust Center when it forms
// the network, or the Network Key currently in use by a joined device.
// The security bitmask must be set with HAVE_NETWORK_KEY to indicate
// that the key contains valid data.
['networkKey', EmberKeyData],
// The sequence number associated with the network key. This is only
// valid if the HAVE_NETWORK_KEY has been set in the security bitmask.
['networkKeySequenceNumber', basic.uint8_t],
// This is the long address of the trust center on the network that will
// be joined. It is usually NOT set prior to joining the network and
// instead it is learned during the joining message exchange. This field
// is only examined if HAVE_TRUST_CENTER_EUI64 is set in the
// EmberInitialSecurityState::bitmask. Most devices should clear that
// bit and leave this field alone. This field must be set when using
// commissioning mode.
['preconfiguredTrustCenterEui64', named.EmberEUI64],
];
}
exports.EmberInitialSecurityState = EmberInitialSecurityState;
class EmberCurrentSecurityState extends EzspStruct {
// The security options and information currently used by the stack.
static _fields = [
// A bitmask indicating the security options currently in use by a
// device joined in the network.
['bitmask', named.EmberCurrentSecurityBitmask],
// The IEEE Address of the Trust Center device.
['trustCenterLongAddress', named.EmberEUI64],
];
}
exports.EmberCurrentSecurityState = EmberCurrentSecurityState;
class EmberKeyStruct extends EzspStruct {
// @ts-expect-error set via _fields
key;
// @ts-expect-error set via _fields
outgoingFrameCounter;
// @ts-expect-error set via _fields
sequenceNumber;
// A structure containing a key and its associated data.
static _fields = [
// A bitmask indicating the presence of data within the various fields
// in the structure.
['bitmask', named.EmberKeyStructBitmask],
// The type of the key.
['type', named.EmberKeyType],
// The actual key data.
['key', EmberKeyData],
// The outgoing frame counter associated with the key.
['outgoingFrameCounter', basic.uint32_t],
// The frame counter of the partner device associated with the key.
['incomingFrameCounter', basic.uint32_t],
// The sequence number associated with the key.
['sequenceNumber', basic.uint8_t],
// The IEEE address of the partner device also in possession of the key.
['partnerEUI64', named.EmberEUI64],
];
}
exports.EmberKeyStruct = EmberKeyStruct;
class EmberNetworkInitStruct extends EzspStruct {
// Network Initialization parameters.
static _fields = [
// Configuration options for network init.
['bitmask', named.EmberNetworkInitBitmask],
];
}
exports.EmberNetworkInitStruct = EmberNetworkInitStruct;
class EmberZllSecurityAlgorithmData extends EzspStruct {
// Data associated with the ZLL security algorithm.
static _fields = [
// Transaction identifier.
['transactionId', basic.uint32_t],
// Response identifier.
['responseId', basic.uint32_t],
// Bitmask.
['bitmask', basic.uint16_t],
];
}
exports.EmberZllSecurityAlgorithmData = EmberZllSecurityAlgorithmData;
class EmberZllNetwork extends EzspStruct {
// The parameters of a ZLL network.
static _fields = [
// The parameters of a ZigBee network.
['zigbeeNetwork', EmberZigbeeNetwork],
// Data associated with the ZLL security algorithm.
['securityAlgorithm', EmberZllSecurityAlgorithmData],
// Associated EUI64.
['eui64', named.EmberEUI64],
// The node id.
['nodeId', named.EmberNodeId],
// The ZLL state.
['state', named.EmberZllState],
// The node type.
['nodeType', named.EmberNodeType],
// The number of sub devices.
['numberSubDevices', basic.uint8_t],
// The total number of group identifiers.
['totalGroupIdentifiers', basic.uint8_t],
// RSSI correction value.
['rssiCorrection', basic.uint8_t],
];
}
exports.EmberZllNetwork = EmberZllNetwork;
class EmberZllInitialSecurityState extends EzspStruct {
// Describes the initial security features and requirements that will be
// used when forming or joining ZLL networks.
static _fields = [
// Unused bitmask; reserved for future use.
['bitmask', basic.uint32_t],
// The key encryption algorithm advertised by the application.
['keyIndex', named.EmberZllKeyIndex],
// The encryption key for use by algorithms that require it.
['encryptionKey', EmberKeyData],
// The pre-configured link key used during classical ZigBee
// commissioning.
['preconfiguredKey', EmberKeyData],
];
}
exports.EmberZllInitialSecurityState = EmberZllInitialSecurityState;
class EmberZllDeviceInfoRecord extends EzspStruct {
// Information about a specific ZLL Device.
static _fields = [
// EUI64 associated with the device.
['ieeeAddress', named.EmberEUI64],
// Endpoint id.
['endpointId', basic.uint8_t],
// Profile id.
['profileId', basic.uint16_t],
// Device id.
['deviceId', basic.uint16_t],
// Associated version.
['version', basic.uint8_t],
// Number of relevant group ids.
['groupIdCount', basic.uint8_t],
];
}
exports.EmberZllDeviceInfoRecord = EmberZllDeviceInfoRecord;
class EmberZllAddressAssignment extends EzspStruct {
// ZLL address assignment data.
static _fields = [
// Relevant node id.
['nodeId', named.EmberNodeId],
// Minimum free node id.
['freeNodeIdMin', named.EmberNodeId],
// Maximum free node id.
['freeNodeIdMax', named.EmberNodeId],
// Minimum group id.
['groupIdMin', named.EmberMulticastId],
// Maximum group id.
['groupIdMax', named.EmberMulticastId],
// Minimum free group id.
['freeGroupIdMin', named.EmberMulticastId],
// Maximum free group id.
['freeGroupIdMax', named.EmberMulticastId],
];
}
exports.EmberZllAddressAssignment = EmberZllAddressAssignment;
class EmberTokTypeStackZllData extends EzspStruct {
// Public API for ZLL stack data token.
static _fields = [
// Token bitmask.
['bitmask', basic.uint32_t],
// Minimum free node id.
['freeNodeIdMin', basic.uint16_t],
// Maximum free node id.
['freeNodeIdMax', basic.uint16_t],
// Local minimum group id.
['myGroupIdMin', basic.uint16_t],
// Minimum free group id.
['freeGroupIdMin', basic.uint16_t],
// Maximum free group id.
['freeGroupIdMax', basic.uint16_t],
// RSSI correction value.
['rssiCorrection', basic.uint8_t],
];
}
exports.EmberTokTypeStackZllData = EmberTokTypeStackZllData;
class EmberTokTypeStackZllSecurity extends EzspStruct {
// Public API for ZLL stack security token.
static _fields = [
// Token bitmask.
['bitmask', basic.uint32_t],
// Key index.
['keyIndex', basic.uint8_t],
// Encryption key.
['encryptionKey', basic.fixed_list(16, basic.uint8_t)],
// Preconfigured key.
['preconfiguredKey', basic.fixed_list(16, basic.uint8_t)],
];
}
exports.EmberTokTypeStackZllSecurity = EmberTokTypeStackZllSecurity;
class EmberRf4ceVendorInfo extends EzspStruct {
// The RF4CE vendor information block.
static _fields = [
// The vendor identifier field shall contain the vendor identifier of
// the node.
['vendorId', basic.uint16_t],
// The vendor string field shall contain the vendor string of the node.
['vendorString', basic.fixed_list(7, basic.uint8_t)],
];
}
exports.EmberRf4ceVendorInfo = EmberRf4ceVendorInfo;
class EmberRf4ceApplicationInfo extends EzspStruct {
// The RF4CE application information block.
static _fields = [
// The application capabilities field shall contain information relating
// to the capabilities of the application of the node.
['capabilities', named.EmberRf4ceApplicationCapabilities],
// The user string field shall contain the user specified identification
// string.
['userString', basic.fixed_list(15, basic.uint8_t)],
// The device type list field shall contain the list of device types
// supported by the node.
['deviceTypeList', basic.fixed_list(3, basic.uint8_t)],
// The profile ID list field shall contain the list of profile
// identifiers disclosed as supported by the node.
['profileIdList', basic.fixed_list(7, basic.uint8_t)],
];
}
exports.EmberRf4ceApplicationInfo = EmberRf4ceApplicationInfo;
class EmberRf4cePairingTableEntry extends EzspStruct {
// The internal representation of an RF4CE pairing table entry.
static _fields = [
// The link key to be used to secure this pairing link.
['securityLinkKey', EmberKeyData],
// The IEEE address of the destination device.
['destLongId', named.EmberEUI64],
// The frame counter last received from the recipient node.
['frameCounter', basic.uint32_t],
// The network address to be assumed by the source device.
['sourceNodeId', named.EmberNodeId],
// The PAN identifier of the destination device.
['destPanId', named.EmberPanId],
// The network address of the destination device.
['destNodeId', named.EmberNodeId],
// The vendor ID of the destination device.
['destVendorId', basic.uint16_t],
// The list of profiles supported by the destination device.
['destProfileIdList', basic.fixed_list(7, basic.uint8_t)],
// The length of the list of supported profiles.
['destProfileIdListLength', basic.uint8_t],
// Info byte.
['info', basic.uint8_t],
// The expected channel of the destination device.
['channel', basic.uint8_t],
// The node capabilities of the recipient node.
['capabilities', basic.uint8_t],
// Last MAC sequence number seen on this pairing link.
['lastSeqn', basic.uint8_t],
];
}
exports.EmberRf4cePairingTableEntry = EmberRf4cePairingTableEntry;
class EmberGpAddress extends EzspStruct {
// A GP address structure.
static _fields = [
// The GPD's EUI64.
['gpdIeeeAddress', named.EmberEUI64],
// The GPD's source ID.
['sourceId', basic.uint32_t],
// The GPD Application ID.
['applicationId', basic.uint8_t],
// The GPD endpoint.
['endpoint', basic.uint8_t],
];
}
exports.EmberGpAddress = EmberGpAddress;
class EmberGpSinkListEntry extends EzspStruct {
// A sink list entry
static _fields = [
// The sink list type.
['type', basic.uint8_t],
// The EUI64 of the target sink.
['sinkEUI', named.EmberEUI64],
// The short address of the target sink.
['sinkNodeId', named.EmberNodeId],
];
}
exports.EmberGpSinkListEntry = EmberGpSinkListEntry;
class EmberNodeDescriptor extends EzspStruct {
static _fields = [
['byte1', basic.uint8_t],
['byte2', basic.uint8_t],
['mac_capability_flags', basic.uint8_t],
['manufacturer_code', basic.uint16_t],
['maximum_buffer_size', basic.uint8_t],
['maximum_incoming_transfer_size', basic.uint16_t],
['server_mask', basic.uint16_t],
['maximum_outgoing_transfer_size', basic.uint16_t],
['descriptor_capability_field', basic.uint8_t],
];
}
exports.EmberNodeDescriptor = EmberNodeDescriptor;
class EmberSimpleDescriptor extends EzspStruct {
static _fields = [
['endpoint', basic.uint8_t],
['profileid', basic.uint16_t],
['deviceid', basic.uint16_t],
['deviceversion', basic.uint8_t],
['inclusterlist', basic.LVList(basic.uint16_t)],
['outclusterlist', basic.LVList(basic.uint16_t)],
];
}
exports.EmberSimpleDescriptor = EmberSimpleDescriptor;
class EmberMultiAddress extends EzspStruct {
static fields3 = [
['addrmode', basic.uint8_t],
['ieee', named.EmberEUI64],
['endpoint', basic.uint8_t],
];
static fields1 = [
['addrmode', basic.uint8_t],
['nwk', named.EmberNodeId],
];
/* eslint-disable-next-line @typescript-eslint/no-explicit-any*/
static serialize(cls, obj) {
const addrmode = obj['addrmode'];
const fields = addrmode == 3 ? cls.fields3 : cls.fields1;
return Buffer.concat(
/* eslint-disable-next-line @typescript-eslint/no-explicit-any*/
fields.map((field) => {
const value = obj[field[0]];
// console.assert(field[1]);
return field[1].serialize(field[1], value);
}));
}
}
exports.EmberMultiAddress = EmberMultiAddress;
class EmberNeighbor extends EzspStruct {
static _fields = [
['extendedpanid', basic.fixed_list(8, basic.uint8_t)],
['ieee', named.EmberEUI64],
['nodeid', named.EmberNodeId],
['packed', basic.uint8_t],
['permitjoining', basic.uint8_t],
['depth', basic.uint8_t],
['lqi', basic.uint8_t],
];
}
exports.EmberNeighbor = EmberNeighbor;
class EmberNeighbors extends EzspStruct {
static _fields = [
['entries', basic.uint8_t],
['startindex', basic.uint8_t],
['neighbors', basic.LVList(EmberNeighbor)],
];
}
exports.EmberNeighbors = EmberNeighbors;
class EmberRoutingTableEntry extends EzspStruct {
static _fields = [
['destination', basic.uint16_t],
['status', basic.uint8_t],
['nexthop', basic.uint16_t],
];
}
exports.EmberRoutingTableEntry = EmberRoutingTableEntry;
class EmberRoutingTable extends EzspStruct {
static _fields = [
['entries', basic.uint8_t],
['startindex', basic.uint8_t],
['table', basic.LVList(EmberRoutingTableEntry)],
];
}
exports.EmberRoutingTable = EmberRoutingTable;
class EmberRawFrame extends EzspStruct {
// @ts-expect-error set via _fields
ieeeFrameControl;
// @ts-expect-error set via _fields
sequence;
// @ts-expect-error set via _fields
destPanId;
// @ts-expect-error set via _fields
destNodeId;
// @ts-expect-error set via _fields
sourcePanId;
// @ts-expect-error set via _fields
ieeeAddress;
// @ts-expect-error set via _fields
nwkFrameControl;
// @ts-expect-error set via _fields
appFrameControl;
// @ts-expect-error set via _fields
clusterId;
// @ts-expect-error set via _fields
profileId;
static _fields = [
['ieeeFrameControl', basic.uint16_t],
['sequence', basic.uint8_t],
['destPanId', named.EmberPanId],
['destNodeId', named.EmberNodeId],
['sourcePanId', named.EmberPanId],
['ieeeAddress', named.EmberEUI64],
['nwkFrameControl', basic.uint16_t],
['appFrameControl', basic.uint8_t],
['clusterId', basic.uint16_t],
['profileId', basic.uint16_t],
];
}
exports.EmberRawFrame = EmberRawFrame;
class EmberIeeeRawFrame extends EzspStruct {
// @ts-expect-error set via _fields
ieeeFrameControl;
// @ts-expect-error set via _fields
sequence;
// @ts-expect-error set via _fields
destPanId;
// @ts-expect-error set via _fields
destAddress;
// @ts-expect-error set via _fields
sourcePanId;
// @ts-expect-error set via _fields
sourceAddress;
// @ts-expect-error set via _fields
nwkFrameControl;
// @ts-expect-error set via _fields
appFrameControl;
// @ts-expect-error set via _fields
clusterId;
// @ts-expect-error set via _fields
profileId;
static _fields = [
['ieeeFrameControl', basic.uint16_t],
['sequence', basic.uint8_t],
['destPanId', named.EmberPanId],
['destAddress', named.EmberEUI64],
['sourcePanId', named.EmberPanId],
['sourceAddress', named.EmberEUI64],
['nwkFrameControl', basic.uint16_t],
['appFrameControl', basic.uint8_t],
['clusterId', basic.uint16_t],
['profileId', basic.uint16_t],
];
}
exports.EmberIeeeRawFrame = EmberIeeeRawFrame;
class EmberSecurityManagerContext extends EzspStruct {
// Context for Zigbee Security Manager operations.
// @ts-expect-error set via _fields
type;
// @ts-expect-error set via _fields
index;
// @ts-expect-error set via _fields
derivedType;
// @ts-expect-error set via _fields
eui64;
// @ts-expect-error set via _fields
multiNetworkIndex;
// @ts-expect-error set via _fields
flags;
// @ts-expect-error set via _fields
psaKeyAlgPermission;
static _fields = [
// The type of key being referenced.
['type', named.EmberKeyType],
// The index of the referenced key.
['index', basic.uint8_t],
// The type of key derivation operation to perform on a key.
['derivedType', named.EmberDerivedKeyType],
// The EUI64 associated with this key.
['eui64', named.EmberEUI64],
// Multi-network index.
['multiNetworkIndex', basic.uint8_t],
// Flag bitmask.
['flags', basic.uint8_t],
// Algorithm to use with this key (for PSA APIs)
['psaKeyAlgPermission', basic.uint32_t],
];
}
exports.EmberSecurityManagerContext = EmberSecurityManagerContext;
/** This data structure contains the metadata pertaining to an network key */
class EmberSecurityManagerNetworkKeyInfo extends EzspStruct {
// @ts-expect-error set via _fields
networkKeySet; // boolean
// @ts-expect-error set via _fields
alternateNetworkKeySet; // boolean
// @ts-expect-error set via _fields
networkKeySequenceNumber;
// @ts-expect-error set via _fields
altNetworkKeySequenceNumber;
// @ts-expect-error set via _fields
networkKeyFrameCounter;
static _fields = [
['networkKeySet', basic.uint8_t],
['alternateNetworkKeySet', basic.uint8_t],
['networkKeySequenceNumber', basic.uint8_t],
['altNetworkKeySequenceNumber', basic.uint8_t],
['networkKeyFrameCounter', basic.uint32_t],
];
}
exports.EmberSecurityManagerNetworkKeyInfo = EmberSecurityManagerNetworkKeyInfo;
//# sourceMappingURL=struct.js.map