13 #ifndef __okFrontPanelDLL_h__
14 #define __okFrontPanelDLL_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;
33 #if defined(FRONTPANELDLL_EXPORTS)
34 #define okDLLEXPORT __declspec(dllexport)
35 #define DLL_ENTRY __stdcall
38 #define DLL_ENTRY __stdcall
40 #elif defined(__linux__) || defined(__APPLE__)
46 typedef void (* DLL_EP)(void);
53 typedef void* okPLL22150_HANDLE;
54 typedef void* okPLL22393_HANDLE;
55 typedef void* okFrontPanel_HANDLE;
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.
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;
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;
104 ok_brdXEM6110LX45 = 11,
105 ok_brdXEM6110LX150 = 15,
107 ok_brdXEM6010LX45 = 13,
108 ok_brdXEM6010LX150 = 14
116 ok_TransferError = -4,
117 ok_CommunicationError = -5,
118 ok_InvalidBitstream = -6,
120 ok_DeviceNotOpen = -8,
121 ok_InvalidEndpoint = -9,
122 ok_InvalidBlockSize = -10,
123 ok_I2CRestrictedAddress = -11,
124 ok_I2CBitError = -12,
126 ok_I2CUnknownStatus = -14,
127 ok_UnsupportedFeature = -15,
128 ok_FIFOUnderflow = -16,
129 ok_FIFOOverflow = -17,
130 ok_DataAlignmentError = -18
136 #ifndef FRONTPANELDLL_EXPORTS
137 Bool okFrontPanelDLL_LoadLib(
const char *libname);
138 void okFrontPanelDLL_FreeLib(
void);
144 okDLLEXPORT
void DLL_ENTRY okFrontPanelDLL_GetVersion(
char *date,
char *time);
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);
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);
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);
251 #if !defined(FRONTPANELDLL_EXPORTS)
272 bool to_bool(Bool x);
273 Bool from_bool(
bool x);
276 void SetCrystalLoad(
double capload);
277 void SetReference(
double freq,
bool extosc);
278 double GetReference();
279 bool SetVCOParameters(
int p,
int q);
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);
314 bool to_bool(Bool x);
315 Bool from_bool(
bool x);
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);
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);
344 okFrontPanel_HANDLE h;
369 CommunicationError = -5,
370 InvalidBitstream = -6,
373 InvalidEndpoint = -9,
374 InvalidBlockSize = -10,
375 I2CRestrictedAddress = -11,
378 I2CUnknownStatus = -14,
379 UnsupportedFeature = -15
382 bool to_bool(Bool x);
383 Bool from_bool(
bool x);
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 =
"");
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();
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);
435 #endif // !defined(FRONTPANELDLL_EXPORTS)
438 #endif // __cplusplus
440 #endif // __okFrontPanelDLL_h__