@ljames8/hormann-hcp-client
Version:
Hormann Communication Protocol v1 garage door serial client
72 lines (71 loc) • 2.67 kB
TypeScript
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;
}