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