versadac  1
versadac - Scalable Recorder Firmware
eio_t25.h
1 /*******************************************************************************
2 FILE : eio_t25.h
3 VERSION : $Id$
4 AUTHOR : David Cozens
5 SYSTEM : Diab C for PowerPC under vxWorks
6 DESCRIPTION : T2500 EIO API interface definitions : With modification required
7  for Scalable Recorder
8 *******************************************************************************/
9 #ifndef __EIO_T2500_H
10 #define __EIO_T2500_H
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 #include "eio.h"
17 
18 
19 #define EIO_T2500_MAX_AI_POINTS_PER_MODULE 8
20 #define EIO_T2500_MAX_AO_POINTS_PER_MODULE 2
21 #define EIO_T2500_MAX_DI_POINTS_PER_MODULE 16
22 #define EIO_T2500_MAX_DO_POINTS_PER_MODULE 16
23 #define EIO_T2500_MAX_FI_POINTS_PER_MODULE 2
24 
25 
26 #if (EIO_SCALABLE_REC == 1)
27 
28 // Scalable Recorder :-
29 
30 #define EIO_T2500_MAX_NUMBER_OF_MODULES 16
31 
32 #define EIO_T2500_FAST_CYCLE_TIME_US 31250 /* These are nominal times chosen to give a clean representation to customers */
33 #define EIO_T2500_SLOW_CYCLE_TIME_US 125000
34 
35 #define EIO_T2500_FAST_TPO_MULTIPLE 2 /* i.e. 2 TPO calculation per fast tick */
36 
37 #define EIO_T2500_FAST_MODULE_TICK_INTERLIEVE 16 /* i.e. Fast modules use every 16th tick */
38 
39 
40 // The calculation of these times comes from the fact that the IO scheduler
41 // is driven from the PIT with a frequency of 1024Hz derived from the RTC 32768Hz
42 #define EIO_T2500_PRECISE_FAST_CYCLE_TIME_US 31250
43 #define EIO_T2500_PRECISE_SLOW_CYCLE_TIME_US 125000
44 
45 #else
46 // T2750 :-
47 
48 #define EIO_T2500_FAST_CYCLE_TIME_US 10000 /* These are nominal times chosen to give a clean representation to customers */
49 #define EIO_T2500_SLOW_CYCLE_TIME_US 110000
50 #define EIO_T2500_FAST_TPO_MULTIPLE 2 /* i.e. 2 TPO calculation per fast tick */
51 
52 #define EIO_T2500_FAST_MODULE_TICK_INTERLIEVE 6 /* i.e. Fast modules use every 6th tick */
53 
54 // These times should be accurate to 1uS if the processor clock is accurate
55 // The calculation of these times comes from the fact that the IO scheduler
56 // is driven from the PIT with a nominal frequency of 1200Hz. My calculations
57 // based on a processor clock of 66.6666666MHz leads to an actual frequency of
58 // 1200.768492Hz. So we get more precise cycle times by multiplying the period
59 // by 1200/1200.768492
60 #define EIO_T2500_PRECISE_FAST_CYCLE_TIME_US 9993
61 #define EIO_T2500_PRECISE_SLOW_CYCLE_TIME_US 109929
62 
63 #endif
64 
65 
66 #define EIO_T2500_DEFAULT_IDENT_START_DELAY 70 /* default to a 70us delay from select to reading ident so that DO4s can keep up */
67 
68 #define EIO_DO_FAST_RETRIES 1
69 #define EIO_DO8_FAST_RETRIES 1
70 #define EIO_DI8_FAST_RETRIES 1
71 #define EIO_DI16_FAST_RETRIES 1
72 #define EIO_DI16_SLOW_RETRIES 1
73 #define EIO_DO16_FAST_RETRIES 1
74 
75 /* Defining TEST_VREF_CAL_REQUIRED causes the function eioAICalIsVREFCalRequired
76  to return EIO_TRUE instead of EIO_FALSE for test purposes */
77 /* #define TEST_VREF_CAL_REQUIRED */
78 
79 /* Defining TEST_NO_CUSTOM_CAL_SUPPORTED causes the functions eioAICalIsCustomCalibrationPointSupported
80  and eioAOCalIsCustomCalibrationPointSupported to return EIO_FALSE instead of EIO_TRUE for test purposes.*/
81 /* #define TEST_NO_CUSTOM_CAL_SUPPORTED */
82 
83 typedef enum
84 {
85  EIO_T2500_0_WAY_BASE,
86  EIO_T2500_2_WAY_BASE,
87  EIO_T2500_4_WAY_BASE,
88  EIO_T2500_6_WAY_BASE,
89  EIO_T2500_8_WAY_BASE,
90  EIO_T2500_10_WAY_BASE,
91  EIO_T2500_12_WAY_BASE,
92  EIO_T2500_14_WAY_BASE,
93  EIO_T2500_16_WAY_BASE,
94  EIO_T2500_3_WAY_5100V_PROTOTYPE
95 }EioT2500SystemVariant;
96 
97 typedef enum
98 {
99  EIO_T2500_SYSTEM_VERSION_T2550=1,
100  EIO_T2500_SYSTEM_VERSION_T2750
101 }EioT2500SystemVersion;
102 
103 
104 
105 #if (EIO_SCALABLE_REC == 1)
106 
107 // Scalable Recorder :-
108 enum EioT2500CycleEnum
109 {
110  EIO_T2500_CYCLE_FAST, // NOTE : If this cycle is to be used then the FAST IO task needs to be enabled
111  // To do this :- #define FAST_IO_TASK_REQUIRED 1 in "eio_t25srt.cpp"
112 
113  EIO_T2500_CYCLE_125mS,
114  EIO_T2500_NUMBER_OF_CYCLES
115 };
116 
117 #else
118 
119 enum EioT2500CycleEnum
120 {
121  EIO_T2500_CYCLE_FAST,
122  EIO_T2500_CYCLE_110mS,
123  EIO_T2500_NUMBER_OF_CYCLES
124 };
125 
126 #endif
127 
128 
129 
130 #if (EIO_T2500 == 1)
131 extern EioSystem T25IOSystem_0w;
132 extern EioSystem T25IOSystem_2w;
133 extern EioSystem T25IOSystem_4w;
134 extern EioSystem T25IOSystem_6w;
135 extern EioSystem T25IOSystem_8w;
136 extern EioSystem T25IOSystem_10w;
137 extern EioSystem T25IOSystem_12w;
138 extern EioSystem T25IOSystem_14w;
139 extern EioSystem T25IOSystem_16w;
140 extern EioSystem T2750IOSystem_0w;
141 extern EioSystem T2750IOSystem_2w;
142 extern EioSystem T2750IOSystem_4w;
143 extern EioSystem T2750IOSystem_6w;
144 extern EioSystem T2750IOSystem_8w;
145 extern EioSystem T2750IOSystem_10w;
146 extern EioSystem T2750IOSystem_12w;
147 extern EioSystem T2750IOSystem_14w;
148 extern EioSystem T2750IOSystem_16w;
149 
150 #if (EIO_NUMBER_OF_SYSTEMS==1)
151 #define eioReadyToRun(a) eioT2500ReadyToRun(a)
152 #define eioGetSystemFailed(a) eioT2500GetSystemFailed(a)
153 #define eioSetCycleRateDivisor(a,b,c) eioT2500SetCycleRateDivisor(a,b,c)
154 #define eioGetMaximumNumberOfModules(a) eioT2500GetMaximumNumberOfModules(a)
155 #define eioGetMaximumNumberOfPointsPerModule(a,b) eioT2500GetMaximumNumberOfPointsPerModule(a,b)
156 #define eioGetModuleNumberForPointIndex(a,b,c) eioT2500GetModuleNumberForPointIndex(a,b,c)
157 #define eioGetPointNumberForPointIndex(a,b,c) eioT2500GetPointNumberForPointIndex(a,b,c)
158 #define eioGetNumberOfIOCycleRates(a) eioT2500GetNumberOfIOCycleRates(a)
159 #define eioGetCycleRateuS(a,b) eioT2500GetCycleRateuS(a,b)
160 #define eioSetUpdateCycleCompleteHookAdd(a,b,c) eioT2500SetUpdateCycleCompleteHookAdd(a,b,c)
161 #define eioSetApplicationCycleCompleteCheckHookAdd(a,b,c) eioT2500SetApplicationCycleCompleteCheckHookAdd(a,b,c)
162 #define eioSetOperatingMode(a,b) eioT2500SetOperatingMode(a,b)
163 #define eioGetOperatingMode(a) eioT2500GetOperatingMode(a)
164 #define eioIsOperatingModeSupported(a,b) eioT2500IsOperatingModeSupported(a,b)
165 #define eioSetSecondaryMaximumNumberOfModules(a,b) eioT2500SetSecondaryMaximumNumberOfModules(a,b)
166 #define eioModuleGetType(a,b) eioT2500ModuleGetType(a,b)
167 #define eioModuleGetVersion(a,b) eioT2500ModuleGetVersion(a,b)
168 #define eioModuleGetMajorVersion(a,b) eioT2500ModuleGetMajorVersion(a,b)
169 #define eioModuleGetMinorVersion(a,b) eioT2500ModuleGetMinorVersion(a,b)
170 #define eioModuleSecondarySetFittedModule(a,b,c) eioT2500ModuleSecondarySetFittedModule(a,b,c)
171 #define eioModuleIsRedundantCapable(a,b) eioT2500ModuleIsRedundantCapable(a,b)
172 #define eioModuleSetExpectedType(a,b,c,d) eioT2500ModuleSetExpectedType(a,b,c,d)
173 #define eioModuleGetExpectedType(a,b) eioT2500ModuleGetExpectedType(a,b)
174 #define eioModuleGetNumberOfPoints(a,b,c) eioT2500ModuleGetNumberOfPoints(a,b,c)
175 #define eioModuleIsModuleTypeSupported(a,b,c) eioT2500ModuleIsModuleTypeSupported(a,b,c)
176 #define eioModuleIsModuleCompatible(a,b,c,d) eioT2500ModuleIsModuleCompatible(a,b,c,d)
177 #define eioModuleIsCycleRateSupported(a,b,c) eioT2500ModuleIsCycleRateSupported(a,b,c)
178 #define eioAIGetMeasuredValueDataPtr(a,b,c) eioT2500AIGetMeasuredValueDataPtr(a,b,c)
179 #define eioAIGetMeasuredValueData(a,b,c,d) eioT2500AIGetMeasuredValueData(a,b,c,d)
180 #define eioAISetConfiguration(a,b,c,d,e,f,g,h,i,j,k) eioT2500AISetConfiguration(a,b,c,d,e,f,g,h,i,j,k)
181 #define eioAISecondarySetMeasuredValueData(a,b,c,d) eioT2500AISecondarySetMeasuredValueData(a,b,c,d)
182 #define eioAICalIsPointRangeCalibrated(a,b,c,d,e) eioT2500AICalIsPointRangeCalibrated(a,b,c,d,e)
183 #define eioAICalIsCalibrationTypeSupported(a,b,c,d) eioT2500AICalIsCalibrationTypeSupported(a,b,c,d)
184 #define eioAICalSetDefaultCalibration(a,b,c,d) eioT2500AICalSetDefaultCalibration(a,b,c,d)
185 #define eioAICalPointCalibrationStart(a,b,c,d) eioT2500AICalPointCalibrationStart(a,b,c,d)
186 #define eioAICalGetCalState(a,b,c) eioT2500AICalGetCalState(a,b,c)
187 #define eioAICalPointCalibrationComplete(a,b,c,d) eioT2500AICalPointCalibrationComplete(a,b,c,d)
188 #define eioAICalPointCalibrationAbort(a,b,c) eioT2500AICalPointCalibrationAbort(a,b,c)
189 #define eioAICalSetCalibrationRange(a,b,c,d,e) eioT2500AICalSetCalibrationRange(a,b,c,d,e)
190 #define eioAICalIsVREFCalRequired(a,b,c,d) eioT2500AICalIsVREFCalRequired(a,b,c,d)
191 #define eioAICalGetNumberOfCalibrationRanges(a,b,c,d) eioT2500AICalGetNumberOfCalibrationRanges(a,b,c,d)
192 #define eioAICalGetRangeType(a,b,c,d,e) eioT2500AICalGetRangeType(a,b,c,d,e)
193 #define eioAICalGetRangeLowLimit(a,b,c,d,e) eioT2500AICalGetRangeLowLimit(a,b,c,d,e)
194 #define eioAICalGetRangeHighLimit(a,b,c,d,e) eioT2500AICalGetRangeHighLimit(a,b,c,d,e)
195 #define eioAICalGetNumberOfCalibrationPoints(a,b,c,d,e) eioT2500AICalGetNumberOfCalibrationPoints(a,b,c,d,e)
196 #define eioAICalGetNominalCalibrationPoint(a,b,c,d,e,f) eioT2500AICalGetNominalCalibrationPoint(a,b,c,d,e,f)
197 #define eioAICalSetActualCalibrationPoint(a,b,c,d,e,f,g) eioT2500AICalSetActualCalibrationPoint(a,b,c,d,e,f,g)
198 #define eioAICalIsCustomCalibrationPointSupported(a,b,c,d,e) eioT2500AICalIsCustomCalibrationPointSupported(a,b,c,d,e)
199 #define eioAICalRestartMeasurement(a,b,c) eioT2500AICalRestartMeasurement(a,b,c)
200 #define eioAICalSetVREFValue(a,b,c,d) eioT2500AICalSetVREFValue(a,b,c,d)
201 #define eioAICalSetProcessWord( a,b,c) eioT2500AICalSetProcessWord( a,b,c)
202 #define eioAICalGetProcessWord( a,b) eioT2500AICalGetProcessWord( a,b)
203 #define eioAIGetHighestMeasureableValue(a,b,c,d) eioT2500AIGetHighestMeasureableValue(a,b,c,d)
204 #define eioAIGetLowestMeasureableValue(a,b,c,d) eioT2500AIGetLowestMeasureableValue(a,b,c,d)
205 #define eioAIIsTypeSupported(a,b,c,d) eioT2500AIIsTypeSupported(a,b,c,d)
206 #define eioAIIsCJSupported(a,b,c) eioT2500AIIsCJSupported(a,b,c)
207 #define eioAIIsBreakResponseSupported(a,b,c,d,e,f,g) eioT2500AIIsBreakResponseSupported(a,b,c,d,e,f,g)
208 #define eioAIGetMaxFilterTimeuS(a,b,c) eioT2500AIGetMaxFilterTimeuS(a,b,c)
209 #define eioAIIsAdaptiveFilterSupported(a,b,c) eioT2500AIIsAdaptiveFilterSupported(a,b,c)
210 #define eioAIGetInputImpedence(a,b,c,d,e,f) eioT2500AIGetInputImpedence(a,b,c,d,e,f)
211 #define eioAIUserShuntResistorSupported(a,b,c) eioT2500AIUserShuntResistorSupported(a,b,c)
212 #define eioAOGetDataPtr(a,b,c) eioT2500AOGetDataPtr(a,b,c)
213 #define eioAOGetStatus(a,b,c) eioT2500AOGetStatus(a,b,c)
214 #define eioAOSetDemand(a,b,c,d) eioT2500AOSetDemand(a,b,c,d)
215 #define eioAOSetConfiguration(a,b,c,d,e,f) eioT2500AOSetConfiguration(a,b,c,d,e,f)
216 #define eioAOSecondarySetStatus(a,b,c,d) eioT2500AOSecondarySetStatus(a,b,c,d)
217 #define eioAOCalIsCalibrationTypeSupported(a,b,c,d,e) eioT2500AOCalIsCalibrationTypeSupported(a,b,c,d,e)
218 #define eioAOCalDefaultCalibration(a,b,c,d) eioT2500AOCalDefaultCalibration(a,b,c,d)
219 #define eioAOCalPointCalibrationStart(a,b,c,d) eioT2500AOCalPointCalibrationStart(a,b,c,d)
220 #define eioAOCalPointCalibrationComplete(a,b,c,d) eioT2500AOCalPointCalibrationComplete(a,b,c,d)
221 #define eioAOCalPointCalibrationAbort(a,b,c) eioT2500AOCalPointCalibrationAbort(a,b,c)
222 #define eioAOCalSetCalibrationRange(a,b,c,d,e) eioT2500AOCalSetCalibrationRange(a,b,c,d,e)
223 #define eioAOCalGetNumberOfCalibrationRanges(a,b,c,d) eioT2500AOCalGetNumberOfCalibrationRanges(a,b,c,d)
224 #define eioAOCalGetRangeType(a,b,c,d,e) eioT2500AOCalGetRangeType(a,b,c,d,e)
225 #define eioAOCalGetRangeLowLimit(a,b,c,d,e) eioT2500AOCalGetRangeLowLimit(a,b,c,d,e)
226 #define eioAOCalGetRangeHighLimit(a,b,c,d,e) eioT2500AOCalGetRangeHighLimit(a,b,c,d,e)
227 #define eioAOCalGetNumberOfCalibrationPoints(a,b,c,d,e) eioT2500AOCalGetNumberOfCalibrationPoints(a,b,c,d,e)
228 #define eioAOCalGetNominalCalibrationPoint(a,b,c,d,e,f) eioT2500AOCalGetNominalCalibrationPoint(a,b,c,d,e,f)
229 #define eioAOCalSetActualCalibrationPoint(a,b,c,d,e,f,g) eioT2500AOCalSetActualCalibrationPoint(a,b,c,d,e,f,g)
230 #define eioAOCalIsCustomCalibrationPointSupported(a,b,c,d,e) eioT2500AOCalIsCustomCalibrationPointSupported(a,b,c,d,e)
231 #define eioAOCalSetCurrentOutputMeasurement(a,b,c,d) eioT2500AOCalSetCurrentOutputMeasurement(a,b,c,d)
232 #define eioAOCalSetOutput(a,b,c,d) eioT2500AOCalSetOutput(a,b,c,d)
233 #define eioAOIsTypeSupported(a,b,c,d) eioT2500AOIsTypeSupported(a,b,c,d)
234 #define eioAOGetMinimumOutput(a,b,c,d) eioT2500AOGetMinimumOutput(a,b,c,d)
235 #define eioAOGetMaximumOutput(a,b,c,d) eioT2500AOGetMaximumOutput(a,b,c,d)
236 #define eioDIGetDataPtr(a,b,c) eioT2500DIGetDataPtr(a,b,c)
237 #define eioDIGetData(a,b,c,d) eioT2500DIGetData(a,b,c,d)
238 #define eioDISetDebounceTimeuS(a,b,c,d) eioT2500DISetDebounceTimeuS(a,b,c,d)
239 #define eioDISecondarySetData(a,b,c,d) eioT2500DISecondarySetData(a,b,c,d)
240 #define eioDIIsPulseCountingSupported(a,b,c) eioT2500DIIsPulseCountingSupported(a,b,c)
241 #define eioDIIsDebounceSupported(a,b,c) eioT2500DIIsDebounceSupported(a,b,c)
242 #define eioDIGetActualDebounceTimeuS(a,b,c,d,e) eioT2500DIGetActualDebounceTimeuS(a,b,c,d,e)
243 #define eioDOSetMode(a,b,c,d) eioT2500DOSetMode(a,b,c,d)
244 #define eioDOIsModeSupported(a,b,c,d) eioT2500DOIsModeSupported(a,b,c,d)
245 #define eioDOGetStatus(a,b,c) eioT2500DOGetStatus(a,b,c)
246 #define eioDOSecondarySetStatus(a,b,c,d) eioT2500DOSecondarySetStatus(a,b,c,d)
247 #define eioDOOOSetState(a,b,c,d) eioT2500DOOOSetState(a,b,c,d)
248 #define eioDOOSOutputPulse(a,b,c,d) eioT2500DOOSOutputPulse(a,b,c,d)
249 #define eioDOOSReset(a,b,c) eioT2500DOOSReset(a,b,c)
250 #define eioDOOSSetInvert(a,b,c,d) eioT2500DOOSSetInvert(a,b,c,d)
251 #define eioDOPTSendPulses(a,b,c,d) eioT2500DOPTSendPulses(a,b,c,d)
252 #define eioDOPTSetPerioduS(a,b,c,d) eioT2500DOPTSetPerioduS(a,b,c,d)
253 #define eioDOPTReset(a,b,c) eioT2500DOPTReset(a,b,c)
254 #define eioDOPTSetInvert(a,b,c,d) eioT2500DOPTSetInvert(a,b,c,d)
255 #define eioDOPTGetActualPerioduS(a,b,c,d,e) eioT2500DOPTGetActualPerioduS(a,b,c,d,e)
256 #define eioDOTPOSetDemand(a,b,c,d) eioT2500DOTPOSetDemand(a,b,c,d)
257 #define eioDOTPOSetMinimumPulseTimeuS(a,b,c,d) eioT2500DOTPOSetMinimumPulseTimeuS(a,b,c,d)
258 #define eioDOTPOGetActualMinimumPulseTimeuS(a,b,c,d,e) eioT2500DOTPOGetActualMinimumPulseTimeuS(a,b,c,d,e)
259 #define eioDOTPOSetCycleTimeuS(a,b,c,d) eioT2500DOTPOSetCycleTimeuS(a,b,c,d)
260 #define eioDOTPOGetActualCycleTimeuS(a,b,c,d,e) eioT2500DOTPOGetActualCycleTimeuS(a,b,c,d,e)
261 #define eioDOTPOIsCycleTimeConfigurable(a,b,c) eioT2500DOTPOIsCycleTimeConfigurable(a,b,c)
262 #define eioDOVPSetDemand(a,b,c,d) eioT2500DOVPSetDemand(a,b,c,d)
263 #define eioDOVPGetActualMinimumPulseTimeuS(a,b,c,d,e) eioT2500DOVPGetActualMinimumPulseTimeuS(a,b,c,d,e)
264 #define eioDOVPSetBacklashuS(a,b,c,d) eioT2500DOVPSetBacklashuS(a,b,c,d)
265 #define eioDOVPSetInertiauS(a,b,c,d) eioT2500DOVPSetInertiauS(a,b,c,d)
266 #define eioDOVPSetStaticTimeuS(a,b,c,d) eioT2500DOVPSetStaticTimeuS(a,b,c,d)
267 #define eioDOVPIsPropertySupported(a,b,c,d) eioT2500DOVPIsPropertySupported(a,b,c,d)
268 #define eioDOVPGetAssociatedPointOnModule(a,b,c) eioT2500DOVPGetAssociatedPointOnModule(a,b,c)
269 #define eioFIGetDataPtr( a, b, c) eioT2500FIGetDataPtr( a, b, c)
270 #define eioFIGetData( a, b, c, d) eioT2500FIGetData( a, b, c, d)
271 #define eioFISetConfiguration( a, b, c, d, e, f, g, h, i, j,k)eioT2500FISetConfiguration( a, b, c, d, e, f, g, h, i, j,k)
272 #define eioFISecondarySetData( a, b, c, d) eioT2500FISecondarySetData( a, b, c, d)
273 #define eioFIIsTypeSupported( a, b, c, d) eioT2500FIIsTypeSupported( a, b, c, d)
274 #define eioFIIsDebounceSupported( a, b, c, d) eioT2500FIIsDebounceSupported( a, b, c, d)
275 #define eioFIIsThresholdSupported( a, b, c, d) eioT2500FIIsThresholdSupported( a, b, c, d)
276 #define eioFIIsShortCircuitDetectSupported( a, b, c, d) eioT2500FIIsShortCircuitDetectSupported( a, b, c, d)
277 #define eioFIIsSensorBreakDetectSupported( a, b, c, d) eioT2500FIIsSensorBreakDetectSupported( a, b, c, d)
278 #define eioFIIsPowerSupplySupported( a, b, c) eioT2500FIIsPowerSupplySupported( a, b, c)
279 #define eioFIGetMaximumSupportedFrequency( a, b, c, d) eioT2500FIGetMaximumSupportedFrequency( a, b, c, d)
280 #define eioFIGetMinimumSupportedFrequency( a, b, c, d) eioT2500FIGetMinimumSupportedFrequency( a, b, c, d)
281 #define eioFIGetActualThreshold( a, b, c, d, e, f) eioT2500FIGetActualThreshold( a, b, c, d, e, f)
282 #define eioFIGetActualSupplyMillivolts( a, b, c, d) eioT2500FIGetActualSupplyMillivolts( a, b, c, d)
283 #define eioFIGetMaxFilterTimeuS( a, b, c) eioT2500FIGetMaxFilterTimeuS( a, b, c)
284 #define eioFIIsBurdenConfigurable( a, b, c) eioT2500FIIsBurdenConfigurable( a, b, c)
285 #define eioFIGetBurdenResistance( a, b, c) eioT2500FIGetBurdenResistance( a, b, c)
286 #define eioFIGetSlowestUpdateuS( a, b) eioT2500FIGetSlowestUpdateuS( a, b)
287 #define eioFIGetActualDebounceTimeuS( a, b, c, d, e) eioT2500FIGetActualDebounceTimeuS( a, b, c, d, e)
288 
289 #else /* (EIO_NUMBER_OF_SYSTEMS==1) */
290 
291 #include "eio_sysf.h"
292 extern EioSystemFunctions eioT2500SystemFunctions;
293 #endif /* (EIO_NUMBER_OF_SYSTEMS==1) */
294 
295 /* system runtime API */
296 void eioT2500SetUpdateCycleCompleteHookAdd( EioSystem *ioSystem, EioUint8 cycleNumber, void(*hook)(EioUint8 cycleNumber, EioUint32 count));
297 void eioT2500SetApplicationCycleCompleteCheckHookAdd( EioSystem *ioSystem, EioUint8 cycleNumber, EioBoolean(*hook)(EioUint8 cycleNumber));
298 EioBoolean eioT2500ReadyToRun(EioSystem *ioSystem);
299 EioBoolean eioT2500GetSystemFailed(EioSystem *ioSystem);
300 void eioT2500SetCycleRateDivisor(EioSystem *ioSystem, EioUint8 cycleNumber, EioUint32 divisor);
301 
302 /* redundancy runtime api */
303 void eioT2500SetOperatingMode( EioSystem *ioSystem, EioOperatingMode mode);
304 EioOperatingMode eioT2500GetOperatingMode( EioSystem *ioSystem);
305 EioBoolean eioT2500IsOperatingModeSupported( EioSystem *ioSystem, EioOperatingMode mode);
306 void eioT2500SetSecondaryMaximumNumberOfModules( EioSystem *ioSystem, EioUint8 numberOfModules);
307 
308 /* system capability discovery API */
309 EioUint8 eioT2500GetMaximumNumberOfModules( EioSystem *ioSystem );
310 EioUint8 eioT2500GetMaximumNumberOfPointsPerModule( EioSystem *ioSystem, EioPointType pointType);
311 EioUint8 eioT2500GetModuleNumberForPointIndex( EioSystem *ioSystem, EioPointType pointType, EioUint16 pointIndex);
312 EioUint8 eioT2500GetPointNumberForPointIndex( EioSystem *ioSystem, EioPointType pointType, EioUint16 pointIndex);
313 EioUint8 eioT2500GetNumberOfIOCycleRates( EioSystem *ioSystem );
314 EioUint32 eioT2500GetCycleRateuS( EioSystem *ioSystem, EioUint8 cycleNumber);
315 
316 /* Module runtime API */
317 EioModuleType eioT2500ModuleGetType( EioSystem *ioSystem, EioUint8 moduleNumber);
318 EioModuleType eioT2500ModuleGetRawType( EioSystem *ioSystem, EioUint8 moduleNumber);
319 char * eioT2500ModuleGetVersion( EioSystem *ioSystem, EioUint8 moduleNumber);
320 EioUint8 eioT2500ModuleGetMajorVersion( EioSystem *ioSystem, EioUint8 moduleNumber);
321 EioUint8 eioT2500ModuleGetMinorVersion( EioSystem *ioSystem, EioUint8 moduleNumber);
322 void eioT2500ModuleSecondarySetFittedModule( EioSystem *ioSystem, EioUint8 moduleNumber, EioModuleType fitted);
323 EioBoolean eioT2500ModuleIsRedundantCapable( EioSystem *ioSystem, EioModuleType moduleType);
324 EioBoolean eioT2500ModuleSetExpectedType( EioSystem *ioSystem, EioUint8 moduleNumber, EioModuleType moduleType, EioUint8 cycleNumber);
325 EioModuleType eioT2500ModuleGetExpectedType( EioSystem *ioSystem, EioUint8 moduleNumber);
326 
327 /* Module capability discovery API */
328 EioUint8 eioT2500ModuleGetNumberOfPoints( EioSystem *ioSystem, EioModuleType moduleType, EioPointType pointType);
329 EioBoolean eioT2500ModuleIsModuleTypeSupported( EioSystem *ioSystem, EioUint8 moduleNumber, EioModuleType moduleType);
330 EioBoolean eioT2500ModuleIsModuleCompatible( EioSystem *ioSystem, EioModuleType expected, EioModuleType fitted, EioUint8 cycleNumber);
331 EioBoolean eioT2500ModuleIsCycleRateSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 cycleNumber);
332 
333 /* prototypes for runtime data and configuration */
334 EioAIMeasuredValueData* eioT2500AIGetMeasuredValueDataPtr( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber);
335 void eioT2500AIGetMeasuredValueData( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioAIMeasuredValueData *dataPtr);
336 void eioT2500AISetConfiguration( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioAIType inputType, EioAIBreakResponse breakResponse, EioUint32 filterTimeuS, float rangeLow, float rangeHigh, float resistance, EioBoolean useAdaptiveFilter, EioBoolean cjRequired);
337 void eioT2500AISecondarySetMeasuredValueData( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioAIMeasuredValueData *dataPtr);
338 
339 /* Calibration prototypes */
340 EioBoolean eioT2500AICalIsPointRangeCalibrated( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioAICalType calType, EioUint8 rangeNumber);
341 EioBoolean eioT2500AICalIsCalibrationTypeSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAICalType calType);
342 void eioT2500AICalSetDefaultCalibration( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioAICalType calType);
343 void eioT2500AICalPointCalibrationStart( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioAICalType calType);
344 EioAICalStatus eioT2500AICalGetCalState( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber);
345 void eioT2500AICalPointCalibrationComplete( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioAICalType calType);
346 void eioT2500AICalPointCalibrationAbort( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber);
347 void eioT2500AICalSetCalibrationRange( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioAICalType calType, EioUint8 rangeNumber);
348 EioBoolean eioT2500AICalIsVREFCalRequired( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAICalType calType);
349 EioUint8 eioT2500AICalGetNumberOfCalibrationRanges( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAICalType calType);
350 EioAICalRangeType eioT2500AICalGetRangeType( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAICalType calType, EioUint8 rangeNumber);
351 float eioT2500AICalGetRangeLowLimit( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAICalType calType, EioUint8 rangeNumber);
352 float eioT2500AICalGetRangeHighLimit( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAICalType calType, EioUint8 rangeNumber);
353 EioUint8 eioT2500AICalGetNumberOfCalibrationPoints( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAICalType calType, EioUint8 rangeNumber);
354 float eioT2500AICalGetNominalCalibrationPoint( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAICalType calType, EioUint8 rangeNumber, EioUint8 calibrationPointIndex);
355 void eioT2500AICalSetActualCalibrationPoint( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioAICalType calType, EioUint8 rangeNumber, float value, EioUint8 calibrationPointIndex);
356 EioBoolean eioT2500AICalIsCustomCalibrationPointSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAICalType calType, EioUint8 rangeNumber);
357 void eioT2500AICalRestartMeasurement( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber);
358 void eioT2500AICalSetVREFValue( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, float Vref);
359 void eioT2500AICalSetProcessWord( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint16 processWord);
360 EioUint16 eioT2500AICalGetProcessWord( EioSystem *ioSystem, EioUint8 moduleNumber);
361 
362 /* Capability discovery prototypes */
363 float eioT2500AIGetHighestMeasureableValue( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAIType inputType);
364 float eioT2500AIGetLowestMeasureableValue( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAIType inputType);
365 EioBoolean eioT2500AIIsTypeSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAIType inputType);
366 EioBoolean eioT2500AIIsCJSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber);
367 EioBoolean eioT2500AIIsBreakResponseSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAIType inputType, float rangeLow, float rangeHigh, EioAIBreakResponse breakResponse);
368 EioUint32 eioT2500AIGetMaxFilterTimeuS( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber);
369 EioBoolean eioT2500AIIsAdaptiveFilterSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber);
370 float eioT2500AIGetInputImpedence( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAIType inputType, float rangeLow, float rangeHigh);
371 EioBoolean eioT2500AIUserShuntResistorSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber);
372 
373 /* runtime data and configuration prototypes */
374 EioAOData* eioT2500AOGetDataPtr( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber);
375 EioAOStatus eioT2500AOGetStatus( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber);
376 void eioT2500AOSetDemand( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, float demand);
377 void eioT2500AOSetConfiguration( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioAOType outputType, float rangeLow, float rangeHigh);
378 void eioT2500AOSecondarySetStatus( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioAOStatus status);
379 
380 /* Calibration prototypes */
381 EioBoolean eioT2500AOCalIsCalibrationTypeSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAOCalType calType, EioUint8 cycleNumber);
382 void eioT2500AOCalDefaultCalibration( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioAOCalType calType);
383 void eioT2500AOCalPointCalibrationStart( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioAOCalType calType);
384 void eioT2500AOCalPointCalibrationComplete( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioAOCalType calType);
385 void eioT2500AOCalPointCalibrationAbort( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber);
386 void eioT2500AOCalSetCalibrationRange( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioAOCalType calType, EioUint8 rangeNumber);
387 EioUint8 eioT2500AOCalGetNumberOfCalibrationRanges( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAOCalType calType);
388 EioAOCalRangeType eioT2500AOCalGetRangeType( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAOCalType calType, EioUint8 rangeNumber);
389 float eioT2500AOCalGetRangeLowLimit( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAOCalType calType, EioUint8 rangeNumber);
390 float eioT2500AOCalGetRangeHighLimit( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAOCalType calType, EioUint8 rangeNumber);
391 EioUint8 eioT2500AOCalGetNumberOfCalibrationPoints( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAOCalType calType, EioUint8 rangeNumber);
392 float eioT2500AOCalGetNominalCalibrationPoint( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAOCalType calType, EioUint8 rangeNumber, EioUint8 calibrationPointIndex);
393 void eioT2500AOCalSetActualCalibrationPoint( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioAOCalType calType, EioUint8 rangeNumber, EioUint8 calibrationPointIndex, float value);
394 EioBoolean eioT2500AOCalIsCustomCalibrationPointSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAOCalType calType, EioUint8 rangeNumber);
395 void eioT2500AOCalSetCurrentOutputMeasurement( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, float value);
396 void eioT2500AOCalSetOutput( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, float value);
397 
398 /* Capability discovery prototypes */
399 EioBoolean eioT2500AOIsTypeSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAOType outputType);
400 float eioT2500AOGetMinimumOutput( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAOType outputType);
401 float eioT2500AOGetMaximumOutput( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioAOType outputType);
402 
403 /* runtime and configuration prototypes */
404 EioDIData* eioT2500DIGetDataPtr( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber);
405 void eioT2500DIGetData( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioDIData *dataPtr);
406 void eioT2500DISetDebounceTimeuS( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioUint32 debounceTimeuS);
407 void eioT2500DISecondarySetData( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioDIData *dataPtr);
408 
409 /* CApability discovery prototypes */
410 EioBoolean eioT2500DIIsPulseCountingSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber);
411 EioBoolean eioT2500DIIsDebounceSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber);
412 EioUint32 eioT2500DIGetActualDebounceTimeuS( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioUint32 requestedDebounceTimeuS, EioUint8 cycleNumber);
413 
414 /* General Digital output API */
415 void eioT2500DOSetMode( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioDOMode mode);
416 EioBoolean eioT2500DOIsModeSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioDOMode outputMode);
417 EioDOStatus eioT2500DOGetStatus( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber);
418 void eioT2500DOSecondarySetStatus( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioDOStatus status);
419 
420 /* On/Off API */
421 void eioT2500DOOOSetState( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioDOState state);
422 
423 /* One Shot API */
424 void eioT2500DOOSOutputPulse( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioUint32 pulseTimeuS);
425 void eioT2500DOOSReset( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber);
426 void eioT2500DOOSSetInvert( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioBoolean invert);
427 
428 /* Pulse Train API */
429 void eioT2500DOPTSendPulses( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioUint32 numberOfPulses);
430 void eioT2500DOPTSetPerioduS( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioUint32 perioduS);
431 void eioT2500DOPTReset( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber);
432 void eioT2500DOPTSetInvert( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioBoolean invert);
433 EioUint32 eioT2500DOPTGetActualPerioduS( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioUint8 cycleNumber, EioUint32 perioduS);
434 
435 /* Time proportioned Output API */
436 void eioT2500DOTPOSetDemand( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, float demand);
437 void eioT2500DOTPOSetMinimumPulseTimeuS( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioUint32 pulseTimeuS);
438 EioUint32 eioT2500DOTPOGetActualMinimumPulseTimeuS( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioUint8 cycleNumber, EioUint32 requestedMinimumPulseTimeuS);
439 void eioT2500DOTPOSetCycleTimeuS( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioUint32 cycleTimeuS);
440 EioUint32 eioT2500DOTPOGetActualCycleTimeuS( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioUint8 cycleNumber, EioUint32 requestedCycleTimeuS);
441 EioBoolean eioT2500DOTPOIsCycleTimeConfigurable( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber);
442 
443 void eioT2500DOVPSetDemand( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, float demand);
444 EioUint32 eioT2500DOVPGetActualMinimumPulseTimeuS( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioUint8 cycleNumber, EioUint32 requestedMinimumPulseTimeuS);
445 void eioT2500DOVPSetBacklashuS( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioUint32 backlashuS);
446 void eioT2500DOVPSetInertiauS( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioUint32 inertiauS);
447 void eioT2500DOVPSetStaticTimeuS( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioUint32 staticTimeuS);
448 EioBoolean eioT2500DOVPIsPropertySupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioDOVPProperty property);
449 EioUint8 eioT2500DOVPGetAssociatedPointOnModule( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber);
450 
451 
452 /* Frequency input API */
453 EioFIData* eioT2500FIGetDataPtr( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber);
454 void eioT2500FIGetData( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioFIData *dataPtr);
455 void eioT2500FISetConfiguration( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioFIType type, float threshold, float supplyMillivolts, EioUint32 debounce, EioUint32 filterTimeuS, float burdenOhms, EioBoolean enableSensorBreak, EioBoolean enableShortCircuitDetect);
456 void eioT2500FISecondarySetData( EioSystem *ioSystem, EioUint8 moduleNumber, EioUint8 pointNumber, EioFIData *dataPtr);
457 EioBoolean eioT2500FIIsTypeSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioFIType inputType);
458 EioBoolean eioT2500FIIsDebounceSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioFIType inputType);
459 EioBoolean eioT2500FIIsThresholdSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioFIType inputType);
460 EioBoolean eioT2500FIIsShortCircuitDetectSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioFIType inputType);
461 EioBoolean eioT2500FIIsSensorBreakDetectSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioFIType inputType);
462 EioBoolean eioT2500FIIsPowerSupplySupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber);
463 float eioT2500FIGetMaximumSupportedFrequency( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioFIType inputType);
464 float eioT2500FIGetMinimumSupportedFrequency( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioFIType inputType);
465 float eioT2500FIGetActualThreshold( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioFIType inputType, float burdenOhms, float requested);
466 float eioT2500FIGetActualSupplyMillivolts( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, float requestedMillivolts);
467 EioUint32 eioT2500FIGetMaxFilterTimeuS( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber);
468 EioBoolean eioT2500FIIsBurdenConfigurable( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber);
469 float eioT2500FIGetBurdenResistance( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber);
470 EioUint32 eioT2500FIGetSlowestUpdateuS( EioSystem *ioSystem, EioModuleType moduleType);
471 EioUint32 eioT2500FIGetActualDebounceTimeuS( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 pointNumber, EioFIType type, EioUint32 debounce);
472 
473 
474 #endif /* EIO_T2500 == 1 */
475 
476 #ifdef __cplusplus
477 }
478 #endif
479 
480 #endif /* __EIO_T2500_H */
Definition: eio_ai.h:44
Definition: eio_syst.h:52
Definition: eio_sysf.h:14
Definition: eio_di.h:38
Definition: eio_fi.h:39
Definition: eio_ao.h:38