/****************************************************************************** 
 | 
 * 
 | 
 * Copyright 2019, Fuzhou Rockchip Electronics Co.Ltd . All rights reserved. 
 | 
 * No part of this work may be reproduced, modified, distributed, transmitted, 
 | 
 * transcribed, or translated into any language or computer format, in any form 
 | 
 * or by any means without written permission of: 
 | 
 * Fuzhou Rockchip Electronics Co.Ltd . 
 | 
 * 
 | 
 * 
 | 
 *****************************************************************************/ 
 | 
  
 | 
#include "base/xcam_common.h" 
 | 
#include "rk_aiq_user_api_ae.h" 
 | 
#include "RkAiqHandleInt.h" 
 | 
  
 | 
RKAIQ_BEGIN_DECLARE 
 | 
  
 | 
#ifdef RK_SIMULATOR_HW 
 | 
#define CHECK_USER_API_ENABLE 
 | 
#endif 
 | 
  
 | 
XCamReturn rk_aiq_user_api_ae_setExpSwAttr 
 | 
( 
 | 
    const rk_aiq_sys_ctx_t* sys_ctx, 
 | 
    const Uapi_ExpSwAttr_t expSwAttr 
 | 
) { 
 | 
    XCamReturn ret = XCAM_RETURN_NO_ERROR; 
 | 
    CHECK_USER_API_ENABLE2(sys_ctx); 
 | 
    CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_AE); 
 | 
    RKAIQ_API_SMART_LOCK(sys_ctx); 
 | 
  
 | 
    RkAiqAeHandleInt* algo_handle = 
 | 
        algoHandle<RkAiqAeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_AE); 
 | 
  
 | 
    if (algo_handle) { 
 | 
        return algo_handle->setExpSwAttr(expSwAttr); 
 | 
    } 
 | 
  
 | 
    return (ret); 
 | 
  
 | 
} 
 | 
XCamReturn rk_aiq_user_api_ae_getExpSwAttr 
 | 
( 
 | 
    const rk_aiq_sys_ctx_t* sys_ctx, 
 | 
    Uapi_ExpSwAttr_t*        pExpSwAttr 
 | 
) { 
 | 
    RKAIQ_API_SMART_LOCK(sys_ctx); 
 | 
    XCamReturn ret = XCAM_RETURN_NO_ERROR; 
 | 
  
 | 
    RkAiqAeHandleInt* algo_handle = 
 | 
        algoHandle<RkAiqAeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_AE); 
 | 
  
 | 
    if (algo_handle) { 
 | 
        return algo_handle->getExpSwAttr(pExpSwAttr); 
 | 
    } 
 | 
  
 | 
    return (ret); 
 | 
} 
 | 
XCamReturn rk_aiq_user_api_ae_setLinAeRouteAttr 
 | 
( 
 | 
    const rk_aiq_sys_ctx_t* sys_ctx, 
 | 
    const Uapi_LinAeRouteAttr_t linAeRouteAttr 
 | 
) { 
 | 
    XCamReturn ret = XCAM_RETURN_NO_ERROR; 
 | 
    CHECK_USER_API_ENABLE2(sys_ctx); 
 | 
    CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_AE); 
 | 
    RKAIQ_API_SMART_LOCK(sys_ctx); 
 | 
  
 | 
    RkAiqAeHandleInt* algo_handle = 
 | 
        algoHandle<RkAiqAeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_AE); 
 | 
  
 | 
    if (algo_handle) { 
 | 
        return algo_handle->setLinAeRouteAttr(linAeRouteAttr); 
 | 
    } 
 | 
  
 | 
    return(ret); 
 | 
} 
 | 
XCamReturn rk_aiq_user_api_ae_getLinAeRouteAttr 
 | 
( 
 | 
    const rk_aiq_sys_ctx_t* sys_ctx, 
 | 
    Uapi_LinAeRouteAttr_t* pLinAeRouteAttr 
 | 
) { 
 | 
    RKAIQ_API_SMART_LOCK(sys_ctx); 
 | 
    XCamReturn ret = XCAM_RETURN_NO_ERROR; 
 | 
  
 | 
    RkAiqAeHandleInt* algo_handle = 
 | 
        algoHandle<RkAiqAeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_AE); 
 | 
  
 | 
    if (algo_handle) { 
 | 
        return algo_handle->getLinAeRouteAttr(pLinAeRouteAttr); 
 | 
    } 
 | 
  
 | 
    return(ret); 
 | 
  
 | 
} 
 | 
XCamReturn rk_aiq_user_api_ae_setHdrAeRouteAttr 
 | 
( 
 | 
    const rk_aiq_sys_ctx_t* sys_ctx, 
 | 
    const Uapi_HdrAeRouteAttr_t hdrAeRouteAttr 
 | 
) { 
 | 
    XCamReturn ret = XCAM_RETURN_NO_ERROR; 
 | 
    CHECK_USER_API_ENABLE2(sys_ctx); 
 | 
    CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_AE); 
 | 
    RKAIQ_API_SMART_LOCK(sys_ctx); 
 | 
  
 | 
    RkAiqAeHandleInt* algo_handle = 
 | 
        algoHandle<RkAiqAeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_AE); 
 | 
  
 | 
    if (algo_handle) { 
 | 
        return algo_handle->setHdrAeRouteAttr(hdrAeRouteAttr); 
 | 
    } 
 | 
  
 | 
    return(ret); 
 | 
  
 | 
} 
 | 
XCamReturn rk_aiq_user_api_ae_getHdrAeRouteAttr 
 | 
( 
 | 
    const rk_aiq_sys_ctx_t* sys_ctx, 
 | 
    Uapi_HdrAeRouteAttr_t* pHdrAeRouteAttr 
 | 
) { 
 | 
    RKAIQ_API_SMART_LOCK(sys_ctx); 
 | 
    XCamReturn ret = XCAM_RETURN_NO_ERROR; 
 | 
  
 | 
    RkAiqAeHandleInt* algo_handle = 
 | 
        algoHandle<RkAiqAeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_AE); 
 | 
  
 | 
    if (algo_handle) { 
 | 
        return algo_handle->getHdrAeRouteAttr(pHdrAeRouteAttr); 
 | 
    } 
 | 
  
 | 
    return(ret); 
 | 
  
 | 
} 
 | 
  
 | 
XCamReturn rk_aiq_user_api_ae_setLinExpAttr 
 | 
( 
 | 
    const rk_aiq_sys_ctx_t* sys_ctx, 
 | 
    const Uapi_LinExpAttr_t linExpAttr 
 | 
) { 
 | 
    XCamReturn ret = XCAM_RETURN_NO_ERROR; 
 | 
    CHECK_USER_API_ENABLE2(sys_ctx); 
 | 
    CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_AE); 
 | 
    RKAIQ_API_SMART_LOCK(sys_ctx); 
 | 
  
 | 
    RkAiqAeHandleInt* algo_handle = 
 | 
        algoHandle<RkAiqAeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_AE); 
 | 
  
 | 
    if (algo_handle) { 
 | 
        return algo_handle->setLinExpAttr(linExpAttr); 
 | 
    } 
 | 
  
 | 
    return(ret); 
 | 
  
 | 
} 
 | 
XCamReturn rk_aiq_user_api_ae_getLinExpAttr 
 | 
( 
 | 
    const rk_aiq_sys_ctx_t* sys_ctx, 
 | 
    Uapi_LinExpAttr_t* pLinExpAttr 
 | 
) { 
 | 
    RKAIQ_API_SMART_LOCK(sys_ctx); 
 | 
    XCamReturn ret = XCAM_RETURN_NO_ERROR; 
 | 
  
 | 
    RkAiqAeHandleInt* algo_handle = 
 | 
        algoHandle<RkAiqAeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_AE); 
 | 
  
 | 
    if (algo_handle) { 
 | 
        return algo_handle->getLinExpAttr(pLinExpAttr); 
 | 
    } 
 | 
  
 | 
    return(ret); 
 | 
  
 | 
} 
 | 
XCamReturn rk_aiq_user_api_ae_setHdrExpAttr 
 | 
( 
 | 
    const rk_aiq_sys_ctx_t* sys_ctx, 
 | 
    const Uapi_HdrExpAttr_t hdrExpAttr 
 | 
) { 
 | 
    XCamReturn ret = XCAM_RETURN_NO_ERROR; 
 | 
    CHECK_USER_API_ENABLE2(sys_ctx); 
 | 
    CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_AE); 
 | 
    RKAIQ_API_SMART_LOCK(sys_ctx); 
 | 
  
 | 
    RkAiqAeHandleInt* algo_handle = 
 | 
        algoHandle<RkAiqAeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_AE); 
 | 
  
 | 
    if (algo_handle) { 
 | 
        return algo_handle->setHdrExpAttr(hdrExpAttr); 
 | 
    } 
 | 
  
 | 
    return(ret); 
 | 
  
 | 
} 
 | 
XCamReturn rk_aiq_user_api_ae_getHdrExpAttr 
 | 
( 
 | 
    const rk_aiq_sys_ctx_t* sys_ctx, 
 | 
    Uapi_HdrExpAttr_t* pHdrExpAttr 
 | 
) { 
 | 
    RKAIQ_API_SMART_LOCK(sys_ctx); 
 | 
    XCamReturn ret = XCAM_RETURN_NO_ERROR; 
 | 
  
 | 
    RkAiqAeHandleInt* algo_handle = 
 | 
        algoHandle<RkAiqAeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_AE); 
 | 
  
 | 
    if (algo_handle) { 
 | 
        return algo_handle->getHdrExpAttr(pHdrExpAttr); 
 | 
    } 
 | 
  
 | 
    return(ret); 
 | 
  
 | 
} 
 | 
XCamReturn rk_aiq_user_api_ae_queryExpResInfo 
 | 
( 
 | 
    const rk_aiq_sys_ctx_t* sys_ctx, 
 | 
    Uapi_ExpQueryInfo_t* pExpResInfo 
 | 
) { 
 | 
    RKAIQ_API_SMART_LOCK(sys_ctx); 
 | 
    XCamReturn ret = XCAM_RETURN_NO_ERROR; 
 | 
  
 | 
    RkAiqAeHandleInt* algo_handle = 
 | 
        algoHandle<RkAiqAeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_AE); 
 | 
  
 | 
    if (algo_handle) { 
 | 
        return algo_handle->queryExpInfo(pExpResInfo); 
 | 
    } 
 | 
  
 | 
    return(ret); 
 | 
  
 | 
} 
 | 
  
 | 
XCamReturn rk_aiq_user_api_ae_setExpWinAttr 
 | 
( 
 | 
    const rk_aiq_sys_ctx_t* sys_ctx, 
 | 
    const Uapi_ExpWin_t ExpWin 
 | 
) { 
 | 
    XCamReturn ret = XCAM_RETURN_NO_ERROR; 
 | 
    CHECK_USER_API_ENABLE2(sys_ctx); 
 | 
    CHECK_USER_API_ENABLE(RK_AIQ_ALGO_TYPE_AE); 
 | 
    RKAIQ_API_SMART_LOCK(sys_ctx); 
 | 
  
 | 
    RkAiqAeHandleInt* algo_handle = 
 | 
        algoHandle<RkAiqAeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_AE); 
 | 
  
 | 
    if (algo_handle) { 
 | 
        return algo_handle->setExpWinAttr(ExpWin); 
 | 
    } 
 | 
  
 | 
    return(ret); 
 | 
  
 | 
} 
 | 
XCamReturn rk_aiq_user_api_ae_getExpWinAttr 
 | 
( 
 | 
    const rk_aiq_sys_ctx_t* sys_ctx, 
 | 
    Uapi_ExpWin_t* pExpWin 
 | 
) { 
 | 
    RKAIQ_API_SMART_LOCK(sys_ctx); 
 | 
    XCamReturn ret = XCAM_RETURN_NO_ERROR; 
 | 
  
 | 
    RkAiqAeHandleInt* algo_handle = 
 | 
        algoHandle<RkAiqAeHandleInt>(sys_ctx, RK_AIQ_ALGO_TYPE_AE); 
 | 
  
 | 
    if (algo_handle) { 
 | 
        return algo_handle->getExpWinAttr(pExpWin); 
 | 
    } 
 | 
  
 | 
    return(ret); 
 | 
  
 | 
} 
 | 
  
 | 
RKAIQ_END_DECLARE 
 |