1 /*---------------------------------------------------------------------------*
2   Project:  HIO2 demos - multi
3   File:     multi.h
4 
5   (C)2005 HUDSON SOFT
6 
7   $Header: /home/cvsroot/SDK/build/demos/hio2demo/vc++/multi/multi.h,v 1.4 2007/11/26 13:56:47 iwai_yuma Exp $
8 
9   $NoKeywords: $
10  *---------------------------------------------------------------------------*/
11 
12 // multi.h : Main header file for the multi application
13 //
14 #pragma once
15 #pragma warning(disable: 4311)
16 #pragma warning(disable: 4312)
17 #pragma warning(disable: 4996)
18 
19 #ifndef __AFXWIN_H__
20 	#error include 'stdafx.h' before including this file for PCH
21 #endif
22 
23 #include "resource.h"       // Main symbols
24 
25 //#define	PROTOCOL_USED
26 
27 ////////// for multiApp //////////
28 
29 #include <win32/mytl.h>		// NNGC SDK : $(ROOT)/include/win32
30 #include "Hio2IfHost.h"
31 #include "../../include/multi.h"
32 
33 // CMultiApp:
34 // See multi.cpp for the implementation of this class
35 //
36 
37 class CMultiApp : public CWinApp
38 {
39 ////////// for multiApp //////////
40 public:
41 	typedef struct _APPINFO
42 	{
_APPINFO_APPINFO43 		_APPINFO()
44 		{
45 			m_nHioIfID = HIO2IF_INVALID_ID;
46 			m_bSync = FALSE;
47 			ZeroMemory((LPVOID)&m_stPacket, sizeof(m_stPacket));
48 #ifndef	HW0
49 			m_pDevice = NULL;
50 #else	// HW0
51 			m_pDevice = -1;
52 #endif	// HW0
53 		}
54 
~_APPINFO_APPINFO55 		~_APPINFO()
56 		{
57 #ifndef	HW0
58 			if ( m_pDevice != NULL ) delete [] m_pDevice;
59 #endif	// HW0
60 		}
61 
62 		HIO2DevicePath	m_pDevice;
63 		HIO2IF_ID	m_nHioIfID;
64 		BOOL	m_bSync;
65 		volatile MULTI_PACKET	m_stPacket;
66 	}	APPINFO, *LPAPPINFO;
67 
68 	CHio2If*	m_pHioIf;
69 	volatile HANDLE	m_hThread;
70 	volatile BOOL	m_bThreadBreak;
71 	TMYList<LPAPPINFO>	m_cInfoList;
72 
73 	BOOL	HioIfInit();
74 	void	CreateInfo();
75 	BOOL	HioIfExit();
76 	void	StopPollingThread();
GetStatus(HIO2IF_ID nID)77 	LPCSTR	GetStatus(HIO2IF_ID nID)
78 	{
79 		static LPCSTR l_lpszDeviceName[HIO2_CHAN_MAX + 2] =
80 		{ "UNKNOWN", "EXI2USB0", "EXI2USB1", "MrEXI" };
81 
82 		m_cStrStatus.Format("CHAN : %s, PC%d, NNGC %s",
83 			(m_pHioIf->IsConnected(nID) ? "CONNECT" : "DISCONNECT"),
84 			m_pHioIf->GetPcChan(nID),
85 			l_lpszDeviceName[m_pHioIf->GetDeviceType(nID) + 1]
86 		);
87 		return (LPCSTR)m_cStrStatus;
88 	};
89 	void	Connect(HIO2IF_ID id);
90 	void	Disconnect(HIO2IF_ID id);
91 	void	CreatePcTime(MULTI_PACKET* pPacket);
92 
93 private:
94 	CString m_cStrStatus;
95 
96 public:
97 	CMultiApp();
98 
99 
100 // Overrides
101 public:
102 	virtual BOOL InitInstance();
103 
104 // Implementation
105 	afx_msg void OnAppAbout();
106 	DECLARE_MESSAGE_MAP()
107 	virtual int ExitInstance();
108 };
109 
110 extern CMultiApp theApp;
111 
112 static inline
GetApp()113 CMultiApp*	GetApp()
114 {
115 	return ((CMultiApp *)AfxGetApp());
116 }
117 
118 // The comparison function specified in m_cInfoList.IndexOf()
119 BOOL	MultiCompID(CMultiApp::LPAPPINFO pItem, LPVOID pData);
120