<> <> <> DIRECTORY <> EikonixProtocol USING [BitsPerPoint, Color, Height, Width], IO USING [STREAM], Rope USING [ROPE] ; Eikonix: CEDAR DEFINITIONS = BEGIN BYTE12: TYPE = [0..4096); -- NB an Eikonix byte is 12 bits Width: CARDINAL = EikonixProtocol.Width; Height: CARDINAL = EikonixProtocol.Height; LineCount: TYPE = [0..Width]; PixelCount: TYPE = [0..Height]; PixelIndex: TYPE = [0..Width); LineIndex: TYPE = [0..Height); IntegrationTime: TYPE = CARDINAL; NBuffer: TYPE ~ REF NBufferRecord; NBufferRecord: TYPE ~ ARRAY PixelIndex OF BYTE12; Handle: TYPE ~ REF HandleRecord; HandleRecord: TYPE ~ RECORD [ serverName: Rope.ROPE, stream: IO.STREAM, open: BOOL _ FALSE]; EikonixError: PUBLIC ERROR [ec: Rope.ROPE]; Open: PUBLIC PROC[serverName: Rope.ROPE] RETURNS [Handle]; <> <<>> Close: PUBLIC PROC[Handle]; <> SelectWheel: PUBLIC PROC[h: Handle, color: EikonixProtocol.Color]; <> LoadNormalizer: PUBLIC PROC [h: Handle, darkCurrent: NBuffer, gain: NBuffer]; LineConsumerProc: TYPE ~ PROC [scanNumber: LineIndex, b: Buffer, clientData: REF ANY _ NIL] RETURNS [Buffer]; Buffer: TYPE ~ REF BufferRecord; BufferRecord: TYPE ~ RECORD [pixels: SEQUENCE cnt: CARDINAL OF BYTE12]; SampleScan: PUBLIC PROC [h: Handle, b: Buffer, p: LineConsumerProc, bits: EikonixProtocol.BitsPerPoint _ bp8, clientData: REF ANY _ NIL]; <> Scan: PUBLIC PROC [h: Handle, lineStart: LineIndex, pixelStart: PixelIndex, lineCount: LineCount, pixelCount: PixelCount, b: Buffer, p: LineConsumerProc, bits: EikonixProtocol.BitsPerPoint _ bp8, clientData: REF ANY _ NIL]; <> SetIntegrationTime: PUBLIC PROC[h: Handle, t: IntegrationTime, bits: EikonixProtocol.BitsPerPoint _ bp8]; GetIntegrationTime: PUBLIC PROC[h: Handle] RETURNS[t: IntegrationTime]; TurnOnLights: PUBLIC PROC [h: Handle]; TurnOffLights: PUBLIC PROC [h: Handle]; Calibrate: PUBLIC PROC [server: Rope.ROPE _ NIL, t: IntegrationTime, color: EikonixProtocol.Color _ Clear] RETURNS [dc, gain: Eikonix.NBuffer]; CalibrateDarkCurrent: PUBLIC PROC [server: Rope.ROPE _ NIL, t: IntegrationTime] RETURNS [dc: Eikonix.NBuffer]; CalibrateLightsOn: PUBLIC PROC [server: Rope.ROPE _ NIL, t: IntegrationTime, color: EikonixProtocol.Color _ Clear, dc: Eikonix.NBuffer] RETURNS [gain: Eikonix.NBuffer]; GetCal: PUBLIC PROC [h: Handle, oldBuf: NBuffer _ NIL] RETURNS [buf: NBuffer]; ScanForMinMax: PUBLIC PROC [h: Handle, lineStart: LineIndex, pixelStart: PixelIndex, lineCount: LineCount, pixelCount: PixelCount] RETURNS [min: BYTE12, minScan: LineIndex, minPixel: PixelIndex, max: BYTE12, maxScan: LineIndex, maxPixel: PixelIndex]; ComputeCorrectedCalibrate: PUBLIC PROC [dc, gain: Eikonix.NBuffer, min, max: BYTE12] RETURNS [newDc, newGain: Eikonix.NBuffer]; END. << >>