knxultimate
Version:
KNX IP protocol implementation for Node. This is the ENGINE of Node-Red KNX-Ultimate node.
68 lines (67 loc) • 1.8 kB
TypeScript
import { TypedEventEmitter } from '../TypedEmitter';
export type SerialPortSummary = {
path: string;
manufacturer?: string;
serialNumber?: string;
vendorId?: string;
productId?: string;
type?: string;
locationId?: string;
};
export interface SerialFT12Options {
path?: string;
baudRate?: number;
dataBits?: number;
stopBits?: number;
parity?: 'none' | 'even' | 'odd';
rtscts?: boolean;
dtr?: boolean;
timeoutMs?: number;
isKBERRY?: boolean;
lock?: boolean;
}
type SerialFT12Events = {
ready: () => void;
close: () => void;
error: (error: Error) => void;
cemi: (payload: Buffer) => void;
};
export default class SerialFT12 extends TypedEventEmitter<SerialFT12Events> {
private readonly options;
private port?;
private portListeners?;
private rxBuffer;
private pendingAck;
private lastCloseAt?;
private awaitingAck?;
private sendToggle;
private isClosing;
private logger;
constructor(options: SerialFT12Options);
static listPorts(): Promise<SerialPortSummary[]>;
open(): Promise<void>;
close(): Promise<void>;
sendCemiPayload(payload: Buffer): Promise<void>;
private initialize;
private sendReset;
private sendCommMode;
private setIndicationSending;
private disableGroupFilter;
private sendBaosServerItem;
private sendBaosPayload;
private createSerialPort;
private attachPort;
private detachPortListeners;
private handleChunk;
private consumeBytes;
private handleShortFrame;
private handleLongFrame;
private sendAck;
private buildLongFrame;
private writeFrameWithAck;
private writeRaw;
private waitForAck;
private resolveAck;
private waitAfterCloseIfNeeded;
}
export {};