#ifndef CONFIGURE_H
#define CONFIGURE_H

#ifdef CONFIGURE_EXPORTS
#define CONFIGURE_API  __declspec(dllexport) 
#else
#define CONFIGURE_API  __declspec(dllimport)   //VC 用
#endif

#define	MSG_LOGOUT					(WM_USER + 1999)	//< 通知退出消息,在设备端不重启的情况下用
#define MSG_SUBWINDOW_SHOW			(WM_USER + 2000)	//< 子窗口显示
#define MSG_SUBWINDOW_DESTROY		(WM_USER + 2001)	//< 子窗口销毁

#define SUBWINDOW_RECORD_SETTING	0					//< 录像设置		wParam
#define RECORD_VIDEO_RECORD			0					//< 视频录像设置	lParam
#define RECORD_SNAPOT				1					//< 抓拍设置子窗口  lParam

#define SUBWINDOW_ALARAM_SETTING	1					//< 报警设置		wParam
#define ALARAM_MOTION_DETECTION		0					//< 移动侦测		lParam
#define ALARAM_VIDEO_BLIND			1					//< 视频遮挡		lParam
#define ALARAM_VIDEO_LOSS			2					//< 视频丢失		lParam
#define ALARAM_ALARM_INPUT			3					//< 报警输入		lParam
#define ALARAM_ALARM_OUTPUT			4					//< 报警输出		lParam
#define ALARAM_VIDEO_ANALYSISI		5					//< 视频分析		lParam

#define SUBWINDOW_SYS_SETTING		2					//< 系统设置		wParam
#define SYS_GENERAL					0					//< 普通设置		lParam
#define SYS_ENCODE					1					//< 编码设置		lParam
#define SYS_NETWORK					2					//< 网络设置		lParam
#define SYS_NETSERVICE				3					//< 网络服务		lParam
#define SYS_OUTMODE					4					//< 输出模式		lParam
#define SYS_PTZ						5					//< 云台服务		lParam
#define SYS_COMRSS					6					//< 串口设置		lParam
#define SYS_CAMERAPARAM				7					//< 摄像机参数设置	lParam
#define SYS_NETDECORDER				8					//< 数字通道设置	lParam
#define SYS_CHANNELMODE				9					//< 通道模式设置	lParam

#define SUBWINDOW_MGRTOOL_SETTING	3					//< 管理工具		wParam
#define MGRTOOL_HARDISK				0					//< 硬盘管理		lParam
#define MGRTOOL_USER				1					//< 用户管理		lParam
#define MGRTOOL_AUTOMAINTAIN		2					//< 自动维护
#define MGRTOOL_DEFAULT				3					//< 恢复默认		lParam
#define MGRTOOL_REBOOT				4					//< 重启			lParam
#define MGRTOOL_SYSUPDATA			5					//< 系统升级		lParam

#define SUBWINDOW_SYSINFO_SETTING	4					//< 系统信息		wParam
#define SYSINFO_HARDISKINFO			0					//< 硬盘信息		lParam
#define SYSINFO_LOGINFO				1					//< 日志信息		lParam
#define	SYSINFO_VERSION				2					//< 版本信息		lParam


typedef struct
{
	void *pCallback;
	unsigned long lUser;
}DRAWBACK;

// 参数一:设备信息，二、获取数据类型，三、用户参数.
typedef int (CALLBACK * FGetParmBackCallBack)(long ConfigType, int nChannel,char*pInbuf,DWORD dwInBufsize,char* pConfigBuf,DWORD dwBufSize, DWORD dwUserParam, DWORD *lpRet);
typedef int (CALLBACK * FSaveParmBackCallBack)(long ConfigType, int nChannel,char* pConfigBuf,DWORD dwBufSize,DWORD dwUserParam, DWORD lParam);




/*
 *  @func:    	 ConfigMoudle_Init
 *  @brief:		 初始化  	
 *  @param[in]:  CWnd * pParent
 *  @param[in]:  int mode				mode = 0 为Web100模式 mode = 1为P2P模式
 *  @return:  	 CONFIGURE_API BOOL
 *  @note:    	 none   
 */
CONFIGURE_API BOOL ConfigMoudle_Init(CWnd *pParent, int mode = 0);

//反初始化
CONFIGURE_API BOOL ConfigMoudle_UnInit();


//初始化语言
//pLanguagePath 语言绝对路径，包含文件名
#ifdef ANNI_CONFIGURE
CONFIGURE_API BOOL ConfigMoudle_languageInit(char *pLanguagePath);
#else
CONFIGURE_API BOOL ConfigMoudle_languageInit(TCHAR *pLanguagePath);
#endif // _DEBUG



//设备获取数据和保存数据回调
CONFIGURE_API BOOL ConfigMoudle_SetCallback(void * getCalback, void * saveCallback, DWORD dwUser);

//移动窗体位置
CONFIGURE_API BOOL ConfigMoudle_MoveWindow(CRect *rect, BOOL bShow);


//设备更改，重新获取所有数据
CONFIGURE_API BOOL ConfigMoudle_Refush();

#ifdef ANNI_CONFIGURE
//设置当前用户名
CONFIGURE_API VOID ConfigMoudle_SetCurUserNameAndIp(const char* username, const char* dev_ip, char* remote_builddate = NULL);
#else
CONFIGURE_API VOID ConfigMoudle_SetCurUserNameAndIp(const char* username, const char* dev_ip, char* remote_builddate = NULL);
#endif



#endif