#include "socket_server.h" #ifdef LOG_TAG #undef LOG_TAG #endif #define LOG_TAG "socket_server.cpp" int ProcessCommand(rk_aiq_sys_ctx_t* ctx, RkAiqSocketPacket *dataRecv, RkAiqSocketPacket *dataReply) { switch(dataRecv->commandID) { case ENUM_ID_AE_SETEXPSWATTR: dataReply->commandResult = setExpSwAttr(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; case ENUM_ID_AE_GETEXPSWATTR: dataReply->dataSize = sizeof(Uapi_ExpSwAttr_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getExpSwAttr(ctx, dataReply->data); break; case ENUM_ID_AE_SETLINAEDAYROUTEATTR: dataReply->commandResult = setLinAeRouteAttr(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; case ENUM_ID_AE_GETLINAEDAYROUTEATTR: dataReply->dataSize = sizeof(Uapi_LinAeRouteAttr_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getLinAeRouteAttr(ctx, dataReply->data); break; case ENUM_ID_AE_SETHDRAEDAYROUTEATTR: dataReply->commandResult = setHdrAeRouteAttr(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; case ENUM_ID_AE_GETHDRAEDAYROUTEATTR: dataReply->dataSize = sizeof(Uapi_HdrAeRouteAttr_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getHdrAeRouteAttr(ctx, dataReply->data); break; case ENUM_ID_AE_QUERYEXPRESINFO: dataReply->dataSize = sizeof(Uapi_ExpQueryInfo_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = queryExpResInfo(ctx, dataReply->data); break; case ENUM_ID_AE_SETLINEXPATTR: dataReply->commandResult = setLinExpAttr(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; case ENUM_ID_AE_GETLINEXPATTR: dataReply->dataSize = sizeof(Uapi_LinExpAttr_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getLinExpAttr(ctx, dataReply->data); break; case ENUM_ID_AE_SETHDREXPATTR: dataReply->commandResult = setHdrExpAttr(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; case ENUM_ID_AE_GETHDREXPATTR: dataReply->dataSize = sizeof(Uapi_HdrExpAttr_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getHdrExpAttr(ctx, dataReply->data); break; case ENUM_ID_IMGPROC_SETGRAYMODE: dataReply->commandResult = setGrayMode(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; case ENUM_ID_IMGPROC_GETGRAYMODE: dataReply->dataSize = sizeof(rk_aiq_gray_mode_t); dataReply->data = (char*)malloc(dataReply->dataSize); *(int *)dataReply->data = getGrayMode(ctx); dataReply->commandResult = 0; break; case ENUM_ID_ANR_SETBAYERNRATTR: { rk_aiq_nr_IQPara_t param; param.module_bits = 1 << ANR_MODULE_BAYERNR; param.stBayernrPara = *(CalibDb_BayerNr_t *)dataRecv->data; dataReply->commandResult = setAnrIQPara(ctx, (char *)¶m); dataReply->data = NULL; dataReply->dataSize = 0; break; } case ENUM_ID_ANR_SETMFNRATTR: { rk_aiq_nr_IQPara_t param; param.module_bits = 1 << ANR_MODULE_MFNR; //LOGE("MFNR size is %d", sizeof(CalibDb_MFNR_t )); param.stMfnrPara = *(CalibDb_MFNR_t *)dataRecv->data; dataReply->commandResult = setAnrIQPara(ctx, (char *)¶m); dataReply->data = NULL; dataReply->dataSize = 0; break; } case ENUM_ID_ANR_SETUVNRATTR: { rk_aiq_nr_IQPara_t param; param.module_bits = 1 << ANR_MODULE_UVNR; param.stUvnrPara = *(CalibDb_UVNR_t *)dataRecv->data; dataReply->commandResult = setAnrIQPara(ctx, (char *)¶m); dataReply->data = NULL; dataReply->dataSize = 0; break; } case ENUM_ID_ANR_SETYNRATTR: { rk_aiq_nr_IQPara_t param; param.module_bits = 1 << ANR_MODULE_YNR; param.stYnrPara = *(CalibDb_YNR_t *)dataRecv->data; dataReply->commandResult = setAnrIQPara(ctx, (char *)¶m); dataReply->data = NULL; dataReply->dataSize = 0; break; } case ENUM_ID_ANR_GETBAYERNRATTR: { rk_aiq_nr_IQPara_t param; dataReply->dataSize = sizeof(CalibDb_BayerNr_t); dataReply->data = (char*)malloc(dataReply->dataSize); param.module_bits = 1 << ANR_MODULE_BAYERNR; dataReply->commandResult = getAnrIQPara(ctx, (char*)¶m); memcpy(dataReply->data, ¶m.stBayernrPara, sizeof(CalibDb_BayerNr_t)); } break; case ENUM_ID_ANR_GETMFNRATTR: { rk_aiq_nr_IQPara_t param; dataReply->dataSize = sizeof(CalibDb_MFNR_t); dataReply->data = (char*)malloc(dataReply->dataSize); param.module_bits = 1 << ANR_MODULE_MFNR; dataReply->commandResult = getAnrIQPara(ctx, (char*)¶m); memcpy(dataReply->data, ¶m.stMfnrPara, sizeof(CalibDb_MFNR_t)); } break; case ENUM_ID_ANR_GETUVNRATTR: { rk_aiq_nr_IQPara_t param; dataReply->dataSize = sizeof(CalibDb_UVNR_t); dataReply->data = (char*)malloc(dataReply->dataSize); param.module_bits = 1 << ANR_MODULE_UVNR; dataReply->commandResult = getAnrIQPara(ctx, (char*)¶m); memcpy(dataReply->data, ¶m.stUvnrPara, sizeof(CalibDb_UVNR_t)); } break; case ENUM_ID_ANR_GETYNRATTR: { rk_aiq_nr_IQPara_t param; dataReply->dataSize = sizeof(CalibDb_YNR_t); dataReply->data = (char*)malloc(dataReply->dataSize); param.module_bits = 1 << ANR_MODULE_YNR; dataReply->commandResult = getAnrIQPara(ctx, (char*)¶m); memcpy(dataReply->data, ¶m.stYnrPara, sizeof(CalibDb_YNR_t)); } break; case ENUM_ID_ANR_SETATTRIB: dataReply->commandResult = setAnrAttrib(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; case ENUM_ID_ANR_GETATTRIB: dataReply->dataSize = sizeof(rk_aiq_nr_attrib_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getAnrAttrib(ctx, dataReply->data); break; case ENUM_ID_ANR_SETLUMASFSTRENGTH: dataReply->commandResult = setLumaSFStrength(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; case ENUM_ID_ANR_SETLUMATFSTRENGTH: dataReply->commandResult = setLumaTFStrength(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; case ENUM_ID_ANR_GETLUMASFSTRENGTH: dataReply->dataSize = sizeof(float); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getLumaSFStrength(ctx, dataReply->data); break; case ENUM_ID_ANR_GETLUMATFSTRENGTH: dataReply->dataSize = sizeof(float); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getLumaTFStrength(ctx, dataReply->data); break; case ENUM_ID_ANR_SETCHROMASFSTRENGTH: dataReply->commandResult = setChromaSFStrength(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; case ENUM_ID_ANR_SETCHROMATFSTRENGTH: dataReply->commandResult = setChromaTFStrength(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; case ENUM_ID_ANR_GETCHROMASFSTRENGTH: dataReply->dataSize = sizeof(float); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getChromaSFStrength(ctx, dataReply->data); break; case ENUM_ID_ANR_GETCHROMATFSTRENGTH: dataReply->dataSize = sizeof(float); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getChromaTFStrength(ctx, dataReply->data); break; case ENUM_ID_ANR_SETRAWNRSFSTRENGTH: dataReply->commandResult = setRawnrSFStrength(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; case ENUM_ID_ANR_GETRAWNRSFSTRENGTH: dataReply->dataSize = sizeof(float); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getRawnrSFStrength(ctx, dataReply->data); break; case ENUM_ID_SHARP_SET_ATTR: dataReply->commandResult = setSharpAttrib(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; case ENUM_ID_SHARP_GET_ATTR: dataReply->dataSize = sizeof(rk_aiq_sharp_attrib_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getSharpAttrib(ctx, dataReply->data); break; case ENUM_ID_SHARP_SET_IQPARA: { rk_aiq_sharp_IQpara_t param; param.module_bits = 1 << ASHARP_MODULE_SHARP; param.stSharpPara = *(CalibDb_Sharp_t *)dataRecv->data; dataReply->commandResult = setSharpIQPara(ctx, (char *)¶m); dataReply->data = NULL; dataReply->dataSize = 0; } break; case ENUM_ID_SHARP_GET_IQPARA: { rk_aiq_sharp_IQpara_t param; dataReply->dataSize = sizeof(CalibDb_Sharp_t); dataReply->data = (char*)malloc(dataReply->dataSize); param.module_bits = 1 << ASHARP_MODULE_SHARP; dataReply->commandResult = getSharpIQPara(ctx, (char *)¶m); memcpy(dataReply->data, ¶m.stSharpPara, sizeof(CalibDb_Sharp_t)); } break; case ENUM_ID_SHARP_SET_EF_IQPARA: { rk_aiq_sharp_IQpara_t param; param.module_bits = 1 << ASHARP_MODULE_EDGEFILTER; param.stEdgeFltPara = *(CalibDb_EdgeFilter_t *)dataRecv->data; //LOGE("THE Edge sieze is%d'",sizeof(CalibDb_EdgeFilter_t)); dataReply->commandResult = setSharpIQPara(ctx, (char *)¶m); dataReply->data = NULL; dataReply->dataSize = 0; } break; case ENUM_ID_SHARP_GET_EF_IQPARA: { rk_aiq_sharp_IQpara_t param; dataReply->dataSize = sizeof(CalibDb_EdgeFilter_t); LOGE("THE Edge sieze is%d'", sizeof(CalibDb_EdgeFilter_t)); dataReply->data = (char*)malloc(dataReply->dataSize); param.module_bits = 1 << ASHARP_MODULE_EDGEFILTER; dataReply->commandResult = getSharpIQPara(ctx, (char *)¶m); memcpy(dataReply->data, ¶m.stEdgeFltPara, sizeof(CalibDb_EdgeFilter_t)); } break; case ENUM_ID_SHARP_SET_STRENGTH: dataReply->commandResult = setSharpStrength(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; case ENUM_ID_SHARP_GET_STRENGTH: dataReply->dataSize = sizeof(float); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getSharpStrength(ctx, dataReply->data); break; case ENUM_ID_SYSCTL_SETCPSLTCFG: dataReply->commandResult = setCpsLtCfg(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; case ENUM_ID_SYSCTL_GETCPSLTINFO: dataReply->dataSize = sizeof(rk_aiq_cpsl_info_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getCpsLtInfo(ctx, dataReply->data); break; case ENUM_ID_SYSCTL_QUERYCPSLTCAP: dataReply->dataSize = sizeof(rk_aiq_cpsl_cap_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = queryCpsLtCap(ctx, dataReply->data); break; case ENUM_ID_SYSCTL_SETWORKINGMODE: dataReply->commandResult = setWorkingModeDyn(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; case ENUM_ID_AMERGE_SETATTRIB: { dataReply->commandResult = setMergeAttrib(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; } case ENUM_ID_AMERGE_GETATTRIB: { dataReply->dataSize = sizeof(amerge_attrib_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getMergeAttrib(ctx, dataReply->data); break; } case ENUM_ID_ATMO_SETATTRIB: { dataReply->commandResult = setTmoAttrib(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; } case ENUM_ID_ATMO_GETATTRIB: { dataReply->dataSize = sizeof(atmo_attrib_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getTmoAttrib(ctx, dataReply->data); break; } case ENUM_ID_AGAMMA_SETATTRIB: { dataReply->commandResult = setGammaAttrib(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; } case ENUM_ID_AGAMMA_GETATTRIB: { dataReply->dataSize = sizeof(rk_aiq_gamma_attrib_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getGammaAttrib(ctx, dataReply->data); break; } case ENUM_ID_ADPCC_SETATTRIB: { dataReply->commandResult = setDpccAttrib(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; } case ENUM_ID_ADPCC_GETATTRIB: { dataReply->dataSize = sizeof(rk_aiq_dpcc_attrib_V20_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getDpccAttrib(ctx, dataReply->data); break; } case ENUM_ID_ACCM_SETATTRIB: { dataReply->commandResult = setCcmAttrib(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; } case ENUM_ID_ACCM_GETATTRIB: { dataReply->dataSize = sizeof(rk_aiq_ccm_attrib_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getCcmAttrib(ctx, dataReply->data); break; } case ENUM_ID_ACCM_QUERYCCMINFO: { dataReply->dataSize = sizeof(rk_aiq_ccm_querry_info_t ); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = queryCCMInfo(ctx, dataReply->data); break; } case ENUM_ID_AWB_SETATTRIB: { dataReply->commandResult = setAwbAttrib(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; } case ENUM_ID_AWB_GETATTRIB: { dataReply->dataSize = sizeof(rk_aiq_wb_attrib_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getAwbAttrib(ctx, dataReply->data); break; } case ENUM_ID_AWB_QUERYWBINFO: { dataReply->dataSize = sizeof(rk_aiq_wb_querry_info_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = queryWBInfo(ctx, dataReply->data); break; } case ENUM_ID_CPROC_SETATTRIB: { dataReply->commandResult = setAcpAttrib(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; } break; case ENUM_ID_CPROC_GETATTRIB: { dataReply->dataSize = sizeof(acp_attrib_t); dataReply->data = (char*)malloc(dataReply->dataSize); dataReply->commandResult = getAcpAttrib(ctx, dataReply->data); break; } case ENUM_ID_SYSCTL_ENQUEUERKRAWFILE: { dataReply->commandResult = enqueueRkRawFile(ctx, dataRecv->data); dataReply->data = NULL; dataReply->dataSize = 0; break; } default: LOGE("AIQ IPC UNKNOWN CMD: %d\n", dataRecv->commandID); return -1; break; } dataReply->commandID = dataRecv->commandID; if (dataReply->dataSize != 0 ) { dataReply->dataHash = RkMSG::MessageParser::MurMurHash(dataReply->data, dataReply->dataSize); } else { dataReply->dataHash = 0; } return 0; }