Steven Blair / rapid61850example
Committer:
sblair
Date:
Fri Oct 07 13:41:08 2011 +0000
Revision:
0:230c10b228ea
Child:
1:9399d44c2b1a

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sblair 0:230c10b228ea 1 #ifndef DATATYPES_H
sblair 0:230c10b228ea 2 #define DATATYPES_H
sblair 0:230c10b228ea 3
sblair 0:230c10b228ea 4 #ifdef __cplusplus /* If this is a C++ compiler, use C linkage */
sblair 0:230c10b228ea 5 extern "C" {
sblair 0:230c10b228ea 6 #endif
sblair 0:230c10b228ea 7
sblair 0:230c10b228ea 8 #include "ctypes.h"
sblair 0:230c10b228ea 9
sblair 0:230c10b228ea 10 // enums
sblair 0:230c10b228ea 11 enum ACDdir {
sblair 0:230c10b228ea 12 ACDDIR_UNKNOWN,
sblair 0:230c10b228ea 13 ACDDIR_FORWARD,
sblair 0:230c10b228ea 14 ACDDIR_BACKWARD,
sblair 0:230c10b228ea 15 ACDDIR_BOTH
sblair 0:230c10b228ea 16 };
sblair 0:230c10b228ea 17 enum seqT {
sblair 0:230c10b228ea 18 SEQT_POS_NEG_ZERO,
sblair 0:230c10b228ea 19 SEQT_DIR_QUAD_ZERO
sblair 0:230c10b228ea 20 };
sblair 0:230c10b228ea 21 enum Dbpos {
sblair 0:230c10b228ea 22 DBPOS_INTERMEDIATE,
sblair 0:230c10b228ea 23 DBPOS_OFF,
sblair 0:230c10b228ea 24 DBPOS_ON,
sblair 0:230c10b228ea 25 DBPOS_BAD
sblair 0:230c10b228ea 26 };
sblair 0:230c10b228ea 27 enum Tcmd {
sblair 0:230c10b228ea 28 TCMD_STOP,
sblair 0:230c10b228ea 29 TCMD_LOWER,
sblair 0:230c10b228ea 30 TCMD_HIGHER,
sblair 0:230c10b228ea 31 TCMD_RESERVED
sblair 0:230c10b228ea 32 };
sblair 0:230c10b228ea 33 enum Beh {
sblair 0:230c10b228ea 34 BEH_ON,
sblair 0:230c10b228ea 35 BEH_BLOCKED,
sblair 0:230c10b228ea 36 BEH_TEST,
sblair 0:230c10b228ea 37 BEH_TEST_BLOCKED,
sblair 0:230c10b228ea 38 BEH_OFF
sblair 0:230c10b228ea 39 };
sblair 0:230c10b228ea 40 enum Mod {
sblair 0:230c10b228ea 41 MOD_ON,
sblair 0:230c10b228ea 42 MOD_BLOCKED,
sblair 0:230c10b228ea 43 MOD_TEST,
sblair 0:230c10b228ea 44 MOD_TEST_BLOCKED,
sblair 0:230c10b228ea 45 MOD_OFF
sblair 0:230c10b228ea 46 };
sblair 0:230c10b228ea 47 enum Health {
sblair 0:230c10b228ea 48 HEALTH_OK,
sblair 0:230c10b228ea 49 HEALTH_WARNING,
sblair 0:230c10b228ea 50 HEALTH_ALARM
sblair 0:230c10b228ea 51 };
sblair 0:230c10b228ea 52
sblair 0:230c10b228ea 53 // data attributes
sblair 0:230c10b228ea 54 struct myAnalogValue {
sblair 0:230c10b228ea 55 CTYPE_FLOAT32 f;
sblair 0:230c10b228ea 56 };
sblair 0:230c10b228ea 57 struct ScaledValueConfig {
sblair 0:230c10b228ea 58 CTYPE_FLOAT32 scaleFactor;
sblair 0:230c10b228ea 59 CTYPE_FLOAT32 offset;
sblair 0:230c10b228ea 60 };
sblair 0:230c10b228ea 61 struct myVector {
sblair 0:230c10b228ea 62 struct myAnalogValue mag;
sblair 0:230c10b228ea 63 struct myAnalogValue ang;
sblair 0:230c10b228ea 64 };
sblair 0:230c10b228ea 65 struct simpleVector {
sblair 0:230c10b228ea 66 struct myAnalogValue mag;
sblair 0:230c10b228ea 67 struct myAnalogValue ang;
sblair 0:230c10b228ea 68 };
sblair 0:230c10b228ea 69
sblair 0:230c10b228ea 70 // data objects
sblair 0:230c10b228ea 71 struct myMod {
sblair 0:230c10b228ea 72 enum Mod ctlVal;
sblair 0:230c10b228ea 73 enum Mod stVal;
sblair 0:230c10b228ea 74 CTYPE_QUALITY q;
sblair 0:230c10b228ea 75 CTYPE_TIMESTAMP t;
sblair 0:230c10b228ea 76 };
sblair 0:230c10b228ea 77 struct myHealth {
sblair 0:230c10b228ea 78 enum Health stVal;
sblair 0:230c10b228ea 79 };
sblair 0:230c10b228ea 80 struct myBeh {
sblair 0:230c10b228ea 81 enum Beh stVal;
sblair 0:230c10b228ea 82 };
sblair 0:230c10b228ea 83 struct myINS {
sblair 0:230c10b228ea 84 CTYPE_INT32 stVal;
sblair 0:230c10b228ea 85 };
sblair 0:230c10b228ea 86 struct myLPL {
sblair 0:230c10b228ea 87 CTYPE_VISSTRING255 ldNs;
sblair 0:230c10b228ea 88 CTYPE_VISSTRING255 configRev;
sblair 0:230c10b228ea 89 };
sblair 0:230c10b228ea 90 struct myDPL {
sblair 0:230c10b228ea 91 CTYPE_VISSTRING255 vendor;
sblair 0:230c10b228ea 92 CTYPE_VISSTRING255 hwRev;
sblair 0:230c10b228ea 93 };
sblair 0:230c10b228ea 94 struct myPos {
sblair 0:230c10b228ea 95 CTYPE_DBPOS stVal;
sblair 0:230c10b228ea 96 CTYPE_QUALITY q;
sblair 0:230c10b228ea 97 CTYPE_TIMESTAMP t;
sblair 0:230c10b228ea 98 CTYPE_BOOLEAN ctlVal;
sblair 0:230c10b228ea 99 };
sblair 0:230c10b228ea 100 struct mySPS {
sblair 0:230c10b228ea 101 CTYPE_INT32 stVal;
sblair 0:230c10b228ea 102 CTYPE_QUALITY q;
sblair 0:230c10b228ea 103 CTYPE_TIMESTAMP t;
sblair 0:230c10b228ea 104 };
sblair 0:230c10b228ea 105 struct myMV {
sblair 0:230c10b228ea 106 struct myAnalogValue mag;
sblair 0:230c10b228ea 107 CTYPE_QUALITY q;
sblair 0:230c10b228ea 108 CTYPE_TIMESTAMP t;
sblair 0:230c10b228ea 109 struct ScaledValueConfig sVC;
sblair 0:230c10b228ea 110 };
sblair 0:230c10b228ea 111 struct simpleMV {
sblair 0:230c10b228ea 112 CTYPE_FLOAT32 mag;
sblair 0:230c10b228ea 113 CTYPE_QUALITY q;
sblair 0:230c10b228ea 114 CTYPE_TIMESTAMP t;
sblair 0:230c10b228ea 115 struct ScaledValueConfig sVC;
sblair 0:230c10b228ea 116 };
sblair 0:230c10b228ea 117 struct simpleCMV {
sblair 0:230c10b228ea 118 struct simpleVector cVal;
sblair 0:230c10b228ea 119 CTYPE_QUALITY q;
sblair 0:230c10b228ea 120 CTYPE_TIMESTAMP t;
sblair 0:230c10b228ea 121 };
sblair 0:230c10b228ea 122 struct simpleWYE {
sblair 0:230c10b228ea 123 struct simpleCMV phsA;
sblair 0:230c10b228ea 124 struct simpleCMV phsB;
sblair 0:230c10b228ea 125 struct simpleCMV phsC;
sblair 0:230c10b228ea 126 };
sblair 0:230c10b228ea 127 struct myCMV {
sblair 0:230c10b228ea 128 struct myVector cVal;
sblair 0:230c10b228ea 129 CTYPE_QUALITY q;
sblair 0:230c10b228ea 130 CTYPE_TIMESTAMP t;
sblair 0:230c10b228ea 131 };
sblair 0:230c10b228ea 132 struct mySEQ {
sblair 0:230c10b228ea 133 struct myCMV c1;
sblair 0:230c10b228ea 134 struct myCMV c2;
sblair 0:230c10b228ea 135 struct myCMV c3;
sblair 0:230c10b228ea 136 enum seqT seqT;
sblair 0:230c10b228ea 137 };
sblair 0:230c10b228ea 138 struct mySAV {
sblair 0:230c10b228ea 139 struct myAnalogValue instMag;
sblair 0:230c10b228ea 140 CTYPE_QUALITY q;
sblair 0:230c10b228ea 141 };
sblair 0:230c10b228ea 142 struct simpleSAV {
sblair 0:230c10b228ea 143 struct myAnalogValue instMag;
sblair 0:230c10b228ea 144 CTYPE_QUALITY q;
sblair 0:230c10b228ea 145 };
sblair 0:230c10b228ea 146
sblair 0:230c10b228ea 147 // logical nodes
sblair 0:230c10b228ea 148 struct LN0 {
sblair 0:230c10b228ea 149 struct myMod Mod;
sblair 0:230c10b228ea 150 struct myHealth Health;
sblair 0:230c10b228ea 151 struct myBeh Beh;
sblair 0:230c10b228ea 152 struct myLPL NamPlt;
sblair 0:230c10b228ea 153 };
sblair 0:230c10b228ea 154 struct LPHDa {
sblair 0:230c10b228ea 155 struct myMod Mod;
sblair 0:230c10b228ea 156 struct myHealth Health;
sblair 0:230c10b228ea 157 struct myBeh Beh;
sblair 0:230c10b228ea 158 struct myLPL NamPlt;
sblair 0:230c10b228ea 159 struct myDPL PhyNam;
sblair 0:230c10b228ea 160 struct myINS PhyHealth;
sblair 0:230c10b228ea 161 struct mySPS Proxy;
sblair 0:230c10b228ea 162 struct {
sblair 0:230c10b228ea 163 struct myAnalogValue instMag_1[2];
sblair 0:230c10b228ea 164 struct myMod Mod_1[2];
sblair 0:230c10b228ea 165 enum Mod stVal_1[2];
sblair 0:230c10b228ea 166 CTYPE_QUALITY q_1[2];
sblair 0:230c10b228ea 167 struct myMV Amps_1[2];
sblair 0:230c10b228ea 168 struct myPos Pos_2[2];
sblair 0:230c10b228ea 169 } sv_inputs;
sblair 0:230c10b228ea 170 };
sblair 0:230c10b228ea 171 struct CSWIa {
sblair 0:230c10b228ea 172 struct myMod Mod;
sblair 0:230c10b228ea 173 struct myHealth Health;
sblair 0:230c10b228ea 174 struct myBeh Beh;
sblair 0:230c10b228ea 175 struct myPos Pos;
sblair 0:230c10b228ea 176 struct mySPS GrpAl;
sblair 0:230c10b228ea 177 };
sblair 0:230c10b228ea 178 struct MMXUa {
sblair 0:230c10b228ea 179 struct myMod Mod;
sblair 0:230c10b228ea 180 struct myHealth Beh;
sblair 0:230c10b228ea 181 struct myBeh Health;
sblair 0:230c10b228ea 182 struct myMV Amps;
sblair 0:230c10b228ea 183 struct myMV Volts;
sblair 0:230c10b228ea 184 };
sblair 0:230c10b228ea 185 struct exampleMMXU {
sblair 0:230c10b228ea 186 struct myMod Mod;
sblair 0:230c10b228ea 187 struct myHealth Beh;
sblair 0:230c10b228ea 188 struct myBeh Health;
sblair 0:230c10b228ea 189 struct simpleWYE A;
sblair 0:230c10b228ea 190 struct {
sblair 0:230c10b228ea 191 struct simpleSAV AmpLocPhsA_1[16];
sblair 0:230c10b228ea 192 struct simpleSAV AmpLocPhsB_1[16];
sblair 0:230c10b228ea 193 struct simpleSAV AmpLocPhsC_1[16];
sblair 0:230c10b228ea 194 } sv_inputs;
sblair 0:230c10b228ea 195 };
sblair 0:230c10b228ea 196 struct exampleRMXU {
sblair 0:230c10b228ea 197 struct myMod Mod;
sblair 0:230c10b228ea 198 struct myHealth Beh;
sblair 0:230c10b228ea 199 struct myBeh Health;
sblair 0:230c10b228ea 200 struct simpleSAV AmpLocPhsA;
sblair 0:230c10b228ea 201 struct simpleSAV AmpLocPhsB;
sblair 0:230c10b228ea 202 struct simpleSAV AmpLocPhsC;
sblair 0:230c10b228ea 203 };
sblair 0:230c10b228ea 204 struct CILOa {
sblair 0:230c10b228ea 205 struct myHealth Mod;
sblair 0:230c10b228ea 206 struct myBeh Beh;
sblair 0:230c10b228ea 207 struct myINS Health;
sblair 0:230c10b228ea 208 struct mySPS EnaOpen;
sblair 0:230c10b228ea 209 struct mySPS EnaClose;
sblair 0:230c10b228ea 210 };
sblair 0:230c10b228ea 211 struct TVTRa {
sblair 0:230c10b228ea 212 struct myMod Mod;
sblair 0:230c10b228ea 213 struct myHealth Health;
sblair 0:230c10b228ea 214 struct myBeh Beh;
sblair 0:230c10b228ea 215 struct mySAV Vol;
sblair 0:230c10b228ea 216 };
sblair 0:230c10b228ea 217 struct RSYNa {
sblair 0:230c10b228ea 218 struct myMod Mod;
sblair 0:230c10b228ea 219 struct myHealth Health;
sblair 0:230c10b228ea 220 struct myBeh Beh;
sblair 0:230c10b228ea 221 struct myLPL NamPlt;
sblair 0:230c10b228ea 222 struct mySPS Rel;
sblair 0:230c10b228ea 223 struct {
sblair 0:230c10b228ea 224 struct myAnalogValue instMag_1[2];
sblair 0:230c10b228ea 225 struct myMod Mod_1[2];
sblair 0:230c10b228ea 226 enum Mod stVal_1[2];
sblair 0:230c10b228ea 227 CTYPE_QUALITY q_1[2];
sblair 0:230c10b228ea 228 struct myMV Amps_1[2];
sblair 0:230c10b228ea 229 struct myPos Pos_2[2];
sblair 0:230c10b228ea 230 } sv_inputs;
sblair 0:230c10b228ea 231 struct {
sblair 0:230c10b228ea 232 struct myAnalogValue instMag_1;
sblair 0:230c10b228ea 233 struct myPos Pos_1;
sblair 0:230c10b228ea 234 struct myPos Pos_2;
sblair 0:230c10b228ea 235 enum Mod stVal_1;
sblair 0:230c10b228ea 236 struct myMV Amps_1;
sblair 0:230c10b228ea 237 struct myMV Volts_1;
sblair 0:230c10b228ea 238 } gse_inputs;
sblair 0:230c10b228ea 239 };
sblair 0:230c10b228ea 240
sblair 0:230c10b228ea 241 void init_datatypes();
sblair 0:230c10b228ea 242
sblair 0:230c10b228ea 243
sblair 0:230c10b228ea 244
sblair 0:230c10b228ea 245
sblair 0:230c10b228ea 246 #ifdef __cplusplus /* If this is a C++ compiler, end C linkage */
sblair 0:230c10b228ea 247 }
sblair 0:230c10b228ea 248 #endif
sblair 0:230c10b228ea 249
sblair 0:230c10b228ea 250 #endif