• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2005 Meilhaus Electronic GmbH (support@meilhaus.de)
3  *
4  * Source File : medriver.h
5  * Author      : GG (Guenter Gebhardt)  <g.gebhardt@meilhaus.de>
6  *  Author:	Krzysztof Gantzke	<k.gantzke@meilhaus.de>
7  */
8 
9 #ifndef _MEDRIVER_H_
10 #define _MEDRIVER_H_
11 
12 #include "metypes.h"
13 #include "meerror.h"
14 #include "medefines.h"
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 	/*===========================================================================
21 	  Functions to access the driver system
22 	  =========================================================================*/
23 
24 	int meOpen(int iFlags);
25 	int meClose(int iFlags);
26 
27 	int meLockDriver(int iLock, int iFlags);
28 	int meLockDevice(int iDevice, int iLock, int iFlags);
29 	int meLockSubdevice(int iDevice, int iSubdevice, int iLock, int iFlags);
30 
31 	/*===========================================================================
32 	  Error handling functions
33 	  =========================================================================*/
34 
35 	int meErrorGetLastMessage(char *pcErrorMsg, int iCount);
36 	int meErrorGetMessage(int iErrorCode, char *pcErrorMsg, int iCount);
37 	int meErrorSetDefaultProc(int iSwitch);
38 	int meErrorSetUserProc(meErrorCB_t pErrorProc);
39 
40 
41 	/*===========================================================================
42 	  Functions to perform I/O on a device
43 	  =========================================================================*/
44 
45 	int meIOIrqSetCallback(
46 			int iDevice,
47 			int iSubdevice,
48 			meIOIrqCB_t pCallback,
49 			void *pCallbackContext,
50 			int iFlags);
51 	int meIOIrqStart(
52 			int iDevice,
53 			int iSubdevice,
54 			int iChannel,
55 			int iIrqSource,
56 			int iIrqEdge,
57 			int iIrqArg,
58 			int iFlags);
59 	int meIOIrqStop(
60 			int iDevice,
61 			int iSubdevice,
62 			int iChannel,
63 			int iFlags);
64 	int meIOIrqWait(
65 			int iDevice,
66 			int iSubdevice,
67 			int iChannel,
68 			int *piIrqCount,
69 			int *piValue,
70 			int iTimeOut,
71 			int iFlags);
72 
73 	int meIOResetDevice(int iDevice, int iFlags);
74 	int meIOResetSubdevice(int iDevice, int iSubdevice, int iFlags);
75 
76 	int meIOStreamFrequencyToTicks(
77 			int iDevice,
78 			int iSubdevice,
79 			int iTimer,
80 			double *pdFrequency,
81 			int *piTicksLow,
82 			int *piTicksHigh,
83 			int iFlags);
84 
85 	int meIOSingleConfig(
86 			int iDevice,
87 			int iSubdevice,
88 			int iChannel,
89 			int iSingleConfig,
90 			int iRef,
91 			int iTrigChan,
92 			int iTrigType,
93 			int iTrigEdge,
94 			int iFlags);
95 	int meIOSingle(meIOSingle_t *pSingleList, int iCount, int iFlags);
96 
97 	int meIOStreamConfig(
98 			int iDevice,
99 			int iSubdevice,
100 			meIOStreamConfig_t *pConfigList,
101 			int iCount,
102 			meIOStreamTrigger_t *pTrigger,
103 			int iFifoIrqThreshold,
104 			int iFlags);
105 	int meIOStreamNewValues(
106 			int iDevice,
107 			int iSubdevice,
108 			int iTimeOut,
109 			int *piCount,
110 			int iFlags);
111 	int meIOStreamRead(
112 			int iDevice,
113 			int iSubdevice,
114 			int iReadMode,
115 			int *piValues,
116 			int *piCount,
117 			int iFlags);
118 	int meIOStreamWrite(
119 			int iDevice,
120 			int iSubdevice,
121 			int iWriteMode,
122 			int *piValues,
123 			int *piCount,
124 			int iFlags);
125 	int meIOStreamStart(meIOStreamStart_t *pStartList, int iCount, int iFlags);
126 	int meIOStreamStop(meIOStreamStop_t *pStopList, int iCount, int iFlags);
127 	int meIOStreamStatus(
128 			int iDevice,
129 			int iSubdevice,
130 			int iWait,
131 			int *piStatus,
132 			int *piCount,
133 			int iFlags);
134 	int meIOStreamSetCallbacks(
135 			int iDevice,
136 			int iSubdevice,
137 			meIOStreamCB_t pStartCB,
138 			void *pStartCBContext,
139 			meIOStreamCB_t pNewValuesCB,
140 			void *pNewValuesCBContext,
141 			meIOStreamCB_t pEndCB,
142 			void *pEndCBContext,
143 			int iFlags);
144 	int meIOStreamTimeToTicks(
145 			int iDevice,
146 			int iSubdevice,
147 			int iTimer,
148 			double *pdTime,
149 			int *piTicksLow,
150 			int *piTicksHigh,
151 			int iFlags);
152 
153 
154 	/*===========================================================================
155 	  Functions to query the driver system
156 	  =========================================================================*/
157 
158 	int meQueryDescriptionDevice(int iDevice, char *pcDescription, int iCount);
159 
160 	int meQueryInfoDevice(
161 			int iDevice,
162 			int *piVendorId,
163 			int *piDeviceId,
164 			int *piSerialNo,
165 			int *piBusType,
166 			int *piBusNo,
167 			int *piDevNo,
168 			int *piFuncNo,
169 			int *piPlugged);
170 
171 	int meQueryNameDevice(int iDevice, char *pcName, int iCount);
172 	int meQueryNameDeviceDriver(int iDevice, char *pcName, int iCount);
173 
174 	int meQueryNumberDevices(int *piNumber);
175 	int meQueryNumberSubdevices(int iDevice, int *piNumber);
176 	int meQueryNumberChannels(int iDevice, int iSubdevice, int *piNumber);
177 	int meQueryNumberRanges(
178 			int iDevice,
179 			int iSubdevice,
180 			int iUnit,
181 			int *piNumber);
182 
183 	int meQueryRangeByMinMax(
184 			int iDevice,
185 			int iSubdevice,
186 			int iUnit,
187 			double *pdMin,
188 			double *pdMax,
189 			int *piMaxData,
190 			int *piRange);
191 	int meQueryRangeInfo(
192 			int iDevice,
193 			int iSubdevice,
194 			int iRange,
195 			int *piUnit,
196 			double *pdMin,
197 			double *pdMax,
198 			int *piMaxData);
199 
200 	int meQuerySubdeviceByType(
201 			int iDevice,
202 			int iStartSubdevice,
203 			int iType,
204 			int iSubtype,
205 			int *piSubdevice);
206 	int meQuerySubdeviceType(
207 			int iDevice,
208 			int iSubdevice,
209 			int *piType,
210 			int *piSubtype);
211 	int meQuerySubdeviceCaps(
212 			int iDevice,
213 			int iSubdevice,
214 			int *piCaps);
215 	int meQuerySubdeviceCapsArgs(
216 			int iDevice,
217 			int iSubdevice,
218 			int iCap,
219 			int *piArgs,
220 			int iCount);
221 
222 	int meQueryVersionLibrary(int *piVersion);
223 	int meQueryVersionMainDriver(int *piVersion);
224 	int meQueryVersionDeviceDriver(int iDevice, int *piVersion);
225 
226 
227 	/*===========================================================================
228 	  Common utility functions
229 	  =========================================================================*/
230 
231 	int meUtilityExtractValues(
232 			int iChannel,
233 			int *piAIBuffer,
234 			int iAIBufferCount,
235 			meIOStreamConfig_t *pConfigList,
236 			int iConfigListCount,
237 			int *piChanBuffer,
238 			int *piChanBufferCount);
239 	int meUtilityDigitalToPhysical(
240 			double dMin,
241 			double dMax,
242 			int iMaxData,
243 			int iData,
244 			int iModuleType,
245 			double dRefValue,
246 			double *pdPhysical);
247 	int meUtilityDigitalToPhysicalV(
248 			double dMin,
249 			double dMax,
250 			int iMaxData,
251 			int *piDataBuffer,
252 			int iCount,
253 			int iModuleType,
254 			double dRefValue,
255 			double *pdPhysicalBuffer);
256 	int meUtilityPhysicalToDigital(
257 			double dMin,
258 			double dMax,
259 			int iMaxData,
260 			double dPhysical,
261 			int *piData);
262 	int meUtilityPWMStart(
263 			int iDevice,
264 			int iSubdevice1,
265 			int iSubdevice2,
266 			int iSubdevice3,
267 			int iRef,
268 			int iPrescaler,
269 			int iDutyCycle,
270 			int iFlag);
271 	int meUtilityPWMStop(int iDevice,
272 			int iSubdevice1);
273 	int meUtilityPWMRestart(
274 			int iDevice,
275 			int iSubdevice1,
276 			int iRef,
277 			int iPrescaler);
278 
279 
280 	/*===========================================================================
281 	  Load configuration from file into driver system
282 	  =========================================================================*/
283 
284 	int meConfigLoad(char *pcConfigFile);
285 
286 
287 	/*===========================================================================
288 	  Functions to query a remote driver system
289 	  =========================================================================*/
290 
291 	int meRQueryDescriptionDevice(
292 			char *location,
293 			int iDevice,
294 			char *pcDescription,
295 			int iCount);
296 
297 	int meRQueryInfoDevice(
298 			char *location,
299 			int iDevice,
300 			int *piVendorId,
301 			int *piDeviceId,
302 			int *piSerialNo,
303 			int *piBusType,
304 			int *piBusNo,
305 			int *piDevNo,
306 			int *piFuncNo,
307 			int *piPlugged);
308 
309 	int meRQueryNameDevice(
310 			char *location,
311 			int iDevice,
312 			char *pcName,
313 			int iCount);
314 
315 	int meRQueryNumberDevices(char *location, int *piNumber);
316 	int meRQueryNumberSubdevices(char *location, int iDevice, int *piNumber);
317 	int meRQueryNumberChannels(
318 			char *location,
319 			int iDevice,
320 			int iSubdevice,
321 			int *piNumber);
322 	int meRQueryNumberRanges(
323 			char *location,
324 			int iDevice,
325 			int iSubdevice,
326 			int iUnit,
327 			int *piNumber);
328 
329 	int meRQueryRangeInfo(
330 			char *location,
331 			int iDevice,
332 			int iSubdevice,
333 			int iRange,
334 			int *piUnit,
335 			double *pdMin,
336 			double *pdMax,
337 			int *piMaxData);
338 
339 	int meRQuerySubdeviceType(
340 			char *location,
341 			int iDevice,
342 			int iSubdevice,
343 			int *piType,
344 			int *piSubtype);
345 
346 #ifdef __cplusplus
347 }
348 #endif
349 
350 #endif
351