xref: /OK3568_Linux_fs/external/camera_engine_rkaiq/rkaiq/ipc_server/command_process.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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 *)&param);
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 *)&param);
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 *)&param);
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 *)&param);
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*)&param);
119         memcpy(dataReply->data, &param.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*)&param);
128         memcpy(dataReply->data, &param.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*)&param);
137         memcpy(dataReply->data, &param.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*)&param);
146         memcpy(dataReply->data, &param.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 *)&param);
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 *)&param);
235         memcpy(dataReply->data, &param.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 *)&param);
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 *)&param);
255         memcpy(dataReply->data, &param.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