ax_lens_iris_struct.h 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /**********************************************************************************
  2. *
  3. * Copyright (c) 2019-2020 Beijing AXera Technology Co., Ltd. All Rights Reserved.
  4. *
  5. * This source file is the property of Beijing AXera Technology Co., Ltd. and
  6. * may not be copied or distributed in any isomorphic form without the prior
  7. * written consent of Beijing AXera Technology Co., Ltd.
  8. *
  9. **********************************************************************************/
  10. #ifndef _AX_LEN_IRIS_STRUCT_H_
  11. #define _AX_LEN_IRIS_STRUCT_H_
  12. #include "ax_base_type.h"
  13. #define ACTUATOR_MAX_NUM 8
  14. #define AX_IRIS_MAX_STEP_FNO_NUM (1024)
  15. typedef enum _AX_IRIS_TYPE_E_ {
  16. AX_IRIS_FIXED_TYPE = 0,
  17. AX_IRIS_P_TYPE = 1,
  18. AX_IRIS_DC_TYPE = 2,
  19. } AX_IRIS_TYPE_E;
  20. typedef enum _AX_IRIS_F_NO_E_ {
  21. AX_IRIS_F_NO_32_0 = 0,
  22. AX_IRIS_F_NO_22_0,
  23. AX_IRIS_F_NO_16_0,
  24. AX_IRIS_F_NO_11_0,
  25. AX_IRIS_F_NO_8_0,
  26. AX_IRIS_F_NO_5_6,
  27. AX_IRIS_F_NO_4_0,
  28. AX_IRIS_F_NO_2_8,
  29. AX_IRIS_F_NO_2_0,
  30. AX_IRIS_F_NO_1_4,
  31. AX_IRIS_F_NO_1_0,
  32. } AX_IRIS_F_NO_E;
  33. typedef struct _AX_MANUAL_ATTR_T_T_ {
  34. AX_U32 nHoldValueForDcIris; /* 自动光圈校正值, 用于 DC-Iris 的调试 */
  35. AX_IRIS_F_NO_E eIrisFNOForPIris; /* 手动光圈大小, 根据光圈 F 值进行区分, 仅支持 P-Iris, 不支持 DC-Iris */
  36. } AX_MANUAL_ATTR_T;
  37. typedef struct _AX_IRIS_PARAMS_T_ {
  38. AX_U8 nEnable; /* 自动光圈使能 1: 自动光圈 0:手动光圈 */
  39. AX_IRIS_TYPE_E eIrisType; /* 光圈类型, fixed, DC-Iris 或 P-Iris */
  40. AX_MANUAL_ATTR_T tManualAttr; /* 手动光圈属性设置结构体 */
  41. } AX_IRIS_PARAMS_T;
  42. typedef struct _AX_DCIRIS_PARAMS_T_ {
  43. AX_S32 kp; /* 比例增益 */
  44. AX_S32 ki; /* 积分增益*/
  45. AX_S32 kd; /* 微分增益 */
  46. AX_U32 nMinPwmDuty; /* 最小 PWM 占空比 */
  47. AX_U32 nMaxPwmDuty; /* 最大 PWM 占空比 */
  48. AX_U32 nOpenPwmDuty; /* 光圈打开时的 PWM 占空比 */
  49. } AX_DCIRIS_PARAMS_T;
  50. typedef struct _AX_PIRIS_PARAMS_T_ {
  51. AX_U8 NStepFNOTableChange; /* P-Iris 步进电机位置与光圈 F 值映射表是否更新标志 */
  52. AX_U8 NZeroIsMax; /* P-Iris 步进电机 Step 0 是否对应最大光圈位置标志 */
  53. AX_U32 nTotalStep; /* P-Iris 步进电机的总步数 */
  54. AX_U32 nStepCount; /* P-Iris 步进电机的可用步数 */
  55. AX_U32 nStepFNOTable[AX_IRIS_MAX_STEP_FNO_NUM]; /* P-Iris 步进电机位置与 F 值映射表 */
  56. AX_IRIS_F_NO_E eMaxIrisFNOTarget; /* 最大光圈目标值 */
  57. AX_IRIS_F_NO_E eMinIrisFNOTarget; /* 最小光圈目标值*/
  58. AX_U8 nFNOExValid; /* 对接 P-Iris 时, AE 分配路线是否采用更高精度的光圈 F 值等效增益标志*/
  59. AX_U32 nMaxIrisFNOGainTarget; /* 最大光圈 F 值等效增益目标值*/
  60. AX_U32 nMinIrisFNOGainTarget; /* 最小光圈 F 值等效增益目标值 */
  61. } AX_PIRIS_PARAMS_T;
  62. typedef struct _AX_LENS_ACTUATOR_IRIS_FUNC_T_ {
  63. AX_S32 (*pfn_iris_init)(AX_U8 nPipeId);
  64. AX_S32 (*pfn_iris_set_param)(AX_U8 nPipeId, AX_IRIS_PARAMS_T *pIrisParam);
  65. AX_S32 (*pfn_iris_get_param)(AX_U8 nPipeId, AX_IRIS_PARAMS_T *pIrisParam);
  66. AX_S32 (*pfn_dciris_set_param)(AX_U8 nPipeId, AX_DCIRIS_PARAMS_T *pDcIrisParam);
  67. AX_S32 (*pfn_dciris_get_param)(AX_U8 nPipeId, AX_DCIRIS_PARAMS_T *pDcIrisParam);
  68. AX_S32 (*pfn_piris_set_aperture_pos)(AX_U8 nPipeId, AX_S32 nPos);
  69. AX_S32 (*pfn_piris_get_aperture_pos)(AX_U8 nPipeId, AX_S32 *pPos);
  70. AX_S32 (*pfn_piris_set_param)(AX_U8 nPipeId, AX_PIRIS_PARAMS_T *pPIrisParam);
  71. AX_S32 (*pfn_piris_get_param)(AX_U8 nPipeId, AX_PIRIS_PARAMS_T *pPIrisParam);
  72. AX_S32 (*pfn_iris_exit)(AX_U8 nPipeId);
  73. AX_S32 (*pfn_dciris_set_duty)(AX_U8 nPipeId, AX_F32 nDuty);
  74. AX_S32 (*pfn_dciris_get_duty)(AX_U8 nPipeId, AX_F32 *pDuty);
  75. } AX_LENS_ACTUATOR_IRIS_FUNC_T;
  76. #endif