///
///
import * as TsType from './../../tstype';
import { Ezsp, EZSPFrameData, EZSPZDOResponseFrameData } from './ezsp';
import { EmberZDOCmd, EmberKeyData } from './types';
import { EventEmitter } from "events";
import { EmberApsFrame, EmberNetworkParameters, EmberRawFrame, EmberIeeeRawFrame } from './types/struct';
import { EmberEUI64, EmberKeyType } from './types/named';
import { ParamsDesc } from './commands';
import { EZSPAdapterBackup } from '../adapter/backup';
import { LoggerStub } from "../../../controller/logger-stub";
interface AddEndpointParameters {
endpoint?: number;
profileId?: number;
deviceId?: number;
appFlags?: number;
inputClusters?: number[];
outputClusters?: number[];
}
type EmberFrame = {
address: number;
payload: Buffer;
frame: EmberApsFrame;
};
export interface EmberIncomingMessage {
messageType: number;
apsFrame: EmberApsFrame;
lqi: number;
rssi: number;
sender: number;
bindingIndex: number;
addressIndex: number;
message: Buffer;
senderEui64: EmberEUI64;
}
export declare class Driver extends EventEmitter {
ezsp: Ezsp;
private nwkOpt;
private greenPowerGroup;
networkParams: EmberNetworkParameters;
version: {
product: number;
majorrel: string;
minorrel: string;
maintrel: string;
revision: string;
};
private eui64ToNodeId;
private eui64ToRelays;
ieee: EmberEUI64;
private multicast;
private waitress;
private transactionID;
private serialOpt;
backupMan: EZSPAdapterBackup;
private logger;
constructor(serialOpt: TsType.SerialPortOptions, nwkOpt: TsType.NetworkOptions, greenPowerGroup: number, backupPath: string, logger: LoggerStub);
/**
* Requested by the EZSP watchdog after too many failures, or by UART layer after port closed unexpectedly.
* Tries to stop the layers below and startup again.
* @returns
*/
reset(): Promise;
private onEzspReset;
private onEzspClose;
stop(emitClose?: boolean): Promise;
startup(): Promise;
private needsToBeInitialised;
private formNetwork;
private handleFrame;
private handleRouteRecord;
private handleRouteError;
private handleNetworkStatus;
private handleNodeLeft;
private resetMfgId;
handleNodeJoined(nwk: number, ieee: EmberEUI64 | number[]): void;
setNode(nwk: number, ieee: EmberEUI64 | number[]): void;
request(nwk: number | EmberEUI64, apsFrame: EmberApsFrame, data: Buffer, extendedTimeout?: boolean): Promise;
mrequest(apsFrame: EmberApsFrame, data: Buffer, timeout?: number): Promise;
rawrequest(rawFrame: EmberRawFrame, data: Buffer, timeout?: number): Promise;
ieeerawrequest(rawFrame: EmberIeeeRawFrame, data: Buffer, timeout?: number): Promise;
brequest(destination: number, apsFrame: EmberApsFrame, data: Buffer): Promise;
private nextTransactionID;
makeApsFrame(clusterId: number, disableResponse: boolean): EmberApsFrame;
makeEmberRawFrame(): EmberRawFrame;
makeEmberIeeeRawFrame(): EmberIeeeRawFrame;
zdoRequest(networkAddress: number, requestCmd: EmberZDOCmd, responseCmd: EmberZDOCmd, params: ParamsDesc): Promise;
networkIdToEUI64(nwk: number): Promise;
preJoining(seconds: number): Promise;
permitJoining(seconds: number): Promise;
makeZDOframe(name: string | number, params: ParamsDesc): Buffer;
addEndpoint({ endpoint, profileId, deviceId, appFlags, inputClusters, outputClusters }: AddEndpointParameters): Promise;
waitFor(address: number, clusterId: number, sequence: number, timeout?: number): {
start: () => {
promise: Promise;
ID: number;
};
ID: number;
};
private waitressTimeoutFormatter;
private waitressValidator;
setRadioPower(value: number): Promise;
setChannel(channel: number): Promise;
addTransientLinkKey(partner: EmberEUI64, transientKey: EmberKeyData): Promise;
addInstallCode(ieeeAddress: string, key: Buffer): Promise;
private handleGPMessage;
getKey(keyType: EmberKeyType): Promise;
getNetworkKeyInfo(): Promise;
private needsToBeRestore;
}
export {};
//# sourceMappingURL=driver.d.ts.map