From c84121a72dac2aba24d14d796df3ee61590dff9a Mon Sep 17 00:00:00 2001
From: Thomas Juerges <4-jurges@users.noreply.git.astron.nl>
Date: Fri, 3 Apr 2020 21:35:10 +0200
Subject: [PATCH] Begin adding code to talk to Mattia's OPC-UA device

---
 crossechoTangoDev/Crossecho.py | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/crossechoTangoDev/Crossecho.py b/crossechoTangoDev/Crossecho.py
index 4979adf7a..3b09e4c02 100644
--- a/crossechoTangoDev/Crossecho.py
+++ b/crossechoTangoDev/Crossecho.py
@@ -23,6 +23,8 @@ from PyTango import AttrQuality, DispLevel, DevState
 from PyTango import AttrWriteType, PipeWriteType
 # Additional import
 # PROTECTED REGION ID(Crossecho.additionnal_import) ENABLED START #
+from lib.opc_interface import connect_to_server, DEFAULT_URI
+import numpy
 # PROTECTED REGION END #    //  Crossecho.additionnal_import
 
 __all__ = ["Crossecho", "main"]
@@ -77,6 +79,14 @@ class Crossecho(Device):
     def init_device(self):
         Device.init_device(self)
         # PROTECTED REGION ID(Crossecho.init_device) ENABLED START #
+        self.client = connect_to_server(self.OPC_Server_Name, self.OPC_Server_Port)
+        self.objects = self.client.get_objects_node()
+        self.idx = self.client.get_namespace_index(DEFAULT_URI)
+
+        # Now getting a variable node using its browse path
+        self.opc_obj = self.client.get_root_node().get_child(["0:Objects",
+                                            "{}:StationMetrics".format(idx),
+                                            "{}:RCU".format(idx)])
         # PROTECTED REGION END #    //  Crossecho.init_device
 
     def always_executed_hook(self):
@@ -86,7 +96,8 @@ class Crossecho(Device):
 
     def delete_device(self):
         # PROTECTED REGION ID(Crossecho.delete_device) ENABLED START #
-        pass
+        self.client.close_session()
+        self.client.close_secure_channel()
         # PROTECTED REGION END #    //  Crossecho.delete_device
 
     # ------------------
@@ -122,7 +133,12 @@ class Crossecho(Device):
     @DebugIt()
     def record_cross(self):
         # PROTECTED REGION ID(Crossecho.record_cross) ENABLED START #
-        pass
+        if self.is_record_cross_allowed() is True:
+            timeStamp, crossletStats, rcuModes = self.opc_obj.call_method("{}:record_cross".format(idx), self.subBand, self.integrationTime)
+        print("Timestamp is ", result[0])
+        print("Crosscorrelations are ", numpy.array(result[1]))
+        print("RCU modes are", numpy.array(result[2]))
+
         # PROTECTED REGION END #    //  Crossecho.record_cross
 
     def is_record_cross_allowed(self):
-- 
GitLab