From 2597e5228fb03e43057d6aa675c0125dc052e621 Mon Sep 17 00:00:00 2001
From: Marko Mecina <marko.mecina@univie.ac.at>
Date: Thu, 7 Dec 2023 12:25:26 +0100
Subject: [PATCH] update athena fpm interface lib

---
 Ccs/packet_config_ATHENA.py         |  2 ++
 Ccs/packet_config_ATHENA_DE.py      | 27 +++++++++++++++++++--------
 Ccs/scripts/wfi_de_communication.py | 17 +++++++++++++----
 3 files changed, 34 insertions(+), 12 deletions(-)

diff --git a/Ccs/packet_config_ATHENA.py b/Ccs/packet_config_ATHENA.py
index 15adda8..7921d4e 100644
--- a/Ccs/packet_config_ATHENA.py
+++ b/Ccs/packet_config_ATHENA.py
@@ -174,6 +174,8 @@ def calc_timestamp(time, sync=None, return_bytes=False):
 
 class RawGetterSetter:
 
+    bin = 0
+
     @property
     def raw(self):
         return bytes(self.bin)
diff --git a/Ccs/packet_config_ATHENA_DE.py b/Ccs/packet_config_ATHENA_DE.py
index 2e65983..65f7bb2 100644
--- a/Ccs/packet_config_ATHENA_DE.py
+++ b/Ccs/packet_config_ATHENA_DE.py
@@ -85,46 +85,53 @@ class CommandBase(ctypes.Union, RawGetterSetter):
     ]
 
 
-class HkCmdSend(CommandBase):
+class HkCmdWrite(CommandBase):
 
     def __init__(self, addr, data):
-        super(HkCmdSend).__init__()
+        super(HkCmdWrite).__init__()
         self.items.ifaddr = IfAddr.HK
         self.items.addr = addr
         self.items.txrx = CmdDir.SEND
         self.items.cmddata = data
 
 
-class HkCmdRecv(CommandBase):
+class HkCmdRead(CommandBase):
 
     def __init__(self, addr):
-        super(HkCmdRecv).__init__()
+        super(HkCmdRead).__init__()
         self.items.ifaddr = IfAddr.HK
         self.items.addr = addr
         self.items.txrx = CmdDir.RECV
         self.items.cmddata = 0
 
 
-class CmdSend(CommandBase):
+class CmdWrite(CommandBase):
 
     def __init__(self, addr, data):
-        super(CmdSend).__init__()
+        super(CmdWrite).__init__()
         self.items.ifaddr = IfAddr.CMD
         self.items.addr = addr
         self.items.txrx = CmdDir.SEND
         self.items.cmddata = data
 
 
-class CmdRecv(CommandBase):
+class CmdRead(CommandBase):
 
     def __init__(self, addr):
-        super(CmdRecv).__init__()
+        super(CmdRead).__init__()
         self.items.ifaddr = IfAddr.CMD
         self.items.addr = addr
         self.items.txrx = CmdDir.RECV
         self.items.cmddata = 0
 
 
+# aliases for script backwards-compatibility
+CmdSend = CmdWrite
+CmdRecv = CmdRead
+HkCmdSend = HkCmdWrite
+HkCmdRecv = HkCmdRead
+
+
 class Ack:
 
     def __init__(self, raw=bytes(ACK_LEN)):
@@ -388,6 +395,10 @@ class SciCmd:
     def raw(self, rawdata):
         self._raw = rawdata
 
+    @property
+    def hex(self):
+        return self._raw.hex(' ').upper()
+
     @property
     def ifaddr(self):
         return self._raw[0]
diff --git a/Ccs/scripts/wfi_de_communication.py b/Ccs/scripts/wfi_de_communication.py
index a199e25..e556ac4 100644
--- a/Ccs/scripts/wfi_de_communication.py
+++ b/Ccs/scripts/wfi_de_communication.py
@@ -10,10 +10,19 @@ decon = com.Connector('', 12345, msgdecoding='hex')
 decon.connect()
 
 # example commands
-decon.send(b'\x20\xDE\xAD')  # test echo interface (0x20)
-decon.send(de.HkCmdRecv(0x1000))  # get PCM MODE register
-decon.send(de.CmdSend(0x3C00, 1))  # write sequencer register
-decon.send(de.CmdSend(0x3C00, 1), rx=False)  # write sequencer register, but don't fetch cmd response from socket
+# test echo interface (0x20)
+decon.send(b'\x20\xDE\xAD')
+
+# HK interface 0x33
+decon.send(de.HkCmdRead(0x1000))  # get PCM MODE register
+decon.send(de.HkCmdWrite(0x1000, 0x0001))  # set PCM MODE register
+
+# CMD interface 0x34
+decon.send(de.CmdWrite(0x3C00, 0x0001))  # write sequencer register
+decon.send(de.CmdWrite(0x3C00, 1), rx=False)  # write sequencer register, but don't fetch cmd response from socket
+decon.send(de.CmdRead(0x3C00))  # read sequencer register
+
+# SCI interface 0x35
 decon.send(de.SciCmd(100))  # set science data output rate
 
 # dump cmd log (decon.log)
-- 
GitLab