From 8ad86fbbf1e1884d8c3a8b9910e3add64dd6cfe0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Romain=20BRON=C3=88S?= <romain.brones@synchrotron-soleil.fr>
Date: Mon, 27 May 2024 08:30:43 +0200
Subject: [PATCH] fix: Group command call

Use a DeviceData object
---
 FofbTool/Operation.py | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/FofbTool/Operation.py b/FofbTool/Operation.py
index 8513c7c..c9bed0c 100644
--- a/FofbTool/Operation.py
+++ b/FofbTool/Operation.py
@@ -202,6 +202,13 @@ def ack_combpm(cellnodename):
 ADDR_CCCFG=0        # Register address of Libera Electron
 ADDR_FAICFG=0x2000  # Register address of Libera Electron
 
+def electron_group_writefadata(group, listargs):
+
+    args = tango.DeviceData()
+    args.insert(tango.DevVarLongArray, listargs)
+    r=group.command_inout("WriteFAData", args)
+    return r
+
 def electron_init_fa(bpmlist):
     """
     Configure FA register of Libera Electron
@@ -230,11 +237,11 @@ def electron_init_fa(bpmlist):
 
 
         # Configure : bpmid, tframe, mgtpower, mgtlb, bfrclr
-        pbpm.command_inout("WriteFAData", [ADDR_CCCFG, 4, 5, bpmid, 6000, 0, 0, 6000])
+        electron_group_writefadata(pbpm, [ADDR_CCCFG, 4, 5, bpmid, 6000, 0, 0, 6000])
         # Ack rise
-        pbpm.command_inout("WriteFAData", [ADDR_FAICFG, 4, 1, 9])
+        electron_group_writefadata(pbpm, [ADDR_FAICFG, 4, 1, 9])
         # Ack fall
-        pbpm.command_inout("WriteFAData", [ADDR_FAICFG, 4, 1, 8])
+        electron_group_writefadata(pbpm, [ADDR_FAICFG, 4, 1, 8])
 
     return True
 
@@ -266,14 +273,14 @@ def electron_start_next_trigger(bpmlist):
             return False
 
     # Write start, tframelim=zero, no debug data
-    r=bpms.command_inout("WriteFAData", [ADDR_FAICFG, 4, 1, 8])
+    r=electron_group_writefadata(bpms, [ADDR_FAICFG, 4, 1, 8])
     for _r in r:
         if _r.has_failed():
             logger.error("Failed to apply command WriteFAData on bpm {}".format(_r.dev_name()))
             return False
 
     # Write Enable ITech FAI
-    r=bpms.command_inout("WriteFAData", [ADDR_FAICFG+4, 4, 1,1])
+    r=electron_group_writefadata(bpms, [ADDR_FAICFG+4, 4, 1,1])
     for _r in r:
         if _r.has_failed():
             logger.error("Failed to apply command WriteFAData on bpm {}".format(_r.dev_name()))
@@ -301,21 +308,21 @@ def electron_stop_com(bpmlist):
     bpms.add(bpmlist)
 
     # Write Disable ITech FAI
-    r=bpms.command_inout("WriteFAData", [ADDR_FAICFG+4, 4, 1, 0])
+    r=electron_group_writefadata(bpms, [ADDR_FAICFG+4, 4, 1, 0])
     for _r in r:
         if _r.has_failed():
             logger.error("Failed to apply command WriteFAData on bpm {}".format(_r.dev_name()))
             return False
 
     # Soft stop
-    r=bpms.command_inout("WriteFAData", [ADDR_FAICFG+8, 4, 1, 0])
+    r=electron_group_writefadata(bpms, [ADDR_FAICFG+8, 4, 1, 0])
     for _r in r:
         if _r.has_failed():
             logger.error("Failed to apply command WriteFAData on bpm {}".format(_r.dev_name()))
             return False
 
     # Reset User FAI
-    r=bpms.command_inout("WriteFAData", [ADDR_FAICFG, 4, 1, 0])
+    r=electron_group_writefadata(bpms, [ADDR_FAICFG, 4, 1, 0])
     for _r in r:
         if _r.has_failed():
             logger.error("Failed to apply command WriteFAData on bpm {}".format(_r.dev_name()))
-- 
GitLab