/********************************************************************************** * * Copyright (c) 2019-2020 Beijing AXera Technology Co., Ltd. All Rights Reserved. * * This source file is the property of Beijing AXera Technology Co., Ltd. and * may not be copied or distributed in any isomorphic form without the prior * written consent of Beijing AXera Technology Co., Ltd. * **********************************************************************************/ #ifndef _AX_LEN_IRIS_STRUCT_H_ #define _AX_LEN_IRIS_STRUCT_H_ #include "ax_base_type.h" #define ACTUATOR_MAX_NUM 8 #define AX_IRIS_MAX_STEP_FNO_NUM (1024) typedef enum _AX_IRIS_TYPE_E_ { AX_IRIS_FIXED_TYPE = 0, AX_IRIS_P_TYPE = 1, AX_IRIS_DC_TYPE = 2, } AX_IRIS_TYPE_E; typedef enum _AX_IRIS_F_NO_E_ { AX_IRIS_F_NO_32_0 = 0, AX_IRIS_F_NO_22_0, AX_IRIS_F_NO_16_0, AX_IRIS_F_NO_11_0, AX_IRIS_F_NO_8_0, AX_IRIS_F_NO_5_6, AX_IRIS_F_NO_4_0, AX_IRIS_F_NO_2_8, AX_IRIS_F_NO_2_0, AX_IRIS_F_NO_1_4, AX_IRIS_F_NO_1_0, } AX_IRIS_F_NO_E; typedef struct _AX_MANUAL_ATTR_T_T_ { AX_U32 nHoldValueForDcIris; /* 自动光圈校正值, 用于 DC-Iris 的调试 */ AX_IRIS_F_NO_E eIrisFNOForPIris; /* 手动光圈大小, 根据光圈 F 值进行区分, 仅支持 P-Iris, 不支持 DC-Iris */ } AX_MANUAL_ATTR_T; typedef struct _AX_IRIS_PARAMS_T_ { AX_U8 nEnable; /* 自动光圈使能 1: 自动光圈 0:手动光圈 */ AX_IRIS_TYPE_E eIrisType; /* 光圈类型, fixed, DC-Iris 或 P-Iris */ AX_MANUAL_ATTR_T tManualAttr; /* 手动光圈属性设置结构体 */ } AX_IRIS_PARAMS_T; typedef struct _AX_DCIRIS_PARAMS_T_ { AX_S32 kp; /* 比例增益 */ AX_S32 ki; /* 积分增益*/ AX_S32 kd; /* 微分增益 */ AX_U32 nMinPwmDuty; /* 最小 PWM 占空比 */ AX_U32 nMaxPwmDuty; /* 最大 PWM 占空比 */ AX_U32 nOpenPwmDuty; /* 光圈打开时的 PWM 占空比 */ } AX_DCIRIS_PARAMS_T; typedef struct _AX_PIRIS_PARAMS_T_ { AX_U8 NStepFNOTableChange; /* P-Iris 步进电机位置与光圈 F 值映射表是否更新标志 */ AX_U8 NZeroIsMax; /* P-Iris 步进电机 Step 0 是否对应最大光圈位置标志 */ AX_U32 nTotalStep; /* P-Iris 步进电机的总步数 */ AX_U32 nStepCount; /* P-Iris 步进电机的可用步数 */ AX_U32 nStepFNOTable[AX_IRIS_MAX_STEP_FNO_NUM]; /* P-Iris 步进电机位置与 F 值映射表 */ AX_IRIS_F_NO_E eMaxIrisFNOTarget; /* 最大光圈目标值 */ AX_IRIS_F_NO_E eMinIrisFNOTarget; /* 最小光圈目标值*/ AX_U8 nFNOExValid; /* 对接 P-Iris 时, AE 分配路线是否采用更高精度的光圈 F 值等效增益标志*/ AX_U32 nMaxIrisFNOGainTarget; /* 最大光圈 F 值等效增益目标值*/ AX_U32 nMinIrisFNOGainTarget; /* 最小光圈 F 值等效增益目标值 */ } AX_PIRIS_PARAMS_T; typedef struct _AX_LENS_ACTUATOR_IRIS_FUNC_T_ { AX_S32 (*pfn_iris_init)(AX_U8 nPipeId); AX_S32 (*pfn_iris_set_param)(AX_U8 nPipeId, AX_IRIS_PARAMS_T *pIrisParam); AX_S32 (*pfn_iris_get_param)(AX_U8 nPipeId, AX_IRIS_PARAMS_T *pIrisParam); AX_S32 (*pfn_dciris_set_param)(AX_U8 nPipeId, AX_DCIRIS_PARAMS_T *pDcIrisParam); AX_S32 (*pfn_dciris_get_param)(AX_U8 nPipeId, AX_DCIRIS_PARAMS_T *pDcIrisParam); AX_S32 (*pfn_piris_set_aperture_pos)(AX_U8 nPipeId, AX_S32 nPos); AX_S32 (*pfn_piris_get_aperture_pos)(AX_U8 nPipeId, AX_S32 *pPos); AX_S32 (*pfn_piris_set_param)(AX_U8 nPipeId, AX_PIRIS_PARAMS_T *pPIrisParam); AX_S32 (*pfn_piris_get_param)(AX_U8 nPipeId, AX_PIRIS_PARAMS_T *pPIrisParam); AX_S32 (*pfn_iris_exit)(AX_U8 nPipeId); AX_S32 (*pfn_dciris_set_duty)(AX_U8 nPipeId, AX_F32 nDuty); AX_S32 (*pfn_dciris_get_duty)(AX_U8 nPipeId, AX_F32 *pDuty); } AX_LENS_ACTUATOR_IRIS_FUNC_T; #endif