/* * Copyright (c) 2019 Rockchip Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ #include "rk_aiq_user_api2_sysctl.h" #include "rk_aiq_user_api_sysctl.h" #include "rk_aiq_api_private.h" #include "RkAiqManager.h" #include "socket_server.h" #include "RkAiqCalibDbV2.h" #include "scene/scene_manager.h" #include "uAPI/rk_aiq_user_api_sysctl.cpp" XCamReturn rk_aiq_uapi2_sysctl_preInit(const char* sns_ent_name, rk_aiq_working_mode_t mode, const char* force_iq_file) { return rk_aiq_uapi_sysctl_preInit(sns_ent_name, mode, force_iq_file); } XCamReturn rk_aiq_uapi2_sysctl_regHwEvtCb(const char* sns_ent_name, rk_aiq_hwevt_cb hwevt_cb, void* cb_ctx) { g_rk_aiq_sys_preinit_cfg_map[sns_ent_name].hwevt_cb = hwevt_cb; g_rk_aiq_sys_preinit_cfg_map[sns_ent_name].hwevt_cb_ctx = cb_ctx; return XCAM_RETURN_NO_ERROR; } XCamReturn rk_aiq_uapi2_sysctl_preInit_scene(const char* sns_ent_name, const char *main_scene, const char *sub_scene) { return rk_aiq_uapi_sysctl_preInit_scene(sns_ent_name, main_scene, sub_scene); } rk_aiq_sys_ctx_t* rk_aiq_uapi2_sysctl_init(const char* sns_ent_name, const char* config_file_dir, rk_aiq_error_cb err_cb, rk_aiq_metas_cb metas_cb) { return rk_aiq_uapi_sysctl_init(sns_ent_name, config_file_dir, err_cb, metas_cb); } void rk_aiq_uapi2_sysctl_deinit(rk_aiq_sys_ctx_t* ctx) { rk_aiq_uapi_sysctl_deinit(ctx); } XCamReturn rk_aiq_uapi2_sysctl_prepare(const rk_aiq_sys_ctx_t* ctx, uint32_t width, uint32_t height, rk_aiq_working_mode_t mode) { return rk_aiq_uapi_sysctl_prepare(ctx, width, height, mode); } XCamReturn rk_aiq_uapi2_sysctl_start(const rk_aiq_sys_ctx_t* ctx) { return rk_aiq_uapi_sysctl_start(ctx); } XCamReturn rk_aiq_uapi2_sysctl_stop(const rk_aiq_sys_ctx_t* ctx, bool keep_ext_hw_st) { return rk_aiq_uapi_sysctl_stop(ctx, keep_ext_hw_st); } void rk_aiq_uapi2_get_version_info(rk_aiq_ver_info_t* vers) { rk_aiq_uapi_get_version_info(vers); } XCamReturn rk_aiq_uapi2_sysctl_updateIq(rk_aiq_sys_ctx_t* sys_ctx, char* iqfile) { return rk_aiq_uapi_sysctl_updateIq(sys_ctx, iqfile); } int32_t rk_aiq_uapi2_sysctl_getModuleCtl(const rk_aiq_sys_ctx_t* ctx, rk_aiq_module_id_t mId, bool *mod_en) { return rk_aiq_uapi_sysctl_getModuleCtl(ctx, mId, mod_en); } XCamReturn rk_aiq_uapi2_sysctl_setModuleCtl(const rk_aiq_sys_ctx_t* ctx, rk_aiq_module_id_t mId, bool mod_en) { return rk_aiq_uapi_sysctl_setModuleCtl(ctx, mId, mod_en); } XCamReturn rk_aiq_uapi2_sysctl_enableAxlib(const rk_aiq_sys_ctx_t* ctx, const int algo_type, const int lib_id, bool enable) { return rk_aiq_uapi_sysctl_enableAxlib(ctx, algo_type, lib_id, enable); } bool rk_aiq_uapi2_sysctl_getAxlibStatus(const rk_aiq_sys_ctx_t* ctx, const int algo_type, const int lib_id) { return rk_aiq_uapi_sysctl_getAxlibStatus(ctx, algo_type, lib_id); } const RkAiqAlgoContext* rk_aiq_uapi2_sysctl_getEnabledAxlibCtx(const rk_aiq_sys_ctx_t* ctx, const int algo_type) { return rk_aiq_uapi_sysctl_getEnabledAxlibCtx(ctx, algo_type); } XCamReturn rk_aiq_uapi2_sysctl_getStaticMetas(const char* sns_ent_name, rk_aiq_static_info_t* static_info) { return rk_aiq_uapi_sysctl_getStaticMetas(sns_ent_name, static_info); } XCamReturn rk_aiq_uapi2_sysctl_enumStaticMetas(int index, rk_aiq_static_info_t* static_info) { return rk_aiq_uapi_sysctl_enumStaticMetas(index, static_info); } const char* rk_aiq_uapi2_sysctl_getBindedSnsEntNmByVd(const char* vd) { return rk_aiq_uapi_sysctl_getBindedSnsEntNmByVd(vd); } XCamReturn rk_aiq_uapi2_sysctl_getCrop(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_rect_t *rect) { return rk_aiq_uapi_sysctl_getCrop(sys_ctx, rect); } #if 0 XCamReturn rk_aiq_uapi2_sysctl_setCrop(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_rect_t rect) { return rk_aiq_uapi_sysctl_setCrop(sys_ctx, rect); } #endif XCamReturn rk_aiq_uapi2_sysctl_setCpsLtCfg(const rk_aiq_sys_ctx_t* ctx, rk_aiq_cpsl_cfg_t* cfg) { return rk_aiq_uapi_sysctl_setCpsLtCfg(ctx, cfg); } XCamReturn rk_aiq_uapi2_sysctl_getCpsLtInfo(const rk_aiq_sys_ctx_t* ctx, rk_aiq_cpsl_info_t* info) { return rk_aiq_uapi_sysctl_getCpsLtInfo(ctx, info); } XCamReturn rk_aiq_uapi2_sysctl_queryCpsLtCap(const rk_aiq_sys_ctx_t* ctx, rk_aiq_cpsl_cap_t* cap) { return rk_aiq_uapi_sysctl_queryCpsLtCap(ctx, cap); } XCamReturn rk_aiq_uapi2_sysctl_setSharpFbcRotation(const rk_aiq_sys_ctx_t* ctx, rk_aiq_rotation_t rot) { return rk_aiq_uapi_sysctl_setSharpFbcRotation(ctx, rot); } void rk_aiq_uapi2_sysctl_setMulCamConc(const rk_aiq_sys_ctx_t* ctx, bool cc) { rk_aiq_uapi_sysctl_setMulCamConc(ctx, cc); } XCamReturn rk_aiq_uapi2_sysctl_regMemsSensorIntf(const rk_aiq_sys_ctx_t* sys_ctx, const rk_aiq_mems_sensor_intf_t* intf) { return rk_aiq_uapi_sysctl_regMemsSensorIntf(sys_ctx, intf); } int rk_aiq_uapi2_sysctl_switch_scene(const rk_aiq_sys_ctx_t* sys_ctx, const char* main_scene, const char* sub_scene) { return rk_aiq_uapi_sysctl_switch_scene(sys_ctx, main_scene, sub_scene); } XCamReturn rk_aiq_uapi2_sysctl_tuning(const rk_aiq_sys_ctx_t* sys_ctx, char* param) { return rk_aiq_uapi_sysctl_tuning(sys_ctx, param); } char* rk_aiq_uapi2_sysctl_readiq(const rk_aiq_sys_ctx_t* sys_ctx, char* param) { return rk_aiq_uapi_sysctl_readiq(sys_ctx, param); } XCamReturn rk_aiq_uapi2_sysctl_prepareRkRaw(const rk_aiq_sys_ctx_t* ctx, rk_aiq_raw_prop_t prop) { return rk_aiq_uapi_sysctl_prepareRkRaw(ctx, prop); } XCamReturn rk_aiq_uapi2_sysctl_enqueueRkRawBuf(const rk_aiq_sys_ctx_t* ctx, void *rawdata, bool sync) { return rk_aiq_uapi_sysctl_enqueueRkRawBuf(ctx, rawdata, sync); } XCamReturn rk_aiq_uapi2_sysctl_enqueueRkRawFile(const rk_aiq_sys_ctx_t* ctx, const char *path) { return rk_aiq_uapi_sysctl_enqueueRkRawFile(ctx, path); } XCamReturn rk_aiq_uapi2_sysctl_registRkRawCb(const rk_aiq_sys_ctx_t* ctx, void (*callback)(void*)) { return rk_aiq_uapi_sysctl_registRkRawCb(ctx, callback); } XCamReturn rk_aiq_uapi2_sysctl_getCamInfos(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_ctx_camInfo_t* camInfo) { ENTER_XCORE_FUNCTION(); XCAM_ASSERT(sys_ctx != nullptr); RKAIQ_API_SMART_LOCK(sys_ctx); XCamReturn ret = XCAM_RETURN_NO_ERROR; if (!camInfo) { LOGE("null params !"); return XCAM_RETURN_ERROR_PARAM; } camInfo->sns_ent_nm = sys_ctx->_sensor_entity_name; camInfo->sns_camPhyId = sys_ctx->_camPhyId; EXIT_XCORE_FUNCTION(); return ret; } XCamReturn rk_aiq_uapi2_sysctl_get3AStats(const rk_aiq_sys_ctx_t* ctx, rk_aiq_isp_stats_t *stats) { return rk_aiq_uapi_sysctl_get3AStats(ctx, stats); } XCamReturn rk_aiq_uapi2_sysctl_get3AStatsBlk(const rk_aiq_sys_ctx_t* ctx, rk_aiq_isp_stats_t **stats, int timeout_ms) { return rk_aiq_uapi_sysctl_get3AStatsBlk(ctx, stats, timeout_ms); } void rk_aiq_uapi2_sysctl_release3AStatsRef(const rk_aiq_sys_ctx_t* ctx, rk_aiq_isp_stats_t *stats) { return rk_aiq_uapi_sysctl_release3AStatsRef(ctx, stats); } XCamReturn rk_aiq_uapi2_sysctl_getWorkingMode(const rk_aiq_sys_ctx_t* ctx, rk_aiq_working_mode_t *mode) { ENTER_XCORE_FUNCTION(); if (!mode || !ctx) return XCAM_RETURN_ERROR_PARAM; RKAIQ_API_SMART_LOCK(ctx); *mode = ctx->_rkAiqManager->getWorkingMode(); if (*mode < 0) return XCAM_RETURN_ERROR_OUTOFRANGE; EXIT_XCORE_FUNCTION(); return XCAM_RETURN_NO_ERROR; }