ember-zli
Version:
Interact with EmberZNet-based adapters using zigbee-herdsman 'ember' driver
37 lines (36 loc) • 1.4 kB
JavaScript
import EventEmitter from "node:events";
import { OTRCPDriver } from "zigbee-on-host";
import { DATA_FOLDER, logger } from "../index.js";
import { Transport, TransportEvent } from "./transport.js";
const NS = { namespace: "spinel" };
export var MinimalSpinelEvent;
(function (MinimalSpinelEvent) {
MinimalSpinelEvent["FAILED"] = "failed";
})(MinimalSpinelEvent || (MinimalSpinelEvent = {}));
export class MinimalSpinel extends EventEmitter {
driver;
transport;
constructor(portConf) {
super();
this.driver = new OTRCPDriver(
// @ts-expect-error none of these params are needed for this minimal use
{}, {}, DATA_FOLDER);
this.transport = new Transport(portConf);
this.transport.on(TransportEvent.FAILED, this.onTransportFailed.bind(this));
this.transport.on(TransportEvent.DATA, (b) => {
logger.debug(`Received transport data: ${b.toString("hex")}.`, NS);
this.driver.parser._transform(b, "utf8", () => { });
});
this.driver.parser.on("data", this.driver.onFrame.bind(this.driver));
}
async start() {
await this.transport.initPort(this.driver.writer);
this.transport.write(Buffer.from([0x7e /* HDLC FLAG */]));
}
async stop() {
await this.transport.close(false);
}
onTransportFailed() {
this.emit(MinimalSpinelEvent.FAILED);
}
}