- 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 */
#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/"

@ -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

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

@ -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;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -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() */

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

@ -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,

@ -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(&timestamp, Hal_getTimeInMs());
Timestamp_setTimeInMilliseconds(&timestamp, 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() */

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

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

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

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

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

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

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

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

@ -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() */

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

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

@ -8,7 +8,7 @@
#include <stdlib.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 */
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() */

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

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

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

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

Loading…
Cancel
Save