versadac  1
versadac - Scalable Recorder Firmware
eio_mod.h
1 /*******************************************************************************
2 FILE : eio_mod.h
3 VERSION : $Id: eio_mod.h 30319 2010-03-10 18:43:56Z davec $
4 AUTHOR : David Cozens
5 SYSTEM : Diab C for PowerPC under vxWorks
6 DESCRIPTION : Prototypes and types for generic EIO Module API
7 *******************************************************************************/
8 #ifndef __EIO_MOD_H
9 #define __EIO_MOD_H
10 #include "eio_syst.h"
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 /* Module Types */
17 typedef enum
18 {
19  EIO_MODULE_TYPE_NONE, /* 0 */
20  EIO_MODULE_TYPE_UNKNOWN, /* 1 */
21  EIO_MODULE_TYPE_2500_AI2, /* 2 */
22  EIO_MODULE_TYPE_2500_AI3, /* 3 */
23  EIO_MODULE_TYPE_2500_AI4, /* 4 */
24  EIO_MODULE_TYPE_2500_ZI2, /* 5 */
25  EIO_MODULE_TYPE_2500_AO2, /* 6 */
26  /* 7 */
27  EIO_MODULE_TYPE_2500_DI16=8, /* 8 */
28  EIO_MODULE_TYPE_2500_DI4, /* 9 */
29  EIO_MODULE_TYPE_2500_DI8_LG, /* 10 */
30  EIO_MODULE_TYPE_2500_DI8_LG_FAST, /* 11 */
31  EIO_MODULE_TYPE_2500_DI8_CO, /* 12 */
32  EIO_MODULE_TYPE_2500_DI8_CO_FAST, /* 13 */
33  EIO_MODULE_TYPE_2500_DI6_MV, /* 14 */
34  EIO_MODULE_TYPE_2500_DI6_HV, /* 15 */
35  EIO_MODULE_TYPE_2500_DO4_EP, /* 16 */
36  EIO_MODULE_TYPE_2500_DO4_EP_FAST, /* 17 */
37  EIO_MODULE_TYPE_2500_DO4_24, /* 18 */
38  EIO_MODULE_TYPE_2500_DO4_24_FAST, /* 19 */
39  EIO_MODULE_TYPE_2500_DO8_24, /* 20 */
40  EIO_MODULE_TYPE_2500_DO16, /* 21 */
41  /* 22 */
42  /* 23 */
43  EIO_MODULE_TYPE_2500_RLY4=24, /* 24 */
44  EIO_MODULE_TYPE_2500_RLY4_FAST, /* 25 */
45  EIO_MODULE_TYPE_2500_RLY8, /* 26 */
46  EIO_MODULE_TYPE_2500_FI2, /* 27 */
47  /* 28 */
48  /* 29 */
49  EIO_MODULE_TYPE_PHOENIX_AI6=30, /* 30 */
50  EIO_MODULE_TYPE_PHOENIX_DI6, /* 31 */
51  EIO_MODULE_TYPE_PHOENIX_AO2, /* 32 */
52  EIO_MODULE_TYPE_PHOENIX_RLY1, /* 33 */
53  EIO_MODULE_TYPE_PHOENIX_RLY3, /* 34 */
54  EIO_MODULE_TYPE_PHOENIX_RLY4, /* 35 */
55  /* 36 */
56  /* 37 */
57  /* 38 */
58  /* 39 */
59  EIO_MODULE_TYPE_2500_AI8_TC=40, /* 40 */
60  EIO_MODULE_TYPE_2500_AI8_MA, /* 41 */
61  EIO_MODULE_TYPE_2500_AI8_RT, /* 42 */
62  EIO_MODULE_TYPE_2500_AI8_FMA, /* 43 */
63  EIO_NUMBER_OF_MODULE_TYPES
64 
65 }EioModuleType;
66 
67 /* Module runtime API */
68 EioModuleType eioModuleGetType( EioSystem *ioSystem, EioUint8 moduleNumber);
69 char * eioModuleGetVersion( EioSystem *ioSystem, EioUint8 moduleNumber);
70 EioBoolean eioModuleSetExpectedType( EioSystem *ioSystem, EioUint8 moduleNumber, EioModuleType moduleType, EioUint8 cycleNumber);
71 EioModuleType eioModuleGetExpectedType( EioSystem *ioSystem, EioUint8 moduleNumber);
72 EioUint8 eioModuleGetMajorVersion( EioSystem *ioSystem, EioUint8 moduleNumber);
73 EioUint8 eioModuleGetMinorVersion( EioSystem *ioSystem, EioUint8 moduleNumber);
74 void eioModuleSecondarySetFittedModule( EioSystem *ioSystem, EioUint8 moduleNumber, EioModuleType fitted);
75 EioBoolean eioModuleIsRedundantCapable( EioSystem *ioSystem, EioModuleType moduleType);
76 
77 
78 /* Module capability discovery API */
79 EioUint8 eioModuleGetNumberOfPoints( EioSystem *ioSystem, EioModuleType moduleType, EioPointType pointType);
80 EioBoolean eioModuleIsModuleTypeSupported( EioSystem *ioSystem, EioUint8 moduleNumber, EioModuleType moduleType);
81 EioBoolean eioModuleIsCycleRateSupported( EioSystem *ioSystem, EioModuleType moduleType, EioUint8 cycleNumber);
82 EioBoolean eioModuleIsModuleCompatible( EioSystem *ioSystem, EioModuleType expected, EioModuleType fitted, EioUint8 cycleNumber);
83 
84 EioModuleType eioModuleGetTypeFromName(EioSystem *ioSystem, const char *moduleName);
85 const char * eioModuleGetNameFromType(EioSystem *ioSystem, EioModuleType moduleType);
86 
87 
88 
89 #ifdef __cplusplus
90 } /* extern "C" */
91 #endif
92 #endif /* __EIO_MOD_H */
Definition: eio_syst.h:52