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