]> rtime.felk.cvut.cz Git - mf6xx.git/blob - src/hudaqlib/hudaq_int_common.h
QEMU mf624.c formatted to make QEMU checkpatch.pl mostly happy.
[mf6xx.git] / src / hudaqlib / hudaq_int_common.h
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
8 \r
9 #ifndef _HUDAQ_INT_COMMON_H__\r
10 #define _HUDAQ_INT_COMMON_H__\r
11 \r
12 \r
13 \r
14 /** Common header for all internal structures. */\r
15 typedef struct\r
16 {\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
24 } UserDataHeader;\r
25 \r
26 \r
27 typedef int (TInitDev)\r
28         (DeviceRecord *DevRecord, int IniOptions);\r
29 typedef void (TDoneDev)\r
30         (DeviceRecord *DevRecord);\r
31 \r
32 typedef int (THudaqXXRead)\r
33         (const DeviceRecord *DevRecord, unsigned channel);\r
34 \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
39 \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
48 \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
53 \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
58 \r
59 typedef double (THudaqGetParameter)\r
60         (const DeviceRecord *DevRecord, unsigned channel, HudaqParameter param);\r
61 \r
62 typedef HUDAQSTATUS (THudaqSetParameter)\r
63         (const DeviceRecord *DevRecord, unsigned channel, HudaqParameter param, double value);\r
64 \r
65 typedef const HudaqRange *(THudaqQueryRange)\r
66         (const DeviceRecord *DevRecord, HudaqSubsystem S, unsigned item);\r
67 \r
68 typedef  HUDAQSTATUS (THudaqStepWrite)\r
69         (const DeviceRecord *DevRecord, unsigned channel, int position);\r
70 \r
71 typedef HUDAQSTATUS (THudaqPWMWrite)\r
72         (const DeviceRecord *DevRecord, unsigned channel, double frequency, double dutycycle);\r
73 \r
74 typedef HUDAQSTATUS (THudaqReset)\r
75         (const DeviceRecord *DevRecord, unsigned channel);\r
76 \r
77 typedef HUDAQSTATUS (TPWMWriteMultiphase)\r
78         (const DeviceRecord *DevRecord, unsigned channel, unsigned phasenum, const unsigned *phases, double frequency, const double *dutys);\r
79 \r
80 typedef HUDAQSTATUS (TPWM3Write)\r
81         (const DeviceRecord *DevRecord, unsigned channel, double frequency, double duty1f, double duty2f, double duty3f);\r
82 \r
83 \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
86           instead. */\r
87         typedef struct CallTable\r
88 {\r
89         const char *DeviceString;\r
90         unsigned DeviceId, VendorId;\r
91 \r
92         TInitDev *HudaqInit;\r
93         TDoneDev *HudaqDone;\r
94 \r
95         THudaqSetParameter *HudaqSetParameter;\r
96         THudaqGetParameter *HudaqGetParameter;\r
97         THudaqQueryRange *HudaqQueryRange;\r
98 \r
99         THudaqXXRead *HudaqDIRead;\r
100         THudaqDIReadBit *HudaqDIReadBit;\r
101         THudaqDIReadMultiple *HudaqDIReadMultiple;\r
102 \r
103         THudaqDOWrite *HudaqDOWrite;\r
104         THudaqDOWriteBit *HudaqDOWriteBit;\r
105         THudaqDOWriteMultipleBits *HudaqDOWriteMultipleBits;\r
106         THudaqDOWriteMultiple *HudaqDOWriteMultiple;\r
107 \r
108         THudaqAIRead *HudaqAIRead;\r
109         THudaqAIReadMultiple *HudaqAIReadMultiple;\r
110 \r
111         THudaqAOWrite *HudaqAOWrite;\r
112         THudaqAOWriteMultiple *HudaqAOWriteMultiple;\r
113 \r
114         THudaqXXRead *HudaqEncRead;\r
115         THudaqReset  *HudaqEncReset;\r
116 \r
117         THudaqXXRead *HudaqCtrRead;\r
118         THudaqReset  *HudaqCtrReset;\r
119 \r
120         THudaqPWMWrite *HudaqPWMWrite;\r
121         TPWMWriteMultiphase *HudaqPWMWriteMultiphase;\r
122         TPWM3Write   *HudaqPWM3Write;\r
123 \r
124         THudaqStepWrite *HudaqStepWrite;\r
125 } CallTable;\r
126 \r
127 extern const CallTable CtDummy;\r
128 extern const CallTable CT612;     ///< AD612 resources\r
129 extern const CallTable CT614;     ///< MF614 resources\r
130 \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
134 \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
138 \r
139 \r
140 /** Obtain DeviceRecord from Hudaq handle. */\r
141 #define HudaqGetDeviceRecord(handle) ((DeviceRecord *)(handle))\r
142 \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
147 \r
148 \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
151 \r
152 \r
153 #ifdef _MSC_VER\r
154 #pragma warning(disable:4273) /* disable the "inconsistent DLL linkage" warning */\r
155 #endif //_MSC_VER\r
156 \r
157 \r
158 #endif  //_HUDAQ_INT_COMMON_H__\r