1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
|
// ImportedFunctions.h
//
// $Id: ImportedFunctions.h,v 1.24 2012/05/11 07:12:22 ltu Exp $
#ifdef IMPORTEDFUNCTIONS_C
#define EXTERN
#else
#define EXTERN extern
#endif
#ifdef _cplusplus
extern "c" {
#endif
#ifndef IMPORTEDFUNCTIONS_H
#define IMPORTEDFUNCTIONS_H
//error codes returned by the API functions
//#include <windows.h>
#include "cdci/CdciErrors.h"
#include "cdci/CrocodileTypes.h"
#include "cdci/CdciInterfaces.h"
#include "cdci/DllVersion.h"
EXTERN bool ControlBridgeRMI(bool bLoadCdciApi);
EXTERN void UnloadLibrary();
typedef void CCdciApi;
/*
Line Callback procedure type for receving state changes for an IO line
\params
context [in] - a pointer to a context that the user wants to receive back
when the callback procedure gets invoked
sName[out] - a pointer to string name of the IO line
bState[out] - state of the IO line
Note: a callback procedure of this type with get invoked from a different thread
than your main thread. Do not do anything blocking in this callback procedure.
*/
typedef void ( __cdecl * LineCallback_T)(void * context,
const char * sName,
bool bState,
EError error,
const char * pErrorMsg);
typedef void ( __stdcall * StdLineCallback_T)(void * context,
const char * sName,
bool bState,
EError error,
const char * pErrorMsg);
typedef void ( __cdecl * PacketRxCallback_T)(void * context,
unsigned int uCount,
unsigned char * pData,
EError error,
const char * pErrorMsg);
// Added by Chenchu
typedef CCdciApi * (*InitializeFunc) ();
typedef EError (*UninitializeFunc) (CCdciApi * ulHandle);
typedef CCdciStreamInterface * (*CdciStream_CreateByCdciTypeFunc)(int iConnectionType);
typedef EError (*CDCI_CreateByCdciTypeFunc)(int iConnectionType, CCdciApi ** ppCDCIApi);
typedef void (*CdciStream_DestroyFunc)(CCdciStreamInterface *pMpcUsb);
typedef CCdciApi * (*CreateFromStreamFunc)(CCdciStreamInterface * pStream);
typedef void (*CDCI_DestroyFunc)(CCdciApi * pCDCIApi);
typedef EError (*ConnectFunc) (CCdciApi * ulHandle);
typedef EError (*DisconnectFunc) (CCdciApi * ulHandle);
typedef EError (*CreateBySerialNumberFunc) (const char * sSerialNumber, CCdciApi *&ulHandle);
typedef bool(*IsConnectedFunc)(CCdciApi * pCDCIApi);
typedef EError (*ConfigI2CRegExFunc) (CCdciApi * ulHandle,
unsigned short target,
ERmiAddress RmiAddressingMode,
EPullups pull_ups,
EI2CSpeed i2cSpeed,
EAttention attn /* = ENone*/,
unsigned long dwTimeout /* = INFINITE*/);
typedef EError (*ConfigI2CRegFunc) (CCdciApi * ulHandle,
unsigned short target,
bool pull_ups,
EI2CSpeed i2cSpeed,
EAttention attn /* = ENone*/,
unsigned long dwTimeout /* = INFINITE*/);
typedef EError (*ConfigSPIRegFunc) (CCdciApi * ulHandle,
unsigned short target,
ERmiAddress addressing_mode,
EModuleMode module_mode,
EPullups pull_ups,
ESlaveSelect slave_select,
unsigned int byte_delay,
unsigned int bit_rate,
unsigned int spi_mode,
EAttention attn /* = ENone*/,
unsigned long dwTimeout /* = INFINITE*/);
typedef EError (*ConfigPS2Func) (CCdciApi * ulHandle,
unsigned short target,
bool resend_enable,
unsigned long dwTimeout /* = INFINITE*/);
typedef EError (*PowerOnVoltageFunc) (CCdciApi * ulHandle,
unsigned short target,
unsigned int vdd_millivolts,
unsigned int vdevpullup_millivolts,
unsigned int vled_millivolts,
unsigned long dwTimeout /* = INFINITE*/);
typedef EError (*PowerOffFunc) (CCdciApi * ulHandle,
unsigned short target,
unsigned long dwTimeout/*= INFINITE*/);
//Write and Read via handle
typedef EError (*WriteRegister8DataFunc) (CCdciApi * ulHandle,
unsigned short target,
unsigned short uBusAddress,
ERmiAddress RmiAddressingMode,
unsigned short uRmiAddress,
unsigned char * data,
unsigned int length,
unsigned int &lengthWritten,
unsigned long dwTimeout );
typedef EError (*ReadRegister8DataFunc) (CCdciApi * ulHandle,
unsigned short target,
unsigned short uBusAddress, //i2c address
ERmiAddress RmiAddressingMode,
unsigned short uRmiAddress, //register address
unsigned char * data,
unsigned int length,
unsigned int &lengthRead,
unsigned long dwTimeout /* = INFINITE*/);
typedef EError (*PacketSetRxCallbackFunc) (CCdciApi * ulHandle,
PacketRxCallback_T,
void * context);
typedef EError (*PacketTxFunc) (CCdciApi * ulHandle,
unsigned short target,
unsigned char * pData,
unsigned int uCount,
unsigned long dwTimeout /*= INFINITE*/ );
typedef EError (*Line_SetCallbackFunc) (CCdciApi * ulHandle,
StdLineCallback_T,
void * context);
typedef void (*GetLastErrorMsgStringFunc)(CCdciApi * pCDCIApi, char *strValue);
typedef ICdciRmiTransaction * (*RmiTransactionNewFunc) (CCdciApi * pCDCIApi);
typedef void (*RmiTransactionDeleteFunc) (CCdciApi * pCDCIApi, ICdciRmiTransaction * pTrans);
typedef EError (*GetControllerInfoFunc)(CCdciApi * pCDCIApi, unsigned short &Id, //! Controller ID
unsigned int &FWVersionMajor, //! Controller Major Version
unsigned int &FWVersionMinor, //! Controller Minor Version
unsigned int &CDCIVersionMajor, //! CDCI Major Version
unsigned int &CDCIVersionMinor, //! CDCI Minor Version
char *strInfo,
unsigned int &uBoardNumber,
unsigned int &uSerialNumber);
//! Configures a controller for Rmi over SMBus communication
typedef EError (*ConfigRmiOverSMBusFunc) (CCdciApi * ulHandle,
unsigned short target,
EPullups Pullups,
EI2CSpeed i2cSpeed,
DWORD dwTimeout /*= INFINITE*/);
typedef EError (*ConfigHidOverI2CFunc) (CCdciApi * pCDCIApi,
unsigned short target,
ERmiAddress rmiAddressingMode,
EPullups pullups,
EPullups attnPullups,
EI2CSpeed i2cSpeed,
EAttention attn/* = EAttnNone*/,
DWORD dwTimeout/* = INFINITE*/);
typedef EError (*ConfigHidOverUsbFunc) (CCdciApi * pCDCIApi,
EAttention attn,
DWORD dwTimeout);
typedef EError (*ConfigRmiOverSMBusAddressFunc) ( CCdciApi * ulHandle,
unsigned short target,
EPullups Pullups,
EI2CSpeed i2cSpeed,
unsigned short i2cHostAddress,
DWORD dwTimeout /*= INFINITE*/);
typedef EError (*ConfigRmiNativeFunc) ( CCdciApi * ulHandle,
unsigned short target,
EAttention attn,
DWORD dwTimeout /*= INFINITE*/);
typedef EError (*CreateByCdciTypeFunc) (int iConnectionType, CCdciApi ** ppCDCIApi);
typedef EError (*SetStreamOptionFunc) (CCdciApi * ulHandle,
int iOptionID,
const char * psValue);
typedef EError (*SetTargetOptionAsUInteger32Func) ( CCdciApi * ulHandle,
unsigned short target,
int iOption,
unsigned int uValue,
DWORD dwTimeout /* = INFINITE*/);
//! constructor for CdciApi
// By creating a Cdci object, a connection over USB to the MC02 controller is created
bool ControlBridgeRMI(bool bLoadCdciApi);
void Line_FlushAttention();
bool Line_AttentionIsAsserted();
EError Line_WaitForAttentionAsserted(DWORD dwMilliseconds);
EError Line_WaitForAttentionDeasserted(DWORD dwMilliseconds);
EError Line_WaitForAttention(DWORD dwMilliseconds);
void UnloadLibrary();
const int DefaultTimeout = 3000; // In milliseconds
const unsigned short DefaultTarget = 0;
#endif
EXTERN HMODULE g_hDll;
EXTERN HANDLE g_hMutex; //FIXME //mutex for creating stream by serialnumber when multi-threads
EXTERN HANDLE g_hLoadHandleMutex;
EXTERN HANDLE m_hAttenEvent;
#ifndef REFLASH_DLL
EXTERN int g_DllCount;
#endif
EXTERN CdciStream_CreateByCdciTypeFunc g_CdciStream_CreateByCdciType;
EXTERN CDCI_CreateByCdciTypeFunc g_CdciCreateByCdciType;
EXTERN CdciStream_DestroyFunc g_CdciStream_Destroy;
EXTERN CreateFromStreamFunc CreateFromStream;
EXTERN CDCI_DestroyFunc Destroy;
EXTERN InitializeFunc InitializeDevice;
EXTERN UninitializeFunc UninitializeDevice;
EXTERN ConnectFunc ConnectDevice;
EXTERN DisconnectFunc DisconnectDevice;
EXTERN IsConnectedFunc IsConnected;
EXTERN CreateBySerialNumberFunc CreateBySerialNumber;
EXTERN ConfigI2CRegExFunc ConfigI2CReg;
EXTERN ConfigSPIRegFunc ConfigSPIReg;
EXTERN ConfigPS2Func ConfigPS2;
EXTERN PowerOnVoltageFunc PowerOnDevice;
EXTERN PowerOffFunc PowerOffDevice;
EXTERN WriteRegister8DataFunc WriteRegister8;
EXTERN ReadRegister8DataFunc ReadRegister8;
EXTERN PacketSetRxCallbackFunc PacketSetRxCallback;
EXTERN PacketTxFunc PacketTx;
EXTERN Line_SetCallbackFunc Line_SetCallback;
EXTERN RmiTransactionNewFunc RmiTransactionNew;
EXTERN RmiTransactionDeleteFunc RmiTransactionDelete;
EXTERN GetLastErrorMsgStringFunc GetLastErrorMsgString;
EXTERN PFNCDCI_GetDllVersion GetCDCIApiDllVersion;
EXTERN ConfigRmiOverSMBusFunc ConfigRmiOverSMBus;
EXTERN GetControllerInfoFunc GetControllerInfo;
EXTERN ConfigRmiNativeFunc ConfigRmiNative;
EXTERN CreateByCdciTypeFunc CreateByCdciType;
EXTERN SetStreamOptionFunc SetStreamOption;
EXTERN SetTargetOptionAsUInteger32Func SetTargetOption;
EXTERN ConfigHidOverI2CFunc ConfigHidOverI2C;
EXTERN ConfigHidOverUsbFunc ConfigHidOverUsb;
#ifdef _cplusplus
}
#endif
|