diff --git a/demos/beaglebone/beagle_demo.c b/demos/beaglebone/beagle_demo.c
index 31cc3c6..82c1ac0 100644
--- a/demos/beaglebone/beagle_demo.c
+++ b/demos/beaglebone/beagle_demo.c
@@ -77,27 +77,27 @@ static void
updateLED1stVal(bool newLedState, uint64_t timeStamp) {
switchLED(LED1, newLedState);
+ IedServer_updateUTCTimeAttributeValue(iedServer, IEDMODEL_GenericIO_GGIO1_SPCSO1_t, timeStamp);
IedServer_updateBooleanAttributeValue(iedServer, IEDMODEL_GenericIO_GGIO1_SPCSO1_stVal, newLedState);
IedServer_updateQuality(iedServer, IEDMODEL_GenericIO_GGIO1_SPCSO1_q, QUALITY_VALIDITY_GOOD | QUALITY_SOURCE_SUBSTITUTED);
- IedServer_updateUTCTimeAttributeValue(iedServer, IEDMODEL_GenericIO_GGIO1_SPCSO1_t, timeStamp);
}
static void
updateLED2stVal(bool newLedState, uint64_t timeStamp) {
switchLED(LED2, newLedState);
+ IedServer_updateUTCTimeAttributeValue(iedServer, IEDMODEL_GenericIO_GGIO1_SPCSO2_t, timeStamp);
IedServer_updateBooleanAttributeValue(iedServer, IEDMODEL_GenericIO_GGIO1_SPCSO2_stVal, newLedState);
IedServer_updateQuality(iedServer, IEDMODEL_GenericIO_GGIO1_SPCSO2_q, QUALITY_VALIDITY_QUESTIONABLE | QUALITY_DETAIL_OSCILLATORY);
- IedServer_updateUTCTimeAttributeValue(iedServer, IEDMODEL_GenericIO_GGIO1_SPCSO2_t, timeStamp);
}
static void
updateLED3stVal(bool newLedState, uint64_t timeStamp) {
switchLED(LED3, newLedState);
+ IedServer_updateUTCTimeAttributeValue(iedServer, IEDMODEL_GenericIO_GGIO1_SPCSO3_t, timeStamp);
IedServer_updateBooleanAttributeValue(iedServer, IEDMODEL_GenericIO_GGIO1_SPCSO3_stVal, newLedState);
IedServer_updateQuality(iedServer, IEDMODEL_GenericIO_GGIO1_SPCSO3_q, QUALITY_VALIDITY_GOOD);
- IedServer_updateUTCTimeAttributeValue(iedServer, IEDMODEL_GenericIO_GGIO1_SPCSO3_t, timeStamp);
}
static ControlHandlerResult
@@ -146,6 +146,62 @@ controlHandlerForBinaryOutput(void* parameter, MmsValue* value, bool test)
return CONTROL_RESULT_OK;
}
+static int ledOnTimeMs = 1000;
+static int ledOffTimeMs = 1000;
+static int32_t opCnt = 0;
+
+static ControlHandlerResult
+controlHandlerForInt32Controls(void* parameter, MmsValue* value, bool test)
+{
+ if (test)
+ return CONTROL_RESULT_OK;
+
+ if (parameter == IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs) {
+ int32_t newValue = MmsValue_toInt32(value);
+
+ opCnt = newValue;
+
+ uint64_t currentTime = Hal_getTimeInMs();
+
+ IedServer_updateUTCTimeAttributeValue(iedServer, IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_t, currentTime);
+ IedServer_updateInt32AttributeValue(iedServer, IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_stVal, opCnt);
+ }
+
+ return CONTROL_RESULT_OK;
+}
+
+
+
+static MmsDataAccessError
+int32WriteAccessHandler (DataAttribute* dataAttribute, MmsValue* value, ClientConnection connection, void* parameter)
+{
+ int newValue = MmsValue_toInt32(value);
+
+ /* Check if value is inside of valid range */
+ if (newValue < 0)
+ return DATA_ACCESS_ERROR_OBJECT_VALUE_INVALID;
+
+ if (dataAttribute == IEDMODEL_GenericIO_TIM_GAPC1_OpDlTmms_setVal) {
+
+ printf("New value for TIM_GAPC1.OpDlTmms.setVal = %i\n", newValue);
+
+ ledOffTimeMs = newValue;
+
+ return DATA_ACCESS_ERROR_SUCCESS;
+ }
+
+ if (dataAttribute == IEDMODEL_GenericIO_TIM_GAPC1_RsDlTmms_setVal) {
+
+ printf("New value for TIM_GAPC1.RsDlTmms.setVal = %i\n", newValue);
+
+ ledOnTimeMs = newValue;
+
+ return DATA_ACCESS_ERROR_SUCCESS;
+ }
+
+ return DATA_ACCESS_ERROR_OBJECT_ACCESS_DENIED;
+}
+
int main(int argc, char** argv) {
@@ -153,7 +209,7 @@ int main(int argc, char** argv) {
iedServer = IedServer_create(&iedModel);
- /* Set callback handlers */
+ /* Set control callback handlers */
IedServer_setConnectionIndicationHandler(iedServer, (IedConnectionIndicationHandler) connectionIndicationHandler, NULL);
IedServer_setPerformCheckHandler(iedServer, IEDMODEL_GenericIO_GGIO1_SPCSO1,
@@ -181,11 +237,22 @@ int main(int argc, char** argv) {
IEDMODEL_GenericIO_GGIO1_DPCSO1);
- /* Initialize process values */
+ IedServer_setControlHandler(iedServer, IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs, (ControlHandler) controlHandlerForInt32Controls,
+ IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs);
+ /* Initialize process values */
MmsValue* DPCSO1_stVal = IedServer_getAttributeValue(iedServer, IEDMODEL_GenericIO_GGIO1_DPCSO1_stVal);
MmsValue_setBitStringFromInteger(DPCSO1_stVal, 1); /* set DPC to OFF */
+ /* Intitalize setting values */
+ IedServer_updateInt32AttributeValue(iedServer, IEDMODEL_GenericIO_TIM_GAPC1_OpDlTmms_setVal, ledOffTimeMs);
+ IedServer_updateInt32AttributeValue(iedServer, IEDMODEL_GenericIO_TIM_GAPC1_RsDlTmms_setVal, ledOnTimeMs);
+
+ /* Set callback handler for settings */
+ IedServer_handleWriteAccess(iedServer, IEDMODEL_GenericIO_TIM_GAPC1_OpDlTmms_setVal, int32WriteAccessHandler, NULL);
+ IedServer_handleWriteAccess(iedServer, IEDMODEL_GenericIO_TIM_GAPC1_RsDlTmms_setVal, int32WriteAccessHandler, NULL);
+
+
/* MMS server will be instructed to start listening to client connections. */
IedServer_start(iedServer, 102);
@@ -210,10 +277,21 @@ int main(int argc, char** argv) {
if (automaticOperationMode) {
if (nextLedToggleTime <= currentTime) {
- nextLedToggleTime = currentTime + 1000;
+
+
+ if (ledStateValue)
+ nextLedToggleTime = currentTime + ledOffTimeMs;
+ else
+ nextLedToggleTime = currentTime + ledOnTimeMs;
ledStateValue = !ledStateValue;
+ if (ledStateValue) {
+ opCnt++;
+ IedServer_updateUTCTimeAttributeValue(iedServer, IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_t, currentTime);
+ IedServer_updateInt32AttributeValue(iedServer, IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_stVal, opCnt);
+ }
+
updateLED1stVal(ledStateValue, currentTime);
updateLED2stVal(ledStateValue, currentTime);
updateLED3stVal(ledStateValue, currentTime);
diff --git a/demos/beaglebone/beagle_demo.icd b/demos/beaglebone/beagle_demo.icd
index 6169c81..259c21f 100644
--- a/demos/beaglebone/beagle_demo.icd
+++ b/demos/beaglebone/beagle_demo.icd
@@ -72,6 +72,7 @@
+
@@ -99,6 +100,9 @@
+
+
+
@@ -106,20 +110,22 @@
-
-
-
+
+
+
+
-
+
+
-
-
-
+
+
+
@@ -134,17 +140,65 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EXT:2015
+
+
+
+
+
+
+
+
+
+
-
+
+
+ direct-with-normal-security
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ status-only
+
+
+
@@ -152,24 +206,29 @@
+
+
+
+
+
@@ -177,11 +236,13 @@
+
+
@@ -189,6 +250,7 @@
+
@@ -198,6 +260,7 @@
+
@@ -205,13 +268,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -228,6 +311,21 @@
+
+
+ on
+ blocked
+ test
+ test/blocked
+ off
+
+
+
+ unknown
+ forward
+ backward
+ both
+
status-only
@@ -236,6 +334,7 @@
direct-with-enhanced-security
sbo-with-enhanced-security
+
not-supported
bay-control
diff --git a/demos/beaglebone/beaglebone_leds.h b/demos/beaglebone/beaglebone_leds.h
index 2bcfa0d..61a396c 100644
--- a/demos/beaglebone/beaglebone_leds.h
+++ b/demos/beaglebone/beaglebone_leds.h
@@ -9,6 +9,9 @@
/* set to 1 if you want to run the demo on a PC */
//#define SIMULATED 1
+
+
+/* select correct file paths to access LEDs - depends on beaglebones linux distro/version */
#if 0
#define LED1 "/sys/class/leds/beaglebone::usr0"
#define LED2 "/sys/class/leds/beaglebone::usr1"
diff --git a/demos/beaglebone/static_model.c b/demos/beaglebone/static_model.c
index 9d2b861..993db3e 100644
--- a/demos/beaglebone/static_model.c
+++ b/demos/beaglebone/static_model.c
@@ -76,14 +76,62 @@ LogicalNode iedModel_GenericIO_LLN0 = {
"LLN0",
(ModelNode*) &iedModel_GenericIO,
(ModelNode*) &iedModel_GenericIO_LPHD1,
- (ModelNode*) &iedModel_GenericIO_LLN0_Mod,
+ (ModelNode*) &iedModel_GenericIO_LLN0_Beh,
};
+DataObject iedModel_GenericIO_LLN0_Beh = {
+ DataObjectModelType,
+ "Beh",
+ (ModelNode*) &iedModel_GenericIO_LLN0,
+ (ModelNode*) &iedModel_GenericIO_LLN0_Mod,
+ (ModelNode*) &iedModel_GenericIO_LLN0_Beh_stVal,
+ 0
+};
+
+DataAttribute iedModel_GenericIO_LLN0_Beh_stVal = {
+ DataAttributeModelType,
+ "stVal",
+ (ModelNode*) &iedModel_GenericIO_LLN0_Beh,
+ (ModelNode*) &iedModel_GenericIO_LLN0_Beh_q,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ ENUMERATED,
+ 0 + TRG_OPT_DATA_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_LLN0_Beh_q = {
+ DataAttributeModelType,
+ "q",
+ (ModelNode*) &iedModel_GenericIO_LLN0_Beh,
+ (ModelNode*) &iedModel_GenericIO_LLN0_Beh_t,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ QUALITY,
+ 0 + TRG_OPT_QUALITY_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_LLN0_Beh_t = {
+ DataAttributeModelType,
+ "t",
+ (ModelNode*) &iedModel_GenericIO_LLN0_Beh,
+ NULL,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ TIMESTAMP,
+ 0,
+ NULL,
+ 0};
+
DataObject iedModel_GenericIO_LLN0_Mod = {
DataObjectModelType,
"Mod",
(ModelNode*) &iedModel_GenericIO_LLN0,
- (ModelNode*) &iedModel_GenericIO_LLN0_Beh,
+ (ModelNode*) &iedModel_GenericIO_LLN0_Health,
(ModelNode*) &iedModel_GenericIO_LLN0_Mod_stVal,
0
};
@@ -96,7 +144,7 @@ DataAttribute iedModel_GenericIO_LLN0_Mod_stVal = {
NULL,
0,
IEC61850_FC_ST,
- INT32,
+ ENUMERATED,
0 + TRG_OPT_DATA_CHANGED,
NULL,
0};
@@ -140,54 +188,6 @@ DataAttribute iedModel_GenericIO_LLN0_Mod_ctlModel = {
NULL,
0};
-DataObject iedModel_GenericIO_LLN0_Beh = {
- DataObjectModelType,
- "Beh",
- (ModelNode*) &iedModel_GenericIO_LLN0,
- (ModelNode*) &iedModel_GenericIO_LLN0_Health,
- (ModelNode*) &iedModel_GenericIO_LLN0_Beh_stVal,
- 0
-};
-
-DataAttribute iedModel_GenericIO_LLN0_Beh_stVal = {
- DataAttributeModelType,
- "stVal",
- (ModelNode*) &iedModel_GenericIO_LLN0_Beh,
- (ModelNode*) &iedModel_GenericIO_LLN0_Beh_q,
- NULL,
- 0,
- IEC61850_FC_ST,
- INT32,
- 0 + TRG_OPT_DATA_CHANGED,
- NULL,
- 0};
-
-DataAttribute iedModel_GenericIO_LLN0_Beh_q = {
- DataAttributeModelType,
- "q",
- (ModelNode*) &iedModel_GenericIO_LLN0_Beh,
- (ModelNode*) &iedModel_GenericIO_LLN0_Beh_t,
- NULL,
- 0,
- IEC61850_FC_ST,
- QUALITY,
- 0 + TRG_OPT_QUALITY_CHANGED,
- NULL,
- 0};
-
-DataAttribute iedModel_GenericIO_LLN0_Beh_t = {
- DataAttributeModelType,
- "t",
- (ModelNode*) &iedModel_GenericIO_LLN0_Beh,
- NULL,
- NULL,
- 0,
- IEC61850_FC_ST,
- TIMESTAMP,
- 0,
- NULL,
- 0};
-
DataObject iedModel_GenericIO_LLN0_Health = {
DataObjectModelType,
"Health",
@@ -205,7 +205,7 @@ DataAttribute iedModel_GenericIO_LLN0_Health_stVal = {
NULL,
0,
IEC61850_FC_ST,
- INT32,
+ ENUMERATED,
0 + TRG_OPT_DATA_CHANGED,
NULL,
0};
@@ -357,7 +357,7 @@ DataAttribute iedModel_GenericIO_LPHD1_PhyHealth_stVal = {
NULL,
0,
IEC61850_FC_ST,
- INT32,
+ ENUMERATED,
0 + TRG_OPT_DATA_CHANGED,
NULL,
0};
@@ -440,19 +440,80 @@ LogicalNode iedModel_GenericIO_GGIO1 = {
LogicalNodeModelType,
"GGIO1",
(ModelNode*) &iedModel_GenericIO,
- NULL,
- (ModelNode*) &iedModel_GenericIO_GGIO1_Mod,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1,
+ (ModelNode*) &iedModel_GenericIO_GGIO1_Beh,
};
+DataObject iedModel_GenericIO_GGIO1_Beh = {
+ DataObjectModelType,
+ "Beh",
+ (ModelNode*) &iedModel_GenericIO_GGIO1,
+ (ModelNode*) &iedModel_GenericIO_GGIO1_Mod,
+ (ModelNode*) &iedModel_GenericIO_GGIO1_Beh_stVal,
+ 0
+};
+
+DataAttribute iedModel_GenericIO_GGIO1_Beh_stVal = {
+ DataAttributeModelType,
+ "stVal",
+ (ModelNode*) &iedModel_GenericIO_GGIO1_Beh,
+ (ModelNode*) &iedModel_GenericIO_GGIO1_Beh_q,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ ENUMERATED,
+ 0 + TRG_OPT_DATA_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_GGIO1_Beh_q = {
+ DataAttributeModelType,
+ "q",
+ (ModelNode*) &iedModel_GenericIO_GGIO1_Beh,
+ (ModelNode*) &iedModel_GenericIO_GGIO1_Beh_t,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ QUALITY,
+ 0 + TRG_OPT_QUALITY_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_GGIO1_Beh_t = {
+ DataAttributeModelType,
+ "t",
+ (ModelNode*) &iedModel_GenericIO_GGIO1_Beh,
+ NULL,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ TIMESTAMP,
+ 0,
+ NULL,
+ 0};
+
DataObject iedModel_GenericIO_GGIO1_Mod = {
DataObjectModelType,
"Mod",
(ModelNode*) &iedModel_GenericIO_GGIO1,
- (ModelNode*) &iedModel_GenericIO_GGIO1_Beh,
- (ModelNode*) &iedModel_GenericIO_GGIO1_Mod_q,
+ (ModelNode*) &iedModel_GenericIO_GGIO1_Health,
+ (ModelNode*) &iedModel_GenericIO_GGIO1_Mod_stVal,
0
};
+DataAttribute iedModel_GenericIO_GGIO1_Mod_stVal = {
+ DataAttributeModelType,
+ "stVal",
+ (ModelNode*) &iedModel_GenericIO_GGIO1_Mod,
+ (ModelNode*) &iedModel_GenericIO_GGIO1_Mod_q,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ ENUMERATED,
+ 0 + TRG_OPT_DATA_CHANGED,
+ NULL,
+ 0};
+
DataAttribute iedModel_GenericIO_GGIO1_Mod_q = {
DataAttributeModelType,
"q",
@@ -492,54 +553,6 @@ DataAttribute iedModel_GenericIO_GGIO1_Mod_ctlModel = {
NULL,
0};
-DataObject iedModel_GenericIO_GGIO1_Beh = {
- DataObjectModelType,
- "Beh",
- (ModelNode*) &iedModel_GenericIO_GGIO1,
- (ModelNode*) &iedModel_GenericIO_GGIO1_Health,
- (ModelNode*) &iedModel_GenericIO_GGIO1_Beh_stVal,
- 0
-};
-
-DataAttribute iedModel_GenericIO_GGIO1_Beh_stVal = {
- DataAttributeModelType,
- "stVal",
- (ModelNode*) &iedModel_GenericIO_GGIO1_Beh,
- (ModelNode*) &iedModel_GenericIO_GGIO1_Beh_q,
- NULL,
- 0,
- IEC61850_FC_ST,
- INT32,
- 0 + TRG_OPT_DATA_CHANGED,
- NULL,
- 0};
-
-DataAttribute iedModel_GenericIO_GGIO1_Beh_q = {
- DataAttributeModelType,
- "q",
- (ModelNode*) &iedModel_GenericIO_GGIO1_Beh,
- (ModelNode*) &iedModel_GenericIO_GGIO1_Beh_t,
- NULL,
- 0,
- IEC61850_FC_ST,
- QUALITY,
- 0 + TRG_OPT_QUALITY_CHANGED,
- NULL,
- 0};
-
-DataAttribute iedModel_GenericIO_GGIO1_Beh_t = {
- DataAttributeModelType,
- "t",
- (ModelNode*) &iedModel_GenericIO_GGIO1_Beh,
- NULL,
- NULL,
- 0,
- IEC61850_FC_ST,
- TIMESTAMP,
- 0,
- NULL,
- 0};
-
DataObject iedModel_GenericIO_GGIO1_Health = {
DataObjectModelType,
"Health",
@@ -557,7 +570,7 @@ DataAttribute iedModel_GenericIO_GGIO1_Health_stVal = {
NULL,
0,
IEC61850_FC_ST,
- INT32,
+ ENUMERATED,
0 + TRG_OPT_DATA_CHANGED,
NULL,
0};
@@ -1901,17 +1914,491 @@ DataAttribute iedModel_GenericIO_GGIO1_Ind4_t = {
NULL,
0};
+LogicalNode iedModel_GenericIO_TIM_GAPC1 = {
+ LogicalNodeModelType,
+ "TIM_GAPC1",
+ (ModelNode*) &iedModel_GenericIO,
+ NULL,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Beh,
+};
+
+DataObject iedModel_GenericIO_TIM_GAPC1_Beh = {
+ DataObjectModelType,
+ "Beh",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Mod,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Beh_stVal,
+ 0
+};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_Beh_stVal = {
+ DataAttributeModelType,
+ "stVal",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Beh,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Beh_q,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ ENUMERATED,
+ 0 + TRG_OPT_DATA_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_Beh_q = {
+ DataAttributeModelType,
+ "q",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Beh,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Beh_t,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ QUALITY,
+ 0 + TRG_OPT_QUALITY_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_Beh_t = {
+ DataAttributeModelType,
+ "t",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Beh,
+ NULL,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ TIMESTAMP,
+ 0,
+ NULL,
+ 0};
+
+DataObject iedModel_GenericIO_TIM_GAPC1_Mod = {
+ DataObjectModelType,
+ "Mod",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Str,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Mod_stVal,
+ 0
+};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_Mod_stVal = {
+ DataAttributeModelType,
+ "stVal",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Mod,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Mod_q,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ ENUMERATED,
+ 0 + TRG_OPT_DATA_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_Mod_q = {
+ DataAttributeModelType,
+ "q",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Mod,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Mod_t,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ QUALITY,
+ 0 + TRG_OPT_QUALITY_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_Mod_t = {
+ DataAttributeModelType,
+ "t",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Mod,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Mod_ctlModel,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ TIMESTAMP,
+ 0,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_Mod_ctlModel = {
+ DataAttributeModelType,
+ "ctlModel",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Mod,
+ NULL,
+ NULL,
+ 0,
+ IEC61850_FC_CF,
+ ENUMERATED,
+ 0,
+ NULL,
+ 0};
+
+DataObject iedModel_GenericIO_TIM_GAPC1_Str = {
+ DataObjectModelType,
+ "Str",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Op,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Str_general,
+ 0
+};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_Str_general = {
+ DataAttributeModelType,
+ "general",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Str,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Str_dirGeneral,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ BOOLEAN,
+ 0 + TRG_OPT_DATA_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_Str_dirGeneral = {
+ DataAttributeModelType,
+ "dirGeneral",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Str,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Str_q,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ ENUMERATED,
+ 0 + TRG_OPT_DATA_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_Str_q = {
+ DataAttributeModelType,
+ "q",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Str,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Str_t,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ QUALITY,
+ 0 + TRG_OPT_QUALITY_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_Str_t = {
+ DataAttributeModelType,
+ "t",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Str,
+ NULL,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ TIMESTAMP,
+ 0,
+ NULL,
+ 0};
+
+DataObject iedModel_GenericIO_TIM_GAPC1_Op = {
+ DataObjectModelType,
+ "Op",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpDlTmms,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Op_general,
+ 0
+};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_Op_general = {
+ DataAttributeModelType,
+ "general",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Op,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Op_q,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ BOOLEAN,
+ 0 + TRG_OPT_DATA_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_Op_q = {
+ DataAttributeModelType,
+ "q",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Op,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Op_t,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ QUALITY,
+ 0 + TRG_OPT_QUALITY_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_Op_t = {
+ DataAttributeModelType,
+ "t",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Op,
+ NULL,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ TIMESTAMP,
+ 0,
+ NULL,
+ 0};
+
+DataObject iedModel_GenericIO_TIM_GAPC1_OpDlTmms = {
+ DataObjectModelType,
+ "OpDlTmms",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_RsDlTmms,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpDlTmms_setVal,
+ 0
+};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_OpDlTmms_setVal = {
+ DataAttributeModelType,
+ "setVal",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpDlTmms,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpDlTmms_dataNs,
+ NULL,
+ 0,
+ IEC61850_FC_SP,
+ INT32,
+ 0 + TRG_OPT_DATA_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_OpDlTmms_dataNs = {
+ DataAttributeModelType,
+ "dataNs",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpDlTmms,
+ NULL,
+ NULL,
+ 0,
+ IEC61850_FC_EX,
+ VISIBLE_STRING_255,
+ 0,
+ NULL,
+ 0};
+
+DataObject iedModel_GenericIO_TIM_GAPC1_RsDlTmms = {
+ DataObjectModelType,
+ "RsDlTmms",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_RsDlTmms_setVal,
+ 0
+};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_RsDlTmms_setVal = {
+ DataAttributeModelType,
+ "setVal",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_RsDlTmms,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_RsDlTmms_dataNs,
+ NULL,
+ 0,
+ IEC61850_FC_SP,
+ INT32,
+ 0 + TRG_OPT_DATA_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_RsDlTmms_dataNs = {
+ DataAttributeModelType,
+ "dataNs",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_RsDlTmms,
+ NULL,
+ NULL,
+ 0,
+ IEC61850_FC_EX,
+ VISIBLE_STRING_255,
+ 0,
+ NULL,
+ 0};
+
+DataObject iedModel_GenericIO_TIM_GAPC1_OpCntRs = {
+ DataObjectModelType,
+ "OpCntRs",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1,
+ NULL,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_stVal,
+ 0
+};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_stVal = {
+ DataAttributeModelType,
+ "stVal",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_q,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ INT32,
+ 0 + TRG_OPT_DATA_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_q = {
+ DataAttributeModelType,
+ "q",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_t,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ QUALITY,
+ 0 + TRG_OPT_QUALITY_CHANGED,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_t = {
+ DataAttributeModelType,
+ "t",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper,
+ NULL,
+ 0,
+ IEC61850_FC_ST,
+ TIMESTAMP,
+ 0,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper = {
+ DataAttributeModelType,
+ "Oper",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_ctlModel,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_ctlVal,
+ 0,
+ IEC61850_FC_CO,
+ CONSTRUCTED,
+ 0,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_ctlVal = {
+ DataAttributeModelType,
+ "ctlVal",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin,
+ NULL,
+ 0,
+ IEC61850_FC_CO,
+ BOOLEAN,
+ 0,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin = {
+ DataAttributeModelType,
+ "origin",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_ctlNum,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin_orCat,
+ 0,
+ IEC61850_FC_CO,
+ CONSTRUCTED,
+ 0,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin_orCat = {
+ DataAttributeModelType,
+ "orCat",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin_orIdent,
+ NULL,
+ 0,
+ IEC61850_FC_CO,
+ ENUMERATED,
+ 0,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin_orIdent = {
+ DataAttributeModelType,
+ "orIdent",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin,
+ NULL,
+ NULL,
+ 0,
+ IEC61850_FC_CO,
+ OCTET_STRING_64,
+ 0,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_ctlNum = {
+ DataAttributeModelType,
+ "ctlNum",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_T,
+ NULL,
+ 0,
+ IEC61850_FC_CO,
+ INT8U,
+ 0,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_T = {
+ DataAttributeModelType,
+ "T",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_Test,
+ NULL,
+ 0,
+ IEC61850_FC_CO,
+ TIMESTAMP,
+ 0,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_Test = {
+ DataAttributeModelType,
+ "Test",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper,
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_Check,
+ NULL,
+ 0,
+ IEC61850_FC_CO,
+ BOOLEAN,
+ 0,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_Check = {
+ DataAttributeModelType,
+ "Check",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper,
+ NULL,
+ NULL,
+ 0,
+ IEC61850_FC_CO,
+ CHECK,
+ 0,
+ NULL,
+ 0};
+
+DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_ctlModel = {
+ DataAttributeModelType,
+ "ctlModel",
+ (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_OpCntRs,
+ NULL,
+ NULL,
+ 0,
+ IEC61850_FC_CF,
+ ENUMERATED,
+ 0,
+ NULL,
+ 0};
+
extern ReportControlBlock iedModel_GenericIO_LLN0_report0;
extern ReportControlBlock iedModel_GenericIO_LLN0_report1;
extern ReportControlBlock iedModel_GenericIO_LLN0_report2;
extern ReportControlBlock iedModel_GenericIO_LLN0_report3;
extern ReportControlBlock iedModel_GenericIO_LLN0_report4;
-ReportControlBlock iedModel_GenericIO_LLN0_report0 = {&iedModel_GenericIO_LLN0, "EventsRCB01", "Events1", false, "Events", 1, 8, 111, 50, 1000, &iedModel_GenericIO_LLN0_report1};
-ReportControlBlock iedModel_GenericIO_LLN0_report1 = {&iedModel_GenericIO_LLN0, "EventsRCB02", "Events1", false, "Events", 1, 8, 111, 50, 1000, &iedModel_GenericIO_LLN0_report2};
-ReportControlBlock iedModel_GenericIO_LLN0_report2 = {&iedModel_GenericIO_LLN0, "EventsRCB03", "Events1", false, "Events", 1, 8, 111, 50, 1000, &iedModel_GenericIO_LLN0_report3};
-ReportControlBlock iedModel_GenericIO_LLN0_report3 = {&iedModel_GenericIO_LLN0, "EventsRCB04", "Events1", false, "Events", 1, 8, 111, 50, 1000, &iedModel_GenericIO_LLN0_report4};
-ReportControlBlock iedModel_GenericIO_LLN0_report4 = {&iedModel_GenericIO_LLN0, "EventsRCB05", "Events1", false, "Events", 1, 8, 111, 50, 1000, NULL};
+ReportControlBlock iedModel_GenericIO_LLN0_report0 = {&iedModel_GenericIO_LLN0, "EventsRCB01", "Events1", false, "Events", 1, 24, 111, 50, 1000, &iedModel_GenericIO_LLN0_report1};
+ReportControlBlock iedModel_GenericIO_LLN0_report1 = {&iedModel_GenericIO_LLN0, "EventsRCB02", "Events1", false, "Events", 1, 24, 111, 50, 1000, &iedModel_GenericIO_LLN0_report2};
+ReportControlBlock iedModel_GenericIO_LLN0_report2 = {&iedModel_GenericIO_LLN0, "EventsRCB03", "Events1", false, "Events", 1, 24, 111, 50, 1000, &iedModel_GenericIO_LLN0_report3};
+ReportControlBlock iedModel_GenericIO_LLN0_report3 = {&iedModel_GenericIO_LLN0, "EventsRCB04", "Events1", false, "Events", 1, 24, 111, 50, 1000, &iedModel_GenericIO_LLN0_report4};
+ReportControlBlock iedModel_GenericIO_LLN0_report4 = {&iedModel_GenericIO_LLN0, "EventsRCB05", "Events1", false, "Events", 1, 24, 111, 50, 1000, NULL};
@@ -1941,4 +2428,12 @@ iedModel_GenericIO_GGIO1_SPCSO2_ctlModel.mmsValue = MmsValue_newIntegerFromInt32
iedModel_GenericIO_GGIO1_SPCSO3_ctlModel.mmsValue = MmsValue_newIntegerFromInt32(1);
iedModel_GenericIO_GGIO1_DPCSO1_ctlModel.mmsValue = MmsValue_newIntegerFromInt32(3);
+
+iedModel_GenericIO_TIM_GAPC1_Mod_ctlModel.mmsValue = MmsValue_newIntegerFromInt32(0);
+
+iedModel_GenericIO_TIM_GAPC1_OpDlTmms_dataNs.mmsValue = MmsValue_newVisibleString("EXT:2015");
+
+iedModel_GenericIO_TIM_GAPC1_RsDlTmms_dataNs.mmsValue = MmsValue_newVisibleString("EXT:2015");
+
+iedModel_GenericIO_TIM_GAPC1_OpCntRs_ctlModel.mmsValue = MmsValue_newIntegerFromInt32(1);
}
diff --git a/demos/beaglebone/static_model.h b/demos/beaglebone/static_model.h
index 36a7e0f..a50ade8 100644
--- a/demos/beaglebone/static_model.h
+++ b/demos/beaglebone/static_model.h
@@ -13,15 +13,15 @@
extern IedModel iedModel;
extern LogicalDevice iedModel_GenericIO;
extern LogicalNode iedModel_GenericIO_LLN0;
+extern DataObject iedModel_GenericIO_LLN0_Beh;
+extern DataAttribute iedModel_GenericIO_LLN0_Beh_stVal;
+extern DataAttribute iedModel_GenericIO_LLN0_Beh_q;
+extern DataAttribute iedModel_GenericIO_LLN0_Beh_t;
extern DataObject iedModel_GenericIO_LLN0_Mod;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_stVal;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_q;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_t;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_ctlModel;
-extern DataObject iedModel_GenericIO_LLN0_Beh;
-extern DataAttribute iedModel_GenericIO_LLN0_Beh_stVal;
-extern DataAttribute iedModel_GenericIO_LLN0_Beh_q;
-extern DataAttribute iedModel_GenericIO_LLN0_Beh_t;
extern DataObject iedModel_GenericIO_LLN0_Health;
extern DataAttribute iedModel_GenericIO_LLN0_Health_stVal;
extern DataAttribute iedModel_GenericIO_LLN0_Health_q;
@@ -44,14 +44,15 @@ extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_stVal;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_q;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_t;
extern LogicalNode iedModel_GenericIO_GGIO1;
-extern DataObject iedModel_GenericIO_GGIO1_Mod;
-extern DataAttribute iedModel_GenericIO_GGIO1_Mod_q;
-extern DataAttribute iedModel_GenericIO_GGIO1_Mod_t;
-extern DataAttribute iedModel_GenericIO_GGIO1_Mod_ctlModel;
extern DataObject iedModel_GenericIO_GGIO1_Beh;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_t;
+extern DataObject iedModel_GenericIO_GGIO1_Mod;
+extern DataAttribute iedModel_GenericIO_GGIO1_Mod_stVal;
+extern DataAttribute iedModel_GenericIO_GGIO1_Mod_q;
+extern DataAttribute iedModel_GenericIO_GGIO1_Mod_t;
+extern DataAttribute iedModel_GenericIO_GGIO1_Mod_ctlModel;
extern DataObject iedModel_GenericIO_GGIO1_Health;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_q;
@@ -161,20 +162,59 @@ extern DataObject iedModel_GenericIO_GGIO1_Ind4;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_t;
+extern LogicalNode iedModel_GenericIO_TIM_GAPC1;
+extern DataObject iedModel_GenericIO_TIM_GAPC1_Beh;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_Beh_stVal;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_Beh_q;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_Beh_t;
+extern DataObject iedModel_GenericIO_TIM_GAPC1_Mod;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_Mod_stVal;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_Mod_q;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_Mod_t;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_Mod_ctlModel;
+extern DataObject iedModel_GenericIO_TIM_GAPC1_Str;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_Str_general;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_Str_dirGeneral;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_Str_q;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_Str_t;
+extern DataObject iedModel_GenericIO_TIM_GAPC1_Op;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_Op_general;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_Op_q;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_Op_t;
+extern DataObject iedModel_GenericIO_TIM_GAPC1_OpDlTmms;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpDlTmms_setVal;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpDlTmms_dataNs;
+extern DataObject iedModel_GenericIO_TIM_GAPC1_RsDlTmms;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_RsDlTmms_setVal;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_RsDlTmms_dataNs;
+extern DataObject iedModel_GenericIO_TIM_GAPC1_OpCntRs;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_stVal;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_q;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_t;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_ctlVal;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin_orCat;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin_orIdent;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_ctlNum;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_T;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_Test;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_Check;
+extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_ctlModel;
#define IEDMODEL_GenericIO (&iedModel_GenericIO)
#define IEDMODEL_GenericIO_LLN0 (&iedModel_GenericIO_LLN0)
+#define IEDMODEL_GenericIO_LLN0_Beh (&iedModel_GenericIO_LLN0_Beh)
+#define IEDMODEL_GenericIO_LLN0_Beh_stVal (&iedModel_GenericIO_LLN0_Beh_stVal)
+#define IEDMODEL_GenericIO_LLN0_Beh_q (&iedModel_GenericIO_LLN0_Beh_q)
+#define IEDMODEL_GenericIO_LLN0_Beh_t (&iedModel_GenericIO_LLN0_Beh_t)
#define IEDMODEL_GenericIO_LLN0_Mod (&iedModel_GenericIO_LLN0_Mod)
#define IEDMODEL_GenericIO_LLN0_Mod_stVal (&iedModel_GenericIO_LLN0_Mod_stVal)
#define IEDMODEL_GenericIO_LLN0_Mod_q (&iedModel_GenericIO_LLN0_Mod_q)
#define IEDMODEL_GenericIO_LLN0_Mod_t (&iedModel_GenericIO_LLN0_Mod_t)
#define IEDMODEL_GenericIO_LLN0_Mod_ctlModel (&iedModel_GenericIO_LLN0_Mod_ctlModel)
-#define IEDMODEL_GenericIO_LLN0_Beh (&iedModel_GenericIO_LLN0_Beh)
-#define IEDMODEL_GenericIO_LLN0_Beh_stVal (&iedModel_GenericIO_LLN0_Beh_stVal)
-#define IEDMODEL_GenericIO_LLN0_Beh_q (&iedModel_GenericIO_LLN0_Beh_q)
-#define IEDMODEL_GenericIO_LLN0_Beh_t (&iedModel_GenericIO_LLN0_Beh_t)
#define IEDMODEL_GenericIO_LLN0_Health (&iedModel_GenericIO_LLN0_Health)
#define IEDMODEL_GenericIO_LLN0_Health_stVal (&iedModel_GenericIO_LLN0_Health_stVal)
#define IEDMODEL_GenericIO_LLN0_Health_q (&iedModel_GenericIO_LLN0_Health_q)
@@ -197,14 +237,15 @@ extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_t;
#define IEDMODEL_GenericIO_LPHD1_Proxy_q (&iedModel_GenericIO_LPHD1_Proxy_q)
#define IEDMODEL_GenericIO_LPHD1_Proxy_t (&iedModel_GenericIO_LPHD1_Proxy_t)
#define IEDMODEL_GenericIO_GGIO1 (&iedModel_GenericIO_GGIO1)
-#define IEDMODEL_GenericIO_GGIO1_Mod (&iedModel_GenericIO_GGIO1_Mod)
-#define IEDMODEL_GenericIO_GGIO1_Mod_q (&iedModel_GenericIO_GGIO1_Mod_q)
-#define IEDMODEL_GenericIO_GGIO1_Mod_t (&iedModel_GenericIO_GGIO1_Mod_t)
-#define IEDMODEL_GenericIO_GGIO1_Mod_ctlModel (&iedModel_GenericIO_GGIO1_Mod_ctlModel)
#define IEDMODEL_GenericIO_GGIO1_Beh (&iedModel_GenericIO_GGIO1_Beh)
#define IEDMODEL_GenericIO_GGIO1_Beh_stVal (&iedModel_GenericIO_GGIO1_Beh_stVal)
#define IEDMODEL_GenericIO_GGIO1_Beh_q (&iedModel_GenericIO_GGIO1_Beh_q)
#define IEDMODEL_GenericIO_GGIO1_Beh_t (&iedModel_GenericIO_GGIO1_Beh_t)
+#define IEDMODEL_GenericIO_GGIO1_Mod (&iedModel_GenericIO_GGIO1_Mod)
+#define IEDMODEL_GenericIO_GGIO1_Mod_stVal (&iedModel_GenericIO_GGIO1_Mod_stVal)
+#define IEDMODEL_GenericIO_GGIO1_Mod_q (&iedModel_GenericIO_GGIO1_Mod_q)
+#define IEDMODEL_GenericIO_GGIO1_Mod_t (&iedModel_GenericIO_GGIO1_Mod_t)
+#define IEDMODEL_GenericIO_GGIO1_Mod_ctlModel (&iedModel_GenericIO_GGIO1_Mod_ctlModel)
#define IEDMODEL_GenericIO_GGIO1_Health (&iedModel_GenericIO_GGIO1_Health)
#define IEDMODEL_GenericIO_GGIO1_Health_stVal (&iedModel_GenericIO_GGIO1_Health_stVal)
#define IEDMODEL_GenericIO_GGIO1_Health_q (&iedModel_GenericIO_GGIO1_Health_q)
@@ -314,6 +355,45 @@ extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_t;
#define IEDMODEL_GenericIO_GGIO1_Ind4_stVal (&iedModel_GenericIO_GGIO1_Ind4_stVal)
#define IEDMODEL_GenericIO_GGIO1_Ind4_q (&iedModel_GenericIO_GGIO1_Ind4_q)
#define IEDMODEL_GenericIO_GGIO1_Ind4_t (&iedModel_GenericIO_GGIO1_Ind4_t)
+#define IEDMODEL_GenericIO_TIM_GAPC1 (&iedModel_GenericIO_TIM_GAPC1)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Beh (&iedModel_GenericIO_TIM_GAPC1_Beh)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Beh_stVal (&iedModel_GenericIO_TIM_GAPC1_Beh_stVal)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Beh_q (&iedModel_GenericIO_TIM_GAPC1_Beh_q)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Beh_t (&iedModel_GenericIO_TIM_GAPC1_Beh_t)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Mod (&iedModel_GenericIO_TIM_GAPC1_Mod)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Mod_stVal (&iedModel_GenericIO_TIM_GAPC1_Mod_stVal)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Mod_q (&iedModel_GenericIO_TIM_GAPC1_Mod_q)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Mod_t (&iedModel_GenericIO_TIM_GAPC1_Mod_t)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Mod_ctlModel (&iedModel_GenericIO_TIM_GAPC1_Mod_ctlModel)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Str (&iedModel_GenericIO_TIM_GAPC1_Str)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Str_general (&iedModel_GenericIO_TIM_GAPC1_Str_general)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Str_dirGeneral (&iedModel_GenericIO_TIM_GAPC1_Str_dirGeneral)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Str_q (&iedModel_GenericIO_TIM_GAPC1_Str_q)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Str_t (&iedModel_GenericIO_TIM_GAPC1_Str_t)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Op (&iedModel_GenericIO_TIM_GAPC1_Op)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Op_general (&iedModel_GenericIO_TIM_GAPC1_Op_general)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Op_q (&iedModel_GenericIO_TIM_GAPC1_Op_q)
+#define IEDMODEL_GenericIO_TIM_GAPC1_Op_t (&iedModel_GenericIO_TIM_GAPC1_Op_t)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpDlTmms (&iedModel_GenericIO_TIM_GAPC1_OpDlTmms)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpDlTmms_setVal (&iedModel_GenericIO_TIM_GAPC1_OpDlTmms_setVal)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpDlTmms_dataNs (&iedModel_GenericIO_TIM_GAPC1_OpDlTmms_dataNs)
+#define IEDMODEL_GenericIO_TIM_GAPC1_RsDlTmms (&iedModel_GenericIO_TIM_GAPC1_RsDlTmms)
+#define IEDMODEL_GenericIO_TIM_GAPC1_RsDlTmms_setVal (&iedModel_GenericIO_TIM_GAPC1_RsDlTmms_setVal)
+#define IEDMODEL_GenericIO_TIM_GAPC1_RsDlTmms_dataNs (&iedModel_GenericIO_TIM_GAPC1_RsDlTmms_dataNs)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs (&iedModel_GenericIO_TIM_GAPC1_OpCntRs)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_stVal (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_stVal)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_q (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_q)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_t (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_t)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_Oper (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_Oper_ctlVal (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_ctlVal)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin_orCat (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin_orCat)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin_orIdent (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_origin_orIdent)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_Oper_ctlNum (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_ctlNum)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_Oper_T (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_T)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_Oper_Test (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_Test)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_Oper_Check (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_Check)
+#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_ctlModel (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_ctlModel)
#endif /* STATIC_MODEL_H_ */