ember-zli
Version:
Interact with EmberZNet-based adapters using zigbee-herdsman 'ember' driver
74 lines (73 loc) • 2.3 kB
TypeScript
import EventEmitter from "node:events";
import { FirmwareValidation } from "./enums.js";
import { Transport } from "./transport.js";
import type { AdapterModel, PortConf } from "./types.js";
import { type XExitStatus, XModemCRC } from "./xmodem.js";
export declare enum BootloaderState {
/** Not connected to bootloader (i.e. not any of below) */
NOT_CONNECTED = 0,
/** Waiting in menu */
IDLE = 1,
/** Triggered 'Upload GBL' menu */
BEGIN_UPLOAD = 2,
/** Received 'begin upload' */
UPLOADING = 3,
/** GBL upload completed */
UPLOADED = 4,
/** Triggered 'Run' menu */
RUNNING = 5,
/** Triggered 'EBL Info' menu */
GETTING_INFO = 6,
/** Received response for 'EBL Info' menu */
GOT_INFO = 7
}
export declare enum BootloaderMenu {
UPLOAD_GBL = 49,
RUN = 50,
INFO = 51,
CLEAR_APP = 254,
CLEAR_NVM3 = 255
}
export declare enum BootloaderEvent {
FAILED = "failed",
CLOSED = "closed",
UPLOAD_START = "uploadStart",
UPLOAD_STOP = "uploadStop",
UPLOAD_PROGRESS = "uploadProgress"
}
interface GeckoBootloaderEventMap {
[BootloaderEvent.CLOSED]: [];
[BootloaderEvent.FAILED]: [];
[BootloaderEvent.UPLOAD_PROGRESS]: [percent: number];
[BootloaderEvent.UPLOAD_START]: [];
[BootloaderEvent.UPLOAD_STOP]: [status: XExitStatus];
}
export declare class GeckoBootloader extends EventEmitter<GeckoBootloaderEventMap> {
readonly adapterModel?: AdapterModel;
readonly portConf: PortConf;
readonly transport: Transport;
readonly xmodem: XModemCRC;
private state;
private waiter;
constructor(portConf: PortConf, adapterModel?: AdapterModel);
connect(): Promise<void>;
navigate(menu: BootloaderMenu, firmware?: Buffer): Promise<boolean>;
forceReset(exit: boolean): Promise<void>;
validateFirmware(firmware: Buffer | undefined): Promise<FirmwareValidation>;
private cpcLaunch;
private ezspLaunch;
private spinelLaunch;
private knock;
private menuGetInfo;
private menuRun;
private menuUploadGBL;
private onTransportData;
private onTransportFailed;
private onXModemData;
private onXModemStart;
private onXModemStop;
private readBootloaderInfo;
private resolveState;
private waitForState;
}
export {};