00001 /*!******************************************************************************** 00002 *! FILE NAME : latency.h 00003 *! Table that specifies what frame should "onchange" function be programmed to, relative to the frame for which parameters are specified 00004 *! 1 - same frame (programmed at least 1 frame earlier), will happen immediately after VACT start for that frame (usually before the interrupt for that frame) 00005 *! 2 - previous frame (programmed at least 2 frames earlier) 00006 *! 3 - pre-previous frame (programmed at least 3 frames earlier) 00007 *! 4 - pre-pre-previous frame (programmed at least 4 frames earlier) 00008 *! 0 - ASAP (programmed after that frame interrupt - when compression of the previous frame is finished) 00009 *! each group consists of 6 numbers: 00010 *! "onchange" index (0..31), then 5 values for: 00011 *! 1 - continuous run , safe mode (skipping frame when geometry is modified) 00012 *! 2 - continuous run , no skipping frame when geometry is modified, trying to save all frames 00013 *! 3 - async mode (external trigger/timer) , safe mode (skipping frame when geometry is modified) 00014 *! 4 - async mode (external trigger/timer) , no skipping frame when geometry is modified, trying to save all frames 00015 *! 5 - async, non-overlap (program - acquire/compress - program next - acquire/compress next (i.e.10347 with CCD) 00016 *! Used in pgm_functions.c 00017 *! 00018 *! Copyright (C) 2008 Elphel, Inc. 00019 *! -----------------------------------------------------------------------------** 00020 *! 00021 *! This program is free software: you can redistribute it and/or modify 00022 *! it under the terms of the GNU General Public License as published by 00023 *! the Free Software Foundation, either version 3 of the License, or 00024 *! (at your option) any later version. 00025 *! 00026 *! This program is distributed in the hope that it will be useful, 00027 *! but WITHOUT ANY WARRANTY; without even the implied warranty of 00028 *! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00029 *! GNU General Public License for more details. 00030 *! 00031 *! You should have received a copy of the GNU General Public License 00032 *! along with this program. If not, see <http://www.gnu.org/licenses/>. 00033 *! -----------------------------------------------------------------------------** 00034 *! $Log: latency.h,v $ 00035 *! Revision 1.1.1.1 2008/11/27 20:04:01 elphel 00036 *! 00037 *! 00038 *! Revision 1.12 2008/11/27 09:27:31 elphel 00039 *! Support fro new parameters (vignetting correction related) 00040 *! 00041 *! Revision 1.11 2008/10/25 19:53:49 elphel 00042 *! increased latency for gamma/gamma_load to fix a bug 00043 *! 00044 *! Revision 1.10 2008/10/23 08:06:40 elphel 00045 *! set latencies for async modes 00046 *! 00047 *! Revision 1.9 2008/10/22 05:29:03 elphel 00048 *! Rev. 8.0.alpha5 - working on external trigger mode - moved programming away from the sequencer that can only pass 24 data bits 00049 *! 00050 *! Revision 1.8 2008/10/22 03:44:50 elphel 00051 *! increased limitfps latency to the same as the one for window to prevent sensor from missing counter rollover 00052 *! 00053 *! Revision 1.7 2008/10/21 04:22:26 elphel 00054 *! changed latency for exposure to 2 (was 3) 00055 *! 00056 *! Revision 1.6 2008/10/18 06:14:21 elphel 00057 *! 8.0.alpha4 - removed some obsolete parameters, renumbered others, split P_FLIP into P_FLIPH and P_FLIPV (different latencies because of bad frames), pgm_window-> pgm_window, pgm_window_safe 00058 *! 00059 *! Revision 1.5 2008/10/17 05:44:48 elphel 00060 *! fixing latencies 00061 *! 00062 *! Revision 1.4 2008/10/08 21:26:25 elphel 00063 *! snapsot 7.2.0.pre4 - first images (actually - second) 00064 *! 00065 *! Revision 1.3 2008/09/25 00:58:11 elphel 00066 *! snapshot 00067 *! 00068 *! Revision 1.2 2008/08/11 19:17:01 elphel 00069 *! reduced syntax complaints by KDevelop 00070 *! 00071 *! Revision 1.1 2008/07/29 01:15:06 elphel 00072 *! another snapshot 00073 *! 00074 *! 00075 */ 00076 00077 #ifndef _LATENCY_H 00078 #define _LATENCY_H 00080 const unsigned long ahead_tab[]= 00081 { 00082 #if 0 00083 onchange_recalcseq, 0, 0, 0, 0, 0, 0, 00084 onchange_detectsensor, 1, 0, 0, 0, 0, 0, 00085 onchange_sensorphase, 1, 0, 0, 0, 0, 0, 00086 onchange_i2c, 0, 0, 0, 0, 0, 0, 00087 onchange_initsensor, 1, 0, 0, 0, 0, 0, 00088 onchange_afterinit, 0, 0, 0, 0, 0, 0, 00089 onchange_window, 0, 3, 2, 2, 2, 0, 00090 onchange_exposure, 0, 3, 3, 2, 2, 0, 00091 onchange_gains, 0, 2, 2, 2, 2, 0, 00092 onchange_triggermode, 0, 3, 2, 2, 2, 0, 00093 onchange_sensorin, 0, 1, 1, 1, 1, 0, 00094 onchange_sensorstop, 0, 1, 1, 1, 1, 0, 00095 onchange_sensorrun, 0, 2, 2, 2, 2, 0, 00096 onchange_gamma, 0, 1, 1, 1, 1, 0, 00097 onchange_hist, 0, 1, 1, 1, 1, 0, 00098 onchange_aexp, 0, 1, 1, 1, 1, 0, 00099 onchange_quality, 0, 1, 1, 1, 1, 0, 00100 onchange_memsensor, 0, 1, 1, 1, 1, 0, 00101 onchange_memcompressor, 0, 1, 1, 1, 1, 0, 00102 onchange_limitfps, 0, 2, 2, 2, 2, 0, 00103 onchange_compmode, 0, 1, 1, 1, 1, 0, 00104 onchange_focusmode, 1, 0, 0, 0, 0, 0, 00105 onchange_trigseq, 0, 0, 0, 0, 0, 0, 00106 onchange_irq, 0, 0, 0, 0, 0, 0, 00107 onchange_comprestart, 0, 1, 0, 1, 0, 0, 00108 00109 // onchange_compstop, 0, 2, 1, 2, 1, 0, /// stop compressor when changing geometry 00110 onchange_compstop, 0, 3, 2, 3, 2, 0, 00111 onchange_compctl, 0, 1, 1, 1, 1, 0, 00112 // onchange_gammaload, 1, 0, 0, 0, 0, 0, /// write gamma tables (should be prepared). Maybe - just last byte, to activate? 00113 onchange_gammaload, 1, 1, 1, 1, 1, 0, 00114 onchange_sensorregs, 0, 2, 2, 2, 2, 0 00115 // 29 - 3 left 00116 #endif 00118 onchange_recalcseq, 0, 0, 0, 0, 0, 0, 00119 onchange_detectsensor, 1, 0, 0, 0, 0, 0, 00120 onchange_sensorphase, 1, 0, 0, 0, 0, 0, 00121 onchange_i2c, 0, 0, 0, 0, 0, 0, 00122 onchange_initsensor, 1, 0, 0, 0, 0, 0, 00123 onchange_afterinit, 0, 0, 0, 0, 0, 0, 00124 onchange_window, 0, 2, 1, 1, 1, 0, 00125 onchange_window_safe, 0, 1, 1, 1, 1, 0, 00126 // onchange_exposure, 0, 3, 3, 2, 2, 0, 00127 onchange_exposure, 0, 2, 1, 1, 1, 0, 00128 onchange_gains, 0, 1, 1, 1, 1, 0, 00129 onchange_triggermode, 0, 2, 1, 1, 1, 0, 00130 onchange_sensorin, 0, 0, 0, 0, 0, 0, 00131 onchange_sensorstop, 0, 0, 0, 0, 0, 0, 00132 onchange_sensorrun, 0, 1, 1, 1, 1, 0, 00133 onchange_gamma, 0, 1, 1, 1, 1, 0, 00134 onchange_hist, 0, 0, 0, 0, 0, 0, 00135 onchange_aexp, 0, 0, 0, 0, 0, 0, 00136 onchange_quality, 0, 0, 0, 0, 0, 0, 00137 onchange_memsensor, 0, 0, 0, 0, 0, 0, 00138 onchange_memcompressor, 0, 0, 0, 0, 0, 0, 00139 // onchange_limitfps, 0, 1, 2, 2, 2, 0, 00140 00141 00142 onchange_limitfps, 0, 2, 1, 1, 1, 0, 00143 onchange_compmode, 0, 0, 1, 1, 1, 0, 00144 onchange_focusmode, 1, 0, 0, 0, 0, 0, 00145 // onchange_trigseq, 0, 0, 0, 0, 0, 0, 00146 onchange_trigseq, 1, 0, 0, 0, 0, 0, 00147 onchange_irq, 0, 0, 0, 0, 0, 0, 00148 onchange_comprestart, 0, 0, 0, 0, 0, 0, 00149 00150 // onchange_compstop, 0, 2, 1, 2, 1, 0, 00151 onchange_compstop, 0, 2, 1, 1, 1, 0, 00152 onchange_compctl, 0, 0, 1, 1, 1, 0, 00153 // onchange_gammaload, 1, 0, 0, 0, 0, 0, 00154 onchange_gammaload, 1, 1, 1, 1, 1, 0, 00155 onchange_sensorregs, 0, 1, 1, 1, 1, 0, 00156 onchange_prescal, 0, 0, 0, 0, 0, 0 00157 }; 00158 #endif