EBST_CAM
Loading...
Searching...
No Matches
Board.h
Go to the documentation of this file.
1/*****************************************************************/
9
10#pragma once
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16#include <stdint.h>
17#include <stdbool.h>
18#include "Board_ll.h"
19#ifdef WIN32
20#include "hdf5.h"
21#else
22#include <hdf5/serial/hdf5.h>
23#endif
24#include "Camera.h"
25
26// High level API
27// platform independent implementation
28// Basic operation of Stresing cameras:
29// 1) Initialize the driver. Call it once at startup.
30es_status_codes InitDriver(uint8_t* _number_of_boards);
31// 2) Set settings parameter according to your camera system. Call it once at startup and every time you changed settings.
32void SetGlobalSettings(struct measurement_settings settings);
33// 4) Initialize Hardware and Software for the Measurement. Call it once at startup and every time you changed settings.
35// 5) Start the measurement. Call it every time you want to measure.
37// 5b) Use this call, if you want to abort the measurement.
38es_status_codes AbortMeasurement(uint32_t block_index);
39// 6) Get the data.
40es_status_codes CopyOneSample(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera, uint16_t* pdest);
41es_status_codes CopyOneBlock(uint32_t drvno, uint16_t block, uint16_t* pdest);
42es_status_codes CopyAllData(uint32_t drvno, uint16_t* pdest);
43es_status_codes CopyDataArbitrary(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera, uint32_t pixel, size_t length_in_pixel, uint16_t* pdest);
44es_status_codes CopyOneBlockOfOneCamera(uint32_t drvno, uint32_t block, uint16_t camera, uint16_t* pdest);
45es_status_codes GetOneSamplePointer(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera, uint16_t** pdest, size_t* bytes_to_end_of_buffer);
46es_status_codes GetOneBlockPointer(uint32_t drvno, uint32_t block, uint16_t** pdest, size_t* bytes_to_end_of_buffer);
47es_status_codes GetAllDataPointer(uint32_t drvno, uint16_t** pdest, size_t* bytes_to_end_of_buffer);
48es_status_codes GetPixelPointer(uint32_t drvno, uint16_t pixel, uint32_t sample, uint32_t block, uint16_t camera, uint16_t** pdest, size_t* bytes_to_end_of_buffer);
49#ifndef MINIMAL_BUILD
50es_status_codes SaveMeasurementDataToFile(const char* filename);
51#endif
52// 7) Before exiting your software, use this call for cleanup.
54
55
56// Mid level API
57// platform independent implementation
58// hardware abstraction
60#ifndef MINIMAL_BUILD
63#endif
64es_status_codes setBlockEn(uint32_t drvno, uint32_t block_index);
65es_status_codes resetBlockEn(uint32_t drvno, uint32_t block_index);
66es_status_codes setMeasureOn( uint32_t drvno );
67es_status_codes resetMeasureOn( uint32_t drvno );
68es_status_codes ResetDma( uint32_t drvno );
69es_status_codes ClearAllUserRegs( uint32_t drvno );
71es_status_codes OpenShutter( uint32_t drvno );
73es_status_codes SetSensorType( uint32_t drvno, uint16_t sensor_type );
74es_status_codes SetCameraSystem( uint32_t drvno, uint16_t camera_system );
75es_status_codes SetupFullBinning( uint32_t drvno, uint32_t lines, uint8_t vfreq );
76es_status_codes SetupROI(uint32_t drvno, uint16_t number_of_regions, uint32_t lines, uint8_t* region_size, uint8_t vfreq);
77es_status_codes SetupArea(uint32_t drvno, uint32_t lines_binning, uint8_t vfreq);
78es_status_codes SetupVCLKReg( uint32_t drvno, uint32_t lines, uint8_t vfreq );
79es_status_codes RSFifo( uint32_t drvno );
80es_status_codes allocateUserMemory( uint32_t drvno );
81es_status_codes SetDMABufRegs( uint32_t drvno );
82es_status_codes SetNosRegister(uint32_t drvno);
83es_status_codes SetNobRegister(uint32_t drvno);
84es_status_codes CloseShutter( uint32_t drvno );
85es_status_codes SetSEC( uint32_t drvno, uint32_t ecin10ns );
86es_status_codes SetTORReg( uint32_t drvno, uint8_t tor );
87es_status_codes SetSSlope(uint32_t drvno, uint32_t sslope);
88es_status_codes SetBSlope( uint32_t drvno, uint32_t slope );
89es_status_codes SetSTI( uint32_t drvno, uint8_t sti_mode );
90es_status_codes SetBTI( uint32_t drvno, uint8_t bti_mode );
91es_status_codes SetTimerResolution(uint32_t drvno, uint8_t resolution_mode);
92es_status_codes SetSTimer( uint32_t drvno, uint32_t stime );
93es_status_codes SetBTimer( uint32_t drvno, uint32_t btime );
94es_status_codes SetGPXCtrl( uint32_t drvno, uint8_t GPXAddress, uint32_t GPXData );
95es_status_codes ReadGPXCtrl( uint32_t drvno, uint8_t GPXAddress, uint32_t* GPXData );
96es_status_codes InitGPX( uint32_t drvno, uint32_t delay );
97es_status_codes SetSDAT( uint32_t drvno, uint32_t datin10ns );
98es_status_codes SetBDAT( uint32_t drvno, uint32_t datin10ns );
99es_status_codes Use_ENFFW_protection( uint32_t drvno, bool USE_ENFFW_PROTECT );
100es_status_codes DAC8568_sendData( uint32_t drvno, uint8_t location, uint8_t cameraPosition, uint8_t ctrl, uint8_t addr, uint16_t data, uint8_t feature );
101es_status_codes DAC8568_setOutput( uint32_t drvno, uint8_t location, uint8_t cameraPosition, uint8_t channel, uint16_t output );
102es_status_codes DAC8568_setAllOutputs(uint32_t drvno, uint8_t location, uint8_t cameraPosition, uint32_t* output, bool reorder_channels);
103es_status_codes DAC8568_enableInternalReference(uint32_t drvno, uint8_t cameraPosition, uint8_t location);
104es_status_codes SetBEC( uint32_t drvno, uint32_t bec_in_10ns);
105es_status_codes SetXckdelay(uint32_t drvno, uint32_t xckdelay_in_10ns);
106es_status_codes SetPartialBinning(uint32_t drvno, uint16_t number_of_regions);
107es_status_codes ResetPartialBinning( uint32_t drvno );
108es_status_codes SetupVPB(uint32_t drvno, uint32_t range, uint32_t lines);
109es_status_codes SetDmaRegister( uint32_t drvno, uint32_t pixel );
110es_status_codes SetDmaStartMode( uint32_t drvno, bool start_by_hardware);
111es_status_codes FindCam( uint32_t drvno );
112es_status_codes SetHardwareTimerStopMode( uint32_t drvno, bool stop_by_hardware );
113es_status_codes ResetHardwareCounter( uint32_t drvno );
115es_status_codes countBlocksByHardware( uint32_t drvno );
116es_status_codes ArmScanTrigger( uint32_t drvno );
117es_status_codes DisarmScanTrigger(uint32_t drvno);
118es_status_codes DoSoftwareTrigger(uint32_t drvno);
119es_status_codes GetArmScanTriggerStatus( uint32_t drvno, bool* on );
120es_status_codes GetLastBufPart( uint32_t drvno );
121es_status_codes GetIndexOfPixel( uint32_t drvno, uint16_t pixel, uint32_t sample, uint32_t block, uint16_t CAM, uint64_t* pIndex );
122es_status_codes CheckFifoValid(uint32_t drvno, bool* valid);
123es_status_codes CheckFifoOverflow(uint32_t drvno, bool* overflow);
124es_status_codes CheckFifoEmpty(uint32_t drvno, bool* empty);
125es_status_codes CheckFifoFull(uint32_t drvno, bool* full);
126es_status_codes GetMeasureOn(uint32_t drvno, bool* measureOn);
127es_status_codes OutTrigLow(uint32_t drvno);
128es_status_codes OutTrigHigh(uint32_t drvno);
129es_status_codes OutTrigPulse(uint32_t drvno, int64_t pulseWidthInMicroseconds);
130es_status_codes readBlockTriggerState(uint32_t drv, uint8_t btrig_ch, bool* state);
133es_status_codes dumpS0Registers(uint32_t drvno, char** stringPtr);
134es_status_codes dumpHumanReadableS0Registers(uint32_t drvno, char** stringPtr);
135es_status_codes dumpDmaRegisters(uint32_t drvno, char** stringPtr);
136es_status_codes dumpTlpRegisters(uint32_t drvno, char** stringPtr);
138es_status_codes dumpCameraSettings(uint32_t drvno, char** stringPtr);
139es_status_codes dumpPciRegisters(uint32_t drvno, char** stringPtr);
140es_status_codes _AboutDrv(uint32_t drvno, char** stringPtr);
141es_status_codes _AboutGPX(uint32_t drvno, char** stringPtr);
142es_status_codes _InitMeasurement(uint32_t drvno);
143es_status_codes InitSoftware(uint32_t drvno);
144es_status_codes InitPcieBoard(uint32_t drvno);
145es_status_codes ResetDSC(uint32_t drvno, uint8_t DSCNumber);
146es_status_codes SetDIRDSC(uint32_t drvno, uint8_t DSCNumber, bool dir);
147es_status_codes GetDSC(uint32_t drvno, uint8_t DSCNumber, uint32_t* ADSC, uint32_t* LDSC);
148void PollDmaBufferToUserBuffer(uint32_t* drvno_p);
149es_status_codes GetCurrentScanNumber(uint32_t drvno, int64_t* sample, int64_t* block);
150es_status_codes GetScanNumber(uint32_t drvno, int64_t offset, int64_t* sample, int64_t* block);
151es_status_codes SetSticnt(uint32_t drvno, uint8_t divider);
152es_status_codes SetBticnt(uint32_t drvno, uint8_t divider);
153es_status_codes SetTocnt(uint32_t drvno, uint8_t divider);
154es_status_codes GetIsTdc(uint32_t drvno, bool* isTdc);
155es_status_codes GetIsDsc(uint32_t drvno, bool* isDsc);
156void GetVerifiedDataDialog(struct verify_data_parameter* vd, char** resultString);
157void SetContinuousMeasurement(bool on);
158es_status_codes GetCameraStatusOverTemp(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, bool* overTemp);
159es_status_codes GetCameraStatusTempGood(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, bool* tempGood);
160es_status_codes GetBlockIndex(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, uint32_t* blockIndex);
161es_status_codes GetScanIndex(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, uint32_t* scanIndex);
162es_status_codes GetS1State(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, bool* state);
163es_status_codes GetS2State(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, bool* state);
164es_status_codes GetImpactSignal1(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, uint32_t* impactSignal);
165es_status_codes GetImpactSignal2(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, uint32_t* impactSignal);
166es_status_codes GetAllSpecialPixelInformation(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, struct special_pixels* sp);
167void SetAllInterruptsDone(uint32_t drvno);
169es_status_codes ReadScanFrequencyBit(uint32_t drvno, bool* scanFrequencyTooHigh);
171es_status_codes ReadBlockFrequencyBit(uint32_t drvno, bool* blockFrequencyTooHigh);
173es_status_codes SetS1S2ReadDelay(uint32_t drvno);
174es_status_codes GetXckLength(uint32_t drvno, uint32_t* xckLengthIn10ns);
175es_status_codes GetXckPeriod(uint32_t drvno, uint32_t* xckPeriodIn10ns);
176es_status_codes GetBonLength(uint32_t drvno, uint32_t* bonLengthIn10ns);
177es_status_codes GetBonPeriod(uint32_t drvno, uint32_t* bonPeriodIn10ns);
178es_status_codes GetPcieCardVersion(uint32_t drvno, uint16_t* major_version, uint16_t* minor_version);
179bool PcieCardVersionIsGreaterThan(uint32_t drvno, uint16_t major_version, uint16_t minor_version);
180bool PcieCardVersionIsSmallerThan(uint32_t drvno, uint16_t major_version, uint16_t minor_version);
181bool PcieCardVersionIsEqual(uint32_t drvno, uint16_t major_version, uint16_t minor_version);
182es_status_codes GetBlockOn(uint32_t drvno, bool* block_on);
183es_status_codes GetScanTriggerDetected(uint32_t drvno, bool* detected);
184es_status_codes GetBlockTriggerDetected(uint32_t drvno, bool* detected);
187es_status_codes WaitForBlockOn(uint32_t drvno);
189void manipulateData(uint32_t drvno, uint16_t* startAddress, uint32_t numberOfScansToManipulate);
190void clearKeyStates();
192hid_t CreateNumericAttribute(hid_t parent_object_id, char* attr_name, hid_t goal_type, hid_t dataspace, void* data);
193hid_t CreateStringAttribute(hid_t parent_object_id, char* attr_name, hid_t dataspace, void* data);
194es_status_codes SetGeneralOutput(uint32_t drvno, uint8_t output, bool state);
195es_status_codes SetShutterStates(uint32_t drvno, uint16_t shutter_states);
196es_status_codes SetStateControlRegister(uint32_t drvno, uint16_t state);
197es_status_codes SetManualState(uint32_t drvno, bool state);
198
199// helper functions
200double CalcMeasureTimeInSeconds(uint32_t nos, uint32_t nob, double exposure_time_in_ms);
201double CalcRamUsageInMB(uint32_t nos, uint32_t nob);
202es_status_codes CalcTrms(uint32_t drvno, uint32_t firstSample, uint32_t lastSample, uint32_t TRMS_pixel, uint16_t CAMpos, double *mwf, double *trms);
203void GetRmsVal(uint32_t nos, uint16_t *TRMSVals, double *mwf, double *trms);
205void FillUserBufferWithDummyData(uint32_t drvno);
206
207// read and write functions
208es_status_codes writeBitsS0_32( uint32_t drvno, uint32_t data, uint32_t bitmask, uint32_t address);
209es_status_codes writeBitsS0_32_allBoards( uint32_t data, uint32_t bitmask, uint32_t address);
210es_status_codes writeBitsS0_8( uint32_t drvno, uint8_t data, uint8_t bitmask, uint32_t address);
211es_status_codes setBitS0_32(uint32_t drvno, uint32_t bitnumber, uint32_t address);
212es_status_codes setBitS0_32_allBoards(uint32_t bitnumber, uint32_t address);
213es_status_codes setBitS0_8(uint32_t drvno, uint32_t bitnumber, uint32_t address);
214es_status_codes resetBitS0_32(uint32_t drvno, uint32_t bitnumber, uint32_t address);
215es_status_codes resetBitS0_32_allBoards(uint32_t bitnumber, uint32_t address);
216es_status_codes resetBitS0_8(uint32_t drvno, uint32_t bitnumber, uint32_t address);
217es_status_codes readRegisterS0_32( uint32_t drvno, uint32_t* data, uint32_t address );
218es_status_codes readRegisterS0_32_allBoards(uint32_t** data, uint32_t address);
219es_status_codes readRegister_32_allBoards(uint32_t** data, uint32_t address);
220es_status_codes readRegisterS0_16( uint32_t drvno, uint16_t* data, uint32_t address );
221es_status_codes readRegisterS0_8( uint32_t drvno, uint8_t* data, uint32_t address );
222es_status_codes writeRegisterS0_32( uint32_t drvno, uint32_t data, uint32_t address );
223es_status_codes writeRegisterS0_32_allBoards( uint32_t data, uint32_t address );
224es_status_codes writeRegisterS0_16( uint32_t drvno, uint16_t data, uint32_t address );
225es_status_codes writeRegisterS0_8( uint32_t drv, uint8_t data, uint32_t address );
226es_status_codes writeRegisterS0_8_allBoards( uint8_t data, uint32_t address );
227es_status_codes writeRegisterDma_32(uint32_t drvno, uint32_t data, uint32_t address);
228es_status_codes writeRegisterDma_8( uint32_t drvno, uint8_t data, uint32_t address );
229es_status_codes readRegisterDma_32( uint32_t drvno, uint32_t* data, uint32_t address );
230es_status_codes readRegisterDma_8( uint32_t drvno, uint8_t* data, uint32_t address );
231es_status_codes writeBitsDma_32( uint32_t drvno, uint32_t data, uint32_t bitmask, uint32_t address);
232es_status_codes writeBitsDma_8( uint32_t drvno, uint8_t data, uint8_t bitmask, uint32_t address);
233es_status_codes pulseBitS0_32(uint32_t drvno, uint32_t bitnumber, uint32_t address, int64_t duration_in_microseconds);
234es_status_codes pulseBitS0_8(uint32_t drvno, uint32_t bitnumber, uint32_t address, int64_t duration_in_microseconds);
235es_status_codes ReadBitS0_32(uint32_t drvno, uint32_t address, uint8_t bitnumber, bool* isBitHigh);
236es_status_codes ReadBitS0_8(uint32_t drvno, uint32_t address, uint8_t bitnumber, bool* isBitHigh);
237#ifdef __cplusplus
238}
239#endif
es_status_codes GetScanIndex(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, uint32_t *scanIndex)
This function returns the scan index of a specific scan.
Definition Board.c:4616
es_status_codes SaveMeasurementDataToFileHDF5(const char *filename)
Exports the measurement data to a HDF5 file.
Definition Board.c:5053
es_status_codes setBitS0_32(uint32_t drvno, uint32_t bitnumber, uint32_t address)
Set bit to 1 in S0 register at memory address.
Definition Board.c:507
es_status_codes writeRegisterS0_32(uint32_t drvno, uint32_t data, uint32_t address)
Write 4 byte of a register in S0 space.
Definition Board.c:589
es_status_codes InitSoftware(uint32_t drvno)
Initialize the software before a measurement.
Definition Board.c:93
void clearKeyStates()
Clear the key states for escape and space.
Definition Board.c:5581
es_status_codes writeBitsS0_32(uint32_t drvno, uint32_t data, uint32_t bitmask, uint32_t address)
Set specified bits to 1 in S0 register at memory address.
Definition Board.c:457
es_status_codes SetSTimer(uint32_t drvno, uint32_t stime)
Sets time for scan timer.
Definition Board.c:1221
es_status_codes readRegisterS0_16(uint32_t drvno, uint16_t *data, uint32_t address)
Read 2 bytes of a register in S0 space.
Definition Board.c:728
es_status_codes waitForBlockTrigger(uint32_t drvno)
Wait in loop until block trigger occurs.
Definition Board.c:2205
es_status_codes ResetHardwareCounter(uint32_t drvno)
Reset the hardware block counter and scan counter.
Definition Board.c:2122
es_status_codes readRegister_32_allBoards(uint32_t **data, uint32_t address)
Reads 4 bytes on DMA area of all PCIe boards.
Definition Board.c:705
es_status_codes SetBTimer(uint32_t drvno, uint32_t btime)
Sets time for block timer.
Definition Board.c:1234
es_status_codes SetXckdelay(uint32_t drvno, uint32_t xckdelay_in_10ns)
DEPRECATED. Set XCK delay.
Definition Board.c:1556
es_status_codes GetBlockIndex(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, uint32_t *blockIndex)
This function returns the block index of a specific scan.
Definition Board.c:4589
es_status_codes readBlockTriggerState(uint32_t drv, uint8_t btrig_ch, bool *state)
Reads the binary state of an ext. trigger input.
Definition Board.c:2795
es_status_codes dumpDmaRegisters(uint32_t drvno, char **stringPtr)
Read all DMA registers and write them to a string in hex.
Definition Board.c:3665
es_status_codes SetCameraSystem(uint32_t drvno, uint16_t camera_system)
Sets camera system bits in register camera type.
Definition Board.c:441
es_status_codes DAC8568_setAllOutputs(uint32_t drvno, uint8_t location, uint8_t cameraPosition, uint32_t *output, bool reorder_channels)
Sets all outputs of the DAC8568 in camera 3030 or on PCIe board.
Definition Board.c:1474
es_status_codes readRegisterS0_32_allBoards(uint32_t **data, uint32_t address)
Read 4 bytes of a register in S0 space of all boards.
Definition Board.c:693
es_status_codes GetPcieCardVersion(uint32_t drvno, uint16_t *major_version, uint16_t *minor_version)
Get the PCIe card firmware version number.
Definition Board.c:5356
es_status_codes dumpMeasurementSettings(char **stringPtr)
Dump all measurement settings to a string.
Definition Board.c:3875
es_status_codes GetCameraStatusOverTemp(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, bool *overTemp)
This function returns the bit overTemp of a specific scan.
Definition Board.c:4537
es_status_codes OutTrigHigh(uint32_t drvno)
Set trigger out(Reg CtrlA:D3) of PCIe board.
Definition Board.c:2759
es_status_codes InitGPX(uint32_t drvno, uint32_t delay)
Initialize the TDC-GPX chip. TDC: time delay counter option.
Definition Board.c:1254
es_status_codes SetAbortMeasurementFlag()
Sets abortMeasurementFlag to true.
Definition Board.c:308
void GetVerifiedDataDialog(struct verify_data_parameter *vd, char **resultString)
Check the consistency of the file given in vd and return the results in resultString.
Definition Board.c:4472
es_status_codes DAC8568_setOutput(uint32_t drvno, uint8_t location, uint8_t cameraPosition, uint8_t channel, uint16_t output)
Sets the output of the DAC8568 on PCB 2189-7.
Definition Board.c:1508
es_status_codes writeRegisterS0_8(uint32_t drv, uint8_t data, uint32_t address)
Write 1 byte of a register in S0 space.
Definition Board.c:643
es_status_codes GetAllSpecialPixelInformation(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, struct special_pixels *sp)
This function returns the all special pixel information of a specific scan.
Definition Board.c:4748
es_status_codes StartMeasurement()
This function is starting the measurement and returns when the measurement is done.
Definition Board.c:1813
es_status_codes ClearAllUserRegs(uint32_t drvno)
Clears DAT and EC.
Definition Board.c:264
es_status_codes SetupArea(uint32_t drvno, uint32_t lines_binning, uint8_t vfreq)
For FFTs: Setup area mode.
Definition Board.c:4956
es_status_codes SetDmaStartMode(uint32_t drvno, bool start_by_hardware)
Set DMA Start Mode.
Definition Board.c:1791
es_status_codes writeBitsDma_32(uint32_t drvno, uint32_t data, uint32_t bitmask, uint32_t address)
Set specified bits to 1 in DMA register at memory address.
Definition Board.c:1657
es_status_codes SetSticnt(uint32_t drvno, uint8_t divider)
Set the scan trigger input divider.
Definition Board.c:4377
es_status_codes GetXckPeriod(uint32_t drvno, uint32_t *xckPeriodIn10ns)
Get pos edge to pos egde time of XCK time from the S0 register S0Addr_XCK_PERIOD.
Definition Board.c:5308
es_status_codes ReadScanFrequencyBit(uint32_t drvno, bool *scanFrequencyTooHigh)
Reads the ScanFrequency bit and checks if its high or low.
Definition Board.c:4821
es_status_codes SetTORReg(uint32_t drvno, uint8_t tor)
Set signal of output port of PCIe card.
Definition Board.c:1081
es_status_codes CloseShutter(uint32_t drvno)
Sets the IFC bit of interface for sensors with shutter function. IFC=low.
Definition Board.c:1053
es_status_codes DAC8568_sendData(uint32_t drvno, uint8_t location, uint8_t cameraPosition, uint8_t ctrl, uint8_t addr, uint16_t data, uint8_t feature)
Sends data to DAC8568.
Definition Board.c:1414
es_status_codes countBlocksByHardware(uint32_t drvno)
Sends signal to hardware to count blocks.
Definition Board.c:2228
es_status_codes SetTimerResolution(uint32_t drvno, uint8_t resolution_mode)
Set timer resolution.
Definition Board.c:1179
es_status_codes CopyOneBlock(uint32_t drvno, uint16_t block, uint16_t *pdest)
Copy the data of a single block to pdest.
Definition Board.c:2403
es_status_codes GetS2State(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, bool *state)
This function returns the bit S2 state of a specific scan.
Definition Board.c:4668
es_status_codes dumpPciRegisters(uint32_t drvno, char **stringPtr)
Read all PCIe registers and write them to a string.
Definition Board.c:4044
es_status_codes SetTocnt(uint32_t drvno, uint8_t divider)
Set the trigger output divider.
Definition Board.c:4413
es_status_codes CheckFifoOverflow(uint32_t drvno, bool *overflow)
Check ovl flag (overflow of FIFO).
Definition Board.c:2696
es_status_codes CopyDataArbitrary(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera, uint32_t pixel, size_t length_in_pixel, uint16_t *pdest)
Copy the data of a custom length to pdest.
Definition Board.c:2444
es_status_codes GetArmScanTriggerStatus(uint32_t drvno, bool *on)
Checks if timer is active (Bit30 of XCK-Reg).
Definition Board.c:2276
es_status_codes GetOneBlockPointer(uint32_t drvno, uint32_t block, uint16_t **pdest, size_t *bytes_to_end_of_buffer)
Returns the address of a specific block.
Definition Board.c:2547
es_status_codes resetMeasureOn(uint32_t drvno)
Resets setMeasureOn bit in PCIEFLAGS and notifies UI about it.
Definition Board.c:368
es_status_codes GetImpactSignal1(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, uint32_t *impactSignal)
This function returns the impact signal 1 of a specific scan.
Definition Board.c:4694
es_status_codes ReadBitS0_32(uint32_t drvno, uint32_t address, uint8_t bitnumber, bool *isBitHigh)
Read 1 bit of a 4 byte s0 register.
Definition Board.c:754
es_status_codes SetNobRegister(uint32_t drvno)
Set the register nob to settings_struct.nob.
Definition Board.c:1041
es_status_codes GetCurrentScanNumber(uint32_t drvno, int64_t *sample, int64_t *block)
Gives scan and block number of the last scan written to userBuffer.
Definition Board.c:4338
es_status_codes dumpHumanReadableS0Registers(uint32_t drvno, char **stringPtr)
Read all S0 registers and write them to a string in a human readable format.
Definition Board.c:2984
es_status_codes readRegisterDma_8(uint32_t drvno, uint8_t *data, uint32_t address)
Read 1 byte of a register in DMA space.
Definition Board.c:1776
es_status_codes WaitForMeasureDone()
Returns when measure on bit is 0.
Definition Board.c:2868
es_status_codes ReadGPXCtrl(uint32_t drvno, uint8_t GPXAddress, uint32_t *GPXData)
Read GPXCtrl register.
Definition Board.c:1326
es_status_codes SetGeneralOutput(uint32_t drvno, uint8_t output, bool state)
Control the general outputs of the PCIe card addition board.
Definition Board.c:5596
es_status_codes SetBTI(uint32_t drvno, uint8_t bti_mode)
Chooses trigger input for block trigger input (BTI)
Definition Board.c:1166
es_status_codes GetIsTdc(uint32_t drvno, bool *isTdc)
Read TDC flag in PCIEFLAGS register.
Definition Board.c:4447
es_status_codes GetBonLength(uint32_t drvno, uint32_t *bonLengthIn10ns)
Get the high time duration of BON from the S0 register S0Addr_BONLEN.
Definition Board.c:5325
void FillUserBufferWithDummyData(uint32_t drvno)
This function inserts data to user buffer for developing purpose.
Definition Board.c:4427
es_status_codes dumpS0Registers(uint32_t drvno, char **stringPtr)
Read all S0 registers and write them to a string in hex.
Definition Board.c:2895
bool PcieCardVersionIsGreaterThan(uint32_t drvno, uint16_t major_version, uint16_t minor_version)
Is the PCIe card version greater than the input?
Definition Board.c:5375
es_status_codes DisarmScanTrigger(uint32_t drvno)
Disarm scan trigger.
Definition Board.c:926
es_status_codes AbortMeasurement(uint32_t block_index)
Use this function to abort measurement.
Definition Board.c:282
es_status_codes SetGPXCtrl(uint32_t drvno, uint8_t GPXAddress, uint32_t GPXData)
Set GPXCtrl register.
Definition Board.c:1307
es_status_codes WaitForBlockOn(uint32_t drvno)
Wait until the block on bit is set.
Definition Board.c:5494
void SetGlobalSettings(struct measurement_settings settings)
Set global settings struct.
Definition Board.c:38
es_status_codes SetS1S2ReadDelay(uint32_t drvno)
This functions sets the register S1S2ReadDealy with the setting camera_settings::s1s2_read_delay_in_1...
Definition Board.c:4971
es_status_codes SetSensorType(uint32_t drvno, uint16_t sensor_type)
Sets sensor type bits in register camera type.
Definition Board.c:421
es_status_codes GetPixelPointer(uint32_t drvno, uint16_t pixel, uint32_t sample, uint32_t block, uint16_t camera, uint16_t **pdest, size_t *bytes_to_end_of_buffer)
Returns the address of a specific pixel.
Definition Board.c:2503
es_status_codes SetShutterStates(uint32_t drvno, uint16_t shutter_states)
Sets all shutter states in one call.
Definition Board.c:5617
es_status_codes DAC8568_enableInternalReference(uint32_t drvno, uint8_t cameraPosition, uint8_t location)
Enable the internal reference in static mode.
Definition Board.c:1523
es_status_codes setBitS0_32_allBoards(uint32_t bitnumber, uint32_t address)
Set bit to 1 in S0 register at memory address.
Definition Board.c:520
es_status_codes OutTrigPulse(uint32_t drvno, int64_t pulseWidthInMicroseconds)
Pulses trigger out(Reg CtrlA:D3) of PCI board.
Definition Board.c:2772
es_status_codes InitMeasurement()
Initialize measurement (using board select).
Definition Board.c:49
es_status_codes SetBDAT(uint32_t drvno, uint32_t datin10ns)
Sets delay after trigger hardware register.
Definition Board.c:1370
es_status_codes WaitForBlockDone()
Returns when block on bit is 0.
Definition Board.c:2844
es_status_codes GetS1State(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, bool *state)
This function returns the bit S1 state of a specific scan.
Definition Board.c:4642
void PollDmaBufferToUserBuffer(uint32_t *drvno_p)
This function copies valid data from DMA buffer to user buffer.
Definition Board.c:4233
es_status_codes writeBitsS0_32_allBoards(uint32_t data, uint32_t bitmask, uint32_t address)
Set specified bits to 1 in S0 register at memory address.
Definition Board.c:470
es_status_codes ResetBlockFrequencyBit(uint32_t drvno)
Resets the BlockFrequency bit.
Definition Board.c:4858
es_status_codes setBitS0_8(uint32_t drvno, uint32_t bitnumber, uint32_t address)
Set bit to 1 in S0 register at memory address.
Definition Board.c:534
es_status_codes CalcTrms(uint32_t drvno, uint32_t firstSample, uint32_t lastSample, uint32_t TRMS_pixel, uint16_t CAMpos, double *mwf, double *trms)
Calculate TRMS noise value of one pixel.
Definition Board.c:2615
es_status_codes GetScanTriggerDetected(uint32_t drvno, bool *detected)
Read the bit PCIEFLAGS_bits_t::PCIEFLAGS_bit_scan_trigger_detected.
Definition Board.c:5444
es_status_codes writeRegisterDma_32(uint32_t drvno, uint32_t data, uint32_t address)
Write 4 bytes to a register in DMA space.
Definition Board.c:1728
es_status_codes _AboutDrv(uint32_t drvno, char **stringPtr)
Return infos about the PCIe board.
Definition Board.c:4116
es_status_codes SetDIRDSC(uint32_t drvno, uint8_t DSCNumber, bool dir)
set direction of Delay Stage Counter
Definition Board.c:4175
es_status_codes SetBticnt(uint32_t drvno, uint8_t divider)
Set the block trigger input divider.
Definition Board.c:4395
void GetRmsVal(uint32_t nos, uint16_t *TRMSVals, double *mwf, double *trms)
Calculate mean and rms.
Definition Board.c:2652
hid_t CreateStringAttribute(hid_t parent_object_id, char *attr_name, hid_t dataspace, void *data)
HDF5 stuff.
Definition Board.c:5266
es_status_codes DoSoftwareTrigger(uint32_t drvno)
Triggers one camera read by calling this function.
Definition Board.c:2261
es_status_codes pulseBitS0_32(uint32_t drvno, uint32_t bitnumber, uint32_t address, int64_t duration_in_microseconds)
Pulse bit () -> 1 -> 0) in S0 register at memory address.
Definition Board.c:2169
es_status_codes CheckFifoEmpty(uint32_t drvno, bool *empty)
Check empty flag (FIFO empty).
Definition Board.c:2709
es_status_codes SetCamCountRegister(uint32_t drvno)
Set cam count.
Definition Board.c:408
es_status_codes SaveMeasurementDataToFile(const char *filename)
Export the measurement data to a file.
Definition Board.c:4987
es_status_codes SetBSlope(uint32_t drvno, uint32_t slope)
Sets slope for block trigger.
Definition Board.c:1142
es_status_codes GetScanNumber(uint32_t drvno, int64_t offset, int64_t *sample, int64_t *block)
Gives scan and block number of the last scan written to userBuffer.
Definition Board.c:4348
es_status_codes ReturnStartMeasurement(es_status_codes status)
This is a helper function to return startMeasurement.
Definition Board.c:2065
es_status_codes SetNosRegister(uint32_t drvno)
Set the register nos to settings_struct.nos.
Definition Board.c:1029
es_status_codes resetBlockEn(uint32_t drvno, uint32_t block_index)
Resets BlockOn bit in PCIEFLAGS and notifies UI about it.
Definition Board.c:353
es_status_codes setMeasureOn(uint32_t drvno)
Sets setMeasureOn bit in PCIEFLAGS and notifies UI about it.
Definition Board.c:337
es_status_codes setBlockEn(uint32_t drvno, uint32_t block_index)
Sets BlockOn bit in PCIEFLAGS and notifies UI about it.
Definition Board.c:322
es_status_codes OutTrigLow(uint32_t drvno)
Reset trigger out(Reg CtrlA:D3) of PCI board.
Definition Board.c:2747
es_status_codes GetAllDataPointer(uint32_t drvno, uint16_t **pdest, size_t *bytes_to_end_of_buffer)
Returns the address of the data buffer.
Definition Board.c:2532
es_status_codes writeRegisterDma_8(uint32_t drvno, uint8_t data, uint32_t address)
Write 1 byte to a register in DMA space.
Definition Board.c:1744
es_status_codes resetBitS0_32_allBoards(uint32_t bitnumber, uint32_t address)
Set bit to 0 in register at memory address.
Definition Board.c:561
es_status_codes CopyAllData(uint32_t drvno, uint16_t *pdest)
Copy the data of the complete measurement to pdest.
Definition Board.c:2421
es_status_codes RSFifo(uint32_t drvno)
reset FIFO and FFcounter
Definition Board.c:944
es_status_codes GetOneSamplePointer(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera, uint16_t **pdest, size_t *bytes_to_end_of_buffer)
Returns the address of a specific sample.
Definition Board.c:2564
es_status_codes ResetDma(uint32_t drvno)
Definition Board.c:383
es_status_codes SetupROI(uint32_t drvno, uint16_t number_of_regions, uint32_t lines, uint8_t *region_size, uint8_t vfreq)
Initializes region of interest.
Definition Board.c:4917
double CalcRamUsageInMB(uint32_t nos, uint32_t nob)
Calculate needed RAM in MB for given nos and nob.
Definition Board.c:2591
hid_t CreateNumericAttribute(hid_t parent_object_id, char *attr_name, hid_t goal_type, hid_t dataspace, void *data)
HDF5 stuff.
Definition Board.c:5252
es_status_codes pulseBitS0_8(uint32_t drvno, uint32_t bitnumber, uint32_t address, int64_t duration_in_microseconds)
Pulse bit () -> 1 -> 0) in S0 register at memory address.
Definition Board.c:2186
es_status_codes GetBlockOn(uint32_t drvno, bool *block_on)
Get the block on bit from the PCIe flags register.
Definition Board.c:5425
es_status_codes InitBoard()
Initializes the PCIe board.
Definition Board.c:2315
es_status_codes GetIndexOfPixel(uint32_t drvno, uint16_t pixel, uint32_t sample, uint32_t block, uint16_t CAM, uint64_t *pIndex)
Returns the index of a pixel located in userBuffer.
Definition Board.c:2469
es_status_codes writeRegisterS0_8_allBoards(uint8_t data, uint32_t address)
Write the same 1 byte to a register in S0 space of all boards.
Definition Board.c:658
es_status_codes SetPixelCountRegister(uint32_t drvno)
Set pixel count.
Definition Board.c:252
es_status_codes GetBlockTriggerDetected(uint32_t drvno, bool *detected)
Read the bit PCIEFLAGS_bits_t::PCIEFLAGS_bit_block_trigger_detected.
Definition Board.c:5457
es_status_codes allocateUserMemory(uint32_t drvno)
Definition Board.c:958
es_status_codes SetupFullBinning(uint32_t drvno, uint32_t lines, uint8_t vfreq)
For FFTs: Setup full binning.
Definition Board.c:808
es_status_codes SetSDAT(uint32_t drvno, uint32_t datin10ns)
Sets delay after trigger hardware register.
Definition Board.c:1349
bool PcieCardVersionIsSmallerThan(uint32_t drvno, uint16_t major_version, uint16_t minor_version)
Is the PCIe card version smaller than the input?
Definition Board.c:5392
es_status_codes CopyOneBlockOfOneCamera(uint32_t drvno, uint32_t block, uint16_t camera, uint16_t *pdest)
Copy the data of one block of one camera to pdest.
Definition Board.c:4875
es_status_codes SetupVPB(uint32_t drvno, uint32_t range, uint32_t lines)
sets Vertical Partial Binning in registers R10,R11 and R12. Only for FFT sensors.
Definition Board.c:844
es_status_codes readRegisterDma_32(uint32_t drvno, uint32_t *data, uint32_t address)
Read 4 bytes of a register in DMA space.
Definition Board.c:1760
es_status_codes _AboutGPX(uint32_t drvno, char **stringPtr)
Reads registers 0 to 12 of TDC-GPX chip. Time delay counter option.
Definition Board.c:3789
es_status_codes Use_ENFFW_protection(uint32_t drvno, bool USE_ENFFW_PROTECT)
Protects ENFFW from cool cam status transmission. Enable with cool cam, disable with HS > 50 kHz.
Definition Board.c:1392
es_status_codes GetCameraStatusTempGood(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, bool *tempGood)
This function returns the bit tempGood of a specific scan.
Definition Board.c:4563
es_status_codes readRegisterS0_32(uint32_t drvno, uint32_t *data, uint32_t address)
Read 4 bytes of a register in S0 space.
Definition Board.c:681
es_status_codes ResetScanFrequencyBit(uint32_t drvno)
Resets the ScanFrequency bit.
Definition Board.c:4833
es_status_codes SetDmaRegister(uint32_t drvno, uint32_t pixel)
Set DMA related registers like TLP mode and DMA addresses.
Definition Board.c:1577
es_status_codes GetBonPeriod(uint32_t drvno, uint32_t *bonPeriodIn10ns)
Get the pos edge to pos edge time of BON from the S0 register S0Addr_BON_PERIOD.
Definition Board.c:5342
es_status_codes GetLastBufPart(uint32_t drvno)
For the rest part of the buffer.
Definition Board.c:2287
es_status_codes ReadBitS0_8(uint32_t drvno, uint32_t address, uint8_t bitnumber, bool *isBitHigh)
Read 1 bit of 1 byte of a s0 register.
Definition Board.c:775
es_status_codes InitDriver(uint8_t *_number_of_boards)
Initialize the driver.
Definition Board.c:2341
void SetContinuousMeasurement(bool on)
Control looping the measurement.
Definition Board.c:4518
es_status_codes writeRegisterS0_32_allBoards(uint32_t data, uint32_t address)
Write 4 bytes of a register in S0 space.
Definition Board.c:604
es_status_codes writeRegisterS0_16(uint32_t drvno, uint16_t data, uint32_t address)
Write 2 bytes of a register in S0 space.
Definition Board.c:627
void manipulateData(uint32_t drvno, uint16_t *startAddress, uint32_t numberOfScansToManipulate)
Manipulate the incoming data buffer with a preset polynomial.
Definition Board.c:5531
es_status_codes dumpTlpRegisters(uint32_t drvno, char **stringPtr)
Read all TLP registers and write them to a string.
Definition Board.c:3723
es_status_codes ResetDSC(uint32_t drvno, uint8_t DSCNumber)
reset Delay Stage Counter
Definition Board.c:4151
es_status_codes SetSTI(uint32_t drvno, uint8_t sti_mode)
Chooses trigger input for scan trigger input (STI)
Definition Board.c:1154
es_status_codes CopyOneSample(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera, uint16_t *pdest)
Copy the data of a single sample to pdest.
Definition Board.c:2381
es_status_codes CheckFifoValid(uint32_t drvno, bool *valid)
Checks content of FIFO.
Definition Board.c:2682
es_status_codes SetSEC(uint32_t drvno, uint32_t ecin10ns)
Exposure control (EC) signal is used for mechanical shutter or sensors with EC function.
Definition Board.c:1068
es_status_codes ExitDriver()
Exit driver. Call this before exiting software for cleanup.
Definition Board.c:2358
es_status_codes SetPartialBinning(uint32_t drvno, uint16_t number_of_regions)
Turn partial binning on.
Definition Board.c:899
es_status_codes ImportMeasurementDataFromFile(const char *filename)
Import measurement data from a file.
Definition Board.c:5012
es_status_codes GetXckLength(uint32_t drvno, uint32_t *xckLengthIn10ns)
Get the high time duration of XCK from the S0 register S0Addr_XCKLEN.
Definition Board.c:5291
es_status_codes resetBitS0_8(uint32_t drvno, uint32_t bitnumber, uint32_t address)
Set bit to 0 in register at memory address.
Definition Board.c:575
es_status_codes dumpCameraSettings(uint32_t drvno, char **stringPtr)
Dump all camera settings to a string.
Definition Board.c:3906
es_status_codes ReadBlockFrequencyBit(uint32_t drvno, bool *blockFrequencyTooHigh)
Reads the BlockFrequency bit and checks if its high or low.
Definition Board.c:4846
bool PcieCardVersionIsEqual(uint32_t drvno, uint16_t major_version, uint16_t minor_version)
Is the PCIe card version euqal the input?
Definition Board.c:5409
es_status_codes SetSSlope(uint32_t drvno, uint32_t sslope)
Set the external trigger slope for scan trigger (PCI Reg CrtlA:D5 -> manual).
Definition Board.c:1105
es_status_codes writeBitsS0_8(uint32_t drvno, uint8_t data, uint8_t bitmask, uint32_t address)
Set specified bits to 1 in S0 register at memory address.
Definition Board.c:494
es_status_codes GetIsDsc(uint32_t drvno, bool *isDsc)
Read DSC flag in PCIEFLAGS register.
Definition Board.c:4460
es_status_codes resetBitS0_32(uint32_t drvno, uint32_t bitnumber, uint32_t address)
Set bit to 0 in register at memory address.
Definition Board.c:548
es_status_codes SetHardwareTimerStopMode(uint32_t drvno, bool stop_by_hardware)
Reset the internal intr collect counter.
Definition Board.c:2141
es_status_codes readRegisterS0_8(uint32_t drvno, uint8_t *data, uint32_t address)
Read 1 byte of a register in S0 space.
Definition Board.c:741
es_status_codes CheckFifoFull(uint32_t drvno, bool *full)
Check full flag (FIFO full).
Definition Board.c:2722
es_status_codes SetupVCLKReg(uint32_t drvno, uint32_t lines, uint8_t vfreq)
Set REG VCLKCTRL for FFT sensors.
Definition Board.c:824
es_status_codes GetDSC(uint32_t drvno, uint8_t DSCNumber, uint32_t *ADSC, uint32_t *LDSC)
return all values of Delay Stage Counter
Definition Board.c:4201
es_status_codes SetManualState(uint32_t drvno, bool state)
TODO missing documentation.
Definition Board.c:5643
es_status_codes FindCam(uint32_t drvno)
Test if SFP module is there and fiber is linked up.
Definition Board.c:2077
es_status_codes ResetScanTriggerDetected(uint32_t drvno)
Reset the bit PCIEFLAGS_bits_t::PCIEFLAGS_bit_scan_trigger_detected to 0.
Definition Board.c:5469
es_status_codes ResetBlockTriggerDetected(uint32_t drvno)
Reset the bit PCIEFLAGS_bits_t::PCIEFLAGS_bit_block_trigger_detected to 0.
Definition Board.c:5481
es_status_codes SetBEC(uint32_t drvno, uint32_t bec_in_10ns)
This function sets the register BEC.
Definition Board.c:1540
double CalcMeasureTimeInSeconds(uint32_t nos, uint32_t nob, double exposure_time_in_ms)
Calculate the theoretical time needed for one measurement.
Definition Board.c:2578
es_status_codes ArmScanTrigger(uint32_t drvno)
Sets Scan Timer on.
Definition Board.c:2243
es_status_codes SetDMABufRegs(uint32_t drvno)
Set DMA register.
Definition Board.c:1008
es_status_codes InitPcieBoard(uint32_t drvno)
Initialize all PCIe board registers before a measurement.
Definition Board.c:129
es_status_codes ImportMeasurementDataFromFileBIN(const char *filename)
Import measurement data from a .bin file.
Definition Board.c:5031
es_status_codes writeBitsDma_8(uint32_t drvno, uint8_t data, uint8_t bitmask, uint32_t address)
Set specified bits to 1 in DMA register at memory address.
Definition Board.c:1693
es_status_codes SetStateControlRegister(uint32_t drvno, uint16_t state)
Set the state control register.
Definition Board.c:5630
void SetAllInterruptsDone(uint32_t drvno)
Definition Board.c:4894
es_status_codes GetMeasureOn(uint32_t drvno, bool *measureOn)
Check if measure on bit is set.
Definition Board.c:2735
es_status_codes SetShiftS1S2ToNextScan(uint32_t drvno)
Set the bit CTRL_bits_t::CTRL_bit_shift_s in the S0 register S0Addr_CTRL.
Definition Board.c:5519
es_status_codes ResetPartialBinning(uint32_t drvno)
Turns ARREG off and therefore partial binning too.
Definition Board.c:913
es_status_codes _InitMeasurement(uint32_t drvno)
Initialize Measurement (using drvno).
Definition Board.c:235
es_status_codes GetImpactSignal2(uint32_t drvno, uint32_t sample, uint32_t block, uint16_t camera_pos, uint32_t *impactSignal)
This function returns the impact signal 2 of a specific scan.
Definition Board.c:4721
es_status_codes OpenShutter(uint32_t drvno)
Open shutter for sensors with EC (exposure control) / sets IFC signal = high.
Definition Board.c:794
All the low level platform specific implementations for interacting with the Stresing PCIe board.
Functions for interacting with the camera.
es_status_codes
Definition es_status_codes.h:15
In this struct are settings, that are the same for all PCIe boards.
Definition struct.h:409
Definition struct.h:498
Definition struct.h:517