/* 
 | 
 * sensorinfo_head.h 
 | 
 * 
 | 
 *  Copyright (c) 2021 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. 
 | 
 * 
 | 
 */ 
 | 
  
 | 
#ifndef __CALIBDBV2_SENSOR_INFO_HEADER_H__ 
 | 
#define __CALIBDBV2_SENSOR_INFO_HEADER_H__ 
 | 
  
 | 
// #define M4_STRUCT_DESC(ALIAS, SIZE, UI_MODULE) 
 | 
// #define M4_NUMBER_DESC(ALIAS, TYPE, SIZE, RANGE, DEFAULT) 
 | 
// #define M4_STRING_DESC(ALIAS, SIZE, RANGE, DEFAULT) 
 | 
// #define M4_ENUM_DESC(ALIAS, ENUM, DEFAULT) 
 | 
  
 | 
#include "rk_aiq_comm.h" 
 | 
  
 | 
RKAIQ_BEGIN_DECLARE 
 | 
  
 | 
/*****************************************************************************/ 
 | 
/** 
 | 
 * @brief   ISP2.0 SensorInfo enum Params 
 | 
 */ 
 | 
/*****************************************************************************/ 
 | 
typedef enum _CalibDb_ExpGainModeV2_e { 
 | 
    EXPGAIN_MODE_LINEAR         = 0, 
 | 
    EXPGAIN_MODE_NONLINEAR_DB   = 1, 
 | 
    EXPGAIN_MODE_MAX            = 2 
 | 
} CalibDb_ExpGainModeV2_t; 
 | 
  
 | 
typedef enum  _CalibDb_HdrFrmNumV2_e { 
 | 
    HDR_TWO_FRAME = 0, 
 | 
    HDR_THREE_FRAME = 1, 
 | 
} CalibDb_HdrFrmNumV2_t; 
 | 
  
 | 
/*****************************************************************************/ 
 | 
/** 
 | 
 * @brief   ISP2.0 SensorInfo config Params 
 | 
 */ 
 | 
/*****************************************************************************/ 
 | 
typedef struct CalibDb_AecGainRangeV2_s { 
 | 
    // M4_ENUM_DESC("GainMode", "CalibDb_ExpGainModeV2_t","EXPGAIN_MODE_LINEAR") 
 | 
    CalibDb_ExpGainModeV2_t     GainMode; 
 | 
  
 | 
    // M4_ARRAY_DESC("GainRange", "f32", M4_SIZE(1,7), M4_RANGE(-65535,65535), "0", M4_DIGIT(4), M4_DYNAMIC(2)) 
 | 
    float*                      GainRange;//contains 7 params per line 
 | 
    int                         GainRange_len; 
 | 
} CalibDb_AecGainRangeV2_t; 
 | 
  
 | 
typedef struct CalibDb_CISNormalTimeSetV2_s { 
 | 
    // M4_NUMBER_DESC("TimeRegMin", "u16", M4_RANGE(1,100), "1", M4_DIGIT(0),M4_HIDE(0)) 
 | 
    uint16_t                CISTimeRegMin; 
 | 
  
 | 
    // M4_STRUCT_DESC("TimeRegMaxFac", "normal_ui_style") 
 | 
    Cam2x1FloatMatrix_t     CISLinTimeRegMaxFac; 
 | 
  
 | 
    // M4_STRUCT_DESC("TimeRegOdevity", "normal_ui_style") 
 | 
    Cam2x1FloatMatrix_t     CISTimeRegOdevity; 
 | 
} CalibDb_CISNormalTimeSetV2_t; 
 | 
  
 | 
typedef struct CalibDb_CISHdrTimeSetV2_s { 
 | 
    // M4_ENUM_DESC("name", "CalibDb_HdrFrmNumV2_t","HDR_TWO_FRAME") 
 | 
    CalibDb_HdrFrmNumV2_t   name; 
 | 
  
 | 
    // M4_BOOL_DESC("CISTimeRegUnEqualEn", "0") 
 | 
    bool                    CISTimeRegUnEqualEn; 
 | 
  
 | 
    // M4_NUMBER_DESC("CISTimeRegMin", "u16", M4_RANGE(1,100), "1", M4_DIGIT(0),M4_HIDE(0)) 
 | 
    uint16_t                CISTimeRegMin; 
 | 
  
 | 
    // M4_STRUCT_DESC("CISHdrTimeRegSumFac", "normal_ui_style") 
 | 
    Cam2x1FloatMatrix_t     CISHdrTimeRegSumFac; 
 | 
  
 | 
    // M4_STRUCT_DESC("CISTimeRegMax", "normal_ui_style") 
 | 
    Cam1x3ShortMatrix_t     CISTimeRegMax; //specially for Hdr that has limit on sframe/mframe, requiring max time line.value 0: no limit 
 | 
  
 | 
    // M4_STRUCT_DESC("CISTimeRegOdevity", "normal_ui_style") 
 | 
    Cam2x1FloatMatrix_t     CISTimeRegOdevity; 
 | 
} CalibDb_CISHdrTimeSetV2_t; 
 | 
  
 | 
typedef struct CalibDb_CISTimeSet_CombV2_s { 
 | 
    // M4_STRUCT_DESC("Linear", "normal_ui_style") 
 | 
    CalibDb_CISNormalTimeSetV2_t Linear; 
 | 
  
 | 
    // M4_STRUCT_LIST_DESC("Hdr", M4_SIZE(1,2),"normal_ui_style") 
 | 
    CalibDb_CISHdrTimeSetV2_t Hdr[2]; 
 | 
} CalibDb_CISTimeSet_CombV2_t; 
 | 
  
 | 
typedef struct CalibDb_AeRangeV2_s { 
 | 
    // M4_NUMBER_DESC("Min", "f32", M4_RANGE(0,65535), "0", M4_DIGIT(3),M4_HIDE(0)) 
 | 
    float                   Min; 
 | 
  
 | 
    // M4_NUMBER_DESC("Max", "f32", M4_RANGE(0,65535), "0", M4_DIGIT(3),M4_HIDE(0)) 
 | 
    float                   Max; 
 | 
} CalibDb_AeRangeV2_t; 
 | 
  
 | 
typedef struct CalibDb_CISGainSetV2_s { 
 | 
    // M4_STRUCT_DESC("CISAgainRange", "normal_ui_style") 
 | 
    CalibDb_AeRangeV2_t       CISAgainRange; //sensor Again or LCG range 
 | 
  
 | 
    // M4_STRUCT_DESC("CISExtraAgainRange", "normal_ui_style") 
 | 
    CalibDb_AeRangeV2_t       CISExtraAgainRange; //add for HDR-DCG MODE, HCG range 
 | 
  
 | 
    // M4_STRUCT_DESC("CISDgainRange", "normal_ui_style") 
 | 
    CalibDb_AeRangeV2_t       CISDgainRange; //sensor Dgain 
 | 
  
 | 
    // M4_STRUCT_DESC("CISIspDgainRange", "normal_ui_style") 
 | 
    CalibDb_AeRangeV2_t       CISIspDgainRange; //Isp Dgain 
 | 
  
 | 
    // M4_BOOL_DESC("CISHdrGainIndSetEn", "1") 
 | 
    bool                   CISHdrGainIndSetEn; //bit 0:use the same value; bit 1: support use different gain value 
 | 
} CalibDb_CISGainSetV2_t; 
 | 
  
 | 
typedef struct CalibDb_CISHdrSetV2_s { 
 | 
    // M4_BOOL_DESC("hdr_en", "0") 
 | 
    bool hdr_en; 
 | 
  
 | 
    // M4_ENUM_DESC("hdr_mode", "rk_aiq_isp_hdr_mode_t","RK_AIQ_ISP_HDR_MODE_2_LINE_HDR") 
 | 
    rk_aiq_isp_hdr_mode_t hdr_mode; 
 | 
  
 | 
    // M4_ENUM_DESC("line_mode", "rk_aiq_sensor_hdr_line_mode_t","RK_AIQ_SENSOR_HDR_LINE_MODE_STAGGER") 
 | 
    rk_aiq_sensor_hdr_line_mode_t line_mode; 
 | 
} CalibDb_CISHdrSetV2_t; 
 | 
  
 | 
typedef struct CalibDb_Dcg_ParamsV2_s { 
 | 
    // M4_BOOL_DESC("support_en", "0") 
 | 
    bool                support_en; 
 | 
  
 | 
    // M4_ENUM_DESC("dcg_optype", "RKAiqOPMode_t","RK_AIQ_OP_MODE_AUTO") 
 | 
    RKAiqOPMode_t       dcg_optype; 
 | 
  
 | 
    // M4_STRUCT_DESC("dcg_mode", "normal_ui_style") 
 | 
    Cam1x3IntMatrix_t   dcg_mode; 
 | 
  
 | 
    // M4_NUMBER_DESC("dcg_ratio", "f32", M4_RANGE(1,100), "1", M4_DIGIT(2),M4_HIDE(0)) 
 | 
    float               dcg_ratio; 
 | 
  
 | 
    // M4_BOOL_DESC("sync_switch", "1") 
 | 
    bool                sync_switch; 
 | 
  
 | 
    // M4_NUMBER_DESC("lcg2hcg_gain_th", "f32", M4_RANGE(1,4096), "32", M4_DIGIT(2),M4_HIDE(0)) 
 | 
    float               lcg2hcg_gain_th; 
 | 
  
 | 
    // M4_NUMBER_DESC("hcg2lcg_gain_th", "f32", M4_RANGE(1,4096), "16", M4_DIGIT(2),M4_HIDE(0)) 
 | 
    float               hcg2lcg_gain_th; 
 | 
} CalibDb_Dcg_ParamsV2_t; 
 | 
  
 | 
typedef struct CalibDb_DcgSetV2_s { 
 | 
    // M4_STRUCT_DESC("Linear", "normal_ui_style") 
 | 
    CalibDb_Dcg_ParamsV2_t Linear; 
 | 
  
 | 
    // M4_STRUCT_DESC("Hdr", "normal_ui_style") 
 | 
    CalibDb_Dcg_ParamsV2_t Hdr; 
 | 
} CalibDb_DcgSetV2_t; 
 | 
  
 | 
typedef struct CalibDb_ExpUpdateV2_s { 
 | 
    // M4_NUMBER_DESC("time_update", "s32", M4_RANGE(0,10), "2", M4_DIGIT(0),M4_HIDE(0)) 
 | 
    int time_update; 
 | 
  
 | 
    // M4_NUMBER_DESC("gain_update", "s32", M4_RANGE(0,10), "2", M4_DIGIT(0),M4_HIDE(0)) 
 | 
    int gain_update; 
 | 
  
 | 
    // M4_NUMBER_DESC("dcg_update", "s32", M4_RANGE(0,10), "2", M4_DIGIT(0),M4_HIDE(0)) 
 | 
    int dcg_update; 
 | 
} CalibDb_ExpUpdateV2_t; 
 | 
  
 | 
typedef struct CalibDb_ExpUpdate_CombV2_s { 
 | 
    // M4_STRUCT_DESC("Linear", "normal_ui_style") 
 | 
    CalibDb_ExpUpdateV2_t Linear; 
 | 
  
 | 
    // M4_STRUCT_DESC("Hdr", "normal_ui_style") 
 | 
    CalibDb_ExpUpdateV2_t Hdr; 
 | 
} CalibDb_ExpUpdate_CombV2_t; 
 | 
  
 | 
typedef struct CalibDb_ResInfoV2_s { 
 | 
    // M4_NUMBER_DESC("width", "u16", M4_RANGE(0,65535), "0", M4_DIGIT(0),M4_HIDE(0)) 
 | 
    uint16_t width; 
 | 
    // M4_NUMBER_DESC("height", "u16", M4_RANGE(0,65535), "0", M4_DIGIT(0),M4_HIDE(0)) 
 | 
    uint16_t height; 
 | 
} CalibDb_ResInfoV2_t; 
 | 
  
 | 
  
 | 
typedef struct CalibDb_Sensor_ParaV2_s { 
 | 
    // M4_STRUCT_DESC("Resolution", "normal_ui_style") 
 | 
    CalibDb_ResInfoV2_t             resolution; 
 | 
  
 | 
    // M4_STRUCT_DESC("Gain2Reg", "normal_ui_style") 
 | 
    CalibDb_AecGainRangeV2_t        Gain2Reg; 
 | 
  
 | 
    // M4_STRUCT_DESC("Time2Reg", "normal_ui_style") 
 | 
    Cam1x4FloatMatrix_t             Time2Reg; 
 | 
  
 | 
    // M4_STRUCT_DESC("CISGainSet", "normal_ui_style") 
 | 
    CalibDb_CISGainSetV2_t          CISGainSet; 
 | 
  
 | 
    // M4_STRUCT_DESC("CISTimeSet", "normal_ui_style") 
 | 
    CalibDb_CISTimeSet_CombV2_t     CISTimeSet; 
 | 
  
 | 
    // M4_STRUCT_DESC("CISHdrSet", "normal_ui_style") 
 | 
    CalibDb_CISHdrSetV2_t           CISHdrSet; 
 | 
  
 | 
    // M4_STRUCT_DESC("CISDcgSet", "normal_ui_style") 
 | 
    CalibDb_DcgSetV2_t              CISDcgSet; 
 | 
  
 | 
    // M4_STRUCT_DESC("CISExpUpdate", "normal_ui_style") 
 | 
    CalibDb_ExpUpdate_CombV2_t      CISExpUpdate; 
 | 
  
 | 
    // M4_NUMBER_DESC("CISMinFps", "f32", M4_RANGE(1,100), "10", M4_DIGIT(2),M4_HIDE(0)) 
 | 
    float                           CISMinFps; 
 | 
  
 | 
    // M4_NUMBER_DESC("CISFlip", "u8", M4_RANGE(0,3), "0", M4_DIGIT(0),M4_HIDE(0)) 
 | 
    uint8_t                         CISFlip; // bit 0 : mirror, bit 1 : flip , range[0,3] 
 | 
} CalibDb_Sensor_ParaV2_t; 
 | 
  
 | 
RKAIQ_END_DECLARE 
 | 
  
 | 
#endif 
 |