You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
241 lines
8.3 KiB
241 lines
8.3 KiB
#include "socket_server.h"
|
|
|
|
#ifdef LOG_TAG
|
|
#undef LOG_TAG
|
|
#endif
|
|
#define LOG_TAG "rkaiq_tool_sysctl.cpp"
|
|
|
|
int setCpsLtCfg(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_uapi_sysctl_setCpsLtCfg(ctx, (rk_aiq_cpsl_cfg_t*) data);
|
|
}
|
|
|
|
int getCpsLtInfo(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_uapi_sysctl_getCpsLtInfo(ctx, (rk_aiq_cpsl_info_t *) data);
|
|
}
|
|
|
|
int queryCpsLtCap(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_uapi_sysctl_queryCpsLtCap(ctx, (rk_aiq_cpsl_cap_t *) data);
|
|
}
|
|
|
|
int setWorkingModeDyn(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_uapi_sysctl_swWorkingModeDyn(ctx, *(rk_aiq_working_mode_t*) data);
|
|
}
|
|
|
|
int getVersionInfo(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
rk_aiq_uapi_get_version_info((rk_aiq_ver_info_t *)data);
|
|
return 0;
|
|
}
|
|
|
|
#if RKAIQ_HAVE_MERGE_V10
|
|
int setMergeAttribV10(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_user_api2_amerge_v10_SetAttrib(ctx, (mergeAttrV10_t*)data);
|
|
}
|
|
|
|
int getMergeAttribV10(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_user_api2_amerge_v10_GetAttrib(ctx, (mergeAttrV10_t*)data);
|
|
}
|
|
#endif
|
|
#if RKAIQ_HAVE_MERGE_V11
|
|
int setMergeAttribV11(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_user_api2_amerge_v11_SetAttrib(ctx, (mergeAttrV11_t*)data);
|
|
}
|
|
|
|
int getMergeAttribV11(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_user_api2_amerge_v11_GetAttrib(ctx, (mergeAttrV11_t*)data);
|
|
}
|
|
#endif
|
|
#if RKAIQ_HAVE_MERGE_V12
|
|
int setMergeAttribV12(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_user_api2_amerge_v12_SetAttrib(ctx, (mergeAttrV12_t*)data);
|
|
}
|
|
|
|
int getMergeAttribV12(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_user_api2_amerge_v12_GetAttrib(ctx, (mergeAttrV12_t*)data);
|
|
}
|
|
#endif
|
|
|
|
int setTmoAttrib(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_user_api2_atmo_SetAttrib(ctx, *(atmo_attrib_t*)data);
|
|
}
|
|
|
|
int getTmoAttrib(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_user_api2_atmo_GetAttrib(ctx, (atmo_attrib_t*)data);
|
|
}
|
|
|
|
int setGammaAttrib(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_user_api_agamma_SetAttrib(ctx, *(rk_aiq_gamma_attrib_t*)data);
|
|
}
|
|
|
|
int getGammaAttrib(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_user_api_agamma_GetAttrib(ctx, (rk_aiq_gamma_attrib_t*)data);
|
|
}
|
|
|
|
int setDpccAttrib(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_user_api2_adpcc_SetAttrib(ctx, (rk_aiq_dpcc_attrib_V20_t *)data);
|
|
}
|
|
|
|
int getDpccAttrib(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_user_api2_adpcc_GetAttrib(ctx, (rk_aiq_dpcc_attrib_V20_t *)data);
|
|
}
|
|
/*
|
|
int setDehazeAttrib(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_user_api_adehaze_setSwAttrib(ctx, *(adehaze_sw_t *)data);
|
|
}
|
|
|
|
int getDehazeAttrib(rk_aiq_sys_ctx_t* ctx, char* data) {
|
|
return rk_aiq_user_api_adehaze_getSwAttrib(ctx, (adehaze_sw_t *)data);
|
|
}
|
|
*/
|
|
int setCcmAttrib(rk_aiq_sys_ctx_t* ctx, char* data)
|
|
{
|
|
#if RKAIQ_HAVE_CCM_V1
|
|
return rk_aiq_user_api_accm_SetAttrib(ctx, (rk_aiq_ccm_attrib_t*) data);
|
|
#elif RKAIQ_HAVE_CCM_V2
|
|
return rk_aiq_user_api_accm_v2_SetAttrib(ctx, (rk_aiq_ccm_v2_attrib_t*) data);
|
|
#elif RKAIQ_HAVE_CCM_V3
|
|
return rk_aiq_user_api_accm_v3_SetAttrib(ctx, (rk_aiq_ccm_v3_attrib_t*) data);
|
|
#else
|
|
return -1;
|
|
#endif
|
|
}
|
|
|
|
int getCcmAttrib(rk_aiq_sys_ctx_t* ctx, char* data)
|
|
{
|
|
#if RKAIQ_HAVE_CCM_V1
|
|
return rk_aiq_user_api_accm_GetAttrib(ctx, (rk_aiq_ccm_attrib_t *)data);
|
|
#elif RKAIQ_HAVE_CCM_V2
|
|
return rk_aiq_user_api_accm_v2_GetAttrib(ctx, (rk_aiq_ccm_v2_attrib_t *)data);
|
|
#elif RKAIQ_HAVE_CCM_V3
|
|
return rk_aiq_user_api_accm_v3_GetAttrib(ctx, (rk_aiq_ccm_v3_attrib_t *)data);
|
|
#else
|
|
return -1;
|
|
#endif
|
|
}
|
|
|
|
int queryCCMInfo(rk_aiq_sys_ctx_t* ctx, char* data)
|
|
{
|
|
return rk_aiq_user_api_accm_QueryCcmInfo(ctx, (rk_aiq_ccm_querry_info_t *)data);
|
|
}
|
|
int setAwbAttrib(rk_aiq_sys_ctx_t* ctx, char* data)
|
|
{
|
|
return rk_aiq_user_api_awb_SetAttrib(ctx, *(rk_aiq_wb_attrib_t*)data);
|
|
}
|
|
|
|
int getAwbAttrib(rk_aiq_sys_ctx_t* ctx, char* data)
|
|
{
|
|
return rk_aiq_user_api_awb_GetAttrib(ctx, (rk_aiq_wb_attrib_t*)data);
|
|
}
|
|
|
|
int getAwbCCT(rk_aiq_sys_ctx_t* ctx, char* data)
|
|
{
|
|
return rk_aiq_user_api_awb_GetCCT(ctx, (rk_aiq_wb_cct_t *)data);
|
|
}
|
|
|
|
int queryWBInfo(rk_aiq_sys_ctx_t* ctx, char* data)
|
|
{
|
|
return rk_aiq_user_api_awb_QueryWBInfo(ctx, (rk_aiq_wb_querry_info_t*) data);
|
|
}
|
|
|
|
int setAcpAttrib(rk_aiq_sys_ctx_t* ctx, char* data)
|
|
{
|
|
return rk_aiq_user_api_acp_SetAttrib(ctx, (acp_attrib_t*) data);
|
|
}
|
|
|
|
int getAcpAttrib(rk_aiq_sys_ctx_t* ctx, char* data)
|
|
{
|
|
return rk_aiq_user_api_acp_GetAttrib(ctx, (acp_attrib_t *) data);
|
|
}
|
|
|
|
int enqueueRkRawFile(rk_aiq_sys_ctx_t* ctx, char* data)
|
|
{
|
|
return rk_aiq_uapi_sysctl_enqueueRkRawFile(ctx, data);
|
|
}
|
|
|
|
int get3AStats(rk_aiq_sys_ctx_t* ctx, char* data)
|
|
{
|
|
return rk_aiq_uapi_sysctl_get3AStats(ctx, (rk_aiq_isp_stats_t*)data);
|
|
}
|
|
|
|
int get3AStatsBlk(rk_aiq_sys_ctx_t* ctx, char* data)
|
|
{
|
|
rk_aiq_isp_stats_t* new_stats = NULL;
|
|
rk_aiq_uapi_sysctl_get3AStatsBlk(ctx, &new_stats, -1);
|
|
if (new_stats) {
|
|
memcpy(data, new_stats, sizeof(rk_aiq_isp_stats_t));
|
|
rk_aiq_uapi_sysctl_release3AStatsRef(ctx, new_stats);
|
|
return 0;
|
|
} else {
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
static void copyRkAiqExpParamComb_t2RkToolExpParam_t(RkAiqExpParamComb_t *in, RkToolExpParam_t *out)
|
|
{
|
|
// copy exp_real_params
|
|
out->exp_real_params.analog_gain = in->exp_real_params.analog_gain;
|
|
out->exp_real_params.dcg_mode = in->exp_real_params.dcg_mode;
|
|
out->exp_real_params.digital_gain = in->exp_real_params.digital_gain;
|
|
out->exp_real_params.integration_time = in->exp_real_params.integration_time;
|
|
out->exp_real_params.iso = in->exp_real_params.iso;
|
|
out->exp_real_params.isp_dgain = in->exp_real_params.isp_dgain;
|
|
out->exp_real_params.longfrm_mode = in->exp_real_params.longfrm_mode;
|
|
|
|
// copy exp_sensor_params
|
|
out->exp_sensor_params.analog_gain_code_global = in->exp_sensor_params.analog_gain_code_global;
|
|
out->exp_sensor_params.coarse_integration_time = in->exp_sensor_params.coarse_integration_time;
|
|
out->exp_sensor_params.digital_gain_global = in->exp_sensor_params.digital_gain_global;
|
|
out->exp_sensor_params.fine_integration_time = in->exp_sensor_params.fine_integration_time;
|
|
out->exp_sensor_params.isp_digital_gain = in->exp_sensor_params.isp_digital_gain;
|
|
}
|
|
|
|
int getTool3AStats(rk_aiq_sys_ctx_t* ctx, char* data)
|
|
{
|
|
int ret = 0;
|
|
rk_aiq_isp_stats_t new_stats;
|
|
rk_aiq_isp_tool_stats_t *tool_stats = (rk_aiq_isp_tool_stats_t *)data;
|
|
ret = (int)rk_aiq_uapi_sysctl_get3AStats(ctx, &new_stats);
|
|
if (ret == 0) {
|
|
tool_stats->version = 0x0100;
|
|
tool_stats->frameID = new_stats.frame_id;
|
|
// copy linearExp
|
|
copyRkAiqExpParamComb_t2RkToolExpParam_t(&new_stats.aec_stats.ae_exp.LinearExp, &tool_stats->linearExp);
|
|
copyRkAiqExpParamComb_t2RkToolExpParam_t(&new_stats.aec_stats.ae_exp.HdrExp[0], &tool_stats->hdrExp[0]);
|
|
copyRkAiqExpParamComb_t2RkToolExpParam_t(&new_stats.aec_stats.ae_exp.HdrExp[1], &tool_stats->hdrExp[1]);
|
|
copyRkAiqExpParamComb_t2RkToolExpParam_t(&new_stats.aec_stats.ae_exp.HdrExp[2], &tool_stats->hdrExp[2]);
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
int getTool3AStatsBlk(rk_aiq_sys_ctx_t* ctx, char* data)
|
|
{
|
|
int ret = 0;
|
|
rk_aiq_isp_stats_t* new_stats = NULL;
|
|
rk_aiq_isp_tool_stats_t *tool_stats = (rk_aiq_isp_tool_stats_t *)data;
|
|
rk_aiq_uapi_sysctl_get3AStatsBlk(ctx, &new_stats, -1);
|
|
if (new_stats) {
|
|
tool_stats->version = 0x0100;
|
|
tool_stats->frameID = new_stats->frame_id;
|
|
// copy linearExp
|
|
copyRkAiqExpParamComb_t2RkToolExpParam_t(&new_stats->aec_stats.ae_exp.LinearExp, &tool_stats->linearExp);
|
|
copyRkAiqExpParamComb_t2RkToolExpParam_t(&new_stats->aec_stats.ae_exp.HdrExp[0], &tool_stats->hdrExp[0]);
|
|
copyRkAiqExpParamComb_t2RkToolExpParam_t(&new_stats->aec_stats.ae_exp.HdrExp[1], &tool_stats->hdrExp[1]);
|
|
copyRkAiqExpParamComb_t2RkToolExpParam_t(&new_stats->aec_stats.ae_exp.HdrExp[2], &tool_stats->hdrExp[2]);
|
|
rk_aiq_uapi_sysctl_release3AStatsRef(ctx, new_stats);
|
|
return 0;
|
|
} else {
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
int writeAwbIn(rk_aiq_sys_ctx_t* ctx, char* data)
|
|
{
|
|
static int call_cnt = 0;
|
|
rk_aiq_uapiV2_awb_wrtIn_attr_t attr;
|
|
memset(&attr,0,sizeof(rk_aiq_uapiV2_awb_wrtIn_attr_t));
|
|
attr.en = true;
|
|
attr.mode = 1; // 1 means rgb ,0 means raw
|
|
attr.call_cnt = call_cnt++;
|
|
sprintf(attr.path,"/tmp");
|
|
return rk_aiq_user_api2_awb_WriteAwbIn(ctx, attr);
|
|
}
|