Skip to content
Snippets Groups Projects
Commit 469c268b authored by Guillaume PICHON's avatar Guillaume PICHON
Browse files

Several corrections.

parent 8eb49cfd
No related branches found
No related tags found
No related merge requests found
...@@ -86,9 +86,9 @@ public class OpcUaProxy { ...@@ -86,9 +86,9 @@ public class OpcUaProxy {
* Starts the server. * Starts the server.
*/ */
public static void main(final String[] args) { public static void main(final String[] args) {
ServerManager.getInstance().addClass(OpcUaConnector.class.getCanonicalName(), OpcUaConnector.class); ServerManager.getInstance().addClass(OpcUaConnector.class.getSimpleName(), OpcUaConnector.class);
ServerManager.getInstance().addClass(OpcUaSubscriber.class.getCanonicalName(), OpcUaSubscriber.class); ServerManager.getInstance().addClass(OpcUaSubscriber.class.getSimpleName(), OpcUaSubscriber.class);
ServerManager.getInstance().start(args, OpcUaProxy.class.getCanonicalName()); ServerManager.getInstance().start(args, OpcUaProxy.class.getSimpleName());
} }
public static final String NO_DB_DEVICE_NAME = "1/1/1"; public static final String NO_DB_DEVICE_NAME = "1/1/1";
......
...@@ -2,6 +2,7 @@ package fr.soleil.opcuaproxy.connector; ...@@ -2,6 +2,7 @@ package fr.soleil.opcuaproxy.connector;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
...@@ -365,6 +366,14 @@ public class OpcUaConnector extends AOpcUaSubscriber { ...@@ -365,6 +366,14 @@ public class OpcUaConnector extends AOpcUaSubscriber {
this.state = state; this.state = state;
} }
public String[] getAsyncReplyResultAttribute() {
String[] res = null;
synchronized (asyncReplyResultAttribute) {
res = Arrays.copyOf(asyncReplyResultAttribute, asyncReplyResultAttribute.length);
}
return res;
}
public String getStatus() { public String getStatus() {
return status; return status;
} }
......
...@@ -29,6 +29,7 @@ import fr.soleil.opcuaproxy.OpcUaProxy; ...@@ -29,6 +29,7 @@ import fr.soleil.opcuaproxy.OpcUaProxy;
import fr.soleil.opcuaproxy.attributes.OpcUaAttribute; import fr.soleil.opcuaproxy.attributes.OpcUaAttribute;
import fr.soleil.opcuaproxy.attributes.OpcUaAttributeParameters; import fr.soleil.opcuaproxy.attributes.OpcUaAttributeParameters;
import fr.soleil.opcuaproxy.attributes.definition.AttributeDefinition; import fr.soleil.opcuaproxy.attributes.definition.AttributeDefinition;
import fr.soleil.opcuaproxy.attributes.definition.NodeType.NodeIdType;
import fr.soleil.opcuaproxy.attributes.definition.OpcUaAttributesSubscriptions; import fr.soleil.opcuaproxy.attributes.definition.OpcUaAttributesSubscriptions;
import fr.soleil.opcuaproxy.attributes.definition.Subscription; import fr.soleil.opcuaproxy.attributes.definition.Subscription;
import fr.soleil.opcuaproxy.connector.OpcUaConnector; import fr.soleil.opcuaproxy.connector.OpcUaConnector;
...@@ -38,9 +39,12 @@ import fr.soleil.opcuaproxy.connector.SubscriptionResult; ...@@ -38,9 +39,12 @@ import fr.soleil.opcuaproxy.connector.SubscriptionResult;
public class OpcUaSubscriber extends AOpcUaSubscriber { public class OpcUaSubscriber extends AOpcUaSubscriber {
private static final Logger logger = LoggerFactory.getLogger(OpcUaSubscriber.class); private static final Logger logger = LoggerFactory.getLogger(OpcUaSubscriber.class);
private static final int DEFAULT_NAMESPACE_INDEX = 1;
private static final NodeIdType DEFAULT_OPCUA_ID_TYPE = NodeIdType.STRING;
private static final double DEFAULT_SAMPLING_INTERVAL = 1000.0;
@DeviceProperty(defaultValue = "", description = "The device configuration in JSON format") @DeviceProperty(defaultValue = "", description = "The device configuration in JSON format")
private String subscriptionsJson; private String[] subscriptionsJson;
/** /**
* Manage dynamic attributes and commands * Manage dynamic attributes and commands
...@@ -84,22 +88,42 @@ public class OpcUaSubscriber extends AOpcUaSubscriber { ...@@ -84,22 +88,42 @@ public class OpcUaSubscriber extends AOpcUaSubscriber {
// DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); // DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
// mapper.setDateFormat(df); // mapper.setDateFormat(df);
OpcUaAttributesSubscriptions subscriptions = null; OpcUaAttributesSubscriptions subscriptions = null;
if (subscriptionsJson != null && !subscriptionsJson.isEmpty()) { if (subscriptionsJson != null && subscriptionsJson.length > 0) {
StringBuilder subscriptionsDefinitionStrBldr = new StringBuilder();
for (String subPart : subscriptionsJson) {
subscriptionsDefinitionStrBldr.append(subPart);
subscriptionsDefinitionStrBldr.append("\n");
}
try { try {
subscriptions = mapper.readValue(subscriptionsJson, OpcUaAttributesSubscriptions.class); subscriptions = mapper.readValue(subscriptionsDefinitionStrBldr.toString(),
OpcUaAttributesSubscriptions.class);
} catch (JsonProcessingException e) { } catch (JsonProcessingException e) {
logger.error("Parsing error for device " + deviceManager.getName(), e); logger.error("Parsing error for device " + deviceManager.getName(), e);
throw DevFailedUtils.newDevFailed(e); throw DevFailedUtils.newDevFailed(e);
} }
} }
if (subscriptions != null) {
int defaultNamespaceIndex = DEFAULT_NAMESPACE_INDEX;
NodeIdType defaultOpcUaIdType = DEFAULT_OPCUA_ID_TYPE;
double defaultSamplingIndex = DEFAULT_SAMPLING_INTERVAL;
if (subscriptions.getDefaultType() != null) {
defaultOpcUaIdType = subscriptions.getDefaultType();
}
if (subscriptions.getDefaultNamespaceIndex() != null) {
defaultNamespaceIndex = subscriptions.getDefaultNamespaceIndex();
}
if (subscriptions.getDefaultSamplingInterval() != null) {
defaultSamplingIndex = subscriptions.getDefaultSamplingInterval();
}
List<SubscriptionResult> subscriptionResults = new ArrayList<>(subscriptions.getSubscriptions().size()); List<SubscriptionResult> subscriptionResults = new ArrayList<>(subscriptions.getSubscriptions().size());
for (Subscription subscription : subscriptions.getSubscriptions()) { for (Subscription subscription : subscriptions.getSubscriptions()) {
List<OpcUaAttributeParameters> parametersList = new ArrayList<>(subscription.getAttributes().size()); List<OpcUaAttributeParameters> parametersList = new ArrayList<>(subscription.getAttributes().size());
for (AttributeDefinition attrDef : subscription.getAttributes()) { for (AttributeDefinition attrDef : subscription.getAttributes()) {
OpcUaAttributeParameters parameters = new OpcUaAttributeParameters(attrDef, OpcUaAttributeParameters parameters = new OpcUaAttributeParameters(attrDef, defaultOpcUaIdType,
subscriptions.getDefaultType(), subscriptions.getDefaultNamespaceIndex(), defaultNamespaceIndex, defaultSamplingIndex);
subscriptions.getDefaultSamplingInterval());
parametersList.add(parameters); parametersList.add(parameters);
} }
SubscriptionResult subscriptionResult = connector.createOPCUAAttributes(parametersList, SubscriptionResult subscriptionResult = connector.createOPCUAAttributes(parametersList,
...@@ -107,6 +131,8 @@ public class OpcUaSubscriber extends AOpcUaSubscriber { ...@@ -107,6 +131,8 @@ public class OpcUaSubscriber extends AOpcUaSubscriber {
subscriptionResults.add(subscriptionResult); subscriptionResults.add(subscriptionResult);
} }
createTangoAttributes(subscriptionResults); createTangoAttributes(subscriptionResults);
}
setStatus("Initialisation done.");
logger.debug("init done for device {} ", deviceManager.getName()); logger.debug("init done for device {} ", deviceManager.getName());
} }
...@@ -125,11 +151,23 @@ public class OpcUaSubscriber extends AOpcUaSubscriber { ...@@ -125,11 +151,23 @@ public class OpcUaSubscriber extends AOpcUaSubscriber {
return deviceManager; return deviceManager;
} }
public void setDeviceManager(DeviceManager deviceManager) {
this.deviceManager = deviceManager;
}
@Override @Override
protected Logger getLogger() { protected Logger getLogger() {
return logger; return logger;
} }
public String[] getSubscriptionsJson() {
return subscriptionsJson;
}
public void setSubscriptionsJson(String[] subscriptionsJson) {
this.subscriptionsJson = subscriptionsJson;
}
public void setDynamicManager(DynamicManager dynamicManager) { public void setDynamicManager(DynamicManager dynamicManager) {
this.dynamicManager = dynamicManager; this.dynamicManager = dynamicManager;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment