s7-server
Version:
TypeScript S7 PLC Server Simulator
117 lines • 3.15 kB
TypeScript
/**
* ISO-on-TCP Protocol Implementation (RFC 1006)
* Handles the transport layer for S7 communication
*/
import { Buffer } from 'buffer';
export declare const ISO_TCP_VERSION = 3;
export declare const ISO_TCP_PORT = 102;
export declare const MAX_TSAP_LENGTH = 16;
export declare const MAX_ISO_FRAGMENTS = 64;
export declare const ISO_PAYLOAD_SIZE = 4096;
export declare const PDU_TYPE_CONNECTION_REQUEST = 224;
export declare const PDU_TYPE_CONNECTION_CONFIRM = 208;
export declare const PDU_TYPE_DISCONNECT_REQUEST = 128;
export declare const PDU_TYPE_DISCONNECT_CONFIRM = 192;
export declare const PDU_TYPE_DATA_TRANSFER = 240;
export declare const PDU_EOT = 128;
export interface TPKTHeader {
version: number;
reserved: number;
length: number;
}
export interface COTPConnectionHeader {
length: number;
pduType: number;
dstRef: number;
srcRef: number;
classOption: number;
}
export interface COTPDataHeader {
length: number;
pduType: number;
eotNumber: number;
}
export interface ConnectionParams {
srcTSAP: number;
dstTSAP: number;
pduSize: number;
maxOutstanding: number;
maxOutstandingCalled: number;
}
export declare enum ConnectionState {
DISCONNECTED = 0,
CONNECTING = 1,
CONNECTED = 2,
DISCONNECTING = 3
}
export declare class ISOTCPProtocol {
private connections;
private connectionParams;
private sequenceNumbers;
/**
* Create TPKT header
*/
static createTPKTHeader(length: number): Buffer;
/**
* Parse TPKT header
*/
static parseTPKTHeader(data: Buffer): TPKTHeader | null;
/**
* Create connection request PDU
*/
static createConnectionRequest(params: ConnectionParams): Buffer;
/**
* Create connection confirm PDU
*/
static createConnectionConfirm(params: ConnectionParams): Buffer;
/**
* Create data transfer PDU
*/
static createDataTransfer(data: Buffer, eot?: boolean): Buffer;
/**
* Parse connection request/confirm
*/
static parseConnectionPDU(data: Buffer): {
header: COTPConnectionHeader;
params: ConnectionParams;
} | null;
/**
* Parse data transfer PDU
*/
static parseDataTransfer(data: Buffer): {
header: COTPDataHeader;
payload: Buffer;
} | null;
/**
* Parse connection parameters
*/
private static parseConnectionParams;
/**
* Get PDU size code from size
*/
private static getPDUSizeCode;
/**
* Get PDU size from code
*/
private static getPDUSizeFromCode;
/**
* Validate TSAP parameters
*/
static validateTSAP(srcTSAP: number, dstTSAP: number): boolean;
/**
* Calculate negotiated PDU size
*/
static calculatePDUSize(requestedSize: number, maxSize?: number): number;
/**
* Check if data is a complete ISO-TCP PDU
*/
static isCompletePDU(data: Buffer): boolean;
/**
* Extract complete PDUs from buffer
*/
static extractPDUs(buffer: Buffer): {
pdus: Buffer[];
remaining: Buffer;
};
}
//# sourceMappingURL=iso-tcp.d.ts.map