u32mux;///< Sensor multiplexer, currently 0 (SENSOR_DETECT, SENSOR_MUX_10359 or SENSOR_NONE)
u32mux;///< Sensor multiplexer, currently 0 (SENSOR_DETECT, SENSOR_MUX_10359 or SENSOR_NONE)
...
@@ -37,7 +38,9 @@ struct sensor_port_config_t {
...
@@ -37,7 +38,9 @@ struct sensor_port_config_t {
//u8 haddr2rec[MAX_SENSORS][MAX_FPGA_RECS]; ///< Big LUT (but almost empty). Sensor's page address (haddr of reg addr) to fpga i2c record number (fpga line#)
//u8 haddr2rec[MAX_SENSORS][MAX_FPGA_RECS]; ///< Big LUT (but almost empty). Sensor's page address (haddr of reg addr) to fpga i2c record number (fpga line#)
// u32 is for error handling
// u32 is for error handling
u32haddr2rec[MAX_SENSORS][MAX_FPGA_RECS];///< Big LUT (but almost empty). Sensor's page address (haddr of reg addr) to fpga i2c record number (fpga line#)
u32haddr2rec[MAX_SENSORS][MAX_FPGA_RECS];///< Big LUT (but almost empty). Sensor's page address (haddr of reg addr) to fpga i2c record number (fpga line#)
unsignedshort*pages_ptr[MAX_SENSORS];
constunsignedshort*pages_ptr[MAX_SENSORS];
// original table is const unsigned long, 32 functions is MAX
onchange_recalcseq,0,0,0,0,0,0,/// recalculate sequences/latencies, according to P_SKIP, P_TRIG
onchange_detectsensor,1,0,0,0,0,0,/// detect sensor type, sets sensor structure (capabilities), function pointers
onchange_sensorphase,1,0,0,0,0,0,/// program sensor clock/phase (do immediately)
onchange_i2c,0,0,0,0,0,0,/// program i2c
onchange_initsensor,1,0,0,0,0,0,/// resets sensor, reads sensor registers, schedules "secret" manufacturer's corrections to the registers (stops/re-enables hardware i2c)
onchange_afterinit,0,0,0,0,0,0,/// restore image size, decimation,... after sensor reset or set them according to sensor capabilities if none were specified
onchange_multisens,0,2,1,1,1,0,/// chnages related to multiplexed sensors
onchange_window,0,2,1,1,1,0,/// program sensor WOI and mirroring (flipping) - NOTE: 1 bad frame to skip
onchange_window_safe,0,1,1,1,1,0,/// program sensor WOI and mirroring (flipping) - NOTE: no bad frames
onchange_exposure,0,2,1,2,1,0,/// program exposure
onchange_gains,0,1,1,1,1,0,/// program analog gains
onchange_triggermode,0,2,1,1,1,0,/// program sensor trigger mode TODO: does it have any sense here?
onchange_sensorin,0,0,0,0,0,0,/// program sensor input in FPGA (Bayer, 8/16 bits, ??), stop sensor (if needed)
onchange_sensorstop,0,0,0,0,0,0,/// Stop acquisition from the sensor to the FPGA (start has latency of 2)
onchange_sensorrun,0,1,1,1,1,0,/// Start/single acquisition from the sensor to the FPGA (stop has latency of 1)
onchange_gamma,0,1,1,1,1,0,/// program gamma table - make sure table is calculated, maybe send all but last word)
onchange_hist,0,0,0,0,0,0,/// program histogram window TODO: fix FPGA - (now pos_top will be read too early - will use previous ) and add latency
onchange_aexp,0,0,0,0,0,0,/// program autoexposure mode TODO: look what exactly is changed here
onchange_quality,0,0,0,0,0,0,/// program quantization table(s)
onchange_memsensor,0,0,0,0,0,0,/// program memory channels 0 (sensor->memory) and 1 (memory->FPN)
onchange_memcompressor,0,0,0,0,0,0,/// program memory channel 2 (memory->compressor) (delays programming until onchange_comprestart if needed)
/// For Micron sensors limitfps should have the same latency as changing window height, otherwise when WOI_HEIGHT 0x3c0->0x790 and next frame VBLANK 0x13e->0x284
/// sensor waits till the counter overflows (>10 seconds) without any frame sync pulses
onchange_limitfps,0,2,1,1,1,0,/// check compressor will keep up, limit sensor FPS if needed
onchange_compmode,0,0,0,0,0,0,/// program compressor modes
onchange_focusmode,1,0,0,0,0,0,/// program focus modes (through writing the tables, so no sequencer)
onchange_trigseq,0,2,1,1,1,0,/// NC393: OK to program through the sequencer (full 32 bits)
onchange_irq,0,0,0,0,0,0,/// program smart IRQ mode
onchange_comprestart,0,0,0,0,0,0,/// restart after changing geometry (recognizes ASAP and programs memory channel 2 then)
// onchange_compstop should have the same latency as onchange_window
onchange_recalcseq,0,0,0,0,0,0,/// recalculate sequences/latencies, according to P_SKIP, P_TRIG
onchange_detectsensor,1,0,0,0,0,0,/// detect sensor type, sets sensor structure (capabilities), function pointers
onchange_sensorphase,1,0,0,0,0,0,/// program sensor clock/phase (do immediately)
onchange_i2c,0,0,0,0,0,0,/// program i2c
onchange_initsensor,1,0,0,0,0,0,/// resets sensor, reads sensor registers, schedules "secret" manufacturer's corrections to the registers (stops/re-enables hardware i2c)
onchange_afterinit,0,0,0,0,0,0,/// restore image size, decimation,... after sensor reset or set them according to sensor capabilities if none were specified
onchange_multisens,0,2,1,1,1,0,/// chnages related to multiplexed sensors
onchange_window,0,2,1,1,1,0,/// program sensor WOI and mirroring (flipping) - NOTE: 1 bad frame to skip
onchange_window_safe,0,1,1,1,1,0,/// program sensor WOI and mirroring (flipping) - NOTE: no bad frames
onchange_exposure,0,2,1,1,1,0,/// program exposure
onchange_gains,0,1,1,1,1,0,/// program analog gains
onchange_triggermode,0,2,1,1,1,0,/// program sensor trigger mode TODO: does it have any sense here?
onchange_sensorin,0,0,0,0,0,0,/// program sensor input in FPGA (Bayer, 8/16 bits, ??), stop sensor (if needed)
onchange_sensorstop,0,0,0,0,0,0,/// Stop acquisition from the sensor to the FPGA (start has latency of 2)
onchange_sensorrun,0,1,1,1,1,0,/// Start/single acquisition from the sensor to the FPGA (stop has latency of 1)
onchange_gamma,0,1,1,1,1,0,/// program gamma table - make sure table is calculated, maybe send all but last word)
onchange_hist,0,0,0,0,0,0,/// program histogram window TODO: fix FPGA - (now pos_top will be read too early - will use previous ) and add latency
onchange_aexp,0,0,0,0,0,0,/// program autoexposure mode TODO: look what exactly is changed here
onchange_quality,0,0,0,0,0,0,/// program quantization table(s)
onchange_memsensor,0,0,0,0,0,0,/// program memory channels 0 (sensor->memory) and 1 (memory->FPN)
onchange_memcompressor,0,0,0,0,0,0,/// program memory channel 2 (memory->compressor) (delays programming until onchange_comprestart if needed)
/// For Micron sensors limitfps should have the same latency as changing window height, otherwise when WOI_HEIGHT 0x3c0->0x790 and next frame VBLANK 0x13e->0x284
/// sensor waits till the counter overflows (>10 seconds) without any frame sync pulses
onchange_limitfps,0,2,1,1,1,0,/// check compressor will keep up, limit sensor FPS if needed
onchange_compmode,0,0,0,0,0,0,/// program compressor modes
onchange_focusmode,1,0,0,0,0,0,/// program focus modes (through writing the tables, so no sequencer)
onchange_trigseq,0,2,1,1,1,0,/// NC393: OK to program through the sequencer (full 32 bits)
onchange_irq,0,0,0,0,0,0,/// program smart IRQ mode
onchange_comprestart,0,0,0,0,0,0,/// restart after changing geometry (recognizes ASAP and programs memory channel 2 then)
// onchange_compstop should have the same latency as onchange_window