// BaseClientDlg.h : Header file
//

#if !defined(AFX_BASECLIENTDLG_H__0E5C17C2_2050_43EB_8606_B7D3992EDDF9__INCLUDED_)
#define AFX_BASECLIENTDLG_H__0E5C17C2_2050_43EB_8606_B7D3992EDDF9__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "VAIBO.h"
#include "VAIBODef.h"

class CListenSocket;
class CImageTP;

/////////////////////////////////////////////////////////////////////////////
// CBaseClientDlg dialog

class CBaseClientDlg : public CDialog
{
// Construction
public:
	CBaseClientDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	//{{AFX_DATA(CBaseClientDlg)
	enum { IDD = IDD_BASECLIENT_DIALOG };
	CIPAddressCtrl	m_ipAddress;
	int		m_iRadio1;
	CString	m_sPlayStatus;
	int		m_iHeadAngleH;
	int		m_iHeadAngleV;
	//}}AFX_DATA

	//{{AFX_VIRTUAL(CBaseClientDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

//  Implementation
protected:
	HICON m_hIcon;

public:
	// Generated message map functions
	//{{AFX_MSG(CBaseClientDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnBtnAutonomy();
	afx_msg void OnBtnConnect();
	afx_msg void OnBtnPlay();
	afx_msg void OnBtnRemote();
	afx_msg void OnDestroy();
	afx_msg void OnBtnSocket();
	afx_msg void OnBtnImagetp();
	afx_msg void OnBtnTakepicture();
	afx_msg void OnBtnHeadup();
	afx_msg void OnBtnHeadleft();
	afx_msg void OnBtnHeadright();
	afx_msg void OnBtnHeaddown();
	afx_msg void OnBtnHeadhome();
	afx_msg void OnBtnForward();
	afx_msg void OnBtnLeftturn();
	afx_msg void OnBtnWalkstop();
	afx_msg void OnBtnRightturn();
	afx_msg void OnBtnBack();
	//}}AFX_MSG
	afx_msg LRESULT OnVAIBOConnect( WPARAM wParam, LPARAM lParam );
	afx_msg LRESULT OnVAIBOConnectUpdate( WPARAM wParam, LPARAM lParam );
	afx_msg LRESULT OnVAIBODisconnect( WPARAM wParam, LPARAM lParam );
    afx_msg LRESULT OnVAIBOSemantics( WPARAM wParam, LPARAM lParam );
	afx_msg LRESULT OnVAIBORemoteNotify( WPARAM wParam, LPARAM lParam );
	afx_msg LRESULT OnITPImageUpdate( WPARAM wParam, LPARAM recvLen );
	afx_msg LRESULT OnVAIBOSensorData( WPARAM wParam, LPARAM lParam );

	DECLARE_MESSAGE_MAP()
public:
	CVAIBO *m_pVAibo;
	BOOL m_bNetServiceSensorEnable;
	BOOL m_bNetServiceImageEnable; 
    int  m_nPlayID;
	BOOL m_bIsBusy;
	BOOL m_bSocketEnable;	

protected:
	int  m_nAiboID; 
	BOOL m_bConnected;
	BOOL m_bControl;
	CListenSocket *m_pListen;
	UINT m_uPort;
	BOOL m_myRequest;
	CImageTP *m_pImageTP;
	BOOL m_bSensorTransferStart;
	BOOL m_bUpdateHeadAngle;
	int	 m_iTargetHeadAngleH;
	int	 m_iTargetHeadAngleV;
	BOOL m_bSetSkipRate;

	CButton& buttonConnect()  { return *(CButton*) GetDlgItem( IDC_BTN_CONNECT ); };
	CButton& buttonRemote()   { return *(CButton*) GetDlgItem( IDC_BTN_REMOTE ); };
	CButton& buttonAutonomy() { return *(CButton*) GetDlgItem( IDC_BTN_AUTONOMY ); };
	CButton& buttonPlay()     { return *(CButton*) GetDlgItem( IDC_BTN_PLAY ); };
	CButton& buttonSocket()   { return *(CButton*) GetDlgItem( IDC_BTN_SOCKET ); };
	CButton& buttonImageTP()  { return *(CButton*) GetDlgItem( IDC_BTN_IMAGETP ); };
	CButton& buttonTakePicture() { return *(CButton*) GetDlgItem( IDC_BTN_TAKEPICTURE ); };
	CStatic& SocketStatus()   { return *(CStatic*) GetDlgItem( IDC_SOCKET_STATUS); }
	void StopListening();
	BOOL StartListening();
	void UpDateSensorValue(int numOfData, SensorRec *sensorRecAry);
public:
	CStatic& staticPicture()  { return *(CStatic*) GetDlgItem( IDC_PICTURE_STATIC); }
	CStatic& staticMovie()    { return *(CStatic*) GetDlgItem( IDC_MOVIE_STATIC); }
	void TakePicture(LPCSTR pFileName);
	void DoWalking(int walkstyle, int distance, int angle);
	void MoveHead(int angleH,int angleV);
	void MoveHeadCenter();

};

//{{AFX_INSERT_LOCATION}}

#endif // !defined(AFX_BASECLIENTDLG_H__0E5C17C2_2050_43EB_8606_B7D3992EDDF9__INCLUDED_)
