1 #include "socket_server.h"
2
3 #ifdef LOG_TAG
4 #undef LOG_TAG
5 #endif
6 #define LOG_TAG "socket_server.cpp"
7
ProcessCommand(rk_aiq_sys_ctx_t * ctx,RkAiqSocketPacket * dataRecv,RkAiqSocketPacket * dataReply)8 int ProcessCommand(rk_aiq_sys_ctx_t* ctx, RkAiqSocketPacket *dataRecv, RkAiqSocketPacket *dataReply) {
9 switch(dataRecv->commandID) {
10 case ENUM_ID_AE_SETEXPSWATTR:
11 dataReply->commandResult = setExpSwAttr(ctx, dataRecv->data);
12 dataReply->data = NULL;
13 dataReply->dataSize = 0;
14 break;
15 case ENUM_ID_AE_GETEXPSWATTR:
16 dataReply->dataSize = sizeof(Uapi_ExpSwAttr_t);
17 dataReply->data = (char*)malloc(dataReply->dataSize);
18 dataReply->commandResult = getExpSwAttr(ctx, dataReply->data);
19 break;
20 case ENUM_ID_AE_SETLINAEDAYROUTEATTR:
21 dataReply->commandResult = setLinAeRouteAttr(ctx, dataRecv->data);
22 dataReply->data = NULL;
23 dataReply->dataSize = 0;
24 break;
25 case ENUM_ID_AE_GETLINAEDAYROUTEATTR:
26 dataReply->dataSize = sizeof(Uapi_LinAeRouteAttr_t);
27 dataReply->data = (char*)malloc(dataReply->dataSize);
28 dataReply->commandResult = getLinAeRouteAttr(ctx, dataReply->data);
29 break;
30 case ENUM_ID_AE_SETHDRAEDAYROUTEATTR:
31 dataReply->commandResult = setHdrAeRouteAttr(ctx, dataRecv->data);
32 dataReply->data = NULL;
33 dataReply->dataSize = 0;
34 break;
35 case ENUM_ID_AE_GETHDRAEDAYROUTEATTR:
36 dataReply->dataSize = sizeof(Uapi_HdrAeRouteAttr_t);
37 dataReply->data = (char*)malloc(dataReply->dataSize);
38 dataReply->commandResult = getHdrAeRouteAttr(ctx, dataReply->data);
39 break;
40 case ENUM_ID_AE_QUERYEXPRESINFO:
41 dataReply->dataSize = sizeof(Uapi_ExpQueryInfo_t);
42 dataReply->data = (char*)malloc(dataReply->dataSize);
43 dataReply->commandResult = queryExpResInfo(ctx, dataReply->data);
44 break;
45 case ENUM_ID_AE_SETLINEXPATTR:
46 dataReply->commandResult = setLinExpAttr(ctx, dataRecv->data);
47 dataReply->data = NULL;
48 dataReply->dataSize = 0;
49 break;
50 case ENUM_ID_AE_GETLINEXPATTR:
51 dataReply->dataSize = sizeof(Uapi_LinExpAttr_t);
52 dataReply->data = (char*)malloc(dataReply->dataSize);
53 dataReply->commandResult = getLinExpAttr(ctx, dataReply->data);
54 break;
55 case ENUM_ID_AE_SETHDREXPATTR:
56 dataReply->commandResult = setHdrExpAttr(ctx, dataRecv->data);
57 dataReply->data = NULL;
58 dataReply->dataSize = 0;
59 break;
60 case ENUM_ID_AE_GETHDREXPATTR:
61 dataReply->dataSize = sizeof(Uapi_HdrExpAttr_t);
62 dataReply->data = (char*)malloc(dataReply->dataSize);
63 dataReply->commandResult = getHdrExpAttr(ctx, dataReply->data);
64 break;
65 case ENUM_ID_IMGPROC_SETGRAYMODE:
66 dataReply->commandResult = setGrayMode(ctx, dataRecv->data);
67 dataReply->data = NULL;
68 dataReply->dataSize = 0;
69 break;
70 case ENUM_ID_IMGPROC_GETGRAYMODE:
71 dataReply->dataSize = sizeof(rk_aiq_gray_mode_t);
72 dataReply->data = (char*)malloc(dataReply->dataSize);
73 *(int *)dataReply->data = getGrayMode(ctx);
74 dataReply->commandResult = 0;
75 break;
76 case ENUM_ID_ANR_SETBAYERNRATTR: {
77 rk_aiq_nr_IQPara_t param;
78 param.module_bits = 1 << ANR_MODULE_BAYERNR;
79 param.stBayernrPara = *(CalibDb_BayerNr_t *)dataRecv->data;
80 dataReply->commandResult = setAnrIQPara(ctx, (char *)¶m);
81 dataReply->data = NULL;
82 dataReply->dataSize = 0;
83 break;
84 }
85 case ENUM_ID_ANR_SETMFNRATTR: {
86 rk_aiq_nr_IQPara_t param;
87 param.module_bits = 1 << ANR_MODULE_MFNR;
88 //LOGE("MFNR size is %d", sizeof(CalibDb_MFNR_t ));
89 param.stMfnrPara = *(CalibDb_MFNR_t *)dataRecv->data;
90 dataReply->commandResult = setAnrIQPara(ctx, (char *)¶m);
91 dataReply->data = NULL;
92 dataReply->dataSize = 0;
93 break;
94 }
95 case ENUM_ID_ANR_SETUVNRATTR: {
96 rk_aiq_nr_IQPara_t param;
97 param.module_bits = 1 << ANR_MODULE_UVNR;
98 param.stUvnrPara = *(CalibDb_UVNR_t *)dataRecv->data;
99 dataReply->commandResult = setAnrIQPara(ctx, (char *)¶m);
100 dataReply->data = NULL;
101 dataReply->dataSize = 0;
102 break;
103 }
104 case ENUM_ID_ANR_SETYNRATTR: {
105 rk_aiq_nr_IQPara_t param;
106 param.module_bits = 1 << ANR_MODULE_YNR;
107 param.stYnrPara = *(CalibDb_YNR_t *)dataRecv->data;
108 dataReply->commandResult = setAnrIQPara(ctx, (char *)¶m);
109 dataReply->data = NULL;
110 dataReply->dataSize = 0;
111 break;
112 }
113 case ENUM_ID_ANR_GETBAYERNRATTR: {
114 rk_aiq_nr_IQPara_t param;
115 dataReply->dataSize = sizeof(CalibDb_BayerNr_t);
116 dataReply->data = (char*)malloc(dataReply->dataSize);
117 param.module_bits = 1 << ANR_MODULE_BAYERNR;
118 dataReply->commandResult = getAnrIQPara(ctx, (char*)¶m);
119 memcpy(dataReply->data, ¶m.stBayernrPara, sizeof(CalibDb_BayerNr_t));
120 }
121 break;
122 case ENUM_ID_ANR_GETMFNRATTR: {
123 rk_aiq_nr_IQPara_t param;
124 dataReply->dataSize = sizeof(CalibDb_MFNR_t);
125 dataReply->data = (char*)malloc(dataReply->dataSize);
126 param.module_bits = 1 << ANR_MODULE_MFNR;
127 dataReply->commandResult = getAnrIQPara(ctx, (char*)¶m);
128 memcpy(dataReply->data, ¶m.stMfnrPara, sizeof(CalibDb_MFNR_t));
129 }
130 break;
131 case ENUM_ID_ANR_GETUVNRATTR: {
132 rk_aiq_nr_IQPara_t param;
133 dataReply->dataSize = sizeof(CalibDb_UVNR_t);
134 dataReply->data = (char*)malloc(dataReply->dataSize);
135 param.module_bits = 1 << ANR_MODULE_UVNR;
136 dataReply->commandResult = getAnrIQPara(ctx, (char*)¶m);
137 memcpy(dataReply->data, ¶m.stUvnrPara, sizeof(CalibDb_UVNR_t));
138 }
139 break;
140 case ENUM_ID_ANR_GETYNRATTR: {
141 rk_aiq_nr_IQPara_t param;
142 dataReply->dataSize = sizeof(CalibDb_YNR_t);
143 dataReply->data = (char*)malloc(dataReply->dataSize);
144 param.module_bits = 1 << ANR_MODULE_YNR;
145 dataReply->commandResult = getAnrIQPara(ctx, (char*)¶m);
146 memcpy(dataReply->data, ¶m.stYnrPara, sizeof(CalibDb_YNR_t));
147 }
148 break;
149 case ENUM_ID_ANR_SETATTRIB:
150 dataReply->commandResult = setAnrAttrib(ctx, dataRecv->data);
151 dataReply->data = NULL;
152 dataReply->dataSize = 0;
153 break;
154 case ENUM_ID_ANR_GETATTRIB:
155 dataReply->dataSize = sizeof(rk_aiq_nr_attrib_t);
156 dataReply->data = (char*)malloc(dataReply->dataSize);
157 dataReply->commandResult = getAnrAttrib(ctx, dataReply->data);
158 break;
159 case ENUM_ID_ANR_SETLUMASFSTRENGTH:
160 dataReply->commandResult = setLumaSFStrength(ctx, dataRecv->data);
161 dataReply->data = NULL;
162 dataReply->dataSize = 0;
163 break;
164 case ENUM_ID_ANR_SETLUMATFSTRENGTH:
165 dataReply->commandResult = setLumaTFStrength(ctx, dataRecv->data);
166 dataReply->data = NULL;
167 dataReply->dataSize = 0;
168 break;
169 case ENUM_ID_ANR_GETLUMASFSTRENGTH:
170 dataReply->dataSize = sizeof(float);
171 dataReply->data = (char*)malloc(dataReply->dataSize);
172 dataReply->commandResult = getLumaSFStrength(ctx, dataReply->data);
173 break;
174 case ENUM_ID_ANR_GETLUMATFSTRENGTH:
175 dataReply->dataSize = sizeof(float);
176 dataReply->data = (char*)malloc(dataReply->dataSize);
177 dataReply->commandResult = getLumaTFStrength(ctx, dataReply->data);
178 break;
179 case ENUM_ID_ANR_SETCHROMASFSTRENGTH:
180 dataReply->commandResult = setChromaSFStrength(ctx, dataRecv->data);
181 dataReply->data = NULL;
182 dataReply->dataSize = 0;
183 break;
184 case ENUM_ID_ANR_SETCHROMATFSTRENGTH:
185 dataReply->commandResult = setChromaTFStrength(ctx, dataRecv->data);
186 dataReply->data = NULL;
187 dataReply->dataSize = 0;
188 break;
189 case ENUM_ID_ANR_GETCHROMASFSTRENGTH:
190 dataReply->dataSize = sizeof(float);
191 dataReply->data = (char*)malloc(dataReply->dataSize);
192 dataReply->commandResult = getChromaSFStrength(ctx, dataReply->data);
193 break;
194
195 case ENUM_ID_ANR_GETCHROMATFSTRENGTH:
196 dataReply->dataSize = sizeof(float);
197 dataReply->data = (char*)malloc(dataReply->dataSize);
198 dataReply->commandResult = getChromaTFStrength(ctx, dataReply->data);
199 break;
200 case ENUM_ID_ANR_SETRAWNRSFSTRENGTH:
201 dataReply->commandResult = setRawnrSFStrength(ctx, dataRecv->data);
202 dataReply->data = NULL;
203 dataReply->dataSize = 0;
204 break;
205 case ENUM_ID_ANR_GETRAWNRSFSTRENGTH:
206 dataReply->dataSize = sizeof(float);
207 dataReply->data = (char*)malloc(dataReply->dataSize);
208 dataReply->commandResult = getRawnrSFStrength(ctx, dataReply->data);
209 break;
210 case ENUM_ID_SHARP_SET_ATTR:
211 dataReply->commandResult = setSharpAttrib(ctx, dataRecv->data);
212 dataReply->data = NULL;
213 dataReply->dataSize = 0;
214 break;
215 case ENUM_ID_SHARP_GET_ATTR:
216 dataReply->dataSize = sizeof(rk_aiq_sharp_attrib_t);
217 dataReply->data = (char*)malloc(dataReply->dataSize);
218 dataReply->commandResult = getSharpAttrib(ctx, dataReply->data);
219 break;
220 case ENUM_ID_SHARP_SET_IQPARA: {
221 rk_aiq_sharp_IQpara_t param;
222 param.module_bits = 1 << ASHARP_MODULE_SHARP;
223 param.stSharpPara = *(CalibDb_Sharp_t *)dataRecv->data;
224 dataReply->commandResult = setSharpIQPara(ctx, (char *)¶m);
225 dataReply->data = NULL;
226 dataReply->dataSize = 0;
227 }
228 break;
229 case ENUM_ID_SHARP_GET_IQPARA: {
230 rk_aiq_sharp_IQpara_t param;
231 dataReply->dataSize = sizeof(CalibDb_Sharp_t);
232 dataReply->data = (char*)malloc(dataReply->dataSize);
233 param.module_bits = 1 << ASHARP_MODULE_SHARP;
234 dataReply->commandResult = getSharpIQPara(ctx, (char *)¶m);
235 memcpy(dataReply->data, ¶m.stSharpPara, sizeof(CalibDb_Sharp_t));
236 }
237 break;
238 case ENUM_ID_SHARP_SET_EF_IQPARA: {
239 rk_aiq_sharp_IQpara_t param;
240 param.module_bits = 1 << ASHARP_MODULE_EDGEFILTER;
241 param.stEdgeFltPara = *(CalibDb_EdgeFilter_t *)dataRecv->data;
242 //LOGE("THE Edge sieze is%d'",sizeof(CalibDb_EdgeFilter_t));
243 dataReply->commandResult = setSharpIQPara(ctx, (char *)¶m);
244 dataReply->data = NULL;
245 dataReply->dataSize = 0;
246 }
247 break;
248 case ENUM_ID_SHARP_GET_EF_IQPARA: {
249 rk_aiq_sharp_IQpara_t param;
250 dataReply->dataSize = sizeof(CalibDb_EdgeFilter_t);
251 LOGE("THE Edge sieze is%d'", sizeof(CalibDb_EdgeFilter_t));
252 dataReply->data = (char*)malloc(dataReply->dataSize);
253 param.module_bits = 1 << ASHARP_MODULE_EDGEFILTER;
254 dataReply->commandResult = getSharpIQPara(ctx, (char *)¶m);
255 memcpy(dataReply->data, ¶m.stEdgeFltPara, sizeof(CalibDb_EdgeFilter_t));
256 }
257 break;
258 case ENUM_ID_SHARP_SET_STRENGTH:
259 dataReply->commandResult = setSharpStrength(ctx, dataRecv->data);
260 dataReply->data = NULL;
261 dataReply->dataSize = 0;
262 break;
263 case ENUM_ID_SHARP_GET_STRENGTH:
264 dataReply->dataSize = sizeof(float);
265 dataReply->data = (char*)malloc(dataReply->dataSize);
266 dataReply->commandResult = getSharpStrength(ctx, dataReply->data);
267 break;
268 case ENUM_ID_SYSCTL_SETCPSLTCFG:
269 dataReply->commandResult = setCpsLtCfg(ctx, dataRecv->data);
270 dataReply->data = NULL;
271 dataReply->dataSize = 0;
272 break;
273 case ENUM_ID_SYSCTL_GETCPSLTINFO:
274 dataReply->dataSize = sizeof(rk_aiq_cpsl_info_t);
275 dataReply->data = (char*)malloc(dataReply->dataSize);
276 dataReply->commandResult = getCpsLtInfo(ctx, dataReply->data);
277 break;
278 case ENUM_ID_SYSCTL_QUERYCPSLTCAP:
279 dataReply->dataSize = sizeof(rk_aiq_cpsl_cap_t);
280 dataReply->data = (char*)malloc(dataReply->dataSize);
281 dataReply->commandResult = queryCpsLtCap(ctx, dataReply->data);
282 break;
283 case ENUM_ID_SYSCTL_SETWORKINGMODE:
284 dataReply->commandResult = setWorkingModeDyn(ctx, dataRecv->data);
285 dataReply->data = NULL;
286 dataReply->dataSize = 0;
287 break;
288
289 case ENUM_ID_AMERGE_SETATTRIB: {
290 #if RKAIQ_HAVE_MERGE_V10
291 dataReply->commandResult = setMergeAttribV10(ctx, dataRecv->data);
292 #endif
293 #if RKAIQ_HAVE_MERGE_V11
294 dataReply->commandResult = setMergeAttribV11(ctx, dataRecv->data);
295 #endif
296 #if RKAIQ_HAVE_MERGE_V12
297 dataReply->commandResult = setMergeAttribV12(ctx, dataRecv->data);
298 #endif
299 dataReply->data = NULL;
300 dataReply->dataSize = 0;
301 break;
302 }
303 case ENUM_ID_AMERGE_GETATTRIB: {
304 #if RKAIQ_HAVE_MERGE_V10
305 dataReply->dataSize = sizeof(mergeAttrV10_t);
306 dataReply->data = (char*)malloc(dataReply->dataSize);
307 dataReply->commandResult = getMergeAttribV10(ctx, dataReply->data);
308 #endif
309 #if RKAIQ_HAVE_MERGE_V11
310 dataReply->dataSize = sizeof(mergeAttrV11_t);
311 dataReply->data = (char*)malloc(dataReply->dataSize);
312 dataReply->commandResult = getMergeAttribV11(ctx, dataReply->data);
313 #endif
314 #if RKAIQ_HAVE_MERGE_V12
315 dataReply->dataSize = sizeof(mergeAttrV12_t);
316 dataReply->data = (char*)malloc(dataReply->dataSize);
317 dataReply->commandResult = getMergeAttribV12(ctx, dataReply->data);
318 #endif
319 break;
320 }
321 case ENUM_ID_ATMO_SETATTRIB: {
322 dataReply->commandResult = setTmoAttrib(ctx, dataRecv->data);
323 dataReply->data = NULL;
324 dataReply->dataSize = 0;
325 break;
326 }
327 case ENUM_ID_ATMO_GETATTRIB: {
328 dataReply->dataSize = sizeof(atmo_attrib_t);
329 dataReply->data = (char*)malloc(dataReply->dataSize);
330 dataReply->commandResult = getTmoAttrib(ctx, dataReply->data);
331 break;
332 }
333 case ENUM_ID_AGAMMA_SETATTRIB: {
334 dataReply->commandResult = setGammaAttrib(ctx, dataRecv->data);
335 dataReply->data = NULL;
336 dataReply->dataSize = 0;
337 break;
338 }
339 case ENUM_ID_AGAMMA_GETATTRIB: {
340 dataReply->dataSize = sizeof(rk_aiq_gamma_attrib_t);
341 dataReply->data = (char*)malloc(dataReply->dataSize);
342 dataReply->commandResult = getGammaAttrib(ctx, dataReply->data);
343 break;
344 }
345 case ENUM_ID_ADPCC_SETATTRIB: {
346 dataReply->commandResult = setDpccAttrib(ctx, dataRecv->data);
347 dataReply->data = NULL;
348 dataReply->dataSize = 0;
349 break;
350 }
351 case ENUM_ID_ADPCC_GETATTRIB: {
352 dataReply->dataSize = sizeof(rk_aiq_dpcc_attrib_V20_t);
353 dataReply->data = (char*)malloc(dataReply->dataSize);
354 dataReply->commandResult = getDpccAttrib(ctx, dataReply->data);
355 break;
356 }
357 case ENUM_ID_ACCM_SETATTRIB: {
358 dataReply->commandResult = setCcmAttrib(ctx, dataRecv->data);
359 dataReply->data = NULL;
360 dataReply->dataSize = 0;
361 break;
362 }
363 case ENUM_ID_ACCM_GETATTRIB:
364 {
365 #if RKAIQ_HAVE_CCM_V1
366 dataReply->dataSize = sizeof(rk_aiq_ccm_attrib_t);
367 dataReply->data = (char*)malloc(dataReply->dataSize);
368 dataReply->commandResult = getCcmAttrib(ctx, dataReply->data);
369 #endif
370 #if RKAIQ_HAVE_CCM_V2
371 dataReply->dataSize = sizeof(rk_aiq_ccm_v2_attrib_t);
372 dataReply->data = (char*)malloc(dataReply->dataSize);
373 dataReply->commandResult = getCcmAttrib(ctx, dataReply->data);
374 #endif
375 break;
376 }
377 case ENUM_ID_ACCM_QUERYCCMINFO:
378 {
379 dataReply->dataSize = sizeof(rk_aiq_ccm_querry_info_t );
380 dataReply->data = (char*)malloc(dataReply->dataSize);
381 dataReply->commandResult = queryCCMInfo(ctx, dataReply->data);
382 break;
383 }
384 case ENUM_ID_AWB_SETATTRIB:
385 {
386 dataReply->commandResult = setAwbAttrib(ctx, dataRecv->data);
387 dataReply->data = NULL;
388 dataReply->dataSize = 0;
389 break;
390 }
391 case ENUM_ID_AWB_GETATTRIB:
392 {
393 dataReply->dataSize = sizeof(rk_aiq_wb_attrib_t);
394 dataReply->data = (char*)malloc(dataReply->dataSize);
395 dataReply->commandResult = getAwbAttrib(ctx, dataReply->data);
396 break;
397 }
398 case ENUM_ID_AWB_QUERYWBINFO:
399 {
400 dataReply->dataSize = sizeof(rk_aiq_wb_querry_info_t);
401 dataReply->data = (char*)malloc(dataReply->dataSize);
402 dataReply->commandResult = queryWBInfo(ctx, dataReply->data);
403 break;
404 }
405 case ENUM_ID_CPROC_SETATTRIB:
406 {
407 dataReply->commandResult = setAcpAttrib(ctx, dataRecv->data);
408 dataReply->data = NULL;
409 dataReply->dataSize = 0;
410 }
411 break;
412 case ENUM_ID_CPROC_GETATTRIB:
413 {
414 dataReply->dataSize = sizeof(acp_attrib_t);
415 dataReply->data = (char*)malloc(dataReply->dataSize);
416 dataReply->commandResult = getAcpAttrib(ctx, dataReply->data);
417 break;
418 }
419 case ENUM_ID_SYSCTL_ENQUEUERKRAWFILE:
420 {
421 dataReply->commandResult = enqueueRkRawFile(ctx, dataRecv->data);
422 dataReply->data = NULL;
423 dataReply->dataSize = 0;
424 break;
425 }
426 case ENUM_ID_AIQ_UAPI_SYSCTL_GET3ASTATS:
427 {
428 dataReply->dataSize = sizeof(rk_aiq_isp_stats_t);
429 dataReply->data = (char*)malloc(dataReply->dataSize);
430 dataReply->commandResult = get3AStats(ctx, dataReply->data);
431 break;
432 }
433 case ENUM_ID_AIQ_UAPI_SYSCTL_GET3ASTATSBLK:
434 {
435 dataReply->dataSize = sizeof(rk_aiq_isp_stats_t);
436 dataReply->data = (char*)malloc(dataReply->dataSize);
437 dataReply->commandResult = get3AStatsBlk(ctx, dataReply->data);
438 break;
439 }
440 case ENUM_ID_AIQ_UAPI2_AWB_WRITEAWBIN:
441 {
442 dataReply->commandResult = writeAwbIn(ctx, dataRecv->data);
443 dataReply->data = NULL;
444 dataReply->dataSize = 0;
445 break;
446 }
447 default:
448 LOGE("AIQ IPC UNKNOWN CMD: %d\n", dataRecv->commandID);
449 return -1;
450 break;
451 }
452
453
454 dataReply->commandID = dataRecv->commandID;
455 if (dataReply->dataSize != 0 ) {
456 dataReply->dataHash = RkMSG::MessageParser::MurMurHash(dataReply->data,
457 dataReply->dataSize);
458 }
459 else {
460 dataReply->dataHash = 0;
461 }
462 return 0;
463 }
464
465
466