From 8a137780b1b6eb8bcfaf535c4c336953dda94d0b Mon Sep 17 00:00:00 2001
From: Bjoern Senfftleben <bjoern.senfftleben@xfel.eu>
Date: Sat, 8 Feb 2025 23:44:25 +0100
Subject: [PATCH] fixes multilink feature

---
 src/tempus/Tempus.py | 37 ++++++++++++++++++++++---------------
 1 file changed, 22 insertions(+), 15 deletions(-)

diff --git a/src/tempus/Tempus.py b/src/tempus/Tempus.py
index dc74f0a..4316dd6 100644
--- a/src/tempus/Tempus.py
+++ b/src/tempus/Tempus.py
@@ -156,7 +156,7 @@ class Tempus(Device):
     enableMultiLink = Bool(
         defaultValue=False,
         displayedName="Enable Multiple Data Links",
-        accessMode=AccessMode.INITONLY)
+        allowedStates={State.INIT})
 
     @Slot(
         displayedName="Initialize",
@@ -212,12 +212,10 @@ class Tempus(Device):
                 await self.send_command("mytpx4.initialisechip()", sleep_time=1)
                 await self.send_command("mytpx4.configureGWT()", sleep_time=0.5)
 
-                await self.send_command(f"os.system('{self.APP_DIR}/sc_set_gwt_link_up.py -i 0x0 -l 0x0 -s 0x2')")
-                await self.send_command(f"os.system('{self.APP_DIR}/sc_set_gwt_link_up.py -i 0x0 -l 0x3 -s 0x2')")
-                await self.send_command(f"os.system('{self.APP_DIR}/sc_set_gwt_link_up.py -i 0x1 -l 0x0 -s 0x2')")
-                await self.send_command(f"os.system('{self.APP_DIR}/sc_set_gwt_link_up.py -i 0x1 -l 0x1 -s 0x2') ")
-                
-
+                await self.send_command(f"os.system('{self.APP_DIR}/sc_set_gwt_link_up.py -i 0x0 -l 0x0 -s 0x2')", sleep_time=15)
+                await self.send_command(f"os.system('{self.APP_DIR}/sc_set_gwt_link_up.py -i 0x0 -l 0x3 -s 0x2')", sleep_time=15)
+                await self.send_command(f"os.system('{self.APP_DIR}/sc_set_gwt_link_up.py -i 0x1 -l 0x0 -s 0x2')", sleep_time=15)
+                await self.send_command(f"os.system('{self.APP_DIR}/sc_set_gwt_link_up.py -i 0x1 -l 0x1 -s 0x2')", sleep_time=15)
 
             self.status = "Initialized"
             self.state = State.ON
@@ -238,15 +236,24 @@ class Tempus(Device):
 
     async def _reset_fast_links(self, initial_state):
         try:
-            await self.send_command(
-                f"os.system('{self.APP_DIR}/sc_set_gwt_link_up.py -i 0x0 "
-                "-l 0x0 -s 0x2')", sleep_time=15)
-            await self.send_command(
-                f"os.system('{self.APP_DIR}/sc_set_gwt_link_up.py -i 0x1 "
-                "-l 0x0 -s 0x2')", sleep_time=15)
+            if not self.enableMultiLink:
+                await self.send_command(
+                    f"os.system('{self.APP_DIR}/sc_set_gwt_link_up.py -i 0x0 "
+                    "-l 0x0 -s 0x2')", sleep_time=15)
+                await self.send_command(
+                    f"os.system('{self.APP_DIR}/sc_set_gwt_link_up.py -i 0x1 "
+                    "-l 0x0 -s 0x2')", sleep_time=15)
+
+                self.status = "Fast-links reset done"
+                self.state = initial_state
+            else:
+                await self.send_command(f"os.system('{self.APP_DIR}/sc_set_gwt_link_up.py -i 0x0 -l 0x0 -s 0x2')", sleep_time=15)
+                await self.send_command(f"os.system('{self.APP_DIR}/sc_set_gwt_link_up.py -i 0x0 -l 0x3 -s 0x2')", sleep_time=15)
+                await self.send_command(f"os.system('{self.APP_DIR}/sc_set_gwt_link_up.py -i 0x1 -l 0x0 -s 0x2')", sleep_time=15)
+                await self.send_command(f"os.system('{self.APP_DIR}/sc_set_gwt_link_up.py -i 0x1 -l 0x1 -s 0x2')", sleep_time=15)
 
-            self.status = "Fast-links reset done"
-            self.state = initial_state
+                self.status = "Fast-links (multi-link) reset done"
+                self.state = initial_state
 
         except Exception as e:
             self.handle_execption(e)
-- 
GitLab