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