From 69c0a6970d1a9f3391fe248ff3e0c99c28505922 Mon Sep 17 00:00:00 2001
From: Marko Mecina <marko.mecina@univie.ac.at>
Date: Thu, 27 Oct 2022 16:10:21 +0200
Subject: [PATCH] organise FEE parameters in classes for better overview

---
 Ccs/packet_config_SMILE.py | 244 ++++++++++++++++++++-----------------
 1 file changed, 129 insertions(+), 115 deletions(-)

diff --git a/Ccs/packet_config_SMILE.py b/Ccs/packet_config_SMILE.py
index 2fba577..8ded6ea 100644
--- a/Ccs/packet_config_SMILE.py
+++ b/Ccs/packet_config_SMILE.py
@@ -456,116 +456,130 @@ fee_id = {'vstart': {'pid': 345544373, 'idx': 1},
           'ccd_mode2_config': {'pid': 345544341, 'idx': 42},
           'pix_offset': {'pid': 345544367, 'idx': 43}}
 
+
+# TODO: the FEE related parameters might need an update
 # FEE RW registers (SMILE-MSSL-PL-Register_map_v0.20)
+class FeeCfgReg:
+    FEE_CFG_REG_0 = 0x00000000
+    FEE_CFG_REG_1 = 0x00000004
+    FEE_CFG_REG_2 = 0x00000008
+    FEE_CFG_REG_3 = 0x0000000C
+    FEE_CFG_REG_4 = 0x00000010
+    FEE_CFG_REG_5 = 0x00000014
+    FEE_CFG_REG_6 = 0x00000018  # unused
+    FEE_CFG_REG_7 = 0x0000001C  # unused
+    FEE_CFG_REG_8 = 0x00000020  # unused
+    FEE_CFG_REG_9 = 0x00000024  # unused
+    FEE_CFG_REG_10 = 0x00000028  # unused
+    FEE_CFG_REG_11 = 0x0000002C  # unused
+    FEE_CFG_REG_12 = 0x00000030  # unused
+    FEE_CFG_REG_13 = 0x00000034  # unused
+    FEE_CFG_REG_14 = 0x00000038
+    FEE_CFG_REG_15 = 0x0000003C
+    FEE_CFG_REG_16 = 0x00000040
+    FEE_CFG_REG_17 = 0x00000044
+    FEE_CFG_REG_18 = 0x00000048
+    FEE_CFG_REG_19 = 0x0000004C
+    FEE_CFG_REG_20 = 0x00000050
+    FEE_CFG_REG_21 = 0x00000054
+    FEE_CFG_REG_22 = 0x00000058
+    FEE_CFG_REG_23 = 0x0000005C
+    FEE_CFG_REG_24 = 0x00000060
+    FEE_CFG_REG_25 = 0x00000064
+    FEE_CFG_REG_26 = 0x00000068
 
-FEE_CFG_REG_0 = 0x00000000
-FEE_CFG_REG_1 = 0x00000004
-FEE_CFG_REG_2 = 0x00000008
-FEE_CFG_REG_3 = 0x0000000C
-FEE_CFG_REG_4 = 0x00000010
-FEE_CFG_REG_5 = 0x00000014
-FEE_CFG_REG_6 = 0x00000018  # unused
-FEE_CFG_REG_7 = 0x0000001C  # unused
-FEE_CFG_REG_8 = 0x00000020  # unused
-FEE_CFG_REG_9 = 0x00000024  # unused
-FEE_CFG_REG_10 = 0x00000028  # unused
-FEE_CFG_REG_11 = 0x0000002C  # unused
-FEE_CFG_REG_12 = 0x00000030  # unused
-FEE_CFG_REG_13 = 0x00000034  # unused
-FEE_CFG_REG_14 = 0x00000038
-FEE_CFG_REG_15 = 0x0000003C
-FEE_CFG_REG_16 = 0x00000040
-FEE_CFG_REG_17 = 0x00000044
-FEE_CFG_REG_18 = 0x00000048
-FEE_CFG_REG_19 = 0x0000004C
-FEE_CFG_REG_20 = 0x00000050
-FEE_CFG_REG_21 = 0x00000054
-FEE_CFG_REG_22 = 0x00000058
-FEE_CFG_REG_23 = 0x0000005C
-FEE_CFG_REG_24 = 0x00000060
-FEE_CFG_REG_25 = 0x00000064
-FEE_CFG_REG_26 = 0x00000068
 
 # FEE  RO registers (SMILE-MSSL-PL-Register_map_v0.20)
+class FeeHkReg:
+    FEE_HK_REG_0 = 0x00000700  # reserved
+    FEE_HK_REG_1 = 0x00000704  # reserved
+    FEE_HK_REG_2 = 0x00000708  # reserved
+    FEE_HK_REG_3 = 0x0000070C  # reserved
+    FEE_HK_REG_4 = 0x00000710
+    FEE_HK_REG_5 = 0x00000714
+    FEE_HK_REG_6 = 0x00000718
+    FEE_HK_REG_7 = 0x0000071C
+    FEE_HK_REG_8 = 0x00000720
+    FEE_HK_REG_9 = 0x00000724
+    FEE_HK_REG_10 = 0x00000728
+    FEE_HK_REG_11 = 0x0000072C
+    FEE_HK_REG_12 = 0x00000730
+    FEE_HK_REG_13 = 0x00000734
+    FEE_HK_REG_14 = 0x00000738
+    FEE_HK_REG_15 = 0x0000073C
+    FEE_HK_REG_16 = 0x00000740
+    FEE_HK_REG_17 = 0x00000744
+    FEE_HK_REG_18 = 0x00000748
+    FEE_HK_REG_19 = 0x0000074C
+    FEE_HK_REG_20 = 0x00000750
+    FEE_HK_REG_21 = 0x00000754
+    FEE_HK_REG_22 = 0x00000758
+    FEE_HK_REG_23 = 0x0000075C
+    FEE_HK_REG_24 = 0x00000760  # reserved
+    FEE_HK_REG_25 = 0x00000764  # reserved
+    FEE_HK_REG_26 = 0x00000768  # reserved
+    FEE_HK_REG_27 = 0x0000076C  # reserved
+    FEE_HK_REG_28 = 0x00000770  # reserved
+    FEE_HK_REG_29 = 0x00000774  # reserved
+    FEE_HK_REG_30 = 0x00000778  # reserved
+    FEE_HK_REG_31 = 0x0000077C  # reserved
+    FEE_HK_REG_32 = 0x00000780
+    FEE_HK_REG_33 = 0x00000784
+    FEE_HK_REG_34 = 0x00000788
+    FEE_HK_REG_35 = 0x0000078C
+    FEE_HK_REG_36 = 0x00000790
+    FEE_HK_REG_37 = 0x00000794
 
-FEE_HK_REG_0 = 0x00000700  # reserved
-FEE_HK_REG_1 = 0x00000704  # reserved
-FEE_HK_REG_2 = 0x00000708  # reserved
-FEE_HK_REG_3 = 0x0000070C  # reserved
-FEE_HK_REG_4 = 0x00000710
-FEE_HK_REG_5 = 0x00000714
-FEE_HK_REG_6 = 0x00000718
-FEE_HK_REG_7 = 0x0000071C
-FEE_HK_REG_8 = 0x00000720
-FEE_HK_REG_9 = 0x00000724
-FEE_HK_REG_10 = 0x00000728
-FEE_HK_REG_11 = 0x0000072C
-FEE_HK_REG_12 = 0x00000730
-FEE_HK_REG_13 = 0x00000734
-FEE_HK_REG_14 = 0x00000738
-FEE_HK_REG_15 = 0x0000073C
-FEE_HK_REG_16 = 0x00000740
-FEE_HK_REG_17 = 0x00000744
-FEE_HK_REG_18 = 0x00000748
-FEE_HK_REG_19 = 0x0000074C
-FEE_HK_REG_20 = 0x00000750
-FEE_HK_REG_21 = 0x00000754
-FEE_HK_REG_22 = 0x00000758
-FEE_HK_REG_23 = 0x0000075C
-FEE_HK_REG_24 = 0x00000760  # reserved
-FEE_HK_REG_25 = 0x00000764  # reserved
-FEE_HK_REG_26 = 0x00000768  # reserved
-FEE_HK_REG_27 = 0x0000076C  # reserved
-FEE_HK_REG_28 = 0x00000770  # reserved
-FEE_HK_REG_29 = 0x00000774  # reserved
-FEE_HK_REG_30 = 0x00000778  # reserved
-FEE_HK_REG_31 = 0x0000077C  # reserved
-FEE_HK_REG_32 = 0x00000780
-FEE_HK_REG_33 = 0x00000784
-FEE_HK_REG_34 = 0x00000788
-FEE_HK_REG_35 = 0x0000078C
-FEE_HK_REG_36 = 0x00000790
-FEE_HK_REG_37 = 0x00000794
 
 # FEE modes
 # see MSSL-SMILE-SXI-IRD-0001  Draft A.14, req. MSSL-IF-17
 # also SMILE-MSSL-PL-Register_map_v0.22, as the IRD does not list all modes
+class FeeMode:
+    FEE_MODE_ID_ON = 0x0  # the thing is switched on
+    FEE_MODE_ID_FTP = 0x1  # frame transfer pattern
+    FEE_MODE_ID_STBY = 0x2  # stand-by-mode
+    FEE_MODE_ID_FT = 0x3  # frame transfer
+    FEE_MODE_ID_FF = 0x4  # full frame
+    FEE_CMD__ID_IMM_ON = 0x8  # immediate on-mode, this is a command, not a mode
+    FEE_MODE_ID_FFSIM = 0x9  # full frame simulation simulation
+    FEE_MODE_ID_EVSIM = 0xA  # event detection simulation
+    FEE_MODE_ID_PTP1 = 0xB  # parallel trap pump mode 1
+    FEE_MODE_ID_PTP2 = 0xC  # parallel trap pump mode 2
+    FEE_MODE_ID_STP1 = 0xD  # serial trap pump mode 1
+    FEE_MODE_ID_STP2 = 0xE  # serial trap pump mode 2
+
+
+class FeeMode2:
+    FEE_MODE2_NOBIN = 0x1  # no binning mode
+    FEE_MODE2_BIN6 = 0x2  # 6x6 binning mode
+    FEE_MODE2_BIN24 = 0x3  # 24x4 binning mode
 
-FEE_MODE_ID_ON = 0x0  # the thing is switched on
-FEE_MODE_ID_FTP = 0x1  # frame transfer pattern
-FEE_MODE_ID_STBY = 0x2  # stand-by-mode
-FEE_MODE_ID_FT = 0x3  # frame transfer
-FEE_MODE_ID_FF = 0x4  # full frame
-FEE_CMD__ID_IMM_ON = 0x8  # immediate on-mode, this is a command, not a mode
-FEE_MODE_ID_FFSIM = 0x9  # full frame simulation simulation
-FEE_MODE_ID_EVSIM = 0xA  # event detection simulation
-FEE_MODE_ID_PTP1 = 0xB  # parallel trap pump mode 1
-FEE_MODE_ID_PTP2 = 0xC  # parallel trap pump mode 2
-FEE_MODE_ID_STP1 = 0xD  # serial trap pump mode 1
-FEE_MODE_ID_STP2 = 0xE  # serial trap pump mode 2
-
-FEE_MODE2_NOBIN = 0x1  # no binning mode
-FEE_MODE2_BIN6 = 0x2  # 6x6 binning mode
-FEE_MODE2_BIN24 = 0x3  # 24x4 binning mode
 
 # these identifiy the bits in the readout node selection register
-FEE_READOUT_NODE_E2 = 0b0010
-FEE_READOUT_NODE_F2 = 0b0001
-FEE_READOUT_NODE_E4 = 0b1000
-FEE_READOUT_NODE_F4 = 0b0100
+class FeeReadoutNode:
+    FEE_READOUT_NODE_E2 = 0b0010
+    FEE_READOUT_NODE_F2 = 0b0001
+    FEE_READOUT_NODE_E4 = 0b1000
+    FEE_READOUT_NODE_F4 = 0b0100
+
 
 # see MSSL-SMILE-SXI-IRD-0001 Draft A.14, req. MSSL-IF-108
-FEE_CCD_SIDE_F = 0x0  # left side
-FEE_CCD_SIDE_E = 0x1  # right side
-FEE_CCD_INTERLEAVED = 0x2  # F and E inverleaved
+class FeeCcdSide:
+    FEE_CCD_SIDE_F = 0x0  # left side
+    FEE_CCD_SIDE_E = 0x1  # right side
+    FEE_CCD_INTERLEAVED = 0x2  # F and E inverleaved
+
+
+class FeeCcdId:
+    FEE_CCD_ID_2 = 0x0
+    FEE_CCD_ID_4 = 0x1
 
-FEE_CCD_ID_2 = 0x0
-FEE_CCD_ID_4 = 0x1
 
-FEE_PKT_TYPE_DATA = 0x0  # any data
-FEE_PKT_TYPE_EV_DET = 0x1  # event detection
-FEE_PKT_TYPE_HK = 0x2  # housekeeping
-FEE_PKT_TYPE_WMASK = 0x3  # wandering mask packet
+class FeePktType:
+    FEE_PKT_TYPE_DATA = 0x0  # any data
+    FEE_PKT_TYPE_EV_DET = 0x1  # event detection
+    FEE_PKT_TYPE_HK = 0x2  # housekeeping
+    FEE_PKT_TYPE_WMASK = 0x3  # wandering mask packet
 
 
 class RMapCommandWrite(RMapCommandHeader):
@@ -661,26 +675,26 @@ class FeeDataTransfer(FeeDataTransferHeader):
     - bits 1:0 = packet type: 0 = data packet, 1 = Event detection packet, 2 = housekeeping packet
     """
 
-    _modes = {FEE_MODE_ID_ON: "On Mode",
-              FEE_MODE_ID_FTP: "Frame Transfer Pattern",
-              FEE_MODE_ID_STBY: "Stand-By-Mode",
-              FEE_MODE_ID_FT: "Frame Transfer",
-              FEE_MODE_ID_FF: "Full Frame",
-              FEE_MODE_ID_FFSIM: "Full frame simulation",
-              FEE_MODE_ID_EVSIM: "Event detection simulation",
-              FEE_MODE_ID_PTP1: "Parallel trap pumping mode 1",
-              FEE_MODE_ID_PTP2: "Parallel trap pumping mode 2",
-              FEE_MODE_ID_STP1: "Serial trap pumping mode 1",
-              FEE_MODE_ID_STP2: "Serial trap pumping mode 2"}
-    _ccd_sides = {FEE_CCD_SIDE_F: "left side (F)",
-                  FEE_CCD_SIDE_E: "right side (E)",
-                  FEE_CCD_INTERLEAVED: "F&E interleaved"}
-    _ccds = {FEE_CCD_ID_2: "CCD2",
-             FEE_CCD_ID_4: "CCD4"}
-    _pkt_types = {FEE_PKT_TYPE_DATA: "Data",
-                  FEE_PKT_TYPE_EV_DET: "Event detection",
-                  FEE_PKT_TYPE_HK: "Housekeeping",
-                  FEE_PKT_TYPE_WMASK: "Wandering mask"}
+    _modes = {FeeMode.FEE_MODE_ID_ON: "On Mode",
+              FeeMode.FEE_MODE_ID_FTP: "Frame Transfer Pattern",
+              FeeMode.FEE_MODE_ID_STBY: "Stand-By-Mode",
+              FeeMode.FEE_MODE_ID_FT: "Frame Transfer",
+              FeeMode.FEE_MODE_ID_FF: "Full Frame",
+              FeeMode.FEE_MODE_ID_FFSIM: "Full frame simulation",
+              FeeMode.FEE_MODE_ID_EVSIM: "Event detection simulation",
+              FeeMode.FEE_MODE_ID_PTP1: "Parallel trap pumping mode 1",
+              FeeMode.FEE_MODE_ID_PTP2: "Parallel trap pumping mode 2",
+              FeeMode.FEE_MODE_ID_STP1: "Serial trap pumping mode 1",
+              FeeMode.FEE_MODE_ID_STP2: "Serial trap pumping mode 2"}
+    _ccd_sides = {FeeCcdSide.FEE_CCD_SIDE_F: "left side (F)",
+                  FeeCcdSide.FEE_CCD_SIDE_E: "right side (E)",
+                  FeeCcdSide.FEE_CCD_INTERLEAVED: "F&E interleaved"}
+    _ccds = {FeeCcdId.FEE_CCD_ID_2: "CCD2",
+             FeeCcdId.FEE_CCD_ID_4: "CCD4"}
+    _pkt_types = {FeePktType.FEE_PKT_TYPE_DATA: "Data",
+                  FeePktType.FEE_PKT_TYPE_EV_DET: "Event detection",
+                  FeePktType.FEE_PKT_TYPE_HK: "Housekeeping",
+                  FeePktType.FEE_PKT_TYPE_WMASK: "Wandering mask"}
 
     _DATA_HK_STRUCT = []
 
@@ -735,7 +749,7 @@ class FeeDataTransfer(FeeDataTransferHeader):
                                  self.bits.PKT_TYPE] if self.bits.PKT_TYPE in self._pkt_types else self.bits.PKT_TYPE}
 
     def set_evt_data(self):
-        if self.bits.PKT_TYPE == FEE_PKT_TYPE_EV_DET:
+        if self.bits.PKT_TYPE == FeePktType.FEE_PKT_TYPE_EV_DET:
             evtdata = EventDetectionData()
             evtdata.bin[:] = self.data
             # structure according to MSSL-SMILE-SXI-IRD-0001
-- 
GitLab