/******************************************************************************
 Copyright (C), 2015-2020, XM. Co., Ltd.
******************************************************************************
File Name	: xm_type.h
Version 		: Initial Draft
Author		: XM Isp software group
Created 		: 2017/04/07

Description 	: The common data type defination
Function List	:
History :
1.Date		: 2017/04/07
  Author		: Lycai
  Modification	: creat
******************************************************************************/
#ifndef __MPI_XMISP_H__
#define __MPI_XMISP_H__
typedef struct xmIR_DNC_ATTR_s
{
	int s32ColorExp;		// <s32ColorExp: to Color Mode
	int s32ColorDlt;
	int s32ColorDlt2;
	int s32BwExp;			// >s32BwExp: to BW Mode
	
}IR_DNC_ATTR_S;
typedef struct xmIR_DNC_INFO_s
{
#if(defined SOC_NONE) || (defined CHIPID_XM530)
	int s32Data[16];
#else
	int s32Data[6];
#endif
}IR_DNC_INFO_S;

typedef enum {
    tFALSE = 0,
    tTRUE  = 1,
} tBOOL;


typedef struct xmIR_FUNC_S
{
/**************************************
º¯Êý¹¦ÄÜ: ¿ØÖƵưå¹âÔ´
ÊäÈë²ÎÊý:   u8Mode
			0: ¹Ø±Õ
			1: ´ò¿ª
·µ»Ø²ÎÊý:	-1: 	³ö´í
		0:		²Ù×÷Íê³É
		1:		²Ù×÷ÎÞЧ
**************************************/
    int(*pfn_led_ctrl)(unsigned char u8Mode);

/**************************************
º¯Êý¹¦ÄÜ: »ñÈ¡µÆ°å״̬
ÊäÈë²ÎÊý:  ÎÞ
Êä³ö²ÎÊý:	*ps32Mode: 0:Auto 1:Manual
		* ps32State: 0:Close 1:Open
		
·µ»Ø²ÎÊý:	-1: 	³ö´í
		0:		³É¹¦
**************************************/
	int(*pfn_led_get)(int *ps32Mode, int* ps32State);

/**************************************
º¯Êý¹¦ÄÜ: ÈÕҹ״̬»ñÈ¡
ÊäÈë²ÎÊý: *ps32State:  0: Day 1:Night
Êä³ö²ÎÊý: ÎÞ
·µ»Ø²ÎÊý:	-1: 	³ö´í
		0:		³É¹¦
**************************************/
	int(*pfn_dnStatusExt_get)(int* ps32State);

} IR_FUNC_S;

typedef struct xmIR_CTRL_ATTR_S
{
	unsigned char u8Delay2Color;		// (s)
	unsigned char u8Delay2Bw;			// (s)
	unsigned char u8DelayLedReOpen;	// (s)
	unsigned char u8Mode;				// 0: No PhotoR  1: Have PhotoR  2: No PhotoR_V2  3: Have PhotoR_V2
	unsigned short u16PeriodMs;		// µ÷ÓÃÖÜÆÚ(ms)
} IR_CTRL_ATTR_S;


/*********************************************************************************
º¯Êý¹¦ÄÜ:	»ñÈ¡ÈÕҹ״̬
ÊäÈë²ÎÊý:	u8DnNow: µ±Ç°ÈÕҹģʽ(ʵ¼ÊÉúЧ)
					0: ²ÊÉ«
					1: ºÚ°×
				pstIrDncAttr
					s32ColorExp:  <=¸ÃÖµ½øÈë²Êɫģʽ
					s32ColorDlt:  	>=¸ÃÖµ½øÈë²Êɫģʽ
					s32ColorDlt2:	>=¸ÃÖµ½øÈë²Êɫģʽ(Example: 50)
					s32BwExp:	>=¸ÃÖµ½øÈëºÚ°×ģʽ
Êä³ö²ÎÊý:	ÎÞ
·µ»Ø²ÎÊý:	-1:	³ö´í
				0:	²ÊÉ«
				1:	ºÚ°×
*********************************************************************************/
int XM_MPI_IR_GetDNCStatus(unsigned char u8DnNow, IR_DNC_ATTR_S* pstIrDncAttr);


/*********************************************************************************
º¯Êý¹¦ÄÜ:	»ñȡͳ¼ÆÐÅÏ¢
ÊäÈë²ÎÊý:	ÎÞ
Êä³ö²ÎÊý:	pstDncInfo: ͳ¼ÆÐÅÏ¢
·µ»Ø²ÎÊý:	-1:	³ö´í
				0:	²ÊÉ«
				1:	ºÚ°×
*********************************************************************************/
int XM_MPI_IR_GetInfo(IR_DNC_INFO_S *pstDncInfo);

/*********************************************************************************
º¯Êý¹¦ÄÜ:	×¢²áµÆ°å¿ØÖƽӿÚ
ÊäÈë²ÎÊý:	pstRegister: Ö¸Ïò½Ó¿ÚµØÖ·
Êä³ö²ÎÊý:	ÎÞ
·µ»Ø²ÎÊý:	-1:	³ö´í
		0:     ³É¹¦
*********************************************************************************/
int XM_MPI_IR_FunCallBack(IR_FUNC_S *pstRegister);


/*********************************************************************************
º¯Êý¹¦ÄÜ:	ÅäÖÿØÖƲÎÊý
ÊäÈë²ÎÊý:	pstCtrlAttr: Ö¸Ïò²ÎÊýÊôÐÔ
Êä³ö²ÎÊý:	ÎÞ
·µ»Ø²ÎÊý:	-1:	³ö´í
		0:     ³É¹¦
*********************************************************************************/
int XM_MPI_IR_SetCtrlAttr(IR_CTRL_ATTR_S *pstCtrlAttr);


/*********************************************************************************
º¯Êý¹¦ÄÜ:	»ñÈ¡¿ØÖƲÎÊý
ÊäÈë²ÎÊý:	ÎÞ
Êä³ö²ÎÊý:	pstCtrlAttr: Ö¸Ïò²ÎÊýÊôÐÔ
·µ»Ø²ÎÊý:	-1:	³ö´í
		0:     ³É¹¦
*********************************************************************************/
int XM_MPI_IR_GetCtrlAttr(IR_CTRL_ATTR_S *pstCtrlAttr);


/*********************************************************************************
º¯Êý¹¦ÄÜ:	Çл»Ä£Ê½
ÊäÈë²ÎÊý:	u8Mode: 
					0: IR
					1: WL
Êä³ö²ÎÊý:	ÎÞ
·µ»Ø²ÎÊý:	-1:	³ö´í
				0:	³É¹¦
*********************************************************************************/
XM_S32 XM_MPI_IR_SwitchMode(XM_U8 u8Mode);


/*************************************************************************
º¯Êý¹¦ÄÜ: OSD µ÷ÊÔ´òӡʹÄÜ
ÊäÈë²ÎÊý: bEnable:
				0: Close
				1: Open
Êä³ö²ÎÊý: ÎÞ
·µ»Ø²ÎÊý: 0: ³É¹¦
			  ÆäËû: ³ö´í
*************************************************************************/
int XM_MPI_DBG_En(tBOOL bEnable);

/*************************************************************************
º¯Êý¹¦ÄÜ: OSD µ÷ÊÔ´òÓ¡
ÊäÈë²ÎÊý: 	u8Num:  ´òÓ¡Êý¾Ý¸öÊý
				*pu32Data: Ö¸Ïò´òÓ¡Êý¾Ý
					ÒÀ´ÎÔÚµÚ1,2,3...u8NumÐÐ
Êä³ö²ÎÊý: ÎÞ
·µ»Ø²ÎÊý: 0: ³É¹¦
			  ÆäËû: ³ö´í
*************************************************************************/
int XM_MPI_DBG_Task(unsigned char u8Num, unsigned int *pu32Data);

/*************************************************************************
º¯Êý¹¦ÄÜ: OSD µ÷ÊÔÊÍ·ÅÄÚ´æ
ÊäÈë²ÎÊý: ÎÞ
Êä³ö²ÎÊý: ÎÞ
·µ»Ø²ÎÊý: ÎÞ
*************************************************************************/
int XM_MPI_DBG_Release(XM_VOID);
#endif /* __MPI_XMISP_H__ */