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