<> <> <> <> <<>> <> DIRECTORY RS232CEnvironment USING [AutoRecognitionOutcome, CharLength, CompletionHandle, Correspondent, LineSpeed, LineType, Parity, PhysicalRecord, PhysicalRecordHandle, StopBits, SyncChar, SyncCount]; RS232CFace: DEFINITIONS = BEGIN <> On: PROCEDURE [lineNumber: CARDINAL]; Off: PROCEDURE [lineNumber: CARDINAL]; GetLineCount: PROCEDURE RETURNS [lineCount: CARDINAL]; ResetLine: PROCEDURE [lineNumber: CARDINAL, paramHandle: ParamHandle] RETURNS [outcome: ParameterOutcome]; SetParameters: PROCEDURE [lineNumber: CARDINAL, paramHandle: ParamHandle] RETURNS [outcome: ParameterOutcome]; AutoRecognitionWait: PROCEDURE [lineNumber: CARDINAL] RETURNS [outcome: RS232CEnvironment.AutoRecognitionOutcome]; Put: PROCEDURE [lineNumber: CARDINAL, rec: RS232CEnvironment.PhysicalRecordHandle] RETURNS [RS232CEnvironment.CompletionHandle]; Get: PROCEDURE [lineNumber: CARDINAL, rec: RS232CEnvironment.PhysicalRecordHandle] RETURNS [RS232CEnvironment.CompletionHandle]; TransferWait: PROCEDURE [lineNumber: CARDINAL, event: RS232CEnvironment.CompletionHandle] RETURNS [byteCount: CARDINAL, status: TransferStatus]; SendBreak: PROCEDURE [lineNumber: CARDINAL]; AbortInput: PROCEDURE [lineNumber: CARDINAL]; AbortOutput: PROCEDURE [lineNumber: CARDINAL]; GetStatus: PROCEDURE [lineNumber: CARDINAL] RETURNS [stat: DeviceStatus]; StatusWait: PROCEDURE [lineNumber: CARDINAL, stat: DeviceStatus] RETURNS [newstat: DeviceStatus]; AbortStatus: PROCEDURE [lineNumber: CARDINAL]; TransmitNow: PROCEDURE [lineNumber: CARDINAL, event: RS232CEnvironment.CompletionHandle] RETURNS [byteCount: CARDINAL, status: TransferStatus]; <> ParamHandle: TYPE = LONG POINTER TO ParameterRecord; ParameterRecord: TYPE = RECORD [ lineType: RS232CEnvironment.LineType, correspondent: RS232CEnvironment.Correspondent, lineSpeed: RS232CEnvironment.LineSpeed, stopBits: RS232CEnvironment.StopBits, parity: RS232CEnvironment.Parity, charLength: RS232CEnvironment.CharLength, syncCount: RS232CEnvironment.SyncCount, syncChar: RS232CEnvironment.SyncChar, frameTimeout: CARDINAL, requestToSend, dataTerminalReady, resetRingHeard, resetBreakDetected, resetDataLost: BOOLEAN ]; ParameterOutcome: TYPE = {success, unimplemented}; TransferStatus: TYPE = { success, dataLost -- (caused by input buffer overrun --, deviceError, frameTimeout, checksumError, parityError, asynchFramingError -- (i.e. stop bit(s) missing) --, invalidChar, invalidFrame, aborted, disaster}; DeviceStatus: TYPE = RECORD [ dataLost: BOOLEAN, <> breakDetected: BOOLEAN, -- latched clearToSend, dataSetReady, carrierDetect: BOOLEAN, ringHeard: BOOLEAN, -- latched ringIndicator: BOOLEAN, deviceError: BOOLEAN ]; -- set if fatal device problem occurs END. <<>> <> <> <> <> <> <<>>