- code formatting; compiler warnings

pull/266/head
Michael Zillgith 5 years ago
parent 7ee278cead
commit 98e7c5816a

@ -70,8 +70,8 @@
/* Ethernet interface ID for GOOSE and SV */ /* Ethernet interface ID for GOOSE and SV */
#define CONFIG_ETHERNET_INTERFACE_ID "eth0" #define CONFIG_ETHERNET_INTERFACE_ID "eth0"
//#define CONFIG_ETHERNET_INTERFACE_ID "vboxnet0" /* #define CONFIG_ETHERNET_INTERFACE_ID "vboxnet0" */
//#define CONFIG_ETHERNET_INTERFACE_ID "en0" // OS X uses enX in place of ethX as ethernet NIC names. /* #define CONFIG_ETHERNET_INTERFACE_ID "en0" // OS X uses enX in place of ethX as ethernet NIC names. */
/* Set to 1 to include GOOSE support in the build. Otherwise set to 0 */ /* Set to 1 to include GOOSE support in the build. Otherwise set to 0 */
#define CONFIG_INCLUDE_GOOSE_SUPPORT 1 #define CONFIG_INCLUDE_GOOSE_SUPPORT 1
@ -174,9 +174,9 @@
#define CONFIG_IEC61850_FORCE_MEMORY_ALIGNMENT 1 #define CONFIG_IEC61850_FORCE_MEMORY_ALIGNMENT 1
/* overwrite default results for MMS identify service */ /* overwrite default results for MMS identify service */
//#define CONFIG_DEFAULT_MMS_VENDOR_NAME "libiec61850.com" /* #define CONFIG_DEFAULT_MMS_VENDOR_NAME "libiec61850.com" */
//#define CONFIG_DEFAULT_MMS_MODEL_NAME "LIBIEC61850" /* #define CONFIG_DEFAULT_MMS_MODEL_NAME "LIBIEC61850" */
//#define CONFIG_DEFAULT_MMS_REVISION "1.0.0" /* #define CONFIG_DEFAULT_MMS_REVISION "1.0.0" */
/* MMS virtual file store base path - where MMS file services are looking for files */ /* MMS virtual file store base path - where MMS file services are looking for files */
#define CONFIG_VIRTUAL_FILESTORE_BASEPATH "./vmd-filestore/" #define CONFIG_VIRTUAL_FILESTORE_BASEPATH "./vmd-filestore/"

@ -65,8 +65,8 @@
/* Ethernet interface ID for GOOSE and SV */ /* Ethernet interface ID for GOOSE and SV */
#define CONFIG_ETHERNET_INTERFACE_ID "eth0" #define CONFIG_ETHERNET_INTERFACE_ID "eth0"
//#define CONFIG_ETHERNET_INTERFACE_ID "vboxnet0" /* #define CONFIG_ETHERNET_INTERFACE_ID "vboxnet0" */
//#define CONFIG_ETHERNET_INTERFACE_ID "en0" // OS X uses enX in place of ethX as ethernet NIC names. /* #define CONFIG_ETHERNET_INTERFACE_ID "en0" // OS X uses enX in place of ethX as ethernet NIC names. */
/* Set to 1 to include GOOSE support in the build. Otherwise set to 0 */ /* Set to 1 to include GOOSE support in the build. Otherwise set to 0 */
#cmakedefine01 CONFIG_INCLUDE_GOOSE_SUPPORT #cmakedefine01 CONFIG_INCLUDE_GOOSE_SUPPORT

@ -96,4 +96,5 @@ main(int argc, char** argv)
GooseReceiver_stop(receiver); GooseReceiver_stop(receiver);
GooseReceiver_destroy(receiver); GooseReceiver_destroy(receiver);
return 0;
} }

@ -12,67 +12,69 @@
#include "goose_publisher.h" #include "goose_publisher.h"
#include "hal_thread.h" #include "hal_thread.h"
// has to be executed as root! /* has to be executed as root! */
int int
main(int argc, char** argv) main(int argc, char **argv)
{ {
char* interface; char *interface;
if (argc > 1) if (argc > 1)
interface = argv[1]; interface = argv[1];
else else
interface = "eth0"; interface = "eth0";
printf("Using interface %s\n", interface); printf("Using interface %s\n", interface);
LinkedList dataSetValues = LinkedList_create(); LinkedList dataSetValues = LinkedList_create();
LinkedList_add(dataSetValues, MmsValue_newIntegerFromInt32(1234)); LinkedList_add(dataSetValues, MmsValue_newIntegerFromInt32(1234));
LinkedList_add(dataSetValues, MmsValue_newBinaryTime(false)); LinkedList_add(dataSetValues, MmsValue_newBinaryTime(false));
LinkedList_add(dataSetValues, MmsValue_newIntegerFromInt32(5678)); LinkedList_add(dataSetValues, MmsValue_newIntegerFromInt32(5678));
CommParameters gooseCommParameters; CommParameters gooseCommParameters;
gooseCommParameters.appId = 1000; gooseCommParameters.appId = 1000;
gooseCommParameters.dstAddress[0] = 0x01; gooseCommParameters.dstAddress[0] = 0x01;
gooseCommParameters.dstAddress[1] = 0x0c; gooseCommParameters.dstAddress[1] = 0x0c;
gooseCommParameters.dstAddress[2] = 0xcd; gooseCommParameters.dstAddress[2] = 0xcd;
gooseCommParameters.dstAddress[3] = 0x01; gooseCommParameters.dstAddress[3] = 0x01;
gooseCommParameters.dstAddress[4] = 0x00; gooseCommParameters.dstAddress[4] = 0x00;
gooseCommParameters.dstAddress[5] = 0x01; gooseCommParameters.dstAddress[5] = 0x01;
gooseCommParameters.vlanId = 0; gooseCommParameters.vlanId = 0;
gooseCommParameters.vlanPriority = 4; gooseCommParameters.vlanPriority = 4;
/* /*
* Create a new GOOSE publisher instance. As the second parameter the interface * Create a new GOOSE publisher instance. As the second parameter the interface
* name can be provided (e.g. "eth0" on a Linux system). If the second parameter * name can be provided (e.g. "eth0" on a Linux system). If the second parameter
* is NULL the interface name as defined with CONFIG_ETHERNET_INTERFACE_ID in * is NULL the interface name as defined with CONFIG_ETHERNET_INTERFACE_ID in
* stack_config.h is used. * stack_config.h is used.
*/ */
GoosePublisher publisher = GoosePublisher_create(&gooseCommParameters, interface); GoosePublisher publisher = GoosePublisher_create(&gooseCommParameters, interface);
if (publisher) { if (publisher) {
GoosePublisher_setGoCbRef(publisher, "simpleIOGenericIO/LLN0$GO$gcbAnalogValues"); GoosePublisher_setGoCbRef(publisher, "simpleIOGenericIO/LLN0$GO$gcbAnalogValues");
GoosePublisher_setConfRev(publisher, 1); GoosePublisher_setConfRev(publisher, 1);
GoosePublisher_setDataSetRef(publisher, "simpleIOGenericIO/LLN0$AnalogValues"); GoosePublisher_setDataSetRef(publisher, "simpleIOGenericIO/LLN0$AnalogValues");
int i = 0; int i = 0;
for (i = 0; i < 3; i++) { for (i = 0; i < 3; i++) {
Thread_sleep(1000); Thread_sleep(1000);
if (GoosePublisher_publish(publisher, dataSetValues) == -1) { if (GoosePublisher_publish(publisher, dataSetValues) == -1) {
printf("Error sending message!\n"); printf("Error sending message!\n");
} }
} }
GoosePublisher_destroy(publisher); GoosePublisher_destroy(publisher);
} }
else { else {
printf("Failed to create GOOSE publisher. Reason can be that the Ethernet interface doesn't exist or root permission are required.\n"); printf("Failed to create GOOSE publisher. Reason can be that the Ethernet interface doesn't exist or root permission are required.\n");
} }
LinkedList_destroyDeep(dataSetValues, (LinkedListValueDeleteFunction) MmsValue_delete); LinkedList_destroyDeep(dataSetValues, (LinkedListValueDeleteFunction) MmsValue_delete);
return 0;
} }

@ -82,4 +82,6 @@ main(int argc, char** argv)
GooseReceiver_stop(receiver); GooseReceiver_stop(receiver);
GooseReceiver_destroy(receiver); GooseReceiver_destroy(receiver);
return 0;
} }

@ -137,6 +137,7 @@ close_connection:
} }
IedConnection_destroy(con); IedConnection_destroy(con);
return 0;
} }

@ -201,5 +201,6 @@ main(int argc, char** argv)
cleanup_and_exit: cleanup_and_exit:
IedConnection_destroy(con); IedConnection_destroy(con);
return 0;
} }

@ -97,6 +97,7 @@ int main(int argc, char** argv) {
} }
IedConnection_destroy(con); IedConnection_destroy(con);
return 0;
} }

@ -87,6 +87,7 @@ main(int argc, char** argv)
IedConnection_destroy(con); IedConnection_destroy(con);
AcseAuthenticationParameter_destroy(auth); AcseAuthenticationParameter_destroy(auth);
return 0;
} }

@ -94,6 +94,7 @@ int main(int argc, char** argv) {
} }
IedConnection_destroy(con); IedConnection_destroy(con);
return 0;
} }

@ -316,6 +316,7 @@ int main(int argc, char** argv) {
ClientDataSet_destroy(clientDataSet); ClientDataSet_destroy(clientDataSet);
IedConnection_destroy(con); IedConnection_destroy(con);
return 0;
} }

@ -214,6 +214,7 @@ int main(int argc, char** argv) {
} }
IedConnection_destroy(con); IedConnection_destroy(con);
return 0;
} }

@ -337,6 +337,7 @@ main(int argc, char** argv)
} }
IedConnection_destroy(con); IedConnection_destroy(con);
return 0;
} }

@ -140,6 +140,7 @@ int main(int argc, char** argv) {
} }
IedConnection_destroy(con); IedConnection_destroy(con);
return 0;
} }

@ -455,6 +455,7 @@ main(int argc, char** argv) {
ClientDataSet_destroy(clientDataSet); ClientDataSet_destroy(clientDataSet);
IedConnection_destroy(con); IedConnection_destroy(con);
return 0;
} }

@ -188,6 +188,7 @@ exit_error:
} }
IedConnection_destroy(con); IedConnection_destroy(con);
return 0;
} }

@ -100,6 +100,7 @@ int main(int argc, char** argv) {
IedConnection_destroy(con); IedConnection_destroy(con);
return 0;
} }

@ -114,6 +114,7 @@ int main(int argc, char** argv) {
} }
IedConnection_destroy(con); IedConnection_destroy(con);
return 0;
} }

@ -1,4 +1,3 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
@ -439,5 +438,7 @@ int main(int argc, char** argv)
free(componentName); free(componentName);
MmsConnection_destroy(con); MmsConnection_destroy(con);
return 0;
} }

@ -38,10 +38,9 @@ static int running = 0;
void sigint_handler(int signalId) void sigint_handler(int signalId)
{ {
running = 0; running = 0;
} }
bool bool
controlHandlerForIntegerOutput(ControlAction action, void* parameter, MmsValue* value, bool test) controlHandlerForIntegerOutput(ControlAction action, void* parameter, MmsValue* value, bool test)
{ {
@ -60,43 +59,46 @@ controlHandlerForIntegerOutput(ControlAction action, void* parameter, MmsValue*
return true; return true;
} }
int main(int argc, char** argv) { int
main(int argc, char** argv)
{
int tcpPort = 102; int tcpPort = 102;
if (argc > 1) { if (argc > 1) {
tcpPort = atoi(argv[1]); tcpPort = atoi(argv[1]);
} }
iedServer = IedServer_create(&iedModel); iedServer = IedServer_create(&iedModel);
/* set control model for WTUR1.SetTurOp.actSt to direct-control-with-normal-security */ /* set control model for WTUR1.SetTurOp.actSt to direct-control-with-normal-security */
IedServer_updateInt32AttributeValue(iedServer, IEDMODEL_WTG_WTUR1_SetTurOp_actSt_ctlModel, 1); IedServer_updateInt32AttributeValue(iedServer, IEDMODEL_WTG_WTUR1_SetTurOp_actSt_ctlModel, 1);
IedServer_setControlHandler(iedServer, IEDMODEL_WTG_WTUR1_SetTurOp_actSt, IedServer_setControlHandler(iedServer, IEDMODEL_WTG_WTUR1_SetTurOp_actSt,
(ControlHandler) controlHandlerForIntegerOutput, (ControlHandler) controlHandlerForIntegerOutput,
IEDMODEL_WTG_WTUR1_SetTurOp_actSt); IEDMODEL_WTG_WTUR1_SetTurOp_actSt);
/* MMS server will be instructed to start listening to client connections. */ /* MMS server will be instructed to start listening to client connections. */
IedServer_start(iedServer, tcpPort); IedServer_start(iedServer, tcpPort);
if (!IedServer_isRunning(iedServer)) { if (!IedServer_isRunning(iedServer)) {
printf("Starting server failed! Exit.\n"); printf("Starting server failed! Exit.\n");
IedServer_destroy(iedServer); IedServer_destroy(iedServer);
exit(-1); exit(-1);
} }
running = 1;
running = 1; signal(SIGINT, sigint_handler);
signal(SIGINT, sigint_handler); while (running) {
Thread_sleep(1);
}
while (running) { /* stop MMS server - close TCP server socket and all client sockets */
Thread_sleep(1); IedServer_stop(iedServer);
}
/* stop MMS server - close TCP server socket and all client sockets */ /* Cleanup - free all resources */
IedServer_stop(iedServer); IedServer_destroy(iedServer);
/* Cleanup - free all resources */ return 0;
IedServer_destroy(iedServer);
} /* main() */ } /* main() */

@ -202,4 +202,5 @@ main(int argc, char** argv)
/* Cleanup - free all resources */ /* Cleanup - free all resources */
IedServer_destroy(iedServer); IedServer_destroy(iedServer);
return 0;
} /* main() */ } /* main() */

@ -20,7 +20,7 @@ extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda3;
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda0 = { DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda0 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO1$stVal", "GGIO1$ST$SPCSO1$stVal",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -30,7 +30,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda0 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda1 = { DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda1 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO2$stVal", "GGIO1$ST$SPCSO2$stVal",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -40,7 +40,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda1 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda2 = { DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda2 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO3$stVal", "GGIO1$ST$SPCSO3$stVal",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -50,7 +50,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda2 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda3 = { DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda3 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO4$stVal", "GGIO1$ST$SPCSO4$stVal",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -73,7 +73,7 @@ extern DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda3;
DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda0 = { DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda0 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO1", "GGIO1$ST$SPCSO1",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -83,7 +83,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda0 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda1 = { DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda1 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO2", "GGIO1$ST$SPCSO2",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -93,7 +93,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda1 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda2 = { DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda2 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO3", "GGIO1$ST$SPCSO3",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -103,7 +103,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda2 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda3 = { DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda3 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO4", "GGIO1$ST$SPCSO4",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -130,7 +130,7 @@ extern DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda7;
DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda0 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda0 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn1$mag$f", "GGIO1$MX$AnIn1$mag$f",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -140,7 +140,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda0 = {
DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda1 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda1 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn1$q", "GGIO1$MX$AnIn1$q",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -150,7 +150,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda1 = {
DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda2 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda2 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn2$mag$f", "GGIO1$MX$AnIn2$mag$f",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -160,7 +160,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda2 = {
DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda3 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda3 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn2$q", "GGIO1$MX$AnIn2$q",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -170,7 +170,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda3 = {
DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda4 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda4 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn3$mag$f", "GGIO1$MX$AnIn3$mag$f",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -180,7 +180,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda4 = {
DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda5 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda5 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn3$q", "GGIO1$MX$AnIn3$q",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -190,7 +190,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda5 = {
DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda6 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda6 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn4$mag$f", "GGIO1$MX$AnIn4$mag$f",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -200,7 +200,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda6 = {
DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda7 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda7 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn4$q", "GGIO1$MX$AnIn4$q",
-1, -1,
NULL, NULL,
NULL, NULL,

@ -22,11 +22,11 @@ static int running = 0;
static void static void
sigint_handler(int signalId) sigint_handler(int signalId)
{ {
running = 0; running = 0;
} }
static void static void
updateCMVArrayElement(MmsValue* cval, int index, float magnitude, float angle, Quality quality, Timestamp timestamp) updateCMVArrayElement(MmsValue *cval, int index, float magnitude, float angle, Quality quality, Timestamp timestamp)
{ {
MmsValue* cmv = MmsValue_getElement(cval, index); MmsValue* cmv = MmsValue_getElement(cval, index);
@ -48,7 +48,9 @@ updateCMVArrayElement(MmsValue* cval, int index, float magnitude, float angle, Q
MmsValue_setUtcTimeByBuffer(t, timestamp.val); MmsValue_setUtcTimeByBuffer(t, timestamp.val);
} }
int main(int argc, char** argv) { int
main(int argc, char **argv)
{
int tcpPort = 102; int tcpPort = 102;
@ -56,16 +58,15 @@ int main(int argc, char** argv) {
tcpPort = atoi(argv[1]); tcpPort = atoi(argv[1]);
} }
IedServer iedServer = IedServer_create(&iedModel); IedServer iedServer = IedServer_create(&iedModel);
/* Get access to the MHAI1.HA data object handle - for static and dynamic model*/ /* Get access to the MHAI1.HA data object handle - for static and dynamic model*/
DataObject* mhai1_ha_phsAHar = (DataObject*) DataObject* mhai1_ha_phsAHar = (DataObject*)
IedModel_getModelNodeByObjectReference(&iedModel, "testComplexArray/MHAI1.HA.phsAHar"); IedModel_getModelNodeByObjectReference(&iedModel, "testComplexArray/MHAI1.HA.phsAHar");
/* Get access to the corresponding MMS value data structure - the MX(FC) part of the data object */ /* Get access to the corresponding MMS value data structure - the MX(FC) part of the data object */
MmsValue* mhai1_ha_phsAHar_mx = IedServer_getFunctionalConstrainedData(iedServer, mhai1_ha_phsAHar, IEC61850_FC_MX); MmsValue* mhai1_ha_phsAHar_mx = IedServer_getFunctionalConstrainedData(iedServer, mhai1_ha_phsAHar, IEC61850_FC_MX);
/* assuming the array has 16 elements */ /* assuming the array has 16 elements */
float mag = 200.f; float mag = 200.f;
float angle = 0.01f; float angle = 0.01f;
@ -82,45 +83,47 @@ int main(int argc, char** argv) {
angle += 0.01f; angle += 0.01f;
} }
/* MMS server will be instructed to start listening to client connections. */ /* MMS server will be instructed to start listening to client connections. */
IedServer_start(iedServer, tcpPort); IedServer_start(iedServer, tcpPort);
if (!IedServer_isRunning(iedServer)) { if (!IedServer_isRunning(iedServer)) {
printf("Starting server failed! Exit.\n"); printf("Starting server failed! Exit.\n");
IedServer_destroy(iedServer); IedServer_destroy(iedServer);
exit(-1); exit(-1);
} }
running = 1; running = 1;
signal(SIGINT, sigint_handler); signal(SIGINT, sigint_handler);
int counter = 0; int counter = 0;
while (running) { while (running) {
Thread_sleep(1000); Thread_sleep(1000);
Timestamp_setTimeInMilliseconds(&timestamp, Hal_getTimeInMs()); Timestamp_setTimeInMilliseconds(&timestamp, Hal_getTimeInMs());
IedServer_lockDataModel(iedServer); IedServer_lockDataModel(iedServer);
for (i = 0; i < 16; i++) { for (i = 0; i < 16; i++) {
updateCMVArrayElement(mhai1_ha_phsAHar_mx, i, mag, angle, quality, timestamp); updateCMVArrayElement(mhai1_ha_phsAHar_mx, i, mag, angle, quality, timestamp);
mag += 0.1f; mag += 0.1f;
angle += 0.05f; angle += 0.05f;
} }
IedServer_unlockDataModel(iedServer); IedServer_unlockDataModel(iedServer);
if (counter == 10) { if (counter == 10) {
/* Now a problem occurs - measurements are invalid */ /* Now a problem occurs - measurements are invalid */
quality = QUALITY_VALIDITY_INVALID | QUALITY_DETAIL_FAILURE; quality = QUALITY_VALIDITY_INVALID | QUALITY_DETAIL_FAILURE;
} }
counter++;
}
counter++; /* stop MMS server - close TCP server socket and all client sockets */
} IedServer_stop(iedServer);
/* stop MMS server - close TCP server socket and all client sockets */ /* Cleanup - free all resources */
IedServer_stop(iedServer); IedServer_destroy(iedServer);
/* Cleanup - free all resources */ return 0;
IedServer_destroy(iedServer);
} /* main() */ } /* main() */

@ -125,4 +125,5 @@ main(int argc, char** argv)
IedServer_destroy(iedServer); IedServer_destroy(iedServer);
IedModel_destroy(model); IedModel_destroy(model);
return 0;
} /* main() */ } /* main() */

@ -193,4 +193,5 @@ main(int argc, char** argv)
/* Cleanup - free all resources */ /* Cleanup - free all resources */
IedServer_destroy(iedServer); IedServer_destroy(iedServer);
return 0;
} /* main() */ } /* main() */

@ -101,4 +101,5 @@ int main(int argc, char** argv) {
/* destroy dynamic data model */ /* destroy dynamic data model */
IedModel_destroy(model); IedModel_destroy(model);
return 0;
} /* main() */ } /* main() */

@ -95,5 +95,6 @@ main(int argc, char** argv)
/* Cleanup - free all resources */ /* Cleanup - free all resources */
IedServer_destroy(iedServer); IedServer_destroy(iedServer);
return 0;
} /* main() */ } /* main() */

@ -152,4 +152,5 @@ int main(int argc, char** argv) {
/* Cleanup - free all resources */ /* Cleanup - free all resources */
IedServer_destroy(iedServer); IedServer_destroy(iedServer);
return 0;
} /* main() */ } /* main() */

@ -238,5 +238,6 @@ main(int argc, char** argv)
/* Release connection to database and free resources */ /* Release connection to database and free resources */
LogStorage_destroy(statusLog); LogStorage_destroy(statusLog);
return 0;
} /* main() */ } /* main() */

@ -217,4 +217,5 @@ int main(int argc, char** argv) {
/* Cleanup - free all resources */ /* Cleanup - free all resources */
IedServer_destroy(iedServer); IedServer_destroy(iedServer);
return 0;
} /* main() */ } /* main() */

@ -285,4 +285,5 @@ main(int argc, char** argv)
/* Cleanup - free all resources */ /* Cleanup - free all resources */
IedServer_destroy(iedServer); IedServer_destroy(iedServer);
return 0;
} /* main() */ } /* main() */

@ -34,43 +34,47 @@ extern IedModel iedModel;
static int running = 0; static int running = 0;
void sigint_handler(int signalId) void
sigint_handler(int signalId)
{ {
running = 0; running = 0;
} }
int main(int argc, char** argv) { int
main(int argc, char** argv)
{
int tcpPort = 102; int tcpPort = 102;
if (argc > 1) { if (argc > 1) {
tcpPort = atoi(argv[1]); tcpPort = atoi(argv[1]);
} }
IedServer iedServer = IedServer_create(&iedModel); IedServer iedServer = IedServer_create(&iedModel);
// set initial measurement and status values from process /* set initial measurement and status values from process */
/* MMS server will be instructed to start listening to client connections. */ /* MMS server will be instructed to start listening to client connections. */
IedServer_start(iedServer, tcpPort); IedServer_start(iedServer, tcpPort);
if (!IedServer_isRunning(iedServer)) { if (!IedServer_isRunning(iedServer)) {
printf("Starting server failed! Exit.\n"); printf("Starting server failed! Exit.\n");
IedServer_destroy(iedServer); IedServer_destroy(iedServer);
exit(-1); exit(-1);
} }
running = 1; running = 1;
signal(SIGINT, sigint_handler); signal(SIGINT, sigint_handler);
while (running) {
Thread_sleep(1);
}
while (running) { /* stop MMS server - close TCP server socket and all client sockets */
Thread_sleep(1); IedServer_stop(iedServer);
}
/* stop MMS server - close TCP server socket and all client sockets */ /* Cleanup - free all resources */
IedServer_stop(iedServer); IedServer_destroy(iedServer);
/* Cleanup - free all resources */ return 0;
IedServer_destroy(iedServer);
} /* main() */ } /* main() */

@ -225,5 +225,6 @@ main(int argc, char** argv)
/* Cleanup - free all resources */ /* Cleanup - free all resources */
IedServer_destroy(iedServer); IedServer_destroy(iedServer);
return 0;
} /* main() */ } /* main() */

@ -150,4 +150,5 @@ main(int argc, char** argv)
/* Cleanup - free all resources */ /* Cleanup - free all resources */
IedServer_destroy(iedServer); IedServer_destroy(iedServer);
return 0;
} /* main() */ } /* main() */

@ -8,7 +8,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include "../server_example_write_handler/static_model.h" #include "static_model.h"
/* import IEC 61850 device model created from SCL-File */ /* import IEC 61850 device model created from SCL-File */
extern IedModel iedModel; extern IedModel iedModel;
@ -18,7 +18,7 @@ static IedServer iedServer = NULL;
void sigint_handler(int signalId) void sigint_handler(int signalId)
{ {
running = 0; running = 0;
} }
static MmsDataAccessError static MmsDataAccessError
@ -41,38 +41,41 @@ writeAccessHandler (DataAttribute* dataAttribute, MmsValue* value, ClientConnect
return DATA_ACCESS_ERROR_OBJECT_ACCESS_DENIED; return DATA_ACCESS_ERROR_OBJECT_ACCESS_DENIED;
} }
int main(int argc, char** argv) { int
main(int argc, char** argv)
{
iedServer = IedServer_create(&iedModel);
iedServer = IedServer_create(&iedModel); /* MMS server will be instructed to start listening to client connections. */
IedServer_start(iedServer, 102);
/* MMS server will be instructed to start listening to client connections. */ /* Don't allow access to SP variables by default */
IedServer_start(iedServer, 102); IedServer_setWriteAccessPolicy(iedServer, IEC61850_FC_SP, ACCESS_POLICY_DENY);
/* Don't allow access to SP variables by default */ /* Instruct the server that we will be informed if a clients writes to a
IedServer_setWriteAccessPolicy(iedServer, IEC61850_FC_SP, ACCESS_POLICY_DENY); * certain variables we are interested in.
*/
IedServer_handleWriteAccess(iedServer, IEDMODEL_Inverter_ZINV1_OutVarSet_setMag_f, writeAccessHandler, NULL);
/* Instruct the server that we will be informed if a clients writes to a if (!IedServer_isRunning(iedServer)) {
* certain variables we are interested in. printf("Starting server failed! Exit.\n");
*/ IedServer_destroy(iedServer);
IedServer_handleWriteAccess(iedServer, IEDMODEL_Inverter_ZINV1_OutVarSet_setMag_f, writeAccessHandler, NULL); exit(-1);
}
if (!IedServer_isRunning(iedServer)) { running = 1;
printf("Starting server failed! Exit.\n");
IedServer_destroy(iedServer);
exit(-1);
}
running = 1; signal(SIGINT, sigint_handler);
signal(SIGINT, sigint_handler); while (running) {
Thread_sleep(1);
}
while (running) { /* stop MMS server - close TCP server socket and all client sockets */
Thread_sleep(1); IedServer_stop(iedServer);
}
/* stop MMS server - close TCP server socket and all client sockets */ /* Cleanup - free all resources */
IedServer_stop(iedServer); IedServer_destroy(iedServer);
/* Cleanup - free all resources */ return 0;
IedServer_destroy(iedServer);
} /* main() */ } /* main() */

@ -81,4 +81,5 @@ main(int argc, char** argv)
else { else {
printf("Failed to create SV publisher\n"); printf("Failed to create SV publisher\n");
} }
return 0;
} }

@ -90,4 +90,5 @@ main(int argc, char** argv)
/* Cleanup and free resources */ /* Cleanup and free resources */
SVReceiver_destroy(receiver); SVReceiver_destroy(receiver);
return 0;
} }

@ -154,6 +154,7 @@ int main(int argc, char** argv) {
IedConnection_destroy(con); IedConnection_destroy(con);
TLSConfiguration_destroy(tlsConfig); TLSConfiguration_destroy(tlsConfig);
return 0;
} }

@ -225,4 +225,5 @@ main(int argc, char** argv)
TLSConfiguration_destroy(tlsConfig); TLSConfiguration_destroy(tlsConfig);
return 0;
} /* main() */ } /* main() */

Loading…
Cancel
Save