1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /**********************************************************************************
- *
- * 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
|