DIRECTORY BansheeStatus USING [Type], BasicTime USING [GMT, nullGMT], NSString USING [String], PaperHandling USING [ BannerMode, -- D1Registration, Fax495BannerMode, FX3500Registration,-- PaperFeed, PaperStacking, PrintOrder, RavenRegistration, TwoPaperSizes], PaperTypes USING [nullDimensions, Paper, -- PaperMMDimension, -- PaperSize], PrintingTypes USING [Option, RavenBuild], Process USING [Priority], PSActivity USING [Basic, Marker, Spooler], RavenStatus USING [Type], Rope USING [ROPE], TargetPSStatus USING [Communication], XNS USING [Address, unknownAddress]; PSState: CEDAR DEFINITIONS = BEGIN blank: BYTE = LOOPHOLE[' ]; maxStopReasonLength: CARDINAL = 40; maxUserNameLength: CARDINAL = 20; ROPE: TYPE = Rope.ROPE; ServiceState: TYPE = {notInitialized, starting, started, stopping, stopped}; OperationState: TYPE = {normal, diagnostic, repair, fileWrite, fileDelete, shutDown, notStarted}; OperationMode: TYPE = RECORD[ -- to keep track of overlapping modes current, returnTo: OperationState]; SpoolerState: TYPE = {enabled, disabled, disabledForMarking, disabledForRepair, disabledForDiag}; ControlState: TYPE = RECORD [ spooler: SpoolerState, formatterEnabled: BOOLEAN, -- formatter means decomposer and feps9700 merger markerEnabled: BOOLEAN]; Counter: TYPE = RECORD [total: CARDINAL, grandTotal: LONG CARDINAL]; TraceLevel: TYPE = {none, mini, verbose}; FaxRetries: TYPE = RECORD[ count: CARDINAL _ 0, delayInSecs: LONG CARDINAL _ 0]; CurrentActivity: TYPE = RECORD [ --Dynamic information indicating current PS activity status. (Not retained across boots.) condition: ServiceState, spooler: PSActivity.Spooler, decomposer: PSActivity.Basic, queuePages, fontPages: LONG CARDINAL, -- space allocated to queue and fonts option: SELECT type: PrintingTypes.Option FROM bansheeDl => [ marker: PSActivity.Marker, bansheeStatus: BansheeStatus.Type ], feps9700 => [ merger: PSActivity.Basic, forwarder: PSActivity.Basic, forwardingStatus: TargetPSStatus.Communication --valid only if forwarder=busy; indicates okay or error condition ], raven => [ marker: PSActivity.Marker, ravenStatus: RavenStatus.Type ], unknown => [], ENDCASE ]; StateHandle: TYPE = REF State; State: TYPE = MACHINE DEPENDENT RECORD [ --Static PS status information retained across boots in a backed file. mode(0): OperationMode _ [notStarted, notStarted], clientControl(1): ControlState _ [ spooler: enabled, formatterEnabled: TRUE, markerEnabled: TRUE], internalControl(2): ControlState _ [ spooler: disabled, formatterEnabled: FALSE, markerEnabled: FALSE], networkAddress(3): XNS.Address _ XNS.unknownAddress, statisticsReset(9): BasicTime.GMT _ BasicTime.nullGMT, lastInstallation(11): BasicTime.GMT _ BasicTime.nullGMT, lastBoot(13): BasicTime.GMT _ BasicTime.nullGMT, lastActivity(15): BasicTime.GMT _ BasicTime.nullGMT, nBoots(17): CARDINAL _ 0, --since last installation docsPrinted(18): Counter _ [total: 0, grandTotal: 0], docsAborted(21): Counter _ [total: 0, grandTotal: 0], testPatternsPrinted(24): Counter _ [total: 0, grandTotal: 0], docsRetried(27): Counter _ [total: 0, grandTotal: 0], docsPurged(30): Counter _ [total: 0, grandTotal: 0], commErrors(33): Counter _ [total: 0, grandTotal: 0], lastStopPrintingReason(36): NSString.String _ NIL, lastUserToStopPrinting(38): NSString.String _ NIL, lastUserToStartPrinting(40): NSString.String _ NIL, lastStopQueuingReason(42): NSString.String _ NIL, lastUserToStopQueuing(44): NSString.String _ NIL, lastUserToStartQueuing(46): NSString.String _ NIL, junk(48): ARRAY [48..59] OF WORD, stopPrintingReasonBody(60): PACKED ARRAY [0..maxStopReasonLength) OF BYTE _ ALL[blank], stopPrintingUserBody(80): PACKED ARRAY [0..maxUserNameLength) OF BYTE _ ALL[blank], startPrintingUserBody(90): PACKED ARRAY [0..maxUserNameLength) OF BYTE _ ALL[blank], stopQueuingReasonBody(100): PACKED ARRAY [0..maxStopReasonLength) OF BYTE _ ALL[blank], stopQueuingUserBody(120): PACKED ARRAY [0..maxUserNameLength) OF BYTE _ ALL[blank], startQueuingUserBody(130): PACKED ARRAY [0..maxUserNameLength) OF BYTE _ ALL[blank], decomposeWhileMarking(140): BOOLEAN _ FALSE, spoolWhileMarking(141): BOOLEAN _ FALSE, formatterPriority(142): Process.Priority, --decomposer and feps9700 merger markerPriority(143): Process.Priority, --marker and feps9700 forwarder spoolerTrace(144): TraceLevel _ none, formatterTrace(145): TraceLevel _ none, --decomposer and feps9700 merger markerTrace(146): TraceLevel _ none, --marker and feps9700 forwarder decomposerRMPagesForMarker(147): LONG CARDINAL _ 256, --max real memory the marker can use; tells decomposer how much space is available for bands lists plus fontload decomposerVMPages(149): LONG CARDINAL _ 6000, --max virtual memory reserved by decomposer markerRMPagesForBands(151): LONG CARDINAL _ 48, --real memory reserved by marker for band buffers printOrder(153): PaperHandling.PrintOrder _ lastPageOutFirst, stapling(154): BOOLEAN _ FALSE, twoSidedCopy(155): BOOLEAN _ FALSE, unused1(156): UNSPECIFIED _ 0, unused2(157): UNSPECIFIED _ 0, unused3(158): UNSPECIFIED _ 0, unused4(159): UNSPECIFIED _ 0, printingOptionSpecific(160): SELECT option(160): PrintingTypes.Option FROM bansheeDl => [ invertingTrayAttached(161): BOOLEAN _ FALSE, banner(162): PaperHandling.BannerMode _ oncePerJob, paper(163): PaperTypes.Paper _ [knownSize: letter, otherSize: PaperTypes.nullDimensions], enableUnlimitedPrinting(166): BOOLEAN _ TRUE ], d1 => [ ], fax295 => [ ], fax495 => [ ], feps9700 => [ ], fx3500 => [ ], raven => [ engineBuild(161): PrintingTypes.RavenBuild _ b1, banner(162): PaperHandling.BannerMode _ oncePerJob, paperSupply(163): PaperHandling.TwoPaperSizes _ [letter, letter], paperFeed(164): PaperHandling.PaperFeed _ fromBottomOrTop, paperStacking(165): PaperHandling.PaperStacking _ aligned, registration(166): PaperHandling.RavenRegistration _ [long: 23, short: 8], enableUnlimitedPrinting(167): BOOLEAN _ TRUE ], unknown => [], ENDCASE ]; END. --PSState LOG 18-Aug-83 14:20:14 - Jacks - Created as part of PSCommand rework; replaces PSExec. 8-Nov-83 10:33:25 - Jacks - Added StateHandle; replaced EngineType definition with PrinterTypes.EngineType; redefined SpoolerState, DecomposerState and MarkerState; added numberOfBoots and some default values to State; removed Paper Handling definitions and put them in their own defs module: PaperHandling; added unknown variant. 11-Nov-83 13:26:43 - Jacks - Added queueFull, spooler, decomposing and ravenActivity; added 'busy', 'spooling' and 'idle' to SpoolerState in place of 'enabled'; redefined ControlState. 16-Nov-83 16:18:32 - Jacks - Removed displayAbortedNames from State. 18-Nov-83 16:05:53 - Jacks - Added coLion, aps5 and fax495 variant choices. 3-Dec-83 8:45:16 - Jacks - Changed coLion to fx3500 (new PrinterTypes I/F) 16-Dec-83 9:53:33 - Jacks - Removed queue stages; added more engine specific stuff; placed all transient information about PS activity and current status in CurrentActivity record, which won't be backed by a file; made State MACHINE DEPENDENT. 24-Jan-84 18:24:42 - Jacks - Added lastStopReason, lastUserToStopPS, lastUserToStartPS; changes to fax variant. 9-Feb-84 11:14:42 - Jacks - Added lastStopQueuingReason, lastUserToStopQueuing, lastUserToStartQueuing, topPaperTrayEmpty and bottomPaperTrayEmpty. 22-Feb-84 11:23:57 - Jacks - Added statisticsReset. 19-Sep-84 13:28:24 - Jacks - Added fax295, banshee and feps9700 variants; removed aps5 variant; added paperSupply and fineResolutionSupported for fax495; added stapling and twoSidedCopy; removed decomposerMaxVMPages; moved "marking" into variant part of CurrentActivity. 12-Nov-84 13:34:00 - Jacks - Second round of changes for 9.0: deleted diagModeEntered and okayToFormat from State (they are obsolete); removed banner from feps9700 State variant; replaced MarkerControl dependence with Status interface. 14-Jun-85 11:08:18 - Jacks - Added copyright notice; updated to PS Euclid interfaces. 19-Jun-85 15:34:29 - Jacks - Activity renamed to PSActivity. 25-Jun-85 13:29:22 - Jacks - Added d1 variants. 19-Jul-85 9:44:52 - Jacks - Defined ServiceState and stopped using NSExec.ClientStatus; added queuePages and fontPages to CurrentActivity. 23-Sep-85 10:44:30 - Jacks - State: added unused1 to unused4, added enableUnlimitedPrinting to raven and banshee variants. 15-Oct-85 9:50:04 - Jacks - BansheeDl paper size now PaperTypes.Paper. pPSState.mesa Copyright (C) Xerox Corporation 1983, 1984, 1985, 1986. All rights reserved. Last edited by Jacks 15-Oct-85 9:50:07 Tim Diebert: December 19, 1986 2:07:22 pm PST <> D1Status USING [Type], FaxStatus USING [TransmissionRetryReason, Type], FX3500Status USING [Type], NSName USING [NameStore, nullNameRecord], d1 => [ marker: PSActivity.Marker, d1Status: D1Status.Type ], fax295, fax495 => [ marker: PSActivity.Marker, faxStatus: FaxStatus.Type ], fx3500 => [ marker: PSActivity.Marker, fx3500Status: FX3500Status.Type ], Current Mode-- System Statistics-- System Parameters-- Printing Option Independent Paper Handling-- Reserved for emergency future use: Printing Option Specific Information-- banner(161): PaperHandling.BannerMode _ oncePerJob, paperSize(162): PaperTypes.PaperSize _ a4, trayEmpty(163): BOOLEAN _ FALSE, registration(164): PaperHandling.D1Registration _ [long: 15, short: 15] banner(161): PaperHandling.BannerMode _ oncePerJob, paperWidth(162): CARDINAL _ PaperTypes.PaperMMDimension[letter].short --millimeters docsTransmitted(161): Counter _ [total: 0, grandTotal: 0], banner(164): PaperHandling.Fax495BannerMode _ [local: oncePerJob, remote: suppressed], paperWidth(165): CARDINAL _ PaperTypes.PaperMMDimension[letter].short, --millimeters fineResolutionSupported(166): BOOLEAN _ TRUE, multLocalCopiesAllowed(167): BOOLEAN _ TRUE, multRemoteCopiesAllowed(168): BOOLEAN _ FALSE, retries(169): ARRAY FaxStatus.TransmissionRetryReason OF FaxRetries _ ALL[] paperSupply(161): PaperHandling.TwoPaperSizes _ [letter, max], paper supply information saved since last call to target ps paper supply defaulted to one paper tray with letter size ('max' for second paper size means there is none) targetPSAddress(162): XNS.Address _ XNS.unknownAddress, targetPSName(168): NSName.NameStore _ [record: NSName.nullNameRecord, org: ALL[blank], domain: ALL[blank], local: ALL[blank]] banner(161): PaperHandling.BannerMode _ oncePerJob, paperSupply(162): PaperHandling.TwoPaperSizes _ [a4, a4], topPaperTrayEmpty(163): BOOLEAN _ FALSE, bottomPaperTrayEmpty(164): BOOLEAN _ FALSE, paperFeed(165): PaperHandling.PaperFeed _ fromBottomOrTop, registration(166): PaperHandling.FX3500Registration _ [long: 15, short: 15] ΚH˜codešœ ™ KšœL™LKšœ'™'K™-—K˜K™ΆK˜šΟk ˜ Kšœœ˜Kšœ œœ ˜Kšœ œ™Kšœ œ!™0Kšœ œ™Kšœœ™)Kšœ œ ˜KšœœΟc:œI˜₯Kšœ œžœ ˜LKšœœ˜)Kšœœ ˜Kšœ œ˜*Kšœ œ˜Kšœœœ˜Kšœœ˜%Kšœœ˜$—K˜šΠlnœœ œ˜š˜K˜—Kšœœœ˜Kšœœ˜#Kšœœ˜!Kšœœœ˜K˜Kšœœ:˜LK˜KšœœM˜ašœœœž%˜CK˜#K˜—KšœœO˜ašœœœ˜K˜Kšœœž1˜LKšœœ˜K˜—Kš œ œœ œœœ˜DKšœ œ˜)šœ œœ˜Kšœœ˜Kšœ œœ˜ —K˜K˜šœœœžZ˜{K˜K˜K˜Kšœœœž%˜Kšœœ˜.˜K˜K˜!K˜—™K™K™K™—™K™K™K™—˜ K˜K˜Kšœ/žA˜pK˜—™ K™K™K™—˜ K˜K˜K˜—K˜Kš˜—K˜K˜—Kšœ œœ˜K˜š œœœ œœžF˜oKšœ™K˜2˜"Kšœ$œœ˜?—˜$šœ%œœ˜BK˜——Kšœ™Kšœœ œ˜4Kšœœ˜6Kšœ œ˜8Kšœœ˜0Kšœœ˜4Kšœ œž˜3K˜5K˜5K˜=K˜5K˜4K˜4Kšœ.œ˜2Kšœ.œ˜2Kšœ/œ˜3Kšœ-œ˜1Kšœ-œ˜1šœ.œ˜2Kšœ œ œœ˜!—Kš œœœœœœ˜WKš œœœœœœ˜SKš œœœœœœ˜TKš œœœœœœ˜WKš œœœœœœ˜Sš œœœœœœ˜TK˜—Kšœ™Kšœœœ˜,Kšœœœ˜(Kšœ*ž ˜JKšœ'ž˜FK˜%Kšœ(ž ˜HKšœ%ž˜DKšœ!œœžp˜¦Kšœœœ ž+˜Yšœœœž1˜aK˜—Kšœ,™,K˜=Kšœœœ˜Kšœœœ˜#K˜Kšœ"™"Kšœ œ˜Kšœ œ˜Kšœ œ˜Kšœ œ˜K˜Kšœ&™&šœœ#˜J˜Kšœœœ˜,K˜3˜K˜:—Kšœœ˜,K˜—˜K™3K™*Kšœœœ™ K™GK˜—˜ K™3Kšœœ-ž ™SK˜—˜ K™:K™VKšœœ.ž ™TKšœœœ™-Kšœœœ™,Kšœœœ™.Kšœœ#œœ™KK˜—˜ ™>Kšœ§™§—Kšœœ œ™7™%Kšœ%œœœ™W—K˜—˜ K™3K™9Kšœœœ™(Kšœœœ™+K™:K™KK˜—˜ K˜0K˜3K˜AK˜:K˜:K˜JKšœœ˜,K˜—K˜Kš˜——K˜Kšœž ˜K˜Kš˜—K˜RK˜ΝK˜ΊK˜D˜KK˜K—Kšœ|œdœ œ˜τ˜oK˜“—K˜3K˜ŽK˜λKšœ@œ˜UK˜