00001 00005 #ifndef _PDV_DEPENDENT_H_ 00006 #define _PDV_DEPENDENT_H_ 00007 00008 #define CAMNAMELEN 128 00009 #define FNAMELEN 256 00010 #define MAXINIT 256 00011 #define KBSFNAMELEN 64 00012 #define CAMCLASSLEN 64 00013 00014 #define MAXSER 32 00015 #define MAXXIL 32 00016 00017 /* just a simple overload of file name structure elements to save space.... */ 00018 #define DD_P_CAMERA_DOWNLOAD_FILE dd_p->camera_download_file 00019 #define DD_P_CAMERA_COMMAND_FILE dd_p->camera_command_file 00020 00021 00022 #define MAX_INTLV_TAPS 8 00023 00024 /* this is supposed to be 32 bytes to match old KBS stuff - in the long run it doesn't really matter */ 00025 #define FULL 1 00026 00027 /* CLSIM control interface */ 00028 typedef struct _sim_control { 00029 00030 00031 union 00032 { 00033 struct { 00034 /* cfga*/ 00035 unsigned int linescan:1; 00036 unsigned int lvcont:1; 00037 unsigned int rven:1; 00038 unsigned int uartloop:1; 00039 unsigned int smallok:1; 00040 unsigned int intlven:1; 00041 unsigned int firstfc:1; 00042 unsigned int datacnt:1; 00043 /* cfgb */ 00044 unsigned int dvskip:4; 00045 unsigned int dvmode:4; 00046 /* cfgc */ 00047 unsigned int led:1; 00048 unsigned int trigsrc:1; 00049 unsigned int trigpol:1; 00050 unsigned int trigframe:1; 00051 unsigned int trigline:1; 00052 } Cfg; 00053 struct { 00054 u_char cfga; 00055 u_char cfgb; 00056 u_char cfgc; 00057 } b; 00058 } flags; 00059 00060 00061 u_char Exsyncdly; 00062 u_char FillA; 00063 u_char FillB; 00064 u_char taps; 00065 00066 /* if hblank is specified, hcntmax varies with hactv in library routines */ 00067 unsigned short hblank; 00068 unsigned short Hcntmax; 00069 unsigned short dummy; 00070 00071 /* if vgap is specified, vcntmax varies with vactv in library routines */ 00072 00073 unsigned int vblank; /* vactv + vgap = Vcntmax */ 00074 unsigned int Vcntmax; 00075 00076 unsigned short Hfvstart; 00077 unsigned short Hfvend; 00078 unsigned short Hlvstart; 00079 unsigned short Hlvend; 00080 unsigned short Hrvstart; 00081 unsigned short Hrvend; 00082 00083 float pixel_clock; 00084 00085 } ClSimControl; 00086 00087 /* General purpose reorder descriptor */ 00088 /* tap starts at startx, starty */ 00089 /* sample at dx,dy for length pixels */ 00090 /* go to startx, starty + stridex,stridey */ 00091 00092 #define PDV_DIM_END -1 00093 #define PDV_MAXTAPS 8 00094 00095 typedef struct _tap_descriptor { 00096 int startx; /* PDV_DIM_END means at end of row */ 00097 int starty; /* PDV_DIM_END means at last row */ 00098 int dx; 00099 int dy; 00100 int length; 00101 int stridex; /* PDV_DIM_END means at end of row */ 00102 int stridey; /* PDV_DIM_END means at last row */ 00103 } PdvInterleaveTap; 00104 00115 typedef struct _PdvDependent 00116 { 00117 /* note: size of dependent must be DEPSIZE (currently 4096) */ 00118 int width; 00119 int height; 00120 int depth; 00121 int imagesize; 00122 int extdepth; 00123 int slop; 00124 int hwpad; 00125 int byteswap; 00126 int image_offset; 00127 int interlace; 00128 int shutter_speed; 00129 int shutter_speed_frontp; 00130 int shutter_speed_min; 00131 int shutter_speed_max; 00132 int default_shutter_speed; 00133 int aperture; 00134 int aperture_min; 00135 int aperture_max; 00136 int default_aperture; 00137 int gain_frontp; 00138 int gain_min; 00139 int gain_max; 00140 int default_gain; 00141 int offset_frontp; 00142 int offset_min; 00143 int offset_max; 00144 int continuous; 00145 int pclock_speed; 00146 int hwinterlace; 00147 int inv_shutter; 00148 int trig_pulse; 00149 int dis_shutter; 00150 int mode_cntl_norm; 00151 int trigdiv; /* used to be dma_throttle */ 00152 int maxdmasize; 00153 int direction; 00154 int cameratest; 00155 int genericsim; 00156 int sim_width; 00157 int sim_height; 00158 int line_delay; 00159 int frame_delay; 00160 int frame_height; 00161 int fv_once; 00162 int enable_dalsa; 00163 int lock_shutter; 00164 int camera_shutter_timing; 00165 int camera_continuous; 00166 int camera_binning; 00167 int camera_data_rate; 00168 int camera_download; 00169 int get_gain; 00170 int get_offset; 00171 int set_gain; 00172 int set_offset; 00173 int default_offset; 00174 int first_open; 00175 int last_close; 00176 int pingpong_varsize; 00177 int image_depth; 00178 int remote_interface; 00179 int interlace_offset; 00180 int get_aperture; 00181 int set_aperture; 00182 int timeout_multiplier; 00183 int pdv_type; 00184 int sim_speed; 00185 int swinterlace; 00186 int started; 00187 int foi_unit; 00188 int disable_mdout; 00189 int fixedlen; 00190 int saved_speed; 00191 int camera_shutter_speed; 00192 int dual_channel; 00193 int gain; 00194 int level; 00195 int gendata; 00196 int skip; 00197 int shortswap; 00198 int markras; 00199 int markbin; 00200 int rascnt; 00201 int markrasx; 00202 int markrasy; 00203 int xilinx_rev; 00204 int xilinx_opts; 00205 int util2; 00206 int shift; 00207 int mask; 00208 int linerate; 00209 int header_size; 00210 int photo_trig; 00211 int fieldid_trig; 00212 int acquire_mult; 00213 int timeout; 00214 int sim_enable; 00215 int xilinx_clk; 00216 u_char *last_raw; 00217 u_char *last_image; 00218 u_char datapath_reg; 00219 u_char config_reg; 00220 u_char xilinx_flag[MAXXIL]; 00221 u_char xilinx_value[MAXXIL]; 00222 char cameratype[CAMNAMELEN]; 00223 char rbtfile[FNAMELEN]; 00224 char cfgname[FNAMELEN]; 00225 char foi_remote_rbtfile[FNAMELEN]; 00226 char interlace_module[FNAMELEN]; 00227 char serial_init[MAXINIT]; 00228 char foi_init[MAXINIT]; 00229 char xilinx_init[MAXINIT]; 00230 char serial_exposure[MAXSER]; 00231 char serial_gain[MAXSER]; 00232 char serial_offset[MAXSER]; 00233 char serial_prefix[MAXSER]; 00234 char serial_binning[MAXSER]; 00235 char RESERVED1[MAXSER]; 00236 char RESERVED2[MAXSER]; 00237 char camera_model[MAXSER]; 00238 char camera_info[MAXSER*2]; 00239 char serial_response[MAXSER]; 00240 char RESERVED4[MAXSER]; 00241 char serial_term[MAXSER]; 00242 char idstr[FNAMELEN]; 00243 int serial_timeout; 00244 int serial_respcnt; 00245 int serial_format; 00246 int strobe_count; 00247 int strobe_interval; 00248 int strobe_enabled; 00249 int sel_mc4; 00250 int mc4; 00251 int serial_baud; 00252 int user_timeout; 00253 int user_timeout_set; 00254 int cam_width; /* camera's real width/height, */ 00255 int cam_height; /* for ref. in case of ROI */ 00256 int hskip; /* horiz pixels to skip */ 00257 int hactv; /* horiz. active pixels */ 00258 int vskip; /* vert. pixels to skip */ 00259 int vactv; /* vert. active pixels */ 00260 int clr_cont_end; 00261 int clr_cont_start; 00262 u_int clr_cont_count ; 00263 u_int cnt_continuous; 00264 u_int sim_ctl; /* bits for simulator */ 00265 int started_continuous; 00266 int kbs_red_row_first; 00267 int kbs_green_pixel_first; 00268 ClSimControl cls; 00269 char camera_download_file[KBSFNAMELEN]; 00270 char camera_command_file[KBSFNAMELEN]; 00271 char camera_class[CAMCLASSLEN]; 00272 int double_rate; 00273 int force_single; 00274 char serial_trigger[MAXSER]; 00275 int variable_size; 00276 int header_offset; 00277 int header_dma; 00278 int header_position; 00279 int pause_for_serial; 00280 int roi_enabled; 00281 int binx; 00282 int biny; 00283 int serial_mode; 00284 int inv_ptrig; 00285 int inv_fvalid; 00286 int cl_cfg; 00287 int cl_data_path; 00288 int htaps; 00289 int vtaps; 00290 int pulnix; 00291 int dbl_trig; 00292 int cameralink; 00293 int start_delay; 00294 u_int serial_waitc ; 00295 int frame_period ; 00296 int frame_timing ; 00297 int register_wrap ; 00298 char *serial_binit ; 00299 int fval_done; 00300 int cl_hmax; 00301 int serial_init_delay; 00302 int mode16; 00303 /* new for config editor */ 00304 int n_intlv_taps; /* camera taps for interleave not necessarily same as CL channels */ 00305 int cl_channels; 00306 PdvInterleaveTap intlv_taps[MAX_INTLV_TAPS]; 00307 00308 /* NOTE: rename/reuse RESERVEDn variables before creating new ones */ 00309 /* Keep the same order as much as possible */ 00310 00311 int flushdma; 00312 int startdma; 00313 int enddma; 00314 int cl_cfg2; 00315 00316 } PdvDependent; 00317 00318 typedef PdvDependent pdv_methods; 00319 00320 #define KODAK_AIA_MCL 1 00321 #define AIA_MCL 1 /* same as KODAK */ 00322 #define IRC_160 2 00323 #define KODAK_AIA_SER 3 00324 #define AIA_SERIAL 3 /* same as KODAK */ 00325 #define KODAK_XHF_INTLC 4 /* horizontal interlace */ 00326 #define PDV_BYTE_INTLV 4 /* horizontal interlace */ 00327 #define KODAK_XHF_SKIP 5 /* subsample */ 00328 #define PDV_BYTE_INTLV_SKIP 5 /* subsample */ 00329 #define IMAGE_MERGE 6 /* merge */ 00330 #define PDV_FIELD_INTLC 6 /* merge */ 00331 #define HW_ONLY 7 00332 #define ES10_WORD_INTLC 8 /* need to deinterlace words */ 00333 #define PDV_WORD_INTLV 8 /* need to deinterlace words */ 00334 #define PDV_BGGR 9 /* expermental */ 00335 #define PDV_BGGR_DUAL 10 /* expermental */ 00336 #define PDV_BGGR_WORD 11 /* expermental */ 00337 #define PDV_BYTE_TEST1 12 /* temporary */ 00338 #define PDV_BYTE_TEST2 13 /* temporary */ 00339 #define PDV_BYTE_TEST3 14 /* temporary */ 00340 #define KODAK_SER_14I 21 /* Kodak chgd their AIA syntax */ 00341 #define HAM_4880_SER 22 /* AIA serial controlled camera */ 00342 #define PULNIX_TM1000 23 /* AIA_MCL controlled camera */ 00343 #define PULNIX_TM9700 24 /* AIA_MCL controlled camera */ 00344 #define KODAK_DIG_GAIN 25 /* AIA_MCL w/digital gain */ 00345 #define FOI_REMOTE_AIA 26 /* AIA Remote Camera Interface */ 00346 #define KODAK_AIA_SER_CTRL 27 /* AIA serial but use shutter ctrl */ 00347 #define AIA_SER_CTRL 27 00348 #define DALSA_CONTINUOUS 28 /* DALSA D71024T continuous mode */ 00349 #define HAM_4880_8X 29 /* AIA serial controlled camera */ 00350 #define HAM_4742_95 30 /* AIA serial controlled camera */ 00351 #define PROGRES 31 00352 #define AIA_MC4 32 /* MCL gain only for photonics gain */ 00353 #define SMD_SERIAL 33 /* SMD binary serial method */ 00354 #define AIA_SERIAL_ES40 34 /* Kodak modified AIA */ 00355 #define PDV_DALSA_4CH_INTLV 35 /* Dalsa four channel interleave */ 00356 #define SPECINST_SERIAL 36 /* Spectral Instruments */ 00357 #define PDV_INVERT_RIGHT_INTLV 37 /* even pixels are right half, inverted */ 00358 #define PDV_DALSA_2CH_INTLV PDV_INVERT_RIGHT_INTLV 00359 #define PDV_WORD_INTLV_ODD 38 /* sameas WORD_INTLV but odd ln 1st */ 00360 #define PDV_DDCAM 39 /* EDT/Delta Design camera */ 00361 #define PDV_DALSA_LS 40 00362 #define PDV_HEADER_BEFORE 41 /* header data comes before img data */ 00363 #define PDV_HEADER_AFTER 42 /* header data comes after img data */ 00364 #define PDV_HEADER_WITHIN 43 /* header data is within def'd img */ 00365 /* size - use hdr offs to dtmn where */ 00366 #define PDV_WORD_INTLV_HILO 44 /* deintrlace words, high/low */ 00367 #define PDV_SPECINST_4PORT_INTLV 45 /* Spectral Instruments 4 port intlv */ 00368 #define PDV_QUADRANT_INTLV 46 /* quadrant intlv */ 00369 #define PDV_ILLUNIS_INTLV 47 /* illunis quadrant intlv */ 00370 #define PDV_ILLUNIS_BGGR 48 /* illunis quadrant intlv + bggr */ 00371 00372 #define PDV_ES10_BGGR 49 /* Roper Horizontal Intlc w/ bayer */ 00373 #define PDV_ES10_WORD_BGGR 50 /* Roper Horizontal Intlc w/ bayer */ 00374 #define PDV_ES10_WORD_ODD_BGGR 51 /* Roper Horizontal Intlc w/ bayer */ 00375 #define AIA_MCL_100US 52 /* AIA_MCL w/100 microsec decade ctr */ 00376 #define PDV_PIRANHA_4CH_INTLV 53 /* Piranha four channel interleave */ 00377 #define PDV_FMRATE_ENABLE 54 /* Frame Rate Enable flag */ 00378 #define PDV_FVAL_ADJUST 55 /* Frame Valid Adjust flag */ 00379 #define BASLER_202K 56 /* Basler A202K */ 00380 #define DUNCAN_2131 57 /* Basler A202K */ 00381 #define PDV_EVEN_RIGHT_INTLV 58 /* even pixels are right half */ 00382 #define PDV_DALSA_2M30_INTLV PDV_EVEN_RIGHT_INTLV 00383 #define PDV_INV_RT_INTLV_24_12 59 /* clink 24-12 DALSA_2CH_INLTV */ 00384 #define PDV_INTLV_24_12 60 /* clink 24-12 */ 00385 #define PDV_INTLV_1_8_MSB7 61 /* one-bit , pixel 0 at lsb */ 00386 #define PDV_INTLV_1_8_MSB0 62 /* one-bit , pixel 0 at msb */ 00387 #define PDV_INTLV_BGR_2_RGB 63 /* BGR -> RGB */ 00388 #define PDV_INTLV_USER 64 /* look up */ 00389 #define SU320_SERIAL 65 /* Sensor Unlmited 320M serial expose method */ 00390 #define BASLER202K_SERIAL 66 /* Basler 202K serial expose method */ 00391 #define ADIMEC_SERIAL 67 /* Adimec serial expose method */ 00392 #define TIMC1001_SERIAL 68 /* TI MC1001 serial expose method */ 00393 #define PTM6710_SERIAL 69 /* Pulnix TM-6710 serial expose method */ 00394 #define PTM1020_SERIAL 70 /* Pulnix TM-1020 serial expose method */ 00395 #define AIA_TRIG 71 /* new: explicit triggered mode, sets mode_cntl automatically */ 00396 #define PDV_PIRANHA_4CH_HWINTLV 72 /* piranha 4 channel deinterleave IN HARDWARE */ 00397 #define PDV_INVERT_RIGHT_BGGR_INTLV 73 /* even pixels are right half, inverted BAYER pattern*/ 00398 00399 #define PDV_LINE_INTLV 74 00400 #define PDV_GENERIC_INTLV 75 00401 00402 #define KODAK_RDM_SINGLE 1 00403 #define KODAK_RDM_DUAL 2 00404 00405 /* serial_format */ 00406 #define SERIAL_ASCII 0 00407 #define SERIAL_BINARY 1 00408 #define SERIAL_PULNIX_1010 2 00409 #define SERIAL_ASCII_HEX 3 00410 #define SERIAL_BASLER_FRAMING 4 00411 #define SERIAL_DUNCAN_FRAMING 5 00412 00413 /* SMD registers common to all models (we hope!) */ 00414 #define SMD_READ_CAMTYPE 0xc3 00415 #define SMD_READ_FWREV 0xc5 00416 #define SMD_RESET 0x80 00417 00418 /* camera type, returned from SMD_READ_CAMTYPE register */ 00419 #define SMD_TYPE_4M4 0x14 00420 #define SMD_TYPE_BT25 0x38 00421 #define SMD_TYPE_1M30P 0x41 00422 #define SMD_TYPE_1M15P 0x11 00423 #define SMD_TYPE_6M3P 0x33 00424 00425 /* from SMD 4M4 Camera Interface Specification */ 00426 #define SMD_4M4_WRITE_R1 0x81 00427 #define SMD_4M4_WRITE_R2 0x82 00428 #define SMD_4M4_WRITE_R3 0x84 00429 #define SMD_4M4_WRITE_R4 0x88 00430 #define SMD_4M4_READ_R1 0xc1 00431 #define SMD_4M4_READ_R2 0xc2 00432 #define SMD_4M4_READ_R3 0xc4 00433 #define SMD_4M4_READ_R4 0xc8 00434 #define SMD_4M4_READ_FRAMERATE 0xca 00435 00436 /* 4M4 (and 1M30P) reg bits (only partial, see manual for complete list) */ 00437 #define SMD_4M4_R1_INTEGRATE 0x00 /* integrate mode, 0=ext, 1=int */ 00438 #define SMD_4M4_R1_TRIG 0x02 /* trigger mode, 0=ext, 1=cont */ 00439 #define SMD_4M4_R1_BINMSK 0x0c /* bin mode, 00=1x1, 01=2x2, 10=4x4 */ 00440 #define SMD_4M4_R1_GAIN 0x10 /* gain -- 0 = 1x, 1 = 4x */ 00441 #define SMD_4M4_BIN_2X2 0x04 00442 #define SMD_4M4_BIN_4X4 0x08 00443 00444 /* SMD 1M30P is pretty much the same as 4M4 */ 00445 #define SMD_1M30P_REG_W_ADC_RESET 0x00 00446 #define SMD_1M30P_REG_W_LS_OFFSET 0x02 00447 #define SMD_1M30P_REG_W_MS_OFFSET 0x03 00448 #define SMD_1M30P_REG_W_LS_GAIN 0x05 00449 #define SMD_1M30P_REG_W_MS_GAIN 0x06 00450 00451 #define SMD_1M30P_REG_R_LS_OFFSET 0x42 00452 #define SMD_1M30P_REG_R_MS_OFFSET 0x43 00453 #define SMD_1M30P_REG_R_LS_GAIN 0x45 00454 #define SMD_1M30P_REG_R_MS_GAIN 0x46 00455 00456 #define SMD_1M30P_REG_W_CAM_RESET 0x80 00457 #define SMD_1M30P_REG_W_CONTROL 0x82 00458 #define SMD_1M30P_REG_W_BINNING 0x85 00459 #define SMD_1M30P_REG_W_INTEG0 0x8A 00460 #define SMD_1M30P_REG_W_INTEG1 0x8B 00461 #define SMD_1M30P_REG_W_INTEG2 0x8C 00462 #define SMD_1M30P_REG_W_FRAME0 0x8D 00463 #define SMD_1M30P_REG_W_FRAME1 0x8E 00464 #define SMD_1M30P_REG_W_FRAME2 0x8F 00465 00466 #define SMD_1M30P_REG_R_CONTROL 0xc2 00467 00468 00469 /* from SMD BT25 Camera Interface Specification */ 00470 #define SMD_BT25_WRITE_R1 0x81 00471 #define SMD_BT25_WRITE_R2 0x82 00472 #define SMD_BT25_WRITE_R3 0x84 00473 #define SMD_BT25_WRITE_R4 0x88 00474 #define SMD_BT25_READ_R1 0xc1 00475 #define SMD_BT25_READ_R2 0xc2 00476 #define SMD_BT25_READ_R3 0xc4 00477 #define SMD_BT25_READ_R4 0xc8 00478 #define SMD_BT25_READ_FRAMERATE 0xca 00479 00480 /* from DALSTAR 1M15P Camera Interface Specification */ 00481 #define SMD_1M15P_WRITE_R1 0x82 00482 #define SMD_1M15P_WRITE_R2 0x84 00483 #define SMD_1M15P_WRITE_R3 0x88 00484 #define SMD_1M15P_READ_R1 0xc2 00485 #define SMD_1M15P_READ_R2 0xc4 00486 #define SMD_1M15P_READ_R3 0xc8 00487 00488 /* 1M15P regigster bits */ 00489 #define SMD_1M15P_R1_INTMODE 0x80 /* integrate mode, 0=ext, 1=int */ 00490 #define SMD_1M15P_R1_GAIN 0x40 /* gain, 0 = 1x, 1 = 4x */ 00491 #define SMD_1M15P_R1_ANTIBLOOM 0x20 /* anti-bloom, 0=enabled 1=disabled */ 00492 #define SMD_1M15P_R1_BINMODE 0x10 /* bin mode, 00=1x1, 01=2x2, 10=4x4 */ 00493 #define SMD_1M15P_R1_TRIGMODE 0x08 /* trigger mode, 0=ext, 1=cont */ 00494 #define SMD_1M15P_R1_INTMSK 0x03 /* integration time bits */ 00495 00496 /* compat */ 00497 #define HAM_4880 HAM_4880_SER 00498 #define HAMAMATSU_4880 HAM_4880_SER 00499 #define HAMAMATSU_4880_SER HAM_4880_SER 00500 #define HAMAMATSU_4880_8X HAM_4880_8X 00501 00502 #define PDV_NOLOCKDEV 0 00503 #define PDV_LOCKDEV 1 00504 00505 #define PDV_SERIAL_RS422 0 00506 #define PDV_SERIAL_RS232 1 00507 00508 /* Front panel value */ 00509 #define FRONT_PANEL 0x7fffffff 00510 #define FACTORY_SETTING 0x7ffffff0 00511 00512 /* LH Strobe Methods */ 00513 #define PDV_LHS_METHOD1 1 00514 #define PDV_LHS_METHOD2 2 00515 00516 #define NOT_SET -9999999 /* doubtful it would ever be a valid value */ 00517 00518 #endif /* _DEPENDENT_H_ */
1.5.1