knx-listener
Version:
A thin client that creates a tunnel to knx gateway to listen to telegrams within knx net
73 lines (72 loc) • 2.38 kB
TypeScript
/// <reference types="node" />
import { Channel, ConnectResponseTunnel, TunnelingAck, GroupResponse, Hpai, Subscriber } from './interfaces';
import { QueryManager } from './query-manager';
import { AddressInfo } from 'dgram';
export declare class BusListener {
protected sequenceIds: Set<number>;
protected qmanager: QueryManager;
protected controlPoint: Hpai;
protected heartbeatInterval: NodeJS.Timer;
protected source: number;
protected remoteHost: string;
protected remotePort: number;
protected channelId: number;
constructor();
/**
* Initializes tunneling. It is `never-resolving` promise
*/
bind(remoteHost: string, remotePort: number, {timeout, onFailure}?: {
timeout?: number;
onFailure?: (err: Error) => void;
}): any;
/**
* returns promise, which indicates socket close
*/
complete<T>(cb?: () => T): Promise<T>;
isConnected(): boolean;
/**
* ready return promises, which only resolves when tunnel is connected
*/
ready<T>(cb?: () => T): Promise<T>;
/**
* Generates next sequence number to number each knx telegram
*/
protected nextSeqn(): number;
/**
* Verifies if the sender the one this tunneling was initially bound to
*/
protected isSameOrigin(res: Channel, sender: AddressInfo): boolean;
/**
* Sends data to the bus
*/
write(data: Buffer | Uint8Array | number[], groupAddress: number): Promise<TunnelingAck>;
/**
* Sends read request, which will only be resolved when response event received
*/
read(groupAddress: number): Promise<GroupResponse>;
/**
* Terminates tunneling
*/
disconnect<T>(cb?: () => T): Promise<T>;
/**
* Pings remote to verify if the channel is still active
*/
protected startHeartbeat(): Promise<void>;
/**
* Stop heartbeat
*/
protected stopHeartbeat(): void;
/**
* Send ping
*/
protected ping(req: Buffer): Promise<Channel>;
/**
* Request tunneling
*/
protected openTunnel(host: string, port: number): Promise<ConnectResponseTunnel>;
/**
* Supported events
*/
on(event: 'unprocessed', cb: (err: Error, raw?: Buffer, remote?: AddressInfo) => void): Subscriber;
on<T>(event: 'query', cb: (query: T, sender?: AddressInfo) => void): Subscriber;
}