1 /*---------------------------------------------------------------------------*
2 Project: Host I/O Interface for HIO2
3 File: Hio2DllIf.h
4
5 (C)2005 HUDSON SOFT
6
7 $Header: /home/cvsroot/SDK/build/demos/hio2demo/vc++/HioIf/src/Hio2DllIf.cpp,v 1.3 2006/03/15 06:31:26 mitu Exp $
8
9 $NoKeywords: $
10 *---------------------------------------------------------------------------*/
11
12 #include "stdafx.h"
13 #include "Hio2DllIf.h"
14
15 ///////////////////////////////////////////////////////////////////////////////
16 //
17 // CHio2DllIf
18 //
19
20 //-----------------------------------------------------------------------------
Create()21 BOOL CHio2DllIf::Create()
22 {
23 #ifdef _DEBUG
24 LPCSTR lpszLibFileName = "hio2D.dll";
25 #else
26 LPCSTR lpszLibFileName = "hio2.dll";
27 #endif
28 // Initialization complete
29 if ( m_hDll != NULL ) return TRUE;
30
31 m_hDll = LoadLibrary(lpszLibFileName);
32 if ( m_hDll == NULL ) return FALSE;
33
34 m_fncEnumDevices = (HIO2EnumDevicesType)GetProcAddress(m_hDll, HIO2EnumDevicesStr);
35 m_fncInit = (HIO2InitType)GetProcAddress(m_hDll, HIO2InitStr);
36 m_fncOpen = (HIO2OpenType)GetProcAddress(m_hDll, HIO2OpenStr);
37 m_fncClose = (HIO2CloseType)GetProcAddress(m_hDll, HIO2CloseStr);
38 m_fncReadMailbox = (HIO2ReadMailboxType)GetProcAddress(m_hDll, HIO2ReadMailboxStr);
39 m_fncWriteMailbox = (HIO2WriteMailboxType)GetProcAddress(m_hDll, HIO2WriteMailboxStr);
40 m_fncRead = (HIO2ReadType)GetProcAddress(m_hDll, HIO2ReadStr);
41 m_fncWrite = (HIO2WriteType)GetProcAddress(m_hDll, HIO2WriteStr);
42 m_fncReadAsync = (HIO2ReadAsyncType)GetProcAddress(m_hDll, HIO2ReadAsyncStr);
43 m_fncWriteAsync = (HIO2WriteAsyncType)GetProcAddress(m_hDll, HIO2WriteAsyncStr);
44 m_fncReadStatus = (HIO2ReadStatusType)GetProcAddress(m_hDll, HIO2ReadStatusStr);
45 m_fncExit = (HIO2ExitType)GetProcAddress(m_hDll, HIO2ExitStr);
46 m_fncGetLastError = (HIO2GetLastErrorType)GetProcAddress(m_hDll, HIO2GetLastErrorStr);
47
48 if ( (m_fncEnumDevices == NULL)
49 || (m_fncInit == NULL)
50 || (m_fncOpen == NULL)
51 || (m_fncClose == NULL)
52 || (m_fncReadMailbox == NULL)
53 || (m_fncWriteMailbox == NULL)
54 || (m_fncRead == NULL)
55 || (m_fncWrite == NULL)
56 || (m_fncReadAsync == NULL)
57 || (m_fncWriteAsync == NULL)
58 || (m_fncReadStatus == NULL)
59 || (m_fncExit == NULL)
60 || (m_fncGetLastError == NULL) )
61 {
62 FreeLibrary(m_hDll);
63 return FALSE;
64 }
65
66 return TRUE;
67 }
68
69 //-----------------------------------------------------------------------------
Release()70 void CHio2DllIf::Release()
71 {
72 if ( m_hDll != NULL )
73 {
74 FreeLibrary(m_hDll);
75 m_hDll = NULL;
76 }
77 }
78
79 //-----------------------------------------------------------------------------
EnumDevices(HIO2EnumCallback callback,void * param)80 s32 CHio2DllIf::EnumDevices( HIO2EnumCallback callback, void* param )
81 {
82 ASSERT(m_hDll != NULL);
83 return m_fncEnumDevices(callback, param);
84 }
85
86 //-----------------------------------------------------------------------------
Init(void)87 BOOL CHio2DllIf::Init( void )
88 {
89 ASSERT(m_hDll != NULL);
90 return m_fncInit();
91 }
92
93 //-----------------------------------------------------------------------------
Open(HIO2DevicePath pathName,HIO2ReceiveCallback callback,HIO2NotifyCallback notify,void * param)94 HIO2Handle CHio2DllIf::Open( HIO2DevicePath pathName, HIO2ReceiveCallback callback,
95 HIO2NotifyCallback notify, void* param)
96 {
97 ASSERT(m_hDll != NULL);
98 return m_fncOpen(pathName, callback, notify, param);
99 }
100
101 //-----------------------------------------------------------------------------
Close(HIO2Handle h)102 BOOL CHio2DllIf::Close( HIO2Handle h )
103 {
104 ASSERT(m_hDll != NULL);
105 return m_fncClose(h);
106 }
107
108 //-----------------------------------------------------------------------------
ReadMailbox(HIO2Handle h,u32 * mail)109 BOOL CHio2DllIf::ReadMailbox( HIO2Handle h, u32* mail )
110 {
111 ASSERT(m_hDll != NULL);
112 return m_fncReadMailbox(h, mail);
113 }
114
115 //-----------------------------------------------------------------------------
WriteMailbox(HIO2Handle h,u32 mail)116 BOOL CHio2DllIf::WriteMailbox( HIO2Handle h, u32 mail )
117 {
118 ASSERT(m_hDll != NULL);
119 return m_fncWriteMailbox(h, mail);
120 }
121
122 //-----------------------------------------------------------------------------
Read(HIO2Handle h,u32 addr,void * buffer,s32 size)123 BOOL CHio2DllIf::Read( HIO2Handle h, u32 addr, void* buffer, s32 size )
124 {
125 ASSERT(m_hDll != NULL);
126 return m_fncRead(h, addr, buffer, size);
127 }
128
129 //-----------------------------------------------------------------------------
Write(HIO2Handle h,u32 addr,const void * buffer,s32 size)130 BOOL CHio2DllIf::Write( HIO2Handle h, u32 addr, const void* buffer, s32 size )
131 {
132 ASSERT(m_hDll != NULL);
133 return m_fncWrite(h, addr, buffer, size);
134 }
135
136 //-----------------------------------------------------------------------------
ReadAsync(HIO2Handle h,u32 addr,void * buffer,s32 size,HIO2DmaCallback callback)137 BOOL CHio2DllIf::ReadAsync( HIO2Handle h, u32 addr, void* buffer,
138 s32 size, HIO2DmaCallback callback )
139 {
140 ASSERT(m_hDll != NULL);
141 return m_fncReadAsync(h, addr, buffer, size, callback);
142 }
143
144 //-----------------------------------------------------------------------------
WriteAsync(HIO2Handle h,u32 addr,const void * buffer,s32 size,HIO2DmaCallback callback)145 BOOL CHio2DllIf::WriteAsync( HIO2Handle h, u32 addr, const void* buffer,
146 s32 size, HIO2DmaCallback callback )
147 {
148 ASSERT(m_hDll != NULL);
149 return m_fncWriteAsync(h, addr, buffer, size, callback);
150 }
151
152 //-----------------------------------------------------------------------------
ReadStatus(HIO2Handle h,u32 * status)153 BOOL CHio2DllIf::ReadStatus( HIO2Handle h, u32* status )
154 {
155 ASSERT(m_hDll != NULL);
156 return m_fncReadStatus(h, status);
157 }
158
159 //-----------------------------------------------------------------------------
Exit(void)160 void CHio2DllIf::Exit( void )
161 {
162 ASSERT(m_hDll != NULL);
163 m_fncExit();
164 }
165
166 //-----------------------------------------------------------------------------
GetLastError(void)167 HIO2Error CHio2DllIf::GetLastError( void )
168 {
169 ASSERT(m_hDll != NULL);
170 return m_fncGetLastError();
171 }
172
173 // end of Hio2DllIf.cpp
174