RavenControl.mesa
Copyright Ó Xerox Corporation 1985, 1986, 1987. All rights reserved.
Tim Diebert: April 2, 1987 9:23:49 am PST
DIRECTORY
ImagerSample USING [RasterSampleMap],
PrincOps USING [PageCount, wordsPerPage],
RavenCodes USING [PrinterCommand, PrinterStatus];
RavenControl: CEDAR DEFINITIONS = BEGIN
TYPEs:
ConsoleKey: TYPE = RavenCodes.PrinterStatus[key0..keyOffLine];
EngineEvent: TYPE = MACHINE DEPENDENT {readyToFeed(0), feeding, transferReady, imaged, imagedOverrun, pageSyncMiss, pageDelivery, idle, feedError, softError, hardError, timeout, (LAST[WORD])};
EngineStatus: TYPE = {okay, okayFlushRequired, tonerLow, warming, lowPowerMode, preRegistrationFault, postRegistrationJam, preExitJam, postExitJam, outputTrayFull, traysUnlatched, doorOpen, offline, communicationFault, imageFault1, imageFault2, imageFault3, sequenceFault};
EventContext: TYPE [1];
LogItem: TYPE = RECORD [
SELECT sort: * FROM
command => [command: RavenCodes.PrinterCommand],
printerStatus => [printerStatus: RavenCodes.PrinterStatus],
softwareStatus => [statusExtras: StatusExtras],
plateStatus => [plateStatus: PlateStatus],
ENDCASE];
PlateStatus: TYPE = {okay, bandOverrun, pageSyncMiss};
PaperTray: TYPE = {bottom, top};
PaperTraySize: TYPE = {unknown, small, large};
PaperStacking: TYPE = {aligned, offset};
StatusExtras: TYPE = {okay, communicationFault, imageFault1, imageFault2, imageFault3,
sequenceFault};
PROCEDUREs:
Initialize: PROCEDURE [bufferSize: PrincOps.PageCount];
bufferSize is the amount of low core to use for the bands. This should be a multiple of 16 PrincOps.PageCount.
GetEngineStatus: PROCEDURE RETURNS [engineStatus: EngineStatus];
returns current Raven engine status
WaitEngineStatus: PROCEDURE RETURNS [engineStatus: EngineStatus];
returns with the new engine status when it changes
GetPaperTrayStatus: PROCEDURE [tray: PaperTray] RETURNS [okay: BOOLEAN];
returns the staus of paper in the desired paper tray
GetPaperTraySize: PROCEDURE RETURNS [bottom, top: PaperTraySize];
returns the staus of the desired paper tray
WaitEngineEvent: PROCEDURE[ eventContext: REF EventContext]
RETURNS [event:RavenControl.EngineEvent];
returns when an event occurs
SetToCurrentEventContext: PROCEDURE [eventContext: REF EventContext];
initializes the context to reference the current state of the eventQ
WaitConsoleKey: PROCEDURE RETURNS [key: ConsoleKey];
returns when a key is pressed
WaitLogItem: PROCEDURE RETURNS [logItem: LogItem];
returns with an item to be logged
Feed: PROCEDURE [tray: PaperTray, stacking: PaperStacking];
issues feed command with tray and stacking modifiers
SendEngineCommand: PROCEDURE [command: RavenCodes.PrinterCommand];
sends command to Raven
SetScanLineLength: PROCEDURE [scanLineLength: (0..PrincOps.wordsPerPage]];
establishes the number of words in a scanline
GetPageMap: PROCEDURE [] RETURNS [pageMap: ImagerSample.RasterSampleMap];
If no pageMap is available this procedure waits until a page is available.
PageTransferSet: PROCEDURE[pageMap: ImagerSample.RasterSampleMap];
Sets up the page for transfer to the print engine.
TransferRelease: PROCEDURE[pageMap: ImagerSample.RasterSampleMap];
release dependancy on transfer
RunTurnaroundTest: PROCEDURE RETURNS [ok: BOOLEAN];
exercises command/status hardware (assumes loopback cable)
END...
LOG
When / Who / What.
18-Apr-85 11:25:46 / Strickberger / Created.
16-Jun-85 15:01:32 / Strickberger / Updated for multi plate unlimited printing.
19-Sep-85 17:01:52 / Strickberger / Added enableUnlimited parameter to Initialize.
14-May-86 13:44:59 / Prochaska / Added TYPE EventContext, PROC SetToCurrentEventContext; Added parm to WaitEngineEvent.