<> <> <> <> <> <<>> DIRECTORY Dialup USING [RetryCount], RS232C USING [ChannelHandle, LineType, LineSpeed, AutoRecognitionOutcome]; RS232CManager: DEFINITIONS = BEGIN <> ReserveChannel: PROCEDURE [portID: CARDINAL, useType: ChannelUseType, preemptOthers, preemptMe: ReserveType, commParamHandle: CommParamHandle] RETURNS [RS232C.ChannelHandle]; AwaitAutoRecognition: PROCEDURE [RS232C.ChannelHandle] RETURNS [RS232C.AutoRecognitionOutcome]; RedefineChannelUse: PROCEDURE [channel: RS232C.ChannelHandle, useType: ChannelUseType, preemptOthers, preemptMe: ReserveType]; ReleaseChannel: PROCEDURE [RS232C.ChannelHandle]; DescribeCommEquipment: PROCEDURE [portID: CARDINAL, commParamHandle: CommParamHandle]; GetCommEquipmentDescription: PROCEDURE [portID: CARDINAL] RETURNS [CommParamObject]; <> ChannelUseType: TYPE = {oisCommunication, foreignDeviceAccess}; ReserveType: TYPE = {preemptNever, preemptAlways, preemptInactive}; CommParamHandle: TYPE = POINTER TO CommParamObject; <> CommParamObject: TYPE = RECORD [ duplex: CommDuplex, lineType: RS232C.LineType, lineSpeed: RS232C.LineSpeed, accessDetail:SELECT netAccess: NetAccess FROM directConn => NULL, dialConn => [ dialMode: DialMode, dialerNumber: CARDINAL, retryCount: Dialup.RetryCount], ENDCASE]; CommDuplex: TYPE = {full, half}; NetAccess: TYPE = {directConn, dialConn}; DialMode: TYPE = {manual, auto}; ReserveFailedReason: TYPE = {noRS232CHardware, unimplementedFeature, inUse, inconsistentParams}; <> ReserveFailed: ERROR [reason: ReserveFailedReason]; NonrecoverableSoftwareFailure: ERROR; END. <<>> <> <> <> <> <> <> <> <<>>