/*************************************************************************
  File name     : enum.h
  Module        : config_manager
  Author        : 
  Copyright     : 
  Version       : 0.1
  Created on    : 2022-3-21
  Creator       : amir.liang
  Description   :
      Data enum definitions required by Config.
***************************************************************************/
#ifndef __MW_CONFIG_ENUM_H__
#define __MW_CONFIG_ENUM_H__

/*
 * factory mode
 */
typedef enum
{
    MW_CFG_FACTORY_TEST = 0,
    MW_CFG_FACTORY_AGING,
    MW_CFG_NORAML,
    MW_CFG_FACTORYMODE_NUM,
}Mw_Cfg_FactoryMode_e;

/*
 * Cam mode
 */
typedef enum
{
    MW_CFG_CAMMODE_VIDEO = 0,
    MW_CFG_CAMMODE_PHOTO,
    MW_CFG_CAMMODE_PLAYBACK,

    MW_CFG_CAMMODE_NUM
}Mw_Cfg_CamMode_e;

typedef enum
{
    MW_CFG_CAM_SUBMODE_VID_NORMAL = 0,
    MW_CFG_CAM_SUBMODE_VID_TIMELAPSE,
    MW_CFG_CAM_SUBMODE_VID_HDR,
    MW_CFG_CAM_SUBMODE_VID_BULLETTIME,
    MW_CFG_CAM_SUBMODE_VID_SLOWMOTION,
    MW_CFG_CAM_SUBMODE_VID_PURE,
    MW_CFG_CAM_SUBMODE_VID_TIMESHIFT,
    MW_CFG_CAM_SUBMODE_VID_LOOPRECORD,
    MW_CFG_CAM_SUBMODE_VID_FPV,
    MW_CFG_CAM_SUBMODE_VID_MOVIE,

    MW_CFG_CAM_SUBMODE_VID_IDX_MAX = MW_CFG_CAM_SUBMODE_VID_MOVIE,

    MW_CFG_CAM_SUBMODE_PHO_NORMAL ,
    MW_CFG_CAM_SUBMODE_PHO_TIMELAPSE,
    MW_CFG_CAM_SUBMODE_PHO_BURST,
    MW_CFG_CAM_SUBMODE_PHO_AEB,
    MW_CFG_CAM_SUBMODE_PHO_HDR,
    MW_CFG_CAM_SUBMODE_PHO_SUPERNIGHT,
    MW_CFG_CAM_SUBMODE_PHO_PANO,
    MW_CFG_CAM_SUBMODE_PHO_STARLAPSE,

    MW_CFG_CAM_SUBMODE_PHO_IDX_MAX = MW_CFG_CAM_SUBMODE_PHO_STARLAPSE,

    MW_CFG_CAM_SUBMODE_USER_0,
    MW_CFG_CAM_SUBMODE_USER_1,
    MW_CFG_CAM_SUBMODE_USER_2,
    MW_CFG_CAM_SUBMODE_USER_3,
    MW_CFG_CAM_SUBMODE_USER_4,

    MW_CFG_CAM_SUBMODE_USER_IDX_MAX = MW_CFG_CAM_SUBMODE_USER_4,

    MW_CFG_CAM_SUBMODE_LOCAL_PB,

    MW_CFG_CAM_SUBMODE_NUM
}Mw_Cfg_CamSubMode_e;

/*
 * Sensor
 */
typedef enum
{
    MW_CFG_SENSOR_ID_GC2083 = 0,
    MW_CFG_SENSOR_ID_OV02B1B,
    MW_CFG_SENSOR_ID_NUM
}Mw_Cfg_SensorId_e;

/*
 * Video
 */
typedef enum
{
    MW_CFG_VIDEO_RES_1280X720 = 0,
    MW_CFG_VIDEO_RES_1920X1080,
    MW_CFG_VIDEO_RES_2560X1440,
    MW_CFG_VIDEO_RES_3840X2160,
    MW_CFG_VIDEO_RES_7680X4320,

    MW_CFG_VIDEO_RES_NUM
}Mw_Cfg_VideoResolution_e;

typedef enum
{
    MW_CFG_VIDEO_FPS_10 = 0,
    MW_CFG_VIDEO_FPS_15,  
    MW_CFG_VIDEO_FPS_20, 
    MW_CFG_VIDEO_FPS_24,  //23.975
    MW_CFG_VIDEO_FPS_25,
    MW_CFG_VIDEO_FPS_30,      //29.97
    MW_CFG_VIDEO_FPS_50,
    MW_CFG_VIDEO_FPS_60,      //59.94
    MW_CFG_VIDEO_FPS_120,
    MW_CFG_VIDEO_FPS_200,
    MW_CFG_VIDEO_FPS_240,

    MW_CFG_VIDEO_FPS_24T,     //24
    MW_CFG_VIDEO_FPS_30T,     //30
    MW_CFG_VIDEO_FPS_60T,     //60

    MW_CFG_VIDEO_FPS_NUM
}Mw_Cfg_VideoFps_e;

typedef enum
{
    CFG_VIDEO_CODEC_TYPE_H264 = 0,
    CFG_VIDEO_CODEC_TYPE_H265 = 1
}Mw_Cfg_VideoCodecType_e;

//default CBR
typedef enum
{
    CFG_VIDEO_CODEC_BRATECTRL_TYPE_VBR       = 0, //default
    CFG_VIDEO_CODEC_BRATECTRL_TYPE_CBR       = 1,
}Mw_Cfg_VideoBrateCtrlType_e;
    
typedef enum
{
    CFG_VIDEO_RECORD_STREAM_MAIN = 0x01,
    CFG_VIDEO_RECORD_STREAM_SUB  = 0x02,
    CFG_VIDEO_RECORD_STREAM_BOTH = 0x03
}Mw_Cfg_VideoRecord_stream_e;

/*
 * Photo
 */
typedef enum
{
    MW_CFG_CAP_RES_320X240 = 0,
    MW_CFG_CAP_RES_640X480,
    MW_CFG_CAP_RES_800X480,
    MW_CFG_CAP_RES_1280X720,
    MW_CFG_CAP_RES_1920X1080,

    MW_CFG_CAP_RES_240X320 = 10,
    MW_CFG_CAP_RES_480X640,
    MW_CFG_CAP_RES_480X800,
    MW_CFG_CAP_RES_720X1280,
    MW_CFG_CAP_RES_1080X1920,
    
}Mw_Cfg_PhotoResolution_e;

/*
 * Image
 */
typedef enum
{
    MW_CFG_AE_EXPMODE_AUTO,  //p
    MW_CFG_AE_EXPMODE_TV,    //S
    MW_CFG_AE_EXPMODE_SV,    //Iso priority
    MW_CFG_AE_EXPMODE_AV,    //A
    MW_CFG_AE_EXPMODE_ME,    //M
}Mw_Cfg_AeExpoMode_e;

typedef enum
{
    MW_CFG_AE_FLICKER_AUTO,
    MW_CFG_AE_FLICKER_50HZ,
    MW_CFG_AE_FLICKER_60HZ,
}Mw_Cfg_AeAntiFlicker_e;

typedef enum
{
    MW_CFG_AWB_MODE_AUTO,
    MW_CFG_AWB_MODE_M,
}Mw_Cfg_AwbMode_e;

#endif