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