codesys-client
Version:
Node.js Codesys client for reading and writing PLC data using network variable lists (NVL)
128 lines (127 loc) • 4.06 kB
TypeScript
/// <reference types="node" />
import { EventEmitter } from 'events';
import { AddressInfo } from 'net';
import { Listener, ReceiverSettings } from './types/types';
import type { IecType } from 'iec-61131-3';
export declare class Receiver extends EventEmitter {
private debug;
private debugD;
private debugIO;
/**
* Active debug level
* - 0 = no debugging
* - 1 = basic debugging (same as $env:DEBUG='codesys-client-receiver')
* - 2 = detailed debugging (same as $env:DEBUG='codesys-client-receiver,codesys-client-receiver:details')
* - 3 = full debugging (same as $env:DEBUG='codesys-client-receiver,codesys-client-receiver:details,codesys-client-receiver:raw-data')
*/
debugLevel: number;
/**
* Active settings
*/
settings: ReceiverSettings;
/**
* Socket instance
*/
private socket?;
/**
* Buffer for each list ID of incomplete packets
* (data is still coming up)
*/
private packetBuffer;
/**
* Array handlers added by user
*/
handlers: Listener[];
/**
* Constructor
*
* @param settings Settings object
*/
constructor(settings?: ReceiverSettings);
/**
* Sets debugging using debug package on/off.
* Another way for environment variable DEBUG:
* - 0 = no debugging
* - 1 = basic debugging (same as $env:DEBUG='codesys-client-receiver')
* - 2 = detailed debugging (same as $env:DEBUG='codesys-client-receiver,codesys-client-receiver:details')
* - 3 = full debugging (same as $env:DEBUG='codesys-client-receiver,codesys-client-receiver:details,codesys-client-receiver:raw-data')
*
* @param level 0 = none, 1 = basic, 2 = detailed, 3 = detailed + raw data
*/
setDebugging(level: number): void;
/**
* Starts listening for incoming data from
* the UDP port (and interface) provided in settings
*/
listen(): Promise<AddressInfo>;
/**
* Stops listening for incoming data
*/
close(): Promise<void>;
/**
* Adds a new data handler callback for incoming data.
* Callback is called with received data if listID matches
*
* @param listID List ID ("Listidentifier") of the network variable list (NVL)
* @param dataType IEC-61131-3 data type schema of the provided data (like iec.INT, iec.STRUCT, etc.)
* @param callback Callback to be called when data is received
* @returns
*/
addHandler<T>(listID: number, dataType: IecType, callback: (data: T, listener: Listener) => void): Listener;
/**
* Removes the given handler from handler list
* and stops calling its callback
* @param handler Handler to be removed - created previously with addHandler()
*/
removeHandler(handler: Listener): void;
/**
* Removes all registered handlers
*/
removeAllHandlers(): void;
/**
* Callback for socket errors
* @param err
*/
private handleSocketError;
/**
* Handles received data from socket
*
* @param data
* @param info
*/
private handleReceivedData;
/**
* Parses received from byte buffer to object
* @param data
*/
private parseReceivedPacket;
/**
* Parses header from received data
* @param data
* @returns
*/
private parseReceivedPacketHeader;
/**
* Parses header flags as string from bits
* @param flags
* @returns
*/
private parseHeaderFlags;
/**
* Handles received packet and adds to packet buffer
* @param packet
*/
private handleReceivedPacket;
/**
* Checks if received packets are fully received
* @param index
* @param buffer
*/
private checkReceivedPacket;
/**
* Combines all received packets to one single packet
* @param buffer
* @returns
*/
private convertBufferEntriesToPacket;
}