diff --git a/config/stack_config.h b/config/stack_config.h index 66f8934e..8bbe5d1e 100644 --- a/config/stack_config.h +++ b/config/stack_config.h @@ -70,8 +70,8 @@ /* Ethernet interface ID for GOOSE and SV */ #define CONFIG_ETHERNET_INTERFACE_ID "eth0" -//#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 "vboxnet0" */ +/* #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 */ #define CONFIG_INCLUDE_GOOSE_SUPPORT 1 @@ -174,9 +174,9 @@ #define CONFIG_IEC61850_FORCE_MEMORY_ALIGNMENT 1 /* overwrite default results for MMS identify service */ -//#define CONFIG_DEFAULT_MMS_VENDOR_NAME "libiec61850.com" -//#define CONFIG_DEFAULT_MMS_MODEL_NAME "LIBIEC61850" -//#define CONFIG_DEFAULT_MMS_REVISION "1.0.0" +/* #define CONFIG_DEFAULT_MMS_VENDOR_NAME "libiec61850.com" */ +/* #define CONFIG_DEFAULT_MMS_MODEL_NAME "LIBIEC61850" */ +/* #define CONFIG_DEFAULT_MMS_REVISION "1.0.0" */ /* MMS virtual file store base path - where MMS file services are looking for files */ #define CONFIG_VIRTUAL_FILESTORE_BASEPATH "./vmd-filestore/" diff --git a/config/stack_config.h.cmake b/config/stack_config.h.cmake index 0e0c7085..17ac3120 100644 --- a/config/stack_config.h.cmake +++ b/config/stack_config.h.cmake @@ -65,8 +65,8 @@ /* Ethernet interface ID for GOOSE and SV */ #define CONFIG_ETHERNET_INTERFACE_ID "eth0" -//#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 "vboxnet0" */ +/* #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 */ #cmakedefine01 CONFIG_INCLUDE_GOOSE_SUPPORT diff --git a/examples/goose_observer/goose_observer.c b/examples/goose_observer/goose_observer.c index 4568ff58..dafa6217 100644 --- a/examples/goose_observer/goose_observer.c +++ b/examples/goose_observer/goose_observer.c @@ -96,4 +96,5 @@ main(int argc, char** argv) GooseReceiver_stop(receiver); GooseReceiver_destroy(receiver); + return 0; } diff --git a/examples/goose_publisher/goose_publisher_example.c b/examples/goose_publisher/goose_publisher_example.c index 015a3b74..f76d812a 100644 --- a/examples/goose_publisher/goose_publisher_example.c +++ b/examples/goose_publisher/goose_publisher_example.c @@ -12,67 +12,69 @@ #include "goose_publisher.h" #include "hal_thread.h" -// has to be executed as root! +/* has to be executed as root! */ int -main(int argc, char** argv) +main(int argc, char **argv) { - char* interface; + char *interface; if (argc > 1) - interface = argv[1]; + interface = argv[1]; else - interface = "eth0"; + interface = "eth0"; printf("Using interface %s\n", interface); - LinkedList dataSetValues = LinkedList_create(); - - LinkedList_add(dataSetValues, MmsValue_newIntegerFromInt32(1234)); - LinkedList_add(dataSetValues, MmsValue_newBinaryTime(false)); - LinkedList_add(dataSetValues, MmsValue_newIntegerFromInt32(5678)); - - CommParameters gooseCommParameters; - - gooseCommParameters.appId = 1000; - gooseCommParameters.dstAddress[0] = 0x01; - gooseCommParameters.dstAddress[1] = 0x0c; - gooseCommParameters.dstAddress[2] = 0xcd; - gooseCommParameters.dstAddress[3] = 0x01; - gooseCommParameters.dstAddress[4] = 0x00; - gooseCommParameters.dstAddress[5] = 0x01; - gooseCommParameters.vlanId = 0; - gooseCommParameters.vlanPriority = 4; - - /* - * 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 - * is NULL the interface name as defined with CONFIG_ETHERNET_INTERFACE_ID in - * stack_config.h is used. - */ - GoosePublisher publisher = GoosePublisher_create(&gooseCommParameters, interface); - - if (publisher) { - GoosePublisher_setGoCbRef(publisher, "simpleIOGenericIO/LLN0$GO$gcbAnalogValues"); - GoosePublisher_setConfRev(publisher, 1); - GoosePublisher_setDataSetRef(publisher, "simpleIOGenericIO/LLN0$AnalogValues"); - - int i = 0; - - for (i = 0; i < 3; i++) { - Thread_sleep(1000); - - if (GoosePublisher_publish(publisher, dataSetValues) == -1) { - printf("Error sending message!\n"); - } - } - - GoosePublisher_destroy(publisher); - } - else { - 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 dataSetValues = LinkedList_create(); + + LinkedList_add(dataSetValues, MmsValue_newIntegerFromInt32(1234)); + LinkedList_add(dataSetValues, MmsValue_newBinaryTime(false)); + LinkedList_add(dataSetValues, MmsValue_newIntegerFromInt32(5678)); + + CommParameters gooseCommParameters; + + gooseCommParameters.appId = 1000; + gooseCommParameters.dstAddress[0] = 0x01; + gooseCommParameters.dstAddress[1] = 0x0c; + gooseCommParameters.dstAddress[2] = 0xcd; + gooseCommParameters.dstAddress[3] = 0x01; + gooseCommParameters.dstAddress[4] = 0x00; + gooseCommParameters.dstAddress[5] = 0x01; + gooseCommParameters.vlanId = 0; + gooseCommParameters.vlanPriority = 4; + + /* + * 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 + * is NULL the interface name as defined with CONFIG_ETHERNET_INTERFACE_ID in + * stack_config.h is used. + */ + GoosePublisher publisher = GoosePublisher_create(&gooseCommParameters, interface); + + if (publisher) { + GoosePublisher_setGoCbRef(publisher, "simpleIOGenericIO/LLN0$GO$gcbAnalogValues"); + GoosePublisher_setConfRev(publisher, 1); + GoosePublisher_setDataSetRef(publisher, "simpleIOGenericIO/LLN0$AnalogValues"); + + int i = 0; + + for (i = 0; i < 3; i++) { + Thread_sleep(1000); + + if (GoosePublisher_publish(publisher, dataSetValues) == -1) { + printf("Error sending message!\n"); + } + } + + GoosePublisher_destroy(publisher); + } + else { + 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); + + return 0; } diff --git a/examples/goose_subscriber/goose_subscriber_example.c b/examples/goose_subscriber/goose_subscriber_example.c index c67e0eb8..6e7dcb82 100644 --- a/examples/goose_subscriber/goose_subscriber_example.c +++ b/examples/goose_subscriber/goose_subscriber_example.c @@ -82,4 +82,6 @@ main(int argc, char** argv) GooseReceiver_stop(receiver); GooseReceiver_destroy(receiver); + + return 0; } diff --git a/examples/iec61850_client_example1/client_example1.c b/examples/iec61850_client_example1/client_example1.c index eb085a6b..f84d37a0 100644 --- a/examples/iec61850_client_example1/client_example1.c +++ b/examples/iec61850_client_example1/client_example1.c @@ -137,6 +137,7 @@ close_connection: } IedConnection_destroy(con); + return 0; } diff --git a/examples/iec61850_client_example2/client_example2.c b/examples/iec61850_client_example2/client_example2.c index 3f52e867..ad37d48c 100644 --- a/examples/iec61850_client_example2/client_example2.c +++ b/examples/iec61850_client_example2/client_example2.c @@ -201,5 +201,6 @@ main(int argc, char** argv) cleanup_and_exit: IedConnection_destroy(con); + return 0; } diff --git a/examples/iec61850_client_example4/client_example4.c b/examples/iec61850_client_example4/client_example4.c index 192b35c1..53e4b316 100644 --- a/examples/iec61850_client_example4/client_example4.c +++ b/examples/iec61850_client_example4/client_example4.c @@ -97,6 +97,7 @@ int main(int argc, char** argv) { } IedConnection_destroy(con); + return 0; } diff --git a/examples/iec61850_client_example5/client_example5.c b/examples/iec61850_client_example5/client_example5.c index 2791428f..e5bb22b7 100644 --- a/examples/iec61850_client_example5/client_example5.c +++ b/examples/iec61850_client_example5/client_example5.c @@ -87,6 +87,7 @@ main(int argc, char** argv) IedConnection_destroy(con); AcseAuthenticationParameter_destroy(auth); + return 0; } diff --git a/examples/iec61850_client_example_array/client_example_array.c b/examples/iec61850_client_example_array/client_example_array.c index ee1d6016..2df95aaa 100644 --- a/examples/iec61850_client_example_array/client_example_array.c +++ b/examples/iec61850_client_example_array/client_example_array.c @@ -94,6 +94,7 @@ int main(int argc, char** argv) { } IedConnection_destroy(con); + return 0; } diff --git a/examples/iec61850_client_example_async/client_example_async.c b/examples/iec61850_client_example_async/client_example_async.c index b2bda5e1..6284a130 100644 --- a/examples/iec61850_client_example_async/client_example_async.c +++ b/examples/iec61850_client_example_async/client_example_async.c @@ -316,6 +316,7 @@ int main(int argc, char** argv) { ClientDataSet_destroy(clientDataSet); IedConnection_destroy(con); + return 0; } diff --git a/examples/iec61850_client_example_control/client_example_control.c b/examples/iec61850_client_example_control/client_example_control.c index f1028a18..33da635a 100644 --- a/examples/iec61850_client_example_control/client_example_control.c +++ b/examples/iec61850_client_example_control/client_example_control.c @@ -214,6 +214,7 @@ int main(int argc, char** argv) { } IedConnection_destroy(con); + return 0; } diff --git a/examples/iec61850_client_example_files/file-tool.c b/examples/iec61850_client_example_files/file-tool.c index 5b219595..2c576ff8 100644 --- a/examples/iec61850_client_example_files/file-tool.c +++ b/examples/iec61850_client_example_files/file-tool.c @@ -337,6 +337,7 @@ main(int argc, char** argv) } IedConnection_destroy(con); + return 0; } diff --git a/examples/iec61850_client_example_log/client_example_log.c b/examples/iec61850_client_example_log/client_example_log.c index 333e0a70..1c675955 100644 --- a/examples/iec61850_client_example_log/client_example_log.c +++ b/examples/iec61850_client_example_log/client_example_log.c @@ -140,6 +140,7 @@ int main(int argc, char** argv) { } IedConnection_destroy(con); + return 0; } diff --git a/examples/iec61850_client_example_no_thread/client_example_no_thread.c b/examples/iec61850_client_example_no_thread/client_example_no_thread.c index 03ff0319..8f769f59 100644 --- a/examples/iec61850_client_example_no_thread/client_example_no_thread.c +++ b/examples/iec61850_client_example_no_thread/client_example_no_thread.c @@ -455,6 +455,7 @@ main(int argc, char** argv) { ClientDataSet_destroy(clientDataSet); IedConnection_destroy(con); + return 0; } diff --git a/examples/iec61850_client_example_reporting/client_example_reporting.c b/examples/iec61850_client_example_reporting/client_example_reporting.c index 5d499952..8a391982 100644 --- a/examples/iec61850_client_example_reporting/client_example_reporting.c +++ b/examples/iec61850_client_example_reporting/client_example_reporting.c @@ -188,6 +188,7 @@ exit_error: } IedConnection_destroy(con); + return 0; } diff --git a/examples/iec61850_client_file_async/client_example_async.c b/examples/iec61850_client_file_async/client_example_async.c index e2f9db22..4e9c7e12 100644 --- a/examples/iec61850_client_file_async/client_example_async.c +++ b/examples/iec61850_client_file_async/client_example_async.c @@ -100,6 +100,7 @@ int main(int argc, char** argv) { IedConnection_destroy(con); + return 0; } diff --git a/examples/iec61850_sv_client_example/sv_client_example.c b/examples/iec61850_sv_client_example/sv_client_example.c index 90922ec0..12cf1d98 100644 --- a/examples/iec61850_sv_client_example/sv_client_example.c +++ b/examples/iec61850_sv_client_example/sv_client_example.c @@ -114,6 +114,7 @@ int main(int argc, char** argv) { } IedConnection_destroy(con); + return 0; } diff --git a/examples/mms_utility/mms_utility.c b/examples/mms_utility/mms_utility.c index 2feeee87..ee658622 100644 --- a/examples/mms_utility/mms_utility.c +++ b/examples/mms_utility/mms_utility.c @@ -1,4 +1,3 @@ - #include #include #include @@ -439,5 +438,7 @@ int main(int argc, char** argv) free(componentName); MmsConnection_destroy(con); + + return 0; } diff --git a/examples/server_example_61400_25/server_example_61400_25.c b/examples/server_example_61400_25/server_example_61400_25.c index f91cbee5..7c4c0319 100644 --- a/examples/server_example_61400_25/server_example_61400_25.c +++ b/examples/server_example_61400_25/server_example_61400_25.c @@ -38,10 +38,9 @@ static int running = 0; void sigint_handler(int signalId) { - running = 0; + running = 0; } - bool controlHandlerForIntegerOutput(ControlAction action, void* parameter, MmsValue* value, bool test) { @@ -60,43 +59,46 @@ controlHandlerForIntegerOutput(ControlAction action, void* parameter, MmsValue* return true; } -int main(int argc, char** argv) { - +int +main(int argc, char** argv) +{ int tcpPort = 102; if (argc > 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 */ - IedServer_updateInt32AttributeValue(iedServer, IEDMODEL_WTG_WTUR1_SetTurOp_actSt_ctlModel, 1); + /* set control model for WTUR1.SetTurOp.actSt to direct-control-with-normal-security */ + IedServer_updateInt32AttributeValue(iedServer, IEDMODEL_WTG_WTUR1_SetTurOp_actSt_ctlModel, 1); IedServer_setControlHandler(iedServer, IEDMODEL_WTG_WTUR1_SetTurOp_actSt, (ControlHandler) controlHandlerForIntegerOutput, IEDMODEL_WTG_WTUR1_SetTurOp_actSt); - /* MMS server will be instructed to start listening to client connections. */ - IedServer_start(iedServer, tcpPort); + /* MMS server will be instructed to start listening to client connections. */ + IedServer_start(iedServer, tcpPort); - if (!IedServer_isRunning(iedServer)) { - printf("Starting server failed! Exit.\n"); - IedServer_destroy(iedServer); - exit(-1); - } + if (!IedServer_isRunning(iedServer)) { + printf("Starting server failed! Exit.\n"); + IedServer_destroy(iedServer); + exit(-1); + } + + running = 1; - running = 1; + signal(SIGINT, sigint_handler); - signal(SIGINT, sigint_handler); + while (running) { + Thread_sleep(1); + } - while (running) { - Thread_sleep(1); - } + /* 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 */ - IedServer_stop(iedServer); + /* Cleanup - free all resources */ + IedServer_destroy(iedServer); - /* Cleanup - free all resources */ - IedServer_destroy(iedServer); + return 0; } /* main() */ diff --git a/examples/server_example_basic_io/server_example_basic_io.c b/examples/server_example_basic_io/server_example_basic_io.c index d2fc9279..b6f86630 100644 --- a/examples/server_example_basic_io/server_example_basic_io.c +++ b/examples/server_example_basic_io/server_example_basic_io.c @@ -202,4 +202,5 @@ main(int argc, char** argv) /* Cleanup - free all resources */ IedServer_destroy(iedServer); + return 0; } /* main() */ diff --git a/examples/server_example_basic_io/static_model.c b/examples/server_example_basic_io/static_model.c index 0048197d..6084f911 100644 --- a/examples/server_example_basic_io/static_model.c +++ b/examples/server_example_basic_io/static_model.c @@ -20,7 +20,7 @@ extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda3; DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda0 = { "GenericIO", false, - "GGIO1$ST$SPCSO1$stVal", + "GGIO1$ST$SPCSO1$stVal", -1, NULL, NULL, @@ -30,7 +30,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda0 = { DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda1 = { "GenericIO", false, - "GGIO1$ST$SPCSO2$stVal", + "GGIO1$ST$SPCSO2$stVal", -1, NULL, NULL, @@ -40,7 +40,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda1 = { DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda2 = { "GenericIO", false, - "GGIO1$ST$SPCSO3$stVal", + "GGIO1$ST$SPCSO3$stVal", -1, NULL, NULL, @@ -50,7 +50,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda2 = { DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda3 = { "GenericIO", false, - "GGIO1$ST$SPCSO4$stVal", + "GGIO1$ST$SPCSO4$stVal", -1, NULL, NULL, @@ -73,7 +73,7 @@ extern DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda3; DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda0 = { "GenericIO", false, - "GGIO1$ST$SPCSO1", + "GGIO1$ST$SPCSO1", -1, NULL, NULL, @@ -83,7 +83,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda0 = { DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda1 = { "GenericIO", false, - "GGIO1$ST$SPCSO2", + "GGIO1$ST$SPCSO2", -1, NULL, NULL, @@ -93,7 +93,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda1 = { DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda2 = { "GenericIO", false, - "GGIO1$ST$SPCSO3", + "GGIO1$ST$SPCSO3", -1, NULL, NULL, @@ -103,7 +103,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda2 = { DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda3 = { "GenericIO", false, - "GGIO1$ST$SPCSO4", + "GGIO1$ST$SPCSO4", -1, NULL, NULL, @@ -130,7 +130,7 @@ extern DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda7; DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda0 = { "GenericIO", false, - "GGIO1$MX$AnIn1$mag$f", + "GGIO1$MX$AnIn1$mag$f", -1, NULL, NULL, @@ -140,7 +140,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda0 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda1 = { "GenericIO", false, - "GGIO1$MX$AnIn1$q", + "GGIO1$MX$AnIn1$q", -1, NULL, NULL, @@ -150,7 +150,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda1 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda2 = { "GenericIO", false, - "GGIO1$MX$AnIn2$mag$f", + "GGIO1$MX$AnIn2$mag$f", -1, NULL, NULL, @@ -160,7 +160,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda2 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda3 = { "GenericIO", false, - "GGIO1$MX$AnIn2$q", + "GGIO1$MX$AnIn2$q", -1, NULL, NULL, @@ -170,7 +170,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda3 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda4 = { "GenericIO", false, - "GGIO1$MX$AnIn3$mag$f", + "GGIO1$MX$AnIn3$mag$f", -1, NULL, NULL, @@ -180,7 +180,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda4 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda5 = { "GenericIO", false, - "GGIO1$MX$AnIn3$q", + "GGIO1$MX$AnIn3$q", -1, NULL, NULL, @@ -190,7 +190,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda5 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda6 = { "GenericIO", false, - "GGIO1$MX$AnIn4$mag$f", + "GGIO1$MX$AnIn4$mag$f", -1, NULL, NULL, @@ -200,7 +200,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda6 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda7 = { "GenericIO", false, - "GGIO1$MX$AnIn4$q", + "GGIO1$MX$AnIn4$q", -1, NULL, NULL, diff --git a/examples/server_example_complex_array/server_example_ca.c b/examples/server_example_complex_array/server_example_ca.c index b2146cc5..c70eb7b6 100644 --- a/examples/server_example_complex_array/server_example_ca.c +++ b/examples/server_example_complex_array/server_example_ca.c @@ -22,11 +22,11 @@ static int running = 0; static void sigint_handler(int signalId) { - running = 0; + running = 0; } 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); @@ -48,7 +48,9 @@ updateCMVArrayElement(MmsValue* cval, int index, float magnitude, float angle, Q MmsValue_setUtcTimeByBuffer(t, timestamp.val); } -int main(int argc, char** argv) { +int +main(int argc, char **argv) +{ int tcpPort = 102; @@ -56,16 +58,15 @@ int main(int argc, char** argv) { 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*) IedModel_getModelNodeByObjectReference(&iedModel, "testComplexArray/MHAI1.HA.phsAHar"); /* 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); - /* assuming the array has 16 elements */ float mag = 200.f; float angle = 0.01f; @@ -82,45 +83,47 @@ int main(int argc, char** argv) { angle += 0.01f; } - /* MMS server will be instructed to start listening to client connections. */ - IedServer_start(iedServer, tcpPort); + /* MMS server will be instructed to start listening to client connections. */ + IedServer_start(iedServer, tcpPort); - if (!IedServer_isRunning(iedServer)) { - printf("Starting server failed! Exit.\n"); - IedServer_destroy(iedServer); - exit(-1); - } + if (!IedServer_isRunning(iedServer)) { + printf("Starting server failed! Exit.\n"); + IedServer_destroy(iedServer); + exit(-1); + } - running = 1; + running = 1; - signal(SIGINT, sigint_handler); + signal(SIGINT, sigint_handler); - int counter = 0; + int counter = 0; - while (running) { - Thread_sleep(1000); + while (running) { + Thread_sleep(1000); - Timestamp_setTimeInMilliseconds(×tamp, Hal_getTimeInMs()); + Timestamp_setTimeInMilliseconds(×tamp, Hal_getTimeInMs()); - IedServer_lockDataModel(iedServer); - for (i = 0; i < 16; i++) { - updateCMVArrayElement(mhai1_ha_phsAHar_mx, i, mag, angle, quality, timestamp); - mag += 0.1f; - angle += 0.05f; - } - IedServer_unlockDataModel(iedServer); + IedServer_lockDataModel(iedServer); + for (i = 0; i < 16; i++) { + updateCMVArrayElement(mhai1_ha_phsAHar_mx, i, mag, angle, quality, timestamp); + mag += 0.1f; + angle += 0.05f; + } + IedServer_unlockDataModel(iedServer); - if (counter == 10) { - /* Now a problem occurs - measurements are invalid */ - quality = QUALITY_VALIDITY_INVALID | QUALITY_DETAIL_FAILURE; - } + if (counter == 10) { + /* Now a problem occurs - measurements are invalid */ + 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 */ - IedServer_stop(iedServer); + /* Cleanup - free all resources */ + IedServer_destroy(iedServer); - /* Cleanup - free all resources */ - IedServer_destroy(iedServer); + return 0; } /* main() */ diff --git a/examples/server_example_config_file/server_example_config_file.c b/examples/server_example_config_file/server_example_config_file.c index f9bfbc3d..88252991 100644 --- a/examples/server_example_config_file/server_example_config_file.c +++ b/examples/server_example_config_file/server_example_config_file.c @@ -125,4 +125,5 @@ main(int argc, char** argv) IedServer_destroy(iedServer); IedModel_destroy(model); + return 0; } /* main() */ diff --git a/examples/server_example_control/server_example_control.c b/examples/server_example_control/server_example_control.c index 2a702f37..364c20c6 100644 --- a/examples/server_example_control/server_example_control.c +++ b/examples/server_example_control/server_example_control.c @@ -193,4 +193,5 @@ main(int argc, char** argv) /* Cleanup - free all resources */ IedServer_destroy(iedServer); + return 0; } /* main() */ diff --git a/examples/server_example_dynamic/server_example_dynamic.c b/examples/server_example_dynamic/server_example_dynamic.c index f10f6367..43cd9fa9 100644 --- a/examples/server_example_dynamic/server_example_dynamic.c +++ b/examples/server_example_dynamic/server_example_dynamic.c @@ -101,4 +101,5 @@ int main(int argc, char** argv) { /* destroy dynamic data model */ IedModel_destroy(model); + return 0; } /* main() */ diff --git a/examples/server_example_files/server_example_files.c b/examples/server_example_files/server_example_files.c index 596c4ce3..78956c55 100644 --- a/examples/server_example_files/server_example_files.c +++ b/examples/server_example_files/server_example_files.c @@ -95,5 +95,6 @@ main(int argc, char** argv) /* Cleanup - free all resources */ IedServer_destroy(iedServer); + return 0; } /* main() */ diff --git a/examples/server_example_goose/server_example_goose.c b/examples/server_example_goose/server_example_goose.c index 865f01c1..aa9fc0a0 100644 --- a/examples/server_example_goose/server_example_goose.c +++ b/examples/server_example_goose/server_example_goose.c @@ -152,4 +152,5 @@ int main(int argc, char** argv) { /* Cleanup - free all resources */ IedServer_destroy(iedServer); + return 0; } /* main() */ diff --git a/examples/server_example_logging/server_example_logging.c b/examples/server_example_logging/server_example_logging.c index e535c75b..96b71bb9 100644 --- a/examples/server_example_logging/server_example_logging.c +++ b/examples/server_example_logging/server_example_logging.c @@ -238,5 +238,6 @@ main(int argc, char** argv) /* Release connection to database and free resources */ LogStorage_destroy(statusLog); + return 0; } /* main() */ diff --git a/examples/server_example_password_auth/server_example_password_auth.c b/examples/server_example_password_auth/server_example_password_auth.c index bae9c2fe..149c6fbb 100644 --- a/examples/server_example_password_auth/server_example_password_auth.c +++ b/examples/server_example_password_auth/server_example_password_auth.c @@ -217,4 +217,5 @@ int main(int argc, char** argv) { /* Cleanup - free all resources */ IedServer_destroy(iedServer); + return 0; } /* main() */ diff --git a/examples/server_example_service_tracking/server_example_service_tracking.c b/examples/server_example_service_tracking/server_example_service_tracking.c index 817a04a8..f2532357 100644 --- a/examples/server_example_service_tracking/server_example_service_tracking.c +++ b/examples/server_example_service_tracking/server_example_service_tracking.c @@ -285,4 +285,5 @@ main(int argc, char** argv) /* Cleanup - free all resources */ IedServer_destroy(iedServer); + return 0; } /* main() */ diff --git a/examples/server_example_simple/server_example_simple.c b/examples/server_example_simple/server_example_simple.c index 6d148e95..5bd97693 100644 --- a/examples/server_example_simple/server_example_simple.c +++ b/examples/server_example_simple/server_example_simple.c @@ -34,43 +34,47 @@ extern IedModel iedModel; static int running = 0; -void sigint_handler(int signalId) +void +sigint_handler(int signalId) { running = 0; } -int main(int argc, char** argv) { - +int +main(int argc, char** argv) +{ int tcpPort = 102; if (argc > 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. */ - IedServer_start(iedServer, tcpPort); + /* MMS server will be instructed to start listening to client connections. */ + IedServer_start(iedServer, tcpPort); - if (!IedServer_isRunning(iedServer)) { - printf("Starting server failed! Exit.\n"); - IedServer_destroy(iedServer); - exit(-1); - } + if (!IedServer_isRunning(iedServer)) { + printf("Starting server failed! Exit.\n"); + IedServer_destroy(iedServer); + exit(-1); + } - running = 1; + running = 1; - signal(SIGINT, sigint_handler); + signal(SIGINT, sigint_handler); + + while (running) { + Thread_sleep(1); + } - while (running) { - Thread_sleep(1); - } + /* 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 */ - IedServer_stop(iedServer); + /* Cleanup - free all resources */ + IedServer_destroy(iedServer); - /* Cleanup - free all resources */ - IedServer_destroy(iedServer); + return 0; } /* main() */ diff --git a/examples/server_example_substitution/server_example_substitution.c b/examples/server_example_substitution/server_example_substitution.c index b4052254..0050f04f 100644 --- a/examples/server_example_substitution/server_example_substitution.c +++ b/examples/server_example_substitution/server_example_substitution.c @@ -225,5 +225,6 @@ main(int argc, char** argv) /* Cleanup - free all resources */ IedServer_destroy(iedServer); + return 0; } /* main() */ diff --git a/examples/server_example_threadless/server_example_threadless.c b/examples/server_example_threadless/server_example_threadless.c index dd9dc354..d01efe28 100644 --- a/examples/server_example_threadless/server_example_threadless.c +++ b/examples/server_example_threadless/server_example_threadless.c @@ -150,4 +150,5 @@ main(int argc, char** argv) /* Cleanup - free all resources */ IedServer_destroy(iedServer); + return 0; } /* main() */ diff --git a/examples/server_example_write_handler/server_example_write_handler.c b/examples/server_example_write_handler/server_example_write_handler.c index 0666e817..d1d2295e 100644 --- a/examples/server_example_write_handler/server_example_write_handler.c +++ b/examples/server_example_write_handler/server_example_write_handler.c @@ -8,7 +8,7 @@ #include #include -#include "../server_example_write_handler/static_model.h" +#include "static_model.h" /* import IEC 61850 device model created from SCL-File */ extern IedModel iedModel; @@ -18,7 +18,7 @@ static IedServer iedServer = NULL; void sigint_handler(int signalId) { - running = 0; + running = 0; } static MmsDataAccessError @@ -41,38 +41,41 @@ writeAccessHandler (DataAttribute* dataAttribute, MmsValue* value, ClientConnect 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. */ - IedServer_start(iedServer, 102); + /* Don't allow access to SP variables by default */ + IedServer_setWriteAccessPolicy(iedServer, IEC61850_FC_SP, ACCESS_POLICY_DENY); - /* Don't allow access to SP variables by default */ - IedServer_setWriteAccessPolicy(iedServer, IEC61850_FC_SP, ACCESS_POLICY_DENY); + /* Instruct the server that we will be informed if a clients writes to a + * 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 - * certain variables we are interested in. - */ - IedServer_handleWriteAccess(iedServer, IEDMODEL_Inverter_ZINV1_OutVarSet_setMag_f, writeAccessHandler, NULL); + if (!IedServer_isRunning(iedServer)) { + printf("Starting server failed! Exit.\n"); + IedServer_destroy(iedServer); + exit(-1); + } - if (!IedServer_isRunning(iedServer)) { - printf("Starting server failed! Exit.\n"); - IedServer_destroy(iedServer); - exit(-1); - } + running = 1; - running = 1; + signal(SIGINT, sigint_handler); - signal(SIGINT, sigint_handler); + while (running) { + Thread_sleep(1); + } - while (running) { - Thread_sleep(1); - } + /* 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 */ - IedServer_stop(iedServer); + /* Cleanup - free all resources */ + IedServer_destroy(iedServer); - /* Cleanup - free all resources */ - IedServer_destroy(iedServer); + return 0; } /* main() */ diff --git a/examples/sv_publisher/sv_publisher_example.c b/examples/sv_publisher/sv_publisher_example.c index 4b41401c..aa088fe9 100644 --- a/examples/sv_publisher/sv_publisher_example.c +++ b/examples/sv_publisher/sv_publisher_example.c @@ -81,4 +81,5 @@ main(int argc, char** argv) else { printf("Failed to create SV publisher\n"); } + return 0; } diff --git a/examples/sv_subscriber/sv_subscriber_example.c b/examples/sv_subscriber/sv_subscriber_example.c index d27108b9..0e3ff720 100644 --- a/examples/sv_subscriber/sv_subscriber_example.c +++ b/examples/sv_subscriber/sv_subscriber_example.c @@ -90,4 +90,5 @@ main(int argc, char** argv) /* Cleanup and free resources */ SVReceiver_destroy(receiver); + return 0; } diff --git a/examples/tls_client_example/tls_client_example.c b/examples/tls_client_example/tls_client_example.c index a2a774d8..44d4a906 100644 --- a/examples/tls_client_example/tls_client_example.c +++ b/examples/tls_client_example/tls_client_example.c @@ -154,6 +154,7 @@ int main(int argc, char** argv) { IedConnection_destroy(con); TLSConfiguration_destroy(tlsConfig); + return 0; } diff --git a/examples/tls_server_example/tls_server_example.c b/examples/tls_server_example/tls_server_example.c index a8980d01..88add7f9 100644 --- a/examples/tls_server_example/tls_server_example.c +++ b/examples/tls_server_example/tls_server_example.c @@ -225,4 +225,5 @@ main(int argc, char** argv) TLSConfiguration_destroy(tlsConfig); + return 0; } /* main() */