// AuvMonDlg.h : header file
//

#pragma once

#include "ClrButton.h"
#include "Serial.h"
#include "smac.h"
#include "SimpleSocket.h"

// CAuvMonDlg dialog
class CAuvMonDlg : public CDialog
{
// Construction
public:
	CAuvMonDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	enum { IDD = IDD_AUVMON_DIALOG };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support


// Implementation
protected:
	HICON m_hIcon;

	// Generated message map functions
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnTimer(UINT nIDEvent);
	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnLbnSelchangeList1();
	afx_msg void OnEnChangeEdit7();
	afx_msg void OnBnClickedUsblcon();
	afx_msg void OnBnClickedAuvcon();
	afx_msg void OnBnClickedButton1();

protected:
	CClrButton _usblBtn, _auvBtn, _xmitBtn, _panBtn, _panAddrsBtn;
	unsigned _auvConnected, _panConnected, _usblConnected, _xmit, _panAddrsSet, _panEnabled;
	int _addrs;
	CSerial _usblPort, _auvPort, _panPort;
	SimpleSocket *_nmeaSocket;
	float _auvLat, _auvLong, _auvHead, _auvDepth, _auvAlt, _auvVolt, _auvHumid;
	float _usblLat, _usblLong, _usblSlant;
	int _usblhh, _usblmm;
	float _usblss;

	CString _auvBehavior;
	CString _auvAbort;

	long _lastXmitTime;
	int _period;

	void WriteStat(const char *msg);
	void WriteRecList(const char *msg);
	void Update();
	int GetAuvData(), GetAuvPanData();
	int GetUsblData();
	void UpdateAuvData(SMAC_STAT_RECORD rec);
	void SendNavPacket(long timestamp);

	CListCtrl *statList;
	CListCtrl *recList;

	UINT_PTR _timerId;

public:
	afx_msg void OnBnClickedOk();
	afx_msg void OnEnChangeXmitperiod();
	afx_msg void OnBnClickedReqstat();
	afx_msg void OnBnClickedAbortmssn();
	afx_msg void OnBnClickedStartsrvy();
	afx_msg void OnLvnItemchangedStatlist(NMHDR *pNMHDR, LRESULT *pResult);
	afx_msg void OnBnClickedUsblcon2();
	afx_msg void OnEnChangeUsblcom2();
	afx_msg void OnBnClickedPan2();
	afx_msg void OnEnChangePancom();
	afx_msg void OnBnClickedPan();
	afx_msg void OnEnChangeUsblcom();
	afx_msg void OnEnChangeAuvcom();
	afx_msg void OnEnChangeBehave();
	afx_msg void OnEnChangePancom2();
	afx_msg void OnEnChangePanaddrs();
};
