1 /****************************************************************/
\r
2 /**@file hudaq_internal.h:
\r
3 * Description: Internal hudaq header with private information. *
\r
4 * Dependency: Linux or Windows 32 and Windows 64 *
\r
5 * Copyright 2006-2007 Humusoft s.r.o. *
\r
6 * Copyright 2009 J.Fojtik *
\r
7 ****************************************************************/
\r
9 #ifndef _HUDAQ_INT_COMMON_H__
\r
10 #define _HUDAQ_INT_COMMON_H__
\r
14 /** Common header for all internal structures. */
\r
17 unsigned HudaqlibVersion;
\r
18 unsigned IRQcounter;
\r
19 unsigned IRQpendingFlag;
\r
20 //DWORD BoardUsers[16]; ///< this value signalises whether there is any other
\r
21 /// application that currently uses given hardware.
\r
22 /// == 0 NO, the hardware should be reinitialised
\r
23 /// != 0 Check GetExitCodeProcess()== STILL_ACTIVE
\r
27 typedef int (TInitDev)
\r
28 (DeviceRecord *DevRecord, int IniOptions);
\r
29 typedef void (TDoneDev)
\r
30 (DeviceRecord *DevRecord);
\r
32 typedef int (THudaqXXRead)
\r
33 (const DeviceRecord *DevRecord, unsigned channel);
\r
35 typedef HUDAQSTATUS (THudaqDIReadMultiple)
\r
36 (const DeviceRecord *DevRecord, unsigned number, const unsigned* channels, unsigned* values);
\r
37 typedef int (THudaqDIReadBit)
\r
38 (const DeviceRecord *DevRecord, unsigned channel, unsigned bit);
\r
40 typedef HUDAQSTATUS (THudaqDOWrite)
\r
41 (const DeviceRecord *DevRecord, unsigned channel, unsigned value);
\r
42 typedef void (THudaqDOWriteBit)
\r
43 (const DeviceRecord *DevRecord, unsigned channel, unsigned bit, int value);
\r
44 typedef void (THudaqDOWriteMultipleBits)
\r
45 (const DeviceRecord *DevRecord, unsigned channel, unsigned mask, unsigned value);
\r
46 typedef HUDAQSTATUS (THudaqDOWriteMultiple)
\r
47 (const DeviceRecord *DevRecord, unsigned number, const unsigned* channels, const unsigned* values);
\r
49 typedef double (THudaqAIRead)
\r
50 (const DeviceRecord *DevRecord, unsigned channel);
\r
51 typedef HUDAQSTATUS (THudaqAIReadMultiple)
\r
52 (const DeviceRecord *DevRecord, unsigned number, const unsigned *channels, double *values);
\r
54 typedef void (THudaqAOWrite)
\r
55 (const DeviceRecord *DevRecord, unsigned channel, double value);
\r
56 typedef HUDAQSTATUS (THudaqAOWriteMultiple)
\r
57 (const DeviceRecord *DevRecord, unsigned number, const unsigned* channels, const double* values);
\r
59 typedef double (THudaqGetParameter)
\r
60 (const DeviceRecord *DevRecord, unsigned channel, HudaqParameter param);
\r
62 typedef HUDAQSTATUS (THudaqSetParameter)
\r
63 (const DeviceRecord *DevRecord, unsigned channel, HudaqParameter param, double value);
\r
65 typedef const HudaqRange *(THudaqQueryRange)
\r
66 (const DeviceRecord *DevRecord, HudaqSubsystem S, unsigned item);
\r
68 typedef HUDAQSTATUS (THudaqStepWrite)
\r
69 (const DeviceRecord *DevRecord, unsigned channel, int position);
\r
71 typedef HUDAQSTATUS (THudaqPWMWrite)
\r
72 (const DeviceRecord *DevRecord, unsigned channel, double frequency, double dutycycle);
\r
74 typedef HUDAQSTATUS (THudaqReset)
\r
75 (const DeviceRecord *DevRecord, unsigned channel);
\r
77 typedef HUDAQSTATUS (TPWMWriteMultiphase)
\r
78 (const DeviceRecord *DevRecord, unsigned channel, unsigned phasenum, const unsigned *phases, double frequency, const double *dutys);
\r
80 typedef HUDAQSTATUS (TPWM3Write)
\r
81 (const DeviceRecord *DevRecord, unsigned channel, double frequency, double duty1f, double duty2f, double duty3f);
\r
84 /** Call table of HUDAQ API
\r
85 This table should not contain NULL inside any field. Please use empty caller from generic.c
\r
87 typedef struct CallTable
\r
89 const char *DeviceString;
\r
90 unsigned DeviceId, VendorId;
\r
92 TInitDev *HudaqInit;
\r
93 TDoneDev *HudaqDone;
\r
95 THudaqSetParameter *HudaqSetParameter;
\r
96 THudaqGetParameter *HudaqGetParameter;
\r
97 THudaqQueryRange *HudaqQueryRange;
\r
99 THudaqXXRead *HudaqDIRead;
\r
100 THudaqDIReadBit *HudaqDIReadBit;
\r
101 THudaqDIReadMultiple *HudaqDIReadMultiple;
\r
103 THudaqDOWrite *HudaqDOWrite;
\r
104 THudaqDOWriteBit *HudaqDOWriteBit;
\r
105 THudaqDOWriteMultipleBits *HudaqDOWriteMultipleBits;
\r
106 THudaqDOWriteMultiple *HudaqDOWriteMultiple;
\r
108 THudaqAIRead *HudaqAIRead;
\r
109 THudaqAIReadMultiple *HudaqAIReadMultiple;
\r
111 THudaqAOWrite *HudaqAOWrite;
\r
112 THudaqAOWriteMultiple *HudaqAOWriteMultiple;
\r
114 THudaqXXRead *HudaqEncRead;
\r
115 THudaqReset *HudaqEncReset;
\r
117 THudaqXXRead *HudaqCtrRead;
\r
118 THudaqReset *HudaqCtrReset;
\r
120 THudaqPWMWrite *HudaqPWMWrite;
\r
121 TPWMWriteMultiphase *HudaqPWMWriteMultiphase;
\r
122 TPWM3Write *HudaqPWM3Write;
\r
124 THudaqStepWrite *HudaqStepWrite;
\r
127 extern const CallTable CtDummy;
\r
128 extern const CallTable CT612; ///< AD612 resources
\r
129 extern const CallTable CT614; ///< MF614 resources
\r
131 extern const CallTable CT622; ///< AD622 resources
\r
132 extern const CallTable CT624; ///< MF624 resources
\r
133 extern const CallTable CT625; ///< MF625 resources
\r
135 extern const CallTable CTPCI1753; ///< PCI1753 Advantech
\r
136 extern const CallTable CTPCD7004; ///< PCD7004 TEDIA
\r
137 extern const CallTable CTPCT7303; ///< PCT7303 TEDIA
\r
140 /** Obtain DeviceRecord from Hudaq handle. */
\r
141 #define HudaqGetDeviceRecord(handle) ((DeviceRecord *)(handle))
\r
143 int GenericDIReadBit(const DeviceRecord *DevRecord, unsigned channel, unsigned bit);
\r
144 HUDAQSTATUS GenericAIReadMultiple(const DeviceRecord *DevRecord, unsigned number, const unsigned *channels, double *values);
\r
145 HUDAQSTATUS GenericDOWriteMultiple(const DeviceRecord *DevRecord, unsigned number, const unsigned* channels, const unsigned* values);
\r
146 HUDAQSTATUS GenericOneDIReadMultiple(const DeviceRecord *DevRecord, unsigned number, const unsigned* channels, unsigned* values);
\r
149 #define UNDEFINED_VALUE 0 ///< result of conversion when something goes bad
\r
150 #define WRONG_VALUE 0 ///< when GetParameter cannot read, return this value
\r
154 #pragma warning(disable:4273) /* disable the "inconsistent DLL linkage" warning */
\r
158 #endif //_HUDAQ_INT_COMMON_H__
\r