hc
2024-08-16 a24a44ff9ca902811b99aa9663d697cf452e08ef
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
/*
 *  Copyright (c) 2019 Rockchip Corporation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
 
#ifndef _RK_AIQ_CALIB_PARSER_H_
#define _RK_AIQ_CALIB_PARSER_H_
#include <string.h>
#include "tinyxml2.h"
 
#include "RkAiqCalibDbTypes.h"
#include "RkAiqCalibTag.h"
#include "xmltags.h"
#include "RkAiqCalibApi.h"
 
using namespace tinyxml2;
 
#if defined(_MSC_VER)
#define strcasecmp _stricmp
#define snprintf(buf,len, format,...) _snprintf_s(buf, len, len-1, format, __VA_ARGS__)
#endif
 
 
 
#if defined(__linux__)
#include "smartptr.h"
#include <xcam_common.h>
#include "xcam_log.h"
 
#ifdef DCT_ASSERT
#undef DCT_ASSERT
#endif
#define DCT_ASSERT  assert
 
#elif defined(_WIN32)
 
#ifdef DCT_ASSERT
#undef DCT_ASSERT
#endif
#define DCT_ASSERT(x) if(!(x))return false
 
#define LOGI printf
#define LOGD printf
#define LOGW printf
#define LOGE printf
#define LOG1 printf
 
#endif
 
#define XML_PARSER_READ    0
#define XML_PARSER_WRITE   1
 
 
namespace RkCam {
 
class RkAiqCalibParser
{
private:
    typedef bool (RkAiqCalibParser::*parseCellContent)(const XMLElement*, void* param);
    typedef bool (RkAiqCalibParser::*parseCellContent2)(const XMLElement*, void* param, int index);
 
    // parse helper
    bool parseCellNoElement(const XMLElement* pelement, int noElements, int &RealNo);
    bool parseEntryCell(const XMLElement*, int, parseCellContent, void* param = NULL,
                        uint32_t cur_id = 0, uint32_t parent_id = 0);
    bool parseEntryCell2(const XMLElement*, int, parseCellContent2, void* param = NULL,
                         uint32_t cur_id = 0, uint32_t parent_id = 0);
    bool parseEntryCell3(XMLElement*, int, int, parseCellContent, void* param = NULL,
                         uint32_t cur_id = 0, uint32_t parent_id = 0);
    bool parseEntryCell4(XMLElement*, int, int, parseCellContent2, void* param = NULL,
                         uint32_t cur_id = 0, uint32_t parent_id = 0);
    // parse read/write control
    bool xmlParseReadWrite;
    char autoTabStr[128];
    int  autoTabIdx;
    void parseReadWriteCtrl(bool ctrl);
    void autoTabForward();
    void autoTabBackward();
 
    // parse Kit
    int ParseCharToHex(XmlTag* tag, uint32_t* reg_value);
    int ParseByteArray(const XMLNode *pNode, uint8_t* values, const int num);
    int ParseFloatArray(const XMLNode *pNode, float* values, const int num, int printAccuracy = 4);
    int ParseDoubleArray(const XMLNode *pNode, double* values, const int num);
    int ParseUintArray(const XMLNode *pNode, uint32_t* values, const int num);
    int ParseIntArray(const XMLNode *pNode, int32_t* values, const int num);
    int ParseUcharArray(const XMLNode *pNode, uint8_t* values, const int num);
    int ParseCharArray(const XMLNode *pNode, int8_t* values, const int num);
    int ParseUshortArray(const XMLNode *pNode, uint16_t* values, const int num);
    int ParseShortArray(const XMLNode *pNode, int16_t* values, const int num);
    int ParseString(const XMLNode *pNode, char* values, const int size);
    int ParseLscProfileArray(const XMLNode *pNode, CalibDb_Lsc_ProfileName_t values[], const int num);
 
 
    // parse Header
    bool parseEntryHeader(const XMLElement*, void* param = NULL);
    bool parseEntrySensor(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwb(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbCalibParaV200(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbCalibParaV201(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbAdjustPara(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbMeasureGlobalsV200(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbMeasureLightSourcesV200(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbMeasureGlobalsV201(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbLightXYRegionV201(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbLightRTYUVRegionV201(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbMeasureLightSourcesV201(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbStrategyLightSources(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbStrategyGlobals(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbLsForYuvDet(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbLsForYuvDetV201(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbWindowV201(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbMeasureWindowV201(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbLimitRangeV201(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbWpDiffWeiEnableTh(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbWpDiffwei_w_HighLV(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbWpDiffwei_w_LowLV(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbWpDiffLumaWeight(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbFrameChoose(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbFrameChooseV201(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbMeasureWindow(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbLimitRange(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbWindow(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbSingleColorV200(const XMLElement*, void* param);
    bool parseEntrySensorAwbColBlkV200(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbLsForEstimationV200(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbSingleColorV201(const XMLElement*, void* param);
    bool parseEntrySensorAwbColBlkV201(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbLsForEstimationV201(const XMLElement*, void* param, int index);
 
 
 
    bool parseEntrySensorAwbwbGainAdjust(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbwbGainOffset(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbDampFactor(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbXyRegionStableSelection(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbwbGainDaylightClipV200(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbwbGainClipV200(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbwbGainDaylightClipV201(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbwbGainClipV201(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbCctLutAll(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbGlobalsExclude(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbLightXYRegion(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbLightYUVRegion(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbGlobalsExcludeV201(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbLightSources(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbRemosaicPara(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAwbXyRegionWpnumthCell(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbwbWpTh(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbLimitRangeCell(const XMLElement*, void* param, int index);
    bool parseEntrySensorAwbLimitRangeV201Cell(const XMLElement*, void* param, int index);
    bool parseEntrySensorAecLinAlterExp(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecHdrAlterExp(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecAlterExp(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecSyncTest(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecSpeed(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecDelayFrmNum(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecVBNightMode(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecIRNightMode(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecDNSwitch(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecAntiFlicker(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecFrameRateMode(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecRangeLinearAE(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecRangeHdrAE(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecRange(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecInitValueLinearAE(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecInitValueHdrAE(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecInitValue(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecGridWeight(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecIrisCtrlPAttr(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecIrisCtrlDCAttr(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecIrisCtrl(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecManualCtrlLinearAE(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecManualCtrlHdrAE(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecManualCtrl(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecEnvLvCalib(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecRoute(const XMLElement*, void* param = NULL);
    bool parseEntrySensorLinearAECtrlAoe(const XMLElement*, void* param = NULL);
    bool parseEntrySensorLinearAECtrl(const XMLElement*, void* param = NULL);
    bool parseEntrySensorLinearAECtrlWeightMethod(const XMLElement*, void* param = NULL);
    bool parseEntrySensorLinearAECtrlDarkROIMethod(const XMLElement*, void* param = NULL);
    bool parseEntrySensorLinearAECtrlBackLight(const XMLElement*, void* param = NULL);
    bool parseEntrySensorLinearAECtrlOverExp(const XMLElement*, void* param = NULL);
    bool parseEntrySensorIntervalAdjustStrategy(const XMLElement*, void* param = NULL);
    bool parseEntrySensorLinearAECtrlHist2hal(const XMLElement*, void* param = NULL);
    bool parseEntrySensorHdrAECtrlExpRatioCtrl(const XMLElement*, void* param = NULL);
    bool parseEntrySensorHdrAECtrlLframeCtrl(const XMLElement*, void* param = NULL);
    bool parseEntrySensorHdrAECtrlLframeMode(const XMLElement*, void* param = NULL);
    bool parseEntrySensorHdrAECtrlMframeCtrl(const XMLElement*, void* param = NULL);
    bool parseEntrySensorHdrAECtrlSframeCtrl(const XMLElement*, void* param = NULL);
    bool parseEntrySensorHdrAECtrl(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAec(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecLinearAeRoute(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecHdrAeRoute(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecLinearAeDynamicPoint(const XMLElement*, void* param = NULL);
 
    bool parseEntrySensorAecLinAlterExpV21(const XMLElement*, void* param, int index);
    bool parseEntrySensorAecHdrAlterExpV21(const XMLElement*, void* param, int index);
    bool parseEntrySensorAecAlterExpV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecSyncTestV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecSpeedV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecDelayFrmNumV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecVBNightModeV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecIRNightModeV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecDNSwitchV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecAntiFlickerV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecFrameRateModeV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecRangeLinearAEV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecRangeHdrAEV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecRangeV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecInitValueLinearAEV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecInitValueHdrAEV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecInitValueV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecIrisCtrlPAttrV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecIrisCtrlDCAttrV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecIrisCtrlV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecManualCtrlLinearAEV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecManualCtrlHdrAEV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecManualCtrlV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecEnvLvCalibV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecLinearRouteV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecHdrRouteV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecRouteV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecLinearAeDynamicPointV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorLinearAECtrlBackLightV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorLinearAECtrlOverExpV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorLinearAECtrlV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorIntervalAdjustStrategyV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorLinearAECtrlHist2halV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorHdrAECtrlExpRatioCtrlV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorHdrAECtrlLframeCtrlV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorHdrAECtrlLframeModeV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorHdrAECtrlMframeCtrlV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorHdrAECtrlSframeCtrlV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorHdrAECtrlV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecWinScaleV21(const XMLElement*, void* param = NULL);
    bool parseEntrySensorAecCalibPara(const XMLElement*, void* param, int index);
    bool parseEntrySensorAecTunePara(const XMLElement*, void* param, int index);
    bool parseEntrySensorAecV21(const XMLElement*, void* param = NULL);
 
    bool parseEntrySensorAhdrMerge(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAhdrTmo(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAhdrTmoEn(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAhdrTmoGlobalLuma(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAhdrTmoDetailsHighLight(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAhdrTmoDetailsLowLight(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAhdrLocalTMO(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAhdrGlobalTMO(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorDrc(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorDrcCalibPara(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorDrcTuningPara(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorBlcModeCell(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorBlc(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorLut3d(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorDpcc(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorDpccFastMode(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorDpccExpertMode(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorDpccSetCell(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorDpccSetCellRK(const XMLElement* pelement, int index );
    bool parseEntrySensorDpccSetCellLC(const XMLElement* pelement, int index );
    bool parseEntrySensorDpccSetCellPG(const XMLElement* pelement, int index );
    bool parseEntrySensorDpccSetCellRND(const XMLElement* pelement, int index );
    bool parseEntrySensorDpccSetCellRG(const XMLElement* pelement, int index);
    bool parseEntrySensorDpccSetCellRO(const XMLElement* pelement, int index );
    bool parseEntrySensorDpccPdaf(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorDpccSensor(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorBayerNr(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorBayerNrModeCell(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorBayerNrSetting(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorLsc(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorLscAlscCof(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorLscAlscCofResAll(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorLscAlscCofIllAll(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorLscTableAll(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorRKDM(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorlumaCCMGAC(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorlumaCCM(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorCCM(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorCCMModeCell(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorCcmAccmCof(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorCcmAccmCofIllAll(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorCcmMatrixAll(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorUVNR(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorUVNRModeCell(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorUVNRSetting(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorGamma(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorDegamma(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorDegammaModeCell(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorYnr(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorYnrModeCell(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorYnrSetting(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorYnrISO(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorGic(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorGicCalibParaV20(const XMLElement* pelement, void* param);
    bool parseEntrySensorGicTuningParaV20(const XMLElement* pelement, void* param);
    bool parseEntrySensorGicCalibSettingV20( const XMLElement* pelement, void* param, int index) ;
    bool parseEntrySensorGicTuningSettingV20( const XMLElement* pelement, void* param, int index) ;
    bool parseEntrySensorGicCalibParaV21(const XMLElement* pelement, void* param);
    bool parseEntrySensorGicTuningParaV21(const XMLElement* pelement, void* param);
    bool parseEntrySensorGicCalibSettingV21( const XMLElement* pelement, void* param, int index) ;
    bool parseEntrySensorGicTuningSettingV21( const XMLElement* pelement, void* param, int index) ;
    bool parseEntrySensorMFNR(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorMFNRDynamic(const XMLElement*   pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorMFNRMotionDetection(const XMLElement*   pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorMFNRModeCell(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorMFNRAwbUvRatio(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorMFNRISO(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorMFNRSetting(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorSharp(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorSharpModeCell(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorSharpSetting(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorSharpISO(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorEdgeFilter(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorEdgeFilterModeCell(const XMLElement* pelement, void* param = NULL );
    bool parseEntrySensorEdgeFilterSetting(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorEdgeFilterISO(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorDehaze(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorDehazeCalibParaV20(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorDehazeCalibParaV21(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorDehazeTuningParaV20(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorDehazeTuningParaV21(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorDehazeSettingV20(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorEnhanceSettingV20(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorHistSettingV20(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorDehazeTuningSettingV20(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorEnhanceTuningSettingV20(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorHistTuningSettingV20(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorDehazeSettingV21(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorEnhanceSettingV21(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorHistSettingV21(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorDehazeTuningSettingV21(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorEnhanceTuningSettingV21(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorHistTuningSettingV21(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorIIRSetting(const XMLElement* pelement, void* param = NULL, int index = 0);
    bool parseEntrySensorAfWindow(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAfFixedMode(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAfMacroMode(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAfInfinityMode(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAfContrastAf(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAfLaserAf(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAfPdaf(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAfVcmCfg(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAfMeasISO(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAfZoomFocusTbl(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorAf(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorLdch(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorFec(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorEis(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorLumaDetect(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorOrb(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorInfoGainRange(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorInfo(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorModuleInfo(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorCpsl(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorColorAsGrey(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorCproc(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySensorIE(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySystemHDR(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySystemDcgNormalGainCtrl(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySystemDcgHdrGainCtrl(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySystemDcgNormalEnvCtrl(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySystemDcgHdrEnvCtrl(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySystemDcgNormalSetting(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySystemDcgHdrSetting(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySystemDcgSetting(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySystemExpDelayHdr(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySystemExpDelayNormal(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySystemExpDelay(const XMLElement* pelement, void* param = NULL);
    bool parseEntrySystem(const XMLElement*, void* param = NULL);
    bool parseEntryExpSet(const XMLElement* pelement, void* param = NULL);
    bool parseEntryExpSetGain2Reg(const XMLElement* pelement, void* param = NULL);
    bool parseEntryExpSetGainSet(const XMLElement* pelement, void* param = NULL);
    bool parseEntryExpSetTimeSet(const XMLElement* pelement, void* param = NULL);
    bool parseEntryExpSetHdrTimeSet(const XMLElement* pelement, void* param = NULL);
    bool parseEntryExpSetNormalTimeSet(const XMLElement* pelement, void* param = NULL);
    bool parseEntryExpSetHdrSet(const XMLElement* pelement, void* param = NULL);
    bool parseEntryExpSetDcgSet(const XMLElement* pelement, void* param = NULL);
    bool parseEntryExpSetDcgNormalSet(const XMLElement* pelement, void* param = NULL);
    bool parseEntryExpSetDcgHdrSet(const XMLElement* pelement, void* param = NULL);
    bool parseEntryExpSetDcgNormalGainCtrl(const XMLElement* pelement, void* param = NULL);
    bool parseEntryExpSetDcgHdrGainCtrl(const XMLElement* pelement, void* param = NULL);
    bool parseEntryExpSetDcgNormalEnvCtrl(const XMLElement* pelement, void* param = NULL);
    bool parseEntryExpSetDcgHdrEnvCtrl(const XMLElement* pelement, void* param = NULL);
    bool parseEntryExpSetExpUpdateHdr(const XMLElement* pelement, void* param = NULL);
    bool parseEntryExpSetExpUpdateNormal(const XMLElement* pelement, void* param = NULL);
    bool parseEntryExpSetExpUpdate(const XMLElement* pelement, void* param = NULL);
    bool parseEntryModuleInfo(const XMLElement* pelement, void* param = NULL);
 
 
    bool parseEntrySensorBayernrV2
    (
        const XMLElement* pelement,
        void* param = NULL
    ) ;
 
    bool parseEntryBayernrV2Setting_2D
    (
        const XMLElement*   pelement,
        void*                param,
        int                  index
    );
 
    bool parseEntryBayernrV2Setting_3D
    (
        const XMLElement*   pelement,
        void*                param,
        int                  index
    );
 
    bool parseEntrySensorBayernrV2Setting2D
    (
        const XMLElement*   pelement,
        void*                param
    );
 
    bool parseEntrySensorBayernrV2Setting3D
    (
        const XMLElement*   pelement,
        void*                param
    );
    bool parseEntrySensorYnrV2
    (
        const XMLElement* pelement,
        void* param
    );
    bool parseEntryYnrV2Setting
    (
        const XMLElement*   pelement,
        void*                param,
        int                  index
    );
    bool parseEntrySensorCnrV1
    (
        const XMLElement* pelement,
        void* param
    );
    bool parseEntryCnrV1Setting
    (
        const XMLElement*   pelement,
        void*                param,
        int                  index
    );
    bool parseEntrySharpV3Setting
    (
        const XMLElement*   pelement,
        void*                param,
        int                  index
    );
    bool parseEntrySensorSharpV3
    (
        const XMLElement* pelement,
        void* param
    );
public:
    explicit RkAiqCalibParser(CamCalibDbContext_t *pCalibDb);
    virtual ~RkAiqCalibParser();
    bool doParse(const char* device);
    bool doGenerate(const char* deviceRef, const char* deviceOutput);
    void  updateXmlParseReadWriteFlag(int flag);
 
 
private:
    CamCalibDbContext_t *mCalibDb;
 
#if defined(__linux__)
    XCAM_DEAD_COPY (RkAiqCalibParser);
#endif
};
 
}; //namespace RkCam
 
#endif