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