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