pdv_dependent.h

Go to the documentation of this file.
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_ */

Generated on Mon May 12 16:38:57 2008 by  doxygen 1.5.1