Open Ephys GUI
 All Classes Functions Variables Pages
okFrontPanelDLL.h
1 ///------------------------------------------------------------------------
2 // okFrontPanelDLL.h
3 //
4 // This is the header file for C/C++ compilation of the FrontPanel DLL
5 // import library. This file must be included within any C/C++ source
6 // which references the FrontPanel DLL methods.
7 //
8 //------------------------------------------------------------------------
9 // Copyright (c) 2005-2010 Opal Kelly Incorporated
10 // $Rev: 925 $ $Date: 2011-02-25 17:09:05 -0800 (Fri, 25 Feb 2011) $
11 //------------------------------------------------------------------------
12 
13 #ifndef __okFrontPanelDLL_h__
14 #define __okFrontPanelDLL_h__
15 
16 #if defined(_WIN32)
17  #include <windows.h>
18 #elif defined(__APPLE__)
19  typedef unsigned char UINT8;
20  typedef unsigned short UINT16;
21  typedef unsigned int UINT32;
22 #elif defined(__linux__)
23  typedef unsigned char UINT8;
24  typedef unsigned short UINT16;
25  typedef unsigned int UINT32;
26 #endif
27 
28 // The following ifdef block is the standard way of creating macros which make exporting
29 // from a DLL simpler. All files within this DLL are compiled with the FRONTPANELDLL_EXPORTS
30 // symbol defined on the command line. This symbol should not be defined on any project
31 // that uses this DLL.
32 #if defined(_WIN32)
33  #if defined(FRONTPANELDLL_EXPORTS)
34  #define okDLLEXPORT __declspec(dllexport)
35  #define DLL_ENTRY __stdcall
36  #else
37  #define okDLLEXPORT
38  #define DLL_ENTRY __stdcall
39  #endif
40 #elif defined(__linux__) || defined(__APPLE__)
41  #define okDLLEXPORT
42  #define DLL_ENTRY
43 #endif
44 
45 
46 typedef void (* DLL_EP)(void);
47 
48 #ifdef __cplusplus
49 #include <string>
50 extern "C" {
51 #endif // __cplusplus
52 
53 typedef void* okPLL22150_HANDLE;
54 typedef void* okPLL22393_HANDLE;
55 typedef void* okFrontPanel_HANDLE;
56 typedef int Bool;
57 
58 #define MAX_SERIALNUMBER_LENGTH 10 // 10 characters + Does NOT include termination NULL.
59 #define MAX_DEVICEID_LENGTH 32 // 32 characters + Does NOT include termination NULL.
60 #define MAX_BOARDMODELSTRING_LENGTH 64 // 64 characters including termination NULL.
61 
62 #ifndef TRUE
63  #define TRUE 1
64  #define FALSE 0
65 #endif
66 
67 typedef enum {
68  ok_ClkSrc22150_Ref=0,
69  ok_ClkSrc22150_Div1ByN=1,
70  ok_ClkSrc22150_Div1By2=2,
71  ok_ClkSrc22150_Div1By3=3,
72  ok_ClkSrc22150_Div2ByN=4,
73  ok_ClkSrc22150_Div2By2=5,
74  ok_ClkSrc22150_Div2By4=6
75 } ok_ClockSource_22150;
76 
77 typedef enum {
78  ok_ClkSrc22393_Ref=0,
79  ok_ClkSrc22393_PLL0_0=2,
80  ok_ClkSrc22393_PLL0_180=3,
81  ok_ClkSrc22393_PLL1_0=4,
82  ok_ClkSrc22393_PLL1_180=5,
83  ok_ClkSrc22393_PLL2_0=6,
84  ok_ClkSrc22393_PLL2_180=7
85 } ok_ClockSource_22393;
86 
87 typedef enum {
88  ok_DivSrc_Ref = 0,
89  ok_DivSrc_VCO = 1
90 } ok_DividerSource;
91 
92 typedef enum {
93  ok_brdUnknown = 0,
94  ok_brdXEM3001v1 = 1,
95  ok_brdXEM3001v2 = 2,
96  ok_brdXEM3010 = 3,
97  ok_brdXEM3005 = 4,
98  ok_brdXEM3001CL = 5,
99  ok_brdXEM3020 = 6,
100  ok_brdXEM3050 = 7,
101  ok_brdXEM9002 = 8,
102  ok_brdXEM3001RB = 9,
103  ok_brdXEM5010 = 10,
104  ok_brdXEM6110LX45 = 11,
105  ok_brdXEM6110LX150 = 15,
106  ok_brdXEM6001 = 12,
107  ok_brdXEM6010LX45 = 13,
108  ok_brdXEM6010LX150 = 14
109 } ok_BoardModel;
110 
111 typedef enum {
112  ok_NoError = 0,
113  ok_Failed = -1,
114  ok_Timeout = -2,
115  ok_DoneNotHigh = -3,
116  ok_TransferError = -4,
117  ok_CommunicationError = -5,
118  ok_InvalidBitstream = -6,
119  ok_FileError = -7,
120  ok_DeviceNotOpen = -8,
121  ok_InvalidEndpoint = -9,
122  ok_InvalidBlockSize = -10,
123  ok_I2CRestrictedAddress = -11,
124  ok_I2CBitError = -12,
125  ok_I2CNack = -13,
126  ok_I2CUnknownStatus = -14,
127  ok_UnsupportedFeature = -15,
128  ok_FIFOUnderflow = -16,
129  ok_FIFOOverflow = -17,
130  ok_DataAlignmentError = -18
131 } ok_ErrorCode;
132 
133 //
134 // Define the LoadLib and FreeLib methods for the IMPORT side.
135 //
136 #ifndef FRONTPANELDLL_EXPORTS
137  Bool okFrontPanelDLL_LoadLib(const char *libname);
138  void okFrontPanelDLL_FreeLib(void);
139 #endif
140 
141 //
142 // General
143 //
144 okDLLEXPORT void DLL_ENTRY okFrontPanelDLL_GetVersion(char *date, char *time);
145 
146 //
147 // okPLL22393
148 //
149 okDLLEXPORT okPLL22393_HANDLE DLL_ENTRY okPLL22393_Construct();
150 okDLLEXPORT void DLL_ENTRY okPLL22393_Destruct(okPLL22393_HANDLE pll);
151 okDLLEXPORT void DLL_ENTRY okPLL22393_SetCrystalLoad(okPLL22393_HANDLE pll, double capload);
152 okDLLEXPORT void DLL_ENTRY okPLL22393_SetReference(okPLL22393_HANDLE pll, double freq);
153 okDLLEXPORT double DLL_ENTRY okPLL22393_GetReference(okPLL22393_HANDLE pll);
154 okDLLEXPORT Bool DLL_ENTRY okPLL22393_SetPLLParameters(okPLL22393_HANDLE pll, int n, int p, int q, Bool enable);
155 okDLLEXPORT Bool DLL_ENTRY okPLL22393_SetPLLLF(okPLL22393_HANDLE pll, int n, int lf);
156 okDLLEXPORT Bool DLL_ENTRY okPLL22393_SetOutputDivider(okPLL22393_HANDLE pll, int n, int div);
157 okDLLEXPORT Bool DLL_ENTRY okPLL22393_SetOutputSource(okPLL22393_HANDLE pll, int n, ok_ClockSource_22393 clksrc);
158 okDLLEXPORT void DLL_ENTRY okPLL22393_SetOutputEnable(okPLL22393_HANDLE pll, int n, Bool enable);
159 okDLLEXPORT int DLL_ENTRY okPLL22393_GetPLLP(okPLL22393_HANDLE pll, int n);
160 okDLLEXPORT int DLL_ENTRY okPLL22393_GetPLLQ(okPLL22393_HANDLE pll, int n);
161 okDLLEXPORT double DLL_ENTRY okPLL22393_GetPLLFrequency(okPLL22393_HANDLE pll, int n);
162 okDLLEXPORT int DLL_ENTRY okPLL22393_GetOutputDivider(okPLL22393_HANDLE pll, int n);
163 okDLLEXPORT ok_ClockSource_22393 DLL_ENTRY okPLL22393_GetOutputSource(okPLL22393_HANDLE pll, int n);
164 okDLLEXPORT double DLL_ENTRY okPLL22393_GetOutputFrequency(okPLL22393_HANDLE pll, int n);
165 okDLLEXPORT Bool DLL_ENTRY okPLL22393_IsOutputEnabled(okPLL22393_HANDLE pll, int n);
166 okDLLEXPORT Bool DLL_ENTRY okPLL22393_IsPLLEnabled(okPLL22393_HANDLE pll, int n);
167 okDLLEXPORT void DLL_ENTRY okPLL22393_InitFromProgrammingInfo(okPLL22393_HANDLE pll, unsigned char *buf);
168 okDLLEXPORT void DLL_ENTRY okPLL22393_GetProgrammingInfo(okPLL22393_HANDLE pll, unsigned char *buf);
169 
170 
171 //
172 // okPLL22150
173 //
174 okDLLEXPORT okPLL22150_HANDLE DLL_ENTRY okPLL22150_Construct();
175 okDLLEXPORT void DLL_ENTRY okPLL22150_Destruct(okPLL22150_HANDLE pll);
176 okDLLEXPORT void DLL_ENTRY okPLL22150_SetCrystalLoad(okPLL22150_HANDLE pll, double capload);
177 okDLLEXPORT void DLL_ENTRY okPLL22150_SetReference(okPLL22150_HANDLE pll, double freq, Bool extosc);
178 okDLLEXPORT double DLL_ENTRY okPLL22150_GetReference(okPLL22150_HANDLE pll);
179 okDLLEXPORT Bool DLL_ENTRY okPLL22150_SetVCOParameters(okPLL22150_HANDLE pll, int p, int q);
180 okDLLEXPORT int DLL_ENTRY okPLL22150_GetVCOP(okPLL22150_HANDLE pll);
181 okDLLEXPORT int DLL_ENTRY okPLL22150_GetVCOQ(okPLL22150_HANDLE pll);
182 okDLLEXPORT double DLL_ENTRY okPLL22150_GetVCOFrequency(okPLL22150_HANDLE pll);
183 okDLLEXPORT void DLL_ENTRY okPLL22150_SetDiv1(okPLL22150_HANDLE pll, ok_DividerSource divsrc, int n);
184 okDLLEXPORT void DLL_ENTRY okPLL22150_SetDiv2(okPLL22150_HANDLE pll, ok_DividerSource divsrc, int n);
185 okDLLEXPORT ok_DividerSource DLL_ENTRY okPLL22150_GetDiv1Source(okPLL22150_HANDLE pll);
186 okDLLEXPORT ok_DividerSource DLL_ENTRY okPLL22150_GetDiv2Source(okPLL22150_HANDLE pll);
187 okDLLEXPORT int DLL_ENTRY okPLL22150_GetDiv1Divider(okPLL22150_HANDLE pll);
188 okDLLEXPORT int DLL_ENTRY okPLL22150_GetDiv2Divider(okPLL22150_HANDLE pll);
189 okDLLEXPORT void DLL_ENTRY okPLL22150_SetOutputSource(okPLL22150_HANDLE pll, int output, ok_ClockSource_22150 clksrc);
190 okDLLEXPORT void DLL_ENTRY okPLL22150_SetOutputEnable(okPLL22150_HANDLE pll, int output, Bool enable);
191 okDLLEXPORT ok_ClockSource_22150 DLL_ENTRY okPLL22150_GetOutputSource(okPLL22150_HANDLE pll, int output);
192 okDLLEXPORT double DLL_ENTRY okPLL22150_GetOutputFrequency(okPLL22150_HANDLE pll, int output);
193 okDLLEXPORT Bool DLL_ENTRY okPLL22150_IsOutputEnabled(okPLL22150_HANDLE pll, int output);
194 okDLLEXPORT void DLL_ENTRY okPLL22150_InitFromProgrammingInfo(okPLL22150_HANDLE pll, unsigned char *buf);
195 okDLLEXPORT void DLL_ENTRY okPLL22150_GetProgrammingInfo(okPLL22150_HANDLE pll, unsigned char *buf);
196 
197 
198 //
199 // okFrontPanel
200 //
201 okDLLEXPORT okFrontPanel_HANDLE DLL_ENTRY okFrontPanel_Construct();
202 okDLLEXPORT void DLL_ENTRY okFrontPanel_Destruct(okFrontPanel_HANDLE hnd);
203 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_WriteI2C(okFrontPanel_HANDLE hnd, const int addr, int length, unsigned char *data);
204 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_ReadI2C(okFrontPanel_HANDLE hnd, const int addr, int length, unsigned char *data);
205 okDLLEXPORT int DLL_ENTRY okFrontPanel_GetHostInterfaceWidth(okFrontPanel_HANDLE hnd);
206 okDLLEXPORT Bool DLL_ENTRY okFrontPanel_IsHighSpeed(okFrontPanel_HANDLE hnd);
207 okDLLEXPORT ok_BoardModel DLL_ENTRY okFrontPanel_GetBoardModel(okFrontPanel_HANDLE hnd);
208 okDLLEXPORT void DLL_ENTRY okFrontPanel_GetBoardModelString(okFrontPanel_HANDLE hnd, ok_BoardModel m, char *buf);
209 okDLLEXPORT int DLL_ENTRY okFrontPanel_GetDeviceCount(okFrontPanel_HANDLE hnd);
210 okDLLEXPORT ok_BoardModel DLL_ENTRY okFrontPanel_GetDeviceListModel(okFrontPanel_HANDLE hnd, int num);
211 okDLLEXPORT void DLL_ENTRY okFrontPanel_GetDeviceListSerial(okFrontPanel_HANDLE hnd, int num, char *buf);
212 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_OpenBySerial(okFrontPanel_HANDLE hnd, const char *serial);
213 okDLLEXPORT Bool DLL_ENTRY okFrontPanel_IsOpen(okFrontPanel_HANDLE hnd);
214 okDLLEXPORT void DLL_ENTRY okFrontPanel_EnableAsynchronousTransfers(okFrontPanel_HANDLE hnd, Bool enable);
215 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_SetBTPipePollingInterval(okFrontPanel_HANDLE hnd, int interval);
216 okDLLEXPORT void DLL_ENTRY okFrontPanel_SetTimeout(okFrontPanel_HANDLE hnd, int timeout);
217 okDLLEXPORT int DLL_ENTRY okFrontPanel_GetDeviceMajorVersion(okFrontPanel_HANDLE hnd);
218 okDLLEXPORT int DLL_ENTRY okFrontPanel_GetDeviceMinorVersion(okFrontPanel_HANDLE hnd);
219 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_ResetFPGA(okFrontPanel_HANDLE hnd);
220 okDLLEXPORT void DLL_ENTRY okFrontPanel_GetSerialNumber(okFrontPanel_HANDLE hnd, char *buf);
221 okDLLEXPORT void DLL_ENTRY okFrontPanel_GetDeviceID(okFrontPanel_HANDLE hnd, char *buf);
222 okDLLEXPORT void DLL_ENTRY okFrontPanel_SetDeviceID(okFrontPanel_HANDLE hnd, const char *strID);
223 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_ConfigureFPGA(okFrontPanel_HANDLE hnd, const char *strFilename);
224 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_ConfigureFPGAFromMemory(okFrontPanel_HANDLE hnd, unsigned char *data, unsigned long length);
225 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_GetPLL22150Configuration(okFrontPanel_HANDLE hnd, okPLL22150_HANDLE pll);
226 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_SetPLL22150Configuration(okFrontPanel_HANDLE hnd, okPLL22150_HANDLE pll);
227 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_GetEepromPLL22150Configuration(okFrontPanel_HANDLE hnd, okPLL22150_HANDLE pll);
228 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_SetEepromPLL22150Configuration(okFrontPanel_HANDLE hnd, okPLL22150_HANDLE pll);
229 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_GetPLL22393Configuration(okFrontPanel_HANDLE hnd, okPLL22393_HANDLE pll);
230 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_SetPLL22393Configuration(okFrontPanel_HANDLE hnd, okPLL22393_HANDLE pll);
231 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_GetEepromPLL22393Configuration(okFrontPanel_HANDLE hnd, okPLL22393_HANDLE pll);
232 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_SetEepromPLL22393Configuration(okFrontPanel_HANDLE hnd, okPLL22393_HANDLE pll);
233 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_LoadDefaultPLLConfiguration(okFrontPanel_HANDLE hnd);
234 okDLLEXPORT Bool DLL_ENTRY okFrontPanel_IsFrontPanelEnabled(okFrontPanel_HANDLE hnd);
235 okDLLEXPORT Bool DLL_ENTRY okFrontPanel_IsFrontPanel3Supported(okFrontPanel_HANDLE hnd);
236 okDLLEXPORT void DLL_ENTRY okFrontPanel_UpdateWireIns(okFrontPanel_HANDLE hnd);
237 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_SetWireInValue(okFrontPanel_HANDLE hnd, int ep, UINT32 val, UINT32 mask);
238 okDLLEXPORT void DLL_ENTRY okFrontPanel_UpdateWireOuts(okFrontPanel_HANDLE hnd);
239 okDLLEXPORT UINT32 DLL_ENTRY okFrontPanel_GetWireOutValue(okFrontPanel_HANDLE hnd, int epAddr);
240 okDLLEXPORT ok_ErrorCode DLL_ENTRY okFrontPanel_ActivateTriggerIn(okFrontPanel_HANDLE hnd, int epAddr, int bit);
241 okDLLEXPORT void DLL_ENTRY okFrontPanel_UpdateTriggerOuts(okFrontPanel_HANDLE hnd);
242 okDLLEXPORT Bool DLL_ENTRY okFrontPanel_IsTriggered(okFrontPanel_HANDLE hnd, int epAddr, UINT32 mask);
243 okDLLEXPORT long DLL_ENTRY okFrontPanel_GetLastTransferLength(okFrontPanel_HANDLE hnd);
244 okDLLEXPORT long DLL_ENTRY okFrontPanel_WriteToPipeIn(okFrontPanel_HANDLE hnd, int epAddr, long length, unsigned char *data);
245 okDLLEXPORT long DLL_ENTRY okFrontPanel_ReadFromPipeOut(okFrontPanel_HANDLE hnd, int epAddr, long length, unsigned char *data);
246 okDLLEXPORT long DLL_ENTRY okFrontPanel_WriteToBlockPipeIn(okFrontPanel_HANDLE hnd, int epAddr, int blockSize, long length, unsigned char *data);
247 okDLLEXPORT long DLL_ENTRY okFrontPanel_ReadFromBlockPipeOut(okFrontPanel_HANDLE hnd, int epAddr, int blockSize, long length, unsigned char *data);
248 
249 
250 #ifdef __cplusplus
251 #if !defined(FRONTPANELDLL_EXPORTS)
252 //------------------------------------------------------------------------
253 // okCPLL22150 C++ wrapper class
254 //------------------------------------------------------------------------
255 class okCPLL22150
256 {
257 public:
258  okPLL22150_HANDLE h;
259  enum ClockSource {
260  ClkSrc_Ref=0,
261  ClkSrc_Div1ByN=1,
262  ClkSrc_Div1By2=2,
263  ClkSrc_Div1By3=3,
264  ClkSrc_Div2ByN=4,
265  ClkSrc_Div2By2=5,
266  ClkSrc_Div2By4=6 };
267 
268  enum DividerSource {
269  DivSrc_Ref = 0,
270  DivSrc_VCO = 1 };
271 private:
272  bool to_bool(Bool x);
273  Bool from_bool(bool x);
274 public:
275  okCPLL22150();
276  void SetCrystalLoad(double capload);
277  void SetReference(double freq, bool extosc);
278  double GetReference();
279  bool SetVCOParameters(int p, int q);
280  int GetVCOP();
281  int GetVCOQ();
282  double GetVCOFrequency();
283  void SetDiv1(DividerSource divsrc, int n);
284  void SetDiv2(DividerSource divsrc, int n);
285  DividerSource GetDiv1Source();
286  DividerSource GetDiv2Source();
287  int GetDiv1Divider();
288  int GetDiv2Divider();
289  void SetOutputSource(int output, ClockSource clksrc);
290  void SetOutputEnable(int output, bool enable);
291  ClockSource GetOutputSource(int output);
292  double GetOutputFrequency(int output);
293  bool IsOutputEnabled(int output);
294  void InitFromProgrammingInfo(unsigned char *buf);
295  void GetProgrammingInfo(unsigned char *buf);
296 };
297 
298 //------------------------------------------------------------------------
299 // okCPLL22150 C++ wrapper class
300 //------------------------------------------------------------------------
301 class okCPLL22393
302 {
303 public:
304  okPLL22393_HANDLE h;
305  enum ClockSource {
306  ClkSrc_Ref=0,
307  ClkSrc_PLL0_0=2,
308  ClkSrc_PLL0_180=3,
309  ClkSrc_PLL1_0=4,
310  ClkSrc_PLL1_180=5,
311  ClkSrc_PLL2_0=6,
312  ClkSrc_PLL2_180=7 };
313 private:
314  bool to_bool(Bool x);
315  Bool from_bool(bool x);
316 public:
317  okCPLL22393();
318  void SetCrystalLoad(double capload);
319  void SetReference(double freq);
320  double GetReference();
321  bool SetPLLParameters(int n, int p, int q, bool enable=true);
322  bool SetPLLLF(int n, int lf);
323  bool SetOutputDivider(int n, int div);
324  bool SetOutputSource(int n, ClockSource clksrc);
325  void SetOutputEnable(int n, bool enable);
326  int GetPLLP(int n);
327  int GetPLLQ(int n);
328  double GetPLLFrequency(int n);
329  int GetOutputDivider(int n);
330  ClockSource GetOutputSource(int n);
331  double GetOutputFrequency(int n);
332  bool IsOutputEnabled(int n);
333  bool IsPLLEnabled(int n);
334  void InitFromProgrammingInfo(unsigned char *buf);
335  void GetProgrammingInfo(unsigned char *buf);
336 };
337 
338 //------------------------------------------------------------------------
339 // okCFrontPanel C++ wrapper class
340 //------------------------------------------------------------------------
341 class okCFrontPanel
342 {
343 public:
344  okFrontPanel_HANDLE h;
345  enum BoardModel {
346  brdUnknown=0,
347  brdXEM3001v1=1,
348  brdXEM3001v2=2,
349  brdXEM3010=3,
350  brdXEM3005=4,
351  brdXEM3001CL=5,
352  brdXEM3020=6,
353  brdXEM3050=7,
354  brdXEM9002=8,
355  brdXEM3001RB=9,
356  brdXEM5010=10,
357  brdXEM6110LX45=11,
358  brdXEM6110LX150=15,
359  brdXEM6001=12,
360  brdXEM6010LX45=13,
361  brdXEM6010LX150=14
362  };
363  enum ErrorCode {
364  NoError = 0,
365  Failed = -1,
366  Timeout = -2,
367  DoneNotHigh = -3,
368  TransferError = -4,
369  CommunicationError = -5,
370  InvalidBitstream = -6,
371  FileError = -7,
372  DeviceNotOpen = -8,
373  InvalidEndpoint = -9,
374  InvalidBlockSize = -10,
375  I2CRestrictedAddress = -11,
376  I2CBitError = -12,
377  I2CNack = -13,
378  I2CUnknownStatus = -14,
379  UnsupportedFeature = -15
380  };
381 private:
382  bool to_bool(Bool x);
383  Bool from_bool(bool x);
384 public:
385  okCFrontPanel();
386  ~okCFrontPanel();
387  int GetHostInterfaceWidth();
388  BoardModel GetBoardModel();
389  std::string GetBoardModelString(BoardModel m);
390  int GetDeviceCount();
391  BoardModel GetDeviceListModel(int num);
392  std::string GetDeviceListSerial(int num);
393  void EnableAsynchronousTransfers(bool enable);
394  ErrorCode OpenBySerial(std::string str = "");
395  bool IsOpen();
396  int GetDeviceMajorVersion();
397  int GetDeviceMinorVersion();
398  std::string GetSerialNumber();
399  std::string GetDeviceID();
400  void SetDeviceID(const std::string str);
401  ErrorCode SetBTPipePollingInterval(int interval);
402  void SetTimeout(int timeout);
403  ErrorCode ResetFPGA();
404  ErrorCode ConfigureFPGAFromMemory(unsigned char *data, const unsigned long length,
405  void(*callback)(int, int, void *) = NULL, void *arg = NULL);
406  ErrorCode ConfigureFPGA(const std::string strFilename,
407  void (*callback)(int, int, void *) = NULL, void *arg = NULL);
408  ErrorCode WriteI2C(const int addr, int length, unsigned char *data);
409  ErrorCode ReadI2C(const int addr, int length, unsigned char *data);
410  ErrorCode GetPLL22150Configuration(okCPLL22150& pll);
411  ErrorCode SetPLL22150Configuration(okCPLL22150& pll);
412  ErrorCode GetEepromPLL22150Configuration(okCPLL22150& pll);
413  ErrorCode SetEepromPLL22150Configuration(okCPLL22150& pll);
414  ErrorCode GetPLL22393Configuration(okCPLL22393& pll);
415  ErrorCode SetPLL22393Configuration(okCPLL22393& pll);
416  ErrorCode GetEepromPLL22393Configuration(okCPLL22393& pll);
417  ErrorCode SetEepromPLL22393Configuration(okCPLL22393& pll);
418  ErrorCode LoadDefaultPLLConfiguration();
419  bool IsHighSpeed();
420  bool IsFrontPanelEnabled();
421  bool IsFrontPanel3Supported();
422  void UpdateWireIns();
423  ErrorCode SetWireInValue(int ep, UINT32 val, UINT32 mask = 0xffffffff);
424  void UpdateWireOuts();
425  UINT32 GetWireOutValue(int epAddr);
426  ErrorCode ActivateTriggerIn(int epAddr, int bit);
427  void UpdateTriggerOuts();
428  bool IsTriggered(int epAddr, UINT32 mask);
429  long GetLastTransferLength();
430  long WriteToPipeIn(int epAddr, long length, unsigned char *data);
431  long ReadFromPipeOut(int epAddr, long length, unsigned char *data);
432  long WriteToBlockPipeIn(int epAddr, int blockSize, long length, unsigned char *data);
433  long ReadFromBlockPipeOut(int epAddr, int blockSize, long length, unsigned char *data);
434 };
435 #endif // !defined(FRONTPANELDLL_EXPORTS)
436 
437 }
438 #endif // __cplusplus
439 
440 #endif // __okFrontPanelDLL_h__