UNPKG

@ljames8/hormann-hcp-client

Version:

Hormann Communication Protocol v1 garage door serial client

72 lines (71 loc) 2.67 kB
import { Transform, TransformCallback } from "stream"; export declare class HCPPacket extends Uint8Array { static fromBuffer(buffer: number[] | Uint8Array, validate?: boolean): HCPPacket; get address(): number; get lengthNibble(): number; get counterNibble(): number; get header(): Uint8Array; get payload(): Uint8Array; get crc(): number; private _validate; equals(other: Uint8Array | number[]): boolean; computeCRC(): number; isValid(): boolean; hex(): string; static fromData(addressByte: number, counterNibble: number, payload: number[] | Buffer | Uint8Array, crc?: number, validate?: boolean): HCPPacket; } export interface PacketFilterParams { packetTimeout?: number; filterMaxLength?: boolean; filterBreaks?: boolean; } export declare class PacketFilter extends Transform { /** * Filtering for valid chunks based on timing * and other HCP characteristics */ buffer: Buffer; timeout: number; timer: NodeJS.Timeout | null; filterMaxLength: boolean; filterBreaks: boolean; constructor({ packetTimeout, filterMaxLength, filterBreaks, }?: PacketFilterParams); protected _initBuffer(): Buffer; protected _resetBuffer: () => void; _clearTimeout(): void; _filter(chunk: Buffer): Buffer; _transform(chunk: Buffer, encoding: BufferEncoding, callback: TransformCallback): void; } export declare class SimpleHCPPacketParser extends PacketFilter { /** * Iterates over read bytes one by one. * Drops all bytes if packet is invalid * So it can miss valid packets in case of glitches */ started: boolean; offset: number; packetLength: number; constructor(options?: PacketFilterParams); _initBuffer(): Buffer; _resetBuffer: () => void; _resetPacket(): void; _parseCurrentByte(byte: number): boolean; _transform(chunk: Buffer, encoding: BufferEncoding, cb: TransformCallback): void; } export declare class BatchHCPPacketParser extends PacketFilter { /** * Iterates over each chunk of read bytes to find valid packet as early as possible * Might create false positive packets in case of CRC collision */ offset: number; tested: boolean[]; minUntestedIdx: number; constructor(options?: PacketFilterParams); _initBuffer(): Buffer; _resetBuffer: () => void; _resetTestedArray(): void; _pop_buffer(nbElements: number): void; _testPacket(offset: number, length: number): boolean; _testPacketRange(fromByteIdx: number, untilByteIdx: number): number; _transform(bytes: Buffer, _encoding: BufferEncoding, cb: TransformCallback): void; }