You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libiec61850/javaiec61850/IEC61850Server.java

69 lines
2.0 KiB
Java

/*
* Copyright Waterford Institute of Technology 2017,
* Telecommunications Software and Systems Group (TSSG),
* Author Miguel Ponce de Leon <miguelpdl@tssg.org>.
*
*/
public class IEC61850Server extends Thread {
private sIedModel model = null;
private SWIGTYPE_p_sIedServer iedServer = null;
private int tcpPort = 8102;
@Override
public void interrupt() {
try {
iec61850.IedServer_stop(iedServer);
iec61850.IedServer_destroy(iedServer);
iec61850.IedModel_destroy(model);
System.out.println("IEC61850Server has been Interrupted and STOPPED" );
} catch (Exception ignored) {
} finally {
super.interrupt();
}
}
@Override
public void run() {
System.out.println("MyThread for IEC61850Server has STARTED" );
//Create a iec61850.IedModel
model = iec61850.IedModel_create("testmodel");
//Create a logical device
sLogicalDevice lDevice1 = iec61850.LogicalDevice_create("SENSORS", model);
//Create nodes off this logical device
sLogicalNode lln0 = iec61850.LogicalNode_create("LLN0", lDevice1);
sLogicalNode ttmp1 = iec61850.LogicalNode_create("TTMP1", lDevice1);
sDataObject cdc_sav = iec61850.CDC_SAV_create("TmpSv", iec61850.toModelNode(ttmp1), 0, false);
sDataObject cdc_asg = iec61850.CDC_ASG_create("TmpSp", iec61850.toModelNode(ttmp1), 0, false);
// Create a iec61850.IedServer based on a test IedModel node
iedServer = iec61850.IedServer_create(model);
iec61850.IedServer_start(iedServer, tcpPort);
if (!iec61850.IedServer_isRunning(iedServer)) {
System.out.println("Starting server failed! Exit.\n");
iec61850.IedServer_destroy(iedServer);
iec61850.IedModel_destroy(model);
System.exit(0);
}
System.out.println("IEC61850Server has STARTED" );
while (true) {
try {
Thread.sleep((long) 100);
} catch (InterruptedException e) {
break;
}
}
}
}