// PupEFTP.decl -- Declarations for EFTP package
// Copyright Xerox Corporation 1979, 1980

// Last modified September 30, 1980  1:44 PM by Swinehart

get "Pup0.decl"
get "Pup1.decl"

//----------------------------------------------------------------------------
structure EFTPSoc:
//----------------------------------------------------------------------------
[
@PupSoc
SeqNum word
AbortPBI word		// provides a temporary pointer to most recent one
SomeoneElseWaiting word
TransferNotStarted word	// true while foreign socket not completed
currentTimeout word	// current retransmission timeout
startTime word		// time at which last Data was sent
]
manifest lenEFTPSoc = size EFTPSoc/16

//----------------------------------------------------------------------------
structure Byte↑1,1: byte
//----------------------------------------------------------------------------

//----------------------------------------------------------------------------
manifest
//----------------------------------------------------------------------------
[
// Well-known socket
socketEFTPReceive = 20b

// EFTP protocol packet types
typeEFTPData = 30b
typeEFTPAck = 31b
typeEFTPEnd = 32b
typeEFTPAbort = 33b

// Return values from ReceiveEFTPBlock and SendEFTPBlock
EFTPEndReceived = 0	// that is, a zero byte count
EFTPTimeout = -1
EFTPAbortReceived = -2
EFTPAbortSent = -3
EFTPResetReceived = -4
EFTPNotFirstSynch = -5

// Some retransmission timeouts in units of 10 milliseconds
startingTimeout = 100	// ~1 sec.
maxTimeout = 1000	// ~10 sec.
minTimeout = 5		// ~50 ms.
dallyTimeout = 500	// ~5 sec dally period.
longBlockTimeout = 3000	// ~30 sec, for a long wait

// Abort codes, for use within an EFTPAbort packet
ExternalSenderAbort = 1
ExternalReceiverAbort = 2
ReceiverBusyAbort = 3
OutOfSynchAbort = 4
MiscAbort = 5

// No such port error code, causes connection to abort in receiver
ecNoSuchPort=2
]