// DashboardDlg.h : header file
//
//{{AFX_INCLUDES()
#include "cwslide.h"
#include "cwknob.h"
#include "eightball2.h"
#include "compass.h"
//}}AFX_INCLUDES

#if !defined(AFX_DASHBOARDDLG_H__B29331CC_F262_411B_ADCC_1E88C18889FF__INCLUDED_)
#define AFX_DASHBOARDDLG_H__B29331CC_F262_411B_ADCC_1E88C18889FF__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CDashboardDlgAutoProxy;
class CDashboardRecipient;
class CDeviceDlg;
class CCommsDlg;
class CMissionControlDlg;
class CNmeaDlg;
class CDataDlg;
class CDataRecipient;
class CFileManagerDlg;
class CMissionControlSettingsDlg;
class CTopsideLogDlg;


/////////////////////////////////////////////////////////////////////////////
// CDashboardDlg dialog

class CDashboardDlg : public CDialog
{
	DECLARE_DYNAMIC(CDashboardDlg);
	friend class CDashboardDlgAutoProxy;

// Construction
public:
	CDashboardDlg(CWnd* pParent = NULL);	// standard constructor
	virtual ~CDashboardDlg();

	// Public sets
	
	void setConnected(bool value);
/*	void setWaterAlarm(int number, bool value);
	void setCircuit(int number, bool value);
	void setServerAlarm(int number, bool value);
	void setTemperature(int number, double value);
	void setTailcone(double rpm, double elevator, double rudder);
	void setTailconeRaw(short propeller, short elevator,short rudder,short throttle);
	void setAttitude(double roll, double pitch, double yaw, double rollRate,
		double pitchRate, double yawRate);
	void setDepthSensor(double depth, double temperature, double pressure);
	void setSpeed(double speed);
	void setAltitude(double altitude);
	void setDepth(double depth);
	void setAttitude(double pitch, double roll);
	void setHeading(double heading);
	void setPosition(double latitude, double longitude);
	void setDevice(int number, const char *name, int circuit);
	void setCircuitCurrent(int number, double value);
	void setGroundFaultCurrent(int number, double value);
	void setBatteryPackStatus(int number, double voltage, double current);
	void setBatteryCellVoltage(int pack, int number, double voltage);
	void setBatteryCellTemperature(int pack, int number, double temp);
	void setBatteryPower(int pack, bool value);
	void setBatteryPackStateFlag(int pack, int number, bool value);
	void setBatteryPackAlarm(int pack, int number, bool value);
	void setBatteryCellFlag(int pack, int cell, int number, bool value);
	void setDvl(double vx, double vy, double vz, double range);
	void setDvlBeamVelocities(double v1, double v2, double v3, double v4);
	void setDvlBeamRanges(double r1, double r2, double r3, double r4);
	void setHoming(double azimuth, double rangeRate);
	void setGps(double latitude, double longitude, bool differential,
		int numSatellites, double hdop);
		*/
	/*
	void setNmeaPos(char* str);
	void setMissionTime(int time);
	*/
	// public get
	BOOL getConnected() { return m_connected; };
	void getCommsInfo(char* addrOne, bool* conOne, char* addrTwo, bool* conTwo);
	CTopsideLogDlg* getLogger()
	{ return m_logger; };

	void showFileManager()
	{ OnFileManagerDlg(); };
	void showMissionControl()
	{ OnMissionControl(); };

	void setDevicesOK(bool value);
	void closeDevCheckout();


	// Dialog Data
	//{{AFX_DATA(CDashboardDlg)
	enum { IDD = IDD_DASHBOARD_DIALOG };
	BOOL	m_connected;
	BOOL	m_devicesOK;
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CDashboardDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	CDashboardDlgAutoProxy* m_pAutoProxy;
	HICON m_hIcon;

	BOOL CanExit();

	// MMRecipient
	CDashboardRecipient* m_recipient;

	// Sub dialogs
	CDeviceDlg* m_deviceDlg;
	CCommsDlg* m_commsDlg;
	CMissionControlDlg* m_missionDlg;
	CNmeaDlg* m_nmeaDlg;
	CDataDlg* m_dataDlg;
	CFileManagerDlg* m_filemanagerDlg;
	CMissionControlSettingsDlg* m_settingsDlg;
	CTopsideLogDlg *m_logger;

	// My members
	BOOL m_socketConnect1;
	BOOL m_socketConnect2;
	BOOL m_serialConnect1;
	BOOL m_serialConnect2;
	BOOL m_serialConnect3;
	
	CString m_homeDir;

	void setUnderway(bool value);

	BOOL OnToolTipNotify(UINT id, NMHDR * pTTTStruct, LRESULT * pResult);

	// Generated message map functions
	//{{AFX_MSG(CDashboardDlg)
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnDestroy();
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnClose();
	afx_msg void OnTimer(UINT nIDEvent);
	afx_msg void OnDeviceCheckout();
	afx_msg void OnCommSettings();
	afx_msg void OnMissionControl();
	afx_msg void OnFileManagerDlg();
	afx_msg void OnOK();
	afx_msg void OnCancel();
	virtual BOOL OnInitDialog();
	afx_msg void OnMessageDlg();
	afx_msg void OnTopsideLog();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

	void OnNmeaDlg();
	void OnCommsDlg();
	void OnDataDlg();
	void SetupMessageDlg();
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_DASHBOARDDLG_H__B29331CC_F262_411B_ADCC_1E88C18889FF__INCLUDED_)
