UNPKG

ember-zli

Version:

Interact with EmberZNet-based adapters using zigbee-herdsman 'ember' driver

37 lines (36 loc) 1.4 kB
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); } }