// DlgCfgUpdate.cpp : implementation file
//

#include "stdafx.h"
#include "NetSdkDemo.h"
#include "DlgCfgUpdate.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgCfgUpdate dialog


CDlgCfgUpdate::CDlgCfgUpdate(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgCfgUpdate::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgCfgUpdate)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CDlgCfgUpdate::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgCfgUpdate)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgCfgUpdate, CDialog)
	//{{AFX_MSG_MAP(CDlgCfgUpdate)
	ON_BN_CLICKED(IDC_BTN_REBOOT, OnBtnReboot)
	ON_BN_CLICKED(IDC_BTN_SEL, OnBtnSel)
	ON_BN_CLICKED(IDC_BTN_UPDATE, OnBtnUpdate)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgCfgUpdate message handlers
BOOL CDlgCfgUpdate::GetEnvParam()
{
	int iRet;
	CString szText;
	//if(m_bGetParam)
	//	return TRUE;
	MRCONFC_CAMVERSION_T stVersion;
	iRet = librmconfc_state_query(g_envDev.szIP, g_envDev.wPort, g_envDev.szUserName, g_envDev.szPassword, NULL,
		MRCONFC_QUYCMD_VERSION, sizeof(MRCONFC_CAMVERSION_T), &stVersion);
	if(iRet)
	{
		AfxMessageBox("获得参数失败!");
		return FALSE;
	}
	szText.Format("%d.%d.%d  %d-%d-%d", 
		(stVersion.dwCamVersion >> 16) & 0xFF,
		(stVersion.dwCamVersion >> 8) & 0xFF, (stVersion.dwCamVersion & 0xFF),
		(stVersion.dwCamDate >> 16) & 0xFFFF,
		(stVersion.dwCamDate >> 8) & 0xFF,
		(stVersion.dwCamDate & 0xFF));
	SetDlgItemText(IDC_EDT_CAMVER, szText);

	if(stVersion.bAFVersion)
	{
		szText.Format("%d.%d.%d  %d-%d-%d", 
			(stVersion.dwAFVersion >> 16) & 0xFF,
			(stVersion.dwAFVersion >> 8) & 0xFF, (stVersion.dwAFVersion & 0xFF),
			(stVersion.dwAFDate >> 16) & 0xFFFF,
			(stVersion.dwAFDate >> 8) & 0xFF,
			(stVersion.dwAFDate & 0xFF));
		SetDlgItemText(IDC_EDT_AVVER, szText);
		GetDlgItem(IDC_STC_AF)->ShowWindow(SW_SHOW);
	}

	if(stVersion.bArmVersion)
	{
		szText.Format("%d.%d.%d  %d-%d-%d",  
			(stVersion.dwArmVersion >> 16) & 0xFF,
			(stVersion.dwArmVersion >> 8) & 0xFF, (stVersion.dwArmVersion & 0xFF),
			(stVersion.dwArmDate >> 16) & 0xFFFF,
			(stVersion.dwArmDate >> 8) & 0xFF,
			(stVersion.dwArmDate & 0xFF));
		SetDlgItemText(IDC_EDT_ARMVER, szText);
		GetDlgItem(IDC_STC_ARM)->ShowWindow(SW_SHOW);
	}
	
	return TRUE;
}

void CDlgCfgUpdate::OnBtnReboot() 
{
	int iRet;
	if(AfxMessageBox("确定要重启设备吗?", MB_YESNO|MB_ICONQUESTION) != IDYES)
		return;
	iRet = librmconfc_syscontrol(g_envDev.szIP, g_envDev.wPort, g_envDev.szUserName, g_envDev.szPassword, NULL,
				MRCONFC_CTRLCMD_REBOOT, 0, NULL);
	if(iRet)
	{
		AfxMessageBox("重启失败!");
	}
}

void CDlgCfgUpdate::OnBtnSel() 
{
	CString strFilter = "MRG Files(*.mrg)|*.mrg|";
	CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, 
		strFilter, this);
	if(dlg.DoModal() != IDOK)
		return;
	SetDlgItemText(IDC_EDT_UPDATEFILE, dlg.GetPathName());
}

void CDlgCfgUpdate::OnBtnUpdate() 
{
	LONG pMsgHandle = 0;
	int iRet;
	CString szCmd;
	char *pRetInfo = NULL;

	char szFileName[256];
	memset(szFileName, 0, sizeof(szFileName));
	GetDlgItemText(IDC_EDT_UPDATEFILE, szFileName, sizeof(szFileName));
	if(!strlen(szFileName))
	{
		OnBtnSel();
		return;
	}

	iRet = MRNSDK_MsgPort_Open(&pMsgHandle, g_envDev.szIP, g_envDev.wPort, g_envDev.szUserName, g_envDev.szPassword, NULL, 1000);
	if(iRet)
	{
		TRACE("error=%08X\n", iRet);
		AfxMessageBox("连接设备失败!");
		return;
	}
	szCmd.Format("{\"ImpExp\":{\"ImportUpdate\":{}}}");
	iRet = MRNSDK_MsgPort_SendMsg(pMsgHandle, szCmd, szFileName, &pRetInfo, NULL, 1000 * 360);
	if(iRet)
	{
		MRNSDK_MsgPort_Close(pMsgHandle);
		AfxMessageBox("升级失败!");
		return;
	}
	MRNSDK_MsgPort_Close(pMsgHandle);
	AfxMessageBox("升级完成!");
}
