// HomingDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Dashboard.h"
#include "HomingDlg.h"
#include "DashboardRecipient.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define HOMING_TIMER 1
#define HOMING_TIMER_ELAPSE 2000

/////////////////////////////////////////////////////////////////////////////
// CHomingDlg dialog


CHomingDlg::CHomingDlg(CWnd* pParent /*=NULL*/)
	: CTestDlg(CHomingDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CHomingDlg)
	m_azimuth = 0.0f;
	m_azimuthIndicator = 0.0f;
	m_rangeRateIndicator = 0.0f;
	//}}AFX_DATA_INIT
}


void CHomingDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CHomingDlg)
	DDX_OCFloat(pDX, IDC_AZIMUTH, DISPID(1), m_azimuth);
	DDX_OCFloat(pDX, IDC_AZIMUTH_INDICATOR, DISPID(7), m_azimuthIndicator);
	DDX_Control(pDX, IDC_RANGERATE, m_rangeRate);
	DDX_OCFloat(pDX, IDC_RANGERATE_INDICATOR, DISPID(7), m_rangeRateIndicator);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CHomingDlg, CTestDlg)
	//{{AFX_MSG_MAP(CHomingDlg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CHomingDlg message handlers

void CHomingDlg::initSubClassDlg()
{
	SetTimer(HOMING_TIMER,HOMING_TIMER_ELAPSE,0);
}

void CHomingDlg::requestUpdate()
{
	Assert(m_recipient);
	m_recipient->requestData(MMAgentRequest::Single,
		ModemMessage::tMMHoming,1);
}

void CHomingDlg::stopRequests()
{
	Assert(m_recipient);
	m_recipient->requestData(MMAgentRequest::Stop,
		ModemMessage::tMMHoming,-1);
	resetDialog();
}

void CHomingDlg::resetDialog()
{
	UpdateData(TRUE);
	m_azimuth = 0.0f;
	m_azimuthIndicator = 0.0f;
	m_rangeRateIndicator = 0.0f;
	UpdateData(FALSE);
}

void CHomingDlg::setHoming(double azimuth, double rangeRate)
{
	receiveData();
	UpdateData(TRUE);
	m_azimuth = azimuth;
	m_azimuthIndicator = azimuth;
	m_rangeRate.SetValue(COleVariant(rangeRate));
	m_rangeRateIndicator = rangeRate;
	UpdateData(FALSE);
}
