-- Copyright (C) 1983 by Xerox Corporation. All rights reserved. -- SimplePUPIO.mesa, HGM, 12-Dec-83 0:52:24 -- SimplePUPIO.mesa 25-May-83 10:40:48 by DKnutsen -- This interface provides simple facilities for communication over the PUP network. DIRECTORY BootChannel USING [Result], Device USING [Type], PilotMP USING [cGermDriver, cGermTimeout, Code], System USING [Microseconds], PupTypes USING [PupAddress, PupSocketID, PupType, Pair]; SimplePUPIO: DEFINITIONS = BEGIN ByteCount: TYPE = CARDINAL; GetRawBufferSize: PROCEDURE RETURNS [rawBufferSize: CARDINAL]; Initialize: PROCEDURE [ deviceType: Device.Type, deviceOrdinal: CARDINAL, rawBuffer: LONG POINTER, cleanups: Cleanups ← avoidCleanup] RETURNS [result: BootChannel.Result]; << Prepares for transfers on on given device. rawBuffer↑ is resident storage, of the size given by GetRawBufferSize. It becomes the property of SimpleNSIO until Finalize or error. Clients running in germ-land should use cleanups = avoidCleanup. If requested device is not available, returns result = cantHandleDevice, either because the device does not exist or because the implementation does not know how to talk to it. >> Cleanups: TYPE = {avoidCleanup, doCleanup}; cantHandleDeviceCode: PilotMP.Code = PilotMP.cGermDriver; cantHandleDevice: BootChannel.Result = [error[cantHandleDeviceCode]]; Finalize: PROCEDURE [cleanups: Cleanups ← avoidCleanup]; GetEthernetHostNumber: PROCEDURE RETURNS [CARDINAL]; GetEthernetNetNumber: PROCEDURE RETURNS [CARDINAL]; -- 0 if unknown -- returns -1 if timeout ReceivePacket: PROCEDURE [ source: LONG POINTER TO PupTypes.PupAddress, me: PupTypes.PupSocketID, data: LONG POINTER, maxWords: CARDINAL, timeout: System.Microseconds] RETURNS [result: BootChannel.Result, bytes: CARDINAL, id: PupTypes.Pair, type: PupTypes.PupType]; -- data is a pointer to a buffer to receive a client level two packet -- of not more than given WORD length. -- If timed out, returns result = timeOut and bytes = timeOutBytes. timedOutCode: PilotMP.Code = PilotMP.cGermTimeout; timedOutResult: BootChannel.Result = -- [error[timedOutCode]]; -- Note: Mesa won't compare this to an unbound Result. timedOutBytes: ByteCount = ByteCount.LAST; ReturnPacket: PROCEDURE [ type: PupTypes.PupType, data: LONG POINTER, bytes: ByteCount] RETURNS [result: BootChannel.Result]; -- Sends Level two packet [data, bytes] back to where -- last packet came from. SendPacket: PROCEDURE [ dest: PupTypes.PupAddress, me: PupTypes.PupSocketID, type: PupTypes.PupType, id: PupTypes.Pair, data: LONG POINTER, bytes: ByteCount] RETURNS [result: BootChannel.Result]; -- Transmits level two packet [data, count]. END. LOG 2-Nov-81 18:04:03 Knutsen Deleted iocb param to ActivateDriver. 25-May-83 10:40:44 DKnutsen Renamed MiniEthernetDefs.mesa => SimplePUPIO. Change names to track SimpleNSIO. Initialize returns Result.