00001
00002
00003
00004
00005
00006
00008
00009 #include "ApnCamData_CCD5520.h"
00010
00011 #include <stdlib.h>
00012 #include <string.h>
00013
00015
00017
00018
00019 CApnCamData_CCD5520::CApnCamData_CCD5520()
00020 {
00021 }
00022
00023
00024 CApnCamData_CCD5520::~CApnCamData_CCD5520()
00025 {
00026 }
00027
00028
00029 void CApnCamData_CCD5520::Initialize()
00030 {
00031 strcpy( m_Sensor, "CCD5520" );
00032 strcpy( m_CameraModel, "55" );
00033 m_CameraId = 22;
00034 m_InterlineCCD = false;
00035 m_SupportsSerialA = true;
00036 m_SupportsSerialB = true;
00037 m_SensorTypeCCD = true;
00038 m_TotalColumns = 804;
00039 m_ImagingColumns = 770;
00040 m_ClampColumns = 17;
00041 m_PreRoiSkipColumns = 0;
00042 m_PostRoiSkipColumns = 0;
00043 m_OverscanColumns = 17;
00044 m_TotalRows = 1152;
00045 m_ImagingRows = 1152;
00046 m_UnderscanRows = 0;
00047 m_OverscanRows = 0;
00048 m_VFlushBinning = 1;
00049 m_EnableSingleRowOffset = false;
00050 m_RowOffsetBinning = 1;
00051 m_HFlushDisable = false;
00052 m_ShutterCloseDelay = 300;
00053 m_PixelSizeX = 22.5;
00054 m_PixelSizeY = 22.5;
00055 m_Color = false;
00056 m_ReportedGainSixteenBit = 2;
00057 m_MinSuggestedExpTime = 20.0;
00058 m_CoolingSupported = true;
00059 m_RegulatedCoolingSupported = true;
00060 m_TempSetPoint = -20.0;
00061 m_TempRampRateOne = 700;
00062 m_TempRampRateTwo = 4000;
00063 m_TempBackoffPoint = 2.0;
00064 m_PrimaryADType = ApnAdType_Alta_Sixteen;
00065 m_AlternativeADType = ApnAdType_Alta_Twelve;
00066 m_DefaultGainTwelveBit = 400;
00067 m_DefaultOffsetTwelveBit = 200;
00068 m_DefaultRVoltage = 1000;
00069
00070 set_vpattern();
00071
00072 set_hpattern_clamp_sixteen();
00073 set_hpattern_skip_sixteen();
00074 set_hpattern_roi_sixteen();
00075
00076 set_hpattern_clamp_twelve();
00077 set_hpattern_skip_twelve();
00078 set_hpattern_roi_twelve();
00079 }
00080
00081
00082 void CApnCamData_CCD5520::set_vpattern()
00083 {
00084 const unsigned short Mask = 0x0;
00085 const unsigned short NumElements = 247;
00086 unsigned short Pattern[NumElements] =
00087 {
00088 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
00089 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
00090 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
00091 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
00092 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
00093 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
00094 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
00095 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A,
00096 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A,
00097 0x000A, 0x000A, 0x000A, 0x000A, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
00098 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,
00099 0x0002, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
00100 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
00101 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,
00102 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0004, 0x0004,
00103 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,
00104 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,
00105 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,
00106 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,
00107 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,
00108 0x000C, 0x000C, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
00109 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
00110 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
00111 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0000, 0x0000,
00112 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000
00113 };
00114
00115 m_VerticalPattern.Mask = Mask;
00116 m_VerticalPattern.NumElements = NumElements;
00117 m_VerticalPattern.PatternData =
00118 (unsigned short *)malloc(NumElements * sizeof(unsigned short));
00119
00120 for ( int i=0; i<NumElements; i++ )
00121 {
00122 m_VerticalPattern.PatternData[i] = Pattern[i];
00123 }
00124 }
00125
00126
00127 void CApnCamData_CCD5520::set_hpattern_skip_sixteen()
00128 {
00129 const unsigned short Mask = 0x0;
00130 const unsigned short BinningLimit = 1;
00131 const unsigned short RefNumElements = 22;
00132 const unsigned short SigNumElements = 8;
00133
00134 unsigned short RefPatternData[RefNumElements] =
00135 {
00136 0x006C, 0x0068, 0x006A, 0x006A, 0x1068, 0x1068, 0x1068, 0x0068, 0x00E8, 0x00C8,
00137 0x00D8, 0x00D8, 0x00D8, 0x00D8, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D4, 0x00D4,
00138 0x00D4, 0x00D4
00139 };
00140
00141 unsigned short SigPatternData[SigNumElements] =
00142 {
00143 0x0144, 0x0104, 0x0104, 0x0104, 0x0104, 0x0004, 0x0005, 0x0004
00144 };
00145
00146 unsigned short BinNumElements[APN_MAX_HBINNING] =
00147 {
00148 0x0002
00149 };
00150
00151 unsigned short BinPatternData[1][256] = {
00152 {
00153 0x0054, 0x0044
00154 } };
00155
00156 set_hpattern( &m_SkipPatternSixteen,
00157 Mask,
00158 BinningLimit,
00159 RefNumElements,
00160 SigNumElements,
00161 BinNumElements,
00162 RefPatternData,
00163 SigPatternData,
00164 BinPatternData );
00165 }
00166
00167
00168 void CApnCamData_CCD5520::set_hpattern_clamp_sixteen()
00169 {
00170 const unsigned short Mask = 0x0;
00171 const unsigned short BinningLimit = 1;
00172 const unsigned short RefNumElements = 22;
00173 const unsigned short SigNumElements = 8;
00174
00175 unsigned short RefPatternData[RefNumElements] =
00176 {
00177 0x006C, 0x0068, 0x006A, 0x006A, 0x1068, 0x1068, 0x1068, 0x0068, 0x00E8, 0x00C8,
00178 0x00D8, 0x00D8, 0x00D8, 0x00D8, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D4, 0x00D4,
00179 0x00D4, 0x00D4
00180 };
00181
00182 unsigned short SigPatternData[SigNumElements] =
00183 {
00184 0x0144, 0x0104, 0x0104, 0x0104, 0x0104, 0x0004, 0x0005, 0x0004
00185 };
00186
00187 unsigned short BinNumElements[APN_MAX_HBINNING] =
00188 {
00189 0x0002
00190 };
00191
00192 unsigned short BinPatternData[1][256] = {
00193 {
00194 0x0054, 0x0044
00195 } };
00196
00197 set_hpattern( &m_ClampPatternSixteen,
00198 Mask,
00199 BinningLimit,
00200 RefNumElements,
00201 SigNumElements,
00202 BinNumElements,
00203 RefPatternData,
00204 SigPatternData,
00205 BinPatternData );
00206 }
00207
00208
00209 void CApnCamData_CCD5520::set_hpattern_roi_sixteen()
00210 {
00211 const unsigned short Mask = 0x0;
00212 const unsigned short BinningLimit = 6;
00213 const unsigned short RefNumElements = 59;
00214 const unsigned short SigNumElements = 35;
00215
00216 unsigned short RefPatternData[RefNumElements] =
00217 {
00218 0x006C, 0x006C, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0078, 0x0078, 0x0078,
00219 0x0078, 0x0078, 0x0070, 0x0070, 0x0074, 0x0074, 0x0076, 0x0076, 0x0076, 0x0074,
00220 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x1074, 0x1074, 0x0074, 0x0074, 0x0074,
00221 0x0074, 0x0074, 0x00F4, 0x00F4, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4,
00222 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4,
00223 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4
00224 };
00225
00226 unsigned short SigPatternData[SigNumElements] =
00227 {
00228 0x0044, 0x0044, 0x0044, 0x0144, 0x0144, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
00229 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,
00230 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x8104,
00231 0x8104, 0x0004, 0x0004, 0x0405, 0x0404
00232 };
00233
00234 unsigned short BinNumElements[APN_MAX_HBINNING] =
00235 {
00236 0x0002, 0x0024, 0x0048, 0x006C, 0x0090, 0x00B4
00237 };
00238
00239 unsigned short BinPatternData[6][256] = {
00240 {
00241 0x00C4, 0x0044
00242 },
00243 {
00244 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C,
00245 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0058, 0x0058, 0x0058, 0x0058,
00246 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
00247 0x0054, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044
00248 },
00249 {
00250 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C,
00251 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0058, 0x0058, 0x0058, 0x0058,
00252 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
00253 0x0054, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
00254 0x0044, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x0048, 0x0048, 0x0048, 0x0048,
00255 0x0048, 0x0048, 0x0058, 0x0058, 0x0058, 0x0058, 0x0050, 0x0050, 0x0050, 0x0050,
00256 0x0050, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0044, 0x0044, 0x0044,
00257 0x0044, 0x0044
00258 },
00259 {
00260 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C,
00261 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0058, 0x0058, 0x0058, 0x0058,
00262 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
00263 0x0054, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
00264 0x0044, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x0048, 0x0048, 0x0048, 0x0048,
00265 0x0048, 0x0048, 0x0058, 0x0058, 0x0058, 0x0058, 0x0050, 0x0050, 0x0050, 0x0050,
00266 0x0050, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0044, 0x0044, 0x0044,
00267 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004C, 0x004C, 0x004C,
00268 0x004C, 0x004C, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0058, 0x0058,
00269 0x0058, 0x0058, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0054, 0x0054, 0x0054,
00270 0x0054, 0x0054, 0x0054, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044
00271 },
00272 {
00273 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C,
00274 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0058, 0x0058, 0x0058, 0x0058,
00275 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
00276 0x0054, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
00277 0x0044, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x0048, 0x0048, 0x0048, 0x0048,
00278 0x0048, 0x0048, 0x0058, 0x0058, 0x0058, 0x0058, 0x0050, 0x0050, 0x0050, 0x0050,
00279 0x0050, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0044, 0x0044, 0x0044,
00280 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004C, 0x004C, 0x004C,
00281 0x004C, 0x004C, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0058, 0x0058,
00282 0x0058, 0x0058, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0054, 0x0054, 0x0054,
00283 0x0054, 0x0054, 0x0054, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
00284 0x0044, 0x0044, 0x0044, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x0048, 0x0048,
00285 0x0048, 0x0048, 0x0048, 0x0048, 0x0058, 0x0058, 0x0058, 0x0058, 0x0050, 0x0050,
00286 0x0050, 0x0050, 0x0050, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0044,
00287 0x0044, 0x0044, 0x0044, 0x0044
00288 },
00289 {
00290 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C,
00291 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0058, 0x0058, 0x0058, 0x0058,
00292 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054,
00293 0x0054, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
00294 0x0044, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x0048, 0x0048, 0x0048, 0x0048,
00295 0x0048, 0x0048, 0x0058, 0x0058, 0x0058, 0x0058, 0x0050, 0x0050, 0x0050, 0x0050,
00296 0x0050, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0044, 0x0044, 0x0044,
00297 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004C, 0x004C, 0x004C,
00298 0x004C, 0x004C, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0058, 0x0058,
00299 0x0058, 0x0058, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0054, 0x0054, 0x0054,
00300 0x0054, 0x0054, 0x0054, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
00301 0x0044, 0x0044, 0x0044, 0x004C, 0x004C, 0x004C, 0x004C, 0x004C, 0x0048, 0x0048,
00302 0x0048, 0x0048, 0x0048, 0x0048, 0x0058, 0x0058, 0x0058, 0x0058, 0x0050, 0x0050,
00303 0x0050, 0x0050, 0x0050, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0044,
00304 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004C,
00305 0x004C, 0x004C, 0x004C, 0x004C, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,
00306 0x0058, 0x0058, 0x0058, 0x0058, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0054,
00307 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,
00308 } };
00309
00310 set_hpattern( &m_RoiPatternSixteen,
00311 Mask,
00312 BinningLimit,
00313 RefNumElements,
00314 SigNumElements,
00315 BinNumElements,
00316 RefPatternData,
00317 SigPatternData,
00318 BinPatternData );
00319 }
00320
00321
00322 void CApnCamData_CCD5520::set_hpattern_skip_twelve()
00323 {
00324 const unsigned short Mask = 0x0;
00325 const unsigned short BinningLimit = 1;
00326 const unsigned short RefNumElements = 0;
00327 const unsigned short SigNumElements = 0;
00328
00329 unsigned short *RefPatternData = NULL;
00330
00331 unsigned short *SigPatternData = NULL;
00332
00333 unsigned short BinNumElements[APN_MAX_HBINNING] =
00334 {
00335 0x0017
00336 };
00337
00338 unsigned short BinPatternData[1][256] = {
00339 {
00340 0x000C, 0x0008, 0x400A, 0x000A, 0x0008, 0x0008, 0x0218, 0x0018, 0x0018, 0x0018,
00341 0x0010, 0x0010, 0x0010, 0x0010, 0x0014, 0x2014, 0x0004, 0x0004, 0x0004, 0x0004,
00342 0x0004, 0x0005, 0x0004
00343 } };
00344
00345 set_hpattern( &m_SkipPatternTwelve,
00346 Mask,
00347 BinningLimit,
00348 RefNumElements,
00349 SigNumElements,
00350 BinNumElements,
00351 RefPatternData,
00352 SigPatternData,
00353 BinPatternData );
00354 }
00355
00356
00357 void CApnCamData_CCD5520::set_hpattern_clamp_twelve()
00358 {
00359 const unsigned short Mask = 0x0;
00360 const unsigned short BinningLimit = 3;
00361 const unsigned short RefNumElements = 0;
00362 const unsigned short SigNumElements = 0;
00363
00364 unsigned short *RefPatternData = NULL;
00365
00366 unsigned short *SigPatternData = NULL;
00367
00368 unsigned short BinNumElements[APN_MAX_HBINNING] =
00369 {
00370 0x0017, 0x002E, 0x0044
00371 };
00372
00373 unsigned short BinPatternData[3][256] = {
00374 {
00375 0x080C, 0x0808, 0x0A0A, 0x080A, 0x0808, 0x0808, 0x0818, 0x0818, 0x0818, 0x0818,
00376 0x0810, 0x0810, 0x2810, 0x0810, 0x0814, 0x0814, 0x0804, 0x0804, 0x0804, 0x0804,
00377 0x4804, 0x0805, 0x0804
00378 },
00379 {
00380 0x000C, 0x0008, 0x400A, 0x000A, 0x0008, 0x0008, 0x0218, 0x0018, 0x0018, 0x0018,
00381 0x0010, 0x0010, 0x0010, 0x0010, 0x0014, 0x2014, 0x0004, 0x0004, 0x0004, 0x0004,
00382 0x0004, 0x0004, 0x0004, 0x000C, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0018,
00383 0x0018, 0x0018, 0x0018, 0x0010, 0x0010, 0x0010, 0x0010, 0x0014, 0x0014, 0x0004,
00384 0x0004, 0x0004, 0x0004, 0x0004, 0x8005, 0x8004
00385 },
00386 {
00387 0x000C, 0x0008, 0x400A, 0x000A, 0x0008, 0x0008, 0x0218, 0x0018, 0x0018, 0x0018,
00388 0x0010, 0x0010, 0x0010, 0x0010, 0x0014, 0x2014, 0x0004, 0x0004, 0x0004, 0x0004,
00389 0x0004, 0x0004, 0x0004, 0x000C, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0018,
00390 0x0018, 0x0018, 0x0018, 0x0010, 0x0010, 0x0010, 0x0010, 0x0014, 0x0014, 0x0004,
00391 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0008, 0x0008, 0x0008, 0x0008,
00392 0x0008, 0x0018, 0x0018, 0x0018, 0x0018, 0x0010, 0x0010, 0x0010, 0x0010, 0x0014,
00393 0x0014, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x8005, 0x8004
00394 } };
00395
00396 set_hpattern( &m_ClampPatternTwelve,
00397 Mask,
00398 BinningLimit,
00399 RefNumElements,
00400 SigNumElements,
00401 BinNumElements,
00402 RefPatternData,
00403 SigPatternData,
00404 BinPatternData );
00405 }
00406
00407
00408 void CApnCamData_CCD5520::set_hpattern_roi_twelve()
00409 {
00410 const unsigned short Mask = 0x6800;
00411 const unsigned short BinningLimit = 3;
00412 const unsigned short RefNumElements = 0;
00413 const unsigned short SigNumElements = 0;
00414
00415 unsigned short *RefPatternData = NULL;
00416
00417 unsigned short *SigPatternData = NULL;
00418
00419 unsigned short BinNumElements[APN_MAX_HBINNING] =
00420 {
00421 0x0017, 0x002E, 0x0044
00422 };
00423
00424 unsigned short BinPatternData[3][256] = {
00425 {
00426 0x000C, 0x0008, 0x020A, 0x000A, 0x0008, 0x0008, 0x0018, 0x0018, 0x0018, 0x0018,
00427 0x0010, 0x0010, 0x2010, 0x2010, 0x0014, 0x0014, 0x0004, 0x0004, 0x0004, 0x0004,
00428 0x0004, 0xC005, 0xC004
00429 },
00430 {
00431 0x000C, 0x0008, 0x400A, 0x000A, 0x0008, 0x0008, 0x0218, 0x0018, 0x0018, 0x0018,
00432 0x0010, 0x0010, 0x0010, 0x0010, 0x0014, 0x2014, 0x0004, 0x0004, 0x0004, 0x0004,
00433 0x0004, 0x0004, 0x0004, 0x000C, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0018,
00434 0x0018, 0x0018, 0x0018, 0x0010, 0x0010, 0x0010, 0x0010, 0x0014, 0x0014, 0x0004,
00435 0x0004, 0x0004, 0x0004, 0x0004, 0x8005, 0x8004
00436 },
00437 {
00438 0x000C, 0x0008, 0x400A, 0x000A, 0x0008, 0x0008, 0x0218, 0x0018, 0x0018, 0x0018,
00439 0x0010, 0x0010, 0x0010, 0x0010, 0x0014, 0x2014, 0x0004, 0x0004, 0x0004, 0x0004,
00440 0x0004, 0x0004, 0x0004, 0x000C, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0018,
00441 0x0018, 0x0018, 0x0018, 0x0010, 0x0010, 0x0010, 0x0010, 0x0014, 0x0014, 0x0004,
00442 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0008, 0x0008, 0x0008, 0x0008,
00443 0x0008, 0x0018, 0x0018, 0x0018, 0x0018, 0x0010, 0x0010, 0x0010, 0x0010, 0x0014,
00444 0x0014, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x8005, 0x8004
00445 } };
00446
00447 set_hpattern( &m_RoiPatternTwelve,
00448 Mask,
00449 BinningLimit,
00450 RefNumElements,
00451 SigNumElements,
00452 BinNumElements,
00453 RefPatternData,
00454 SigPatternData,
00455 BinPatternData );
00456 }
00457
00458
00459 void CApnCamData_CCD5520::set_hpattern( APN_HPATTERN_FILE *Pattern,
00460 unsigned short Mask,
00461 unsigned short BinningLimit,
00462 unsigned short RefNumElements,
00463 unsigned short SigNumElements,
00464 unsigned short BinNumElements[],
00465 unsigned short RefPatternData[],
00466 unsigned short SigPatternData[],
00467 unsigned short BinPatternData[][APN_MAX_PATTERN_ENTRIES] )
00468 {
00469 int i, j;
00470
00471 Pattern->Mask = Mask;
00472 Pattern->BinningLimit = BinningLimit;
00473 Pattern->RefNumElements = RefNumElements;
00474 Pattern->SigNumElements = SigNumElements;
00475
00476 if ( RefNumElements > 0 )
00477 {
00478 Pattern->RefPatternData =
00479 (unsigned short *)malloc(RefNumElements * sizeof(unsigned short));
00480
00481 for ( i=0; i<RefNumElements; i++ )
00482 {
00483 Pattern->RefPatternData[i] = RefPatternData[i];
00484 }
00485 }
00486
00487 if ( SigNumElements > 0 )
00488 {
00489 Pattern->SigPatternData =
00490 (unsigned short *)malloc(SigNumElements * sizeof(unsigned short));
00491
00492 for ( i=0; i<SigNumElements; i++ )
00493 {
00494 Pattern->SigPatternData[i] = SigPatternData[i];
00495 }
00496 }
00497
00498 if ( BinningLimit > 0 )
00499 {
00500 for ( i=0; i<BinningLimit; i++ )
00501 {
00502 Pattern->BinNumElements[i] = BinNumElements[i];
00503
00504 Pattern->BinPatternData[i] =
00505 (unsigned short *)malloc(BinNumElements[i] * sizeof(unsigned short));
00506
00507 for ( j=0; j<BinNumElements[i]; j++ )
00508 {
00509 Pattern->BinPatternData[i][j] = BinPatternData[i][j];
00510 }
00511 }
00512 }
00513 }