From 4debee9fea747332c766e1cd8d2a3887e54d960f Mon Sep 17 00:00:00 2001
From: Marko Mecina <marko.mecina@univie.ac.at>
Date: Fri, 3 May 2024 15:45:04 +0200
Subject: [PATCH] add tutorial script

---
 Ccs/scripts/ATHENA/wfi_de_communication.py | 64 ++++++++++++++++++++++
 1 file changed, 64 insertions(+)
 create mode 100644 Ccs/scripts/ATHENA/wfi_de_communication.py

diff --git a/Ccs/scripts/ATHENA/wfi_de_communication.py b/Ccs/scripts/ATHENA/wfi_de_communication.py
new file mode 100644
index 0000000..5e9c4d5
--- /dev/null
+++ b/Ccs/scripts/ATHENA/wfi_de_communication.py
@@ -0,0 +1,64 @@
+"""
+Examples for Athena WFI DE communications
+"""
+
+import communication as com
+import packet_config_ATHENA_DE as de
+import tools.dataprocessing.athena_de_frame_proc as fputils
+
+# set up socket and connect
+decon = com.Connector('', 12345, msgdecoding='hex')
+decon.connect()
+
+# example commands
+# 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)
+logfile = '/path/to/de_cmd.log'
+decon.dump_log(logfile)
+
+# automatically log to file
+decon.setup_storage(logfile)
+
+# run rx thread on socket, received data is put in recvd_data_buf queue
+decon.start_receiver()
+decon.receiver.recvd_data_buf
+
+# optionally, add custom TM processing
+# define packet parser and event frame processor
+ppa = de.FpmPktParser(96)  # SCI (0x35) packets have 96 bytes by default (plus the interface byte)
+ppr = de.FpmProcessor()
+decon.start_receiver(pkt_parser_func=ppa, procfunc=ppr)
+
+# get the frames from the processed data list and view them
+fv = fputils.FrameViewer(de.filter_frames(decon.proc_data, empty_frames=False))
+fv.show(cmap='inferno', interpolation='none')
+
+
+# custom TM processing function; must take bytestring as arg *data*, and timestamp kwarg *ts*
+def msg_to_hex_string(data, ts=''):
+    try:
+        return '{}: {}\n'.format(ts, data.hex(' ', 1))
+    except Exception as err:
+        print(err)
+        return '# ERROR #\n'
+
+# this logs the received data hex-formatted in outfile
+decon.start_receiver(procfunc=msg_to_hex_string, outfile='/path/to/de_rx.log', ofmode='w')
+
+# processed data is also collected in
+decon.receiver.proc_data
+
-- 
GitLab