From 287d6a22c31e6ecb71ceaaf410b621fca68817c2 Mon Sep 17 00:00:00 2001
From: donker <donker@astron.nl>
Date: Thu, 26 Aug 2021 07:53:16 +0200
Subject: [PATCH] L2SDP-454, removed enable

---
 src/fpga.cpp        | 11 -----------
 src/node.cpp        | 14 ++++----------
 src/node.h          |  4 +---
 src/periph/fpga.cpp | 20 +++++++++-----------
 src/periph/fpga.h   |  4 +---
 src/sdptr.conf      |  6 ++++++
 src/sdptr.cpp       |  5 ++---
 src/tr.cpp          | 10 ++++++++--
 8 files changed, 31 insertions(+), 43 deletions(-)

diff --git a/src/fpga.cpp b/src/fpga.cpp
index e3dc2133..f3fa724e 100644
--- a/src/fpga.cpp
+++ b/src/fpga.cpp
@@ -166,15 +166,6 @@ vector<int> Fpga::get_all_nodes(void)
     return nodes;
 }
 
-vector<bool> Fpga::get_all_enabled_nodes(void)
-{
-    vector<bool> enabled;
-    for (auto node : FPGA) {
-        enabled.push_back(node->isEnabled());
-    }
-    return enabled;
-}
-
 vector<bool> Fpga::get_all_masked_nodes(void)
 {
     vector<bool> masked;
@@ -269,8 +260,6 @@ bool Fpga::point(TermOutput& termout, const char cmd, const string addr,
 
         mask_cnt++;
         auto node = select_node(nodes[idx]);
-        // if (node->getEnabled() == false) { continue; }
-
 
         ret = false;
         try {
diff --git a/src/node.cpp b/src/node.cpp
index c03adc1b..24785218 100644
--- a/src/node.cpp
+++ b/src/node.cpp
@@ -162,7 +162,7 @@ void Node::worker()
 }
 
 Node::Node(const string ipaddr, const uint unb, const uint localnr, const string type,
-           const string firmware, const uint firmware_version, const bool enabled)
+           const string firmware, const uint firmware_version)
 {
     // int ret;
     UniboardNr = unb;
@@ -170,7 +170,7 @@ Node::Node(const string ipaddr, const uint unb, const uint localnr, const string
     GlobalNr = localnr + 4 * unb;
     
     myIPaddr = ipaddr;
-    periph_fpga = new Periph_fpga(GlobalNr, ipaddr, firmware, firmware_version, enabled);
+    periph_fpga = new Periph_fpga(GlobalNr, ipaddr, firmware, firmware_version);
 
 
     if (type != "pn") {
@@ -217,7 +217,6 @@ Node::~Node()
     }
 }
 
-
 bool Node::monitor(TermOutput& termout) {
 
     pread_cmd_struct p;
@@ -237,11 +236,6 @@ CMMap * Node::get_MMap(void)
     return periph_fpga->getMMap();
 }
 
-bool Node::isEnabled(void)
-{
-    return periph_fpga->isEnabled();
-}
-
 bool Node::isOnline(void)
 {
     return periph_fpga->isOnline();
@@ -304,11 +298,11 @@ bool Node::exec_reply(TermOutput& termout)
     // cout << "received " << r->nof_vals << " bytes from worker node=" << GlobalNr 
     //      << " retval=" << r->retval << " datatype=" << r->datatype << endl;
 
-    // if (isEnabled() && !r->retval) {
+    // if (isOnline() && !r->retval) {
     //     //cout << "no retval" << endl;
     //     throw runtime_error("no retval");
     // }
-    if (isEnabled() && r->retval) {
+    if (isOnline() && r->retval) {
         int sz = reg_format_size_in_bytes(r->datatype);
         memcpy((void *)termout.val, (void *)r->val, r->nof_vals * sz);
     }
diff --git a/src/node.h b/src/node.h
index 293c942c..e9c7253c 100644
--- a/src/node.h
+++ b/src/node.h
@@ -50,7 +50,6 @@ public:
     std::string firmware;
     int n_beamsets;
     uint version;
-    uint enabled;
 };
 
 #define GLOBALNODE_to_UNB(n)   (n>>2)
@@ -82,7 +81,7 @@ class Node {
  public:
   Node(const std::string ipaddr,
        const uint unb, const uint localnr, const std::string type,
-       const std::string firmware, const uint firmware_version, const bool enabled);
+       const std::string firmware, const uint firmware_version);
   ~Node();
 
   uint ipaddr_to_id(const std::string ipaddr);
@@ -92,7 +91,6 @@ class Node {
   const uint GetGlobalNr()   { return GlobalNr; }
   const uint GetNr()         { return LocalNr; }
   const std::string GetType() { return Type; }
-  bool isEnabled(void);
   bool isOnline(void);
   bool isMasked();
   void setMasked(bool mask);
diff --git a/src/periph/fpga.cpp b/src/periph/fpga.cpp
index a110513b..65e4462d 100644
--- a/src/periph/fpga.cpp
+++ b/src/periph/fpga.cpp
@@ -58,11 +58,10 @@ extern int debug;
 #define R_MEM 0  // read mem value
 #define R_UCP 1  // read value from hardware
 
-Periph_fpga::Periph_fpga(uint global_nr, string ipaddr, string expected_design_name, uint expected_firmware_version, bool enabled):
+Periph_fpga::Periph_fpga(uint global_nr, string ipaddr, string expected_design_name, uint expected_firmware_version):
     GlobalNr(global_nr),
-    Enabled(enabled),
-    Masked(enabled),
-    Online(enabled),
+    Masked(false),
+    Online(false),
     my_expected_design_name(expected_design_name),
     my_expected_firmware_version(expected_firmware_version),
     my_current_design_name("-"),
@@ -117,7 +116,7 @@ bool Periph_fpga::read(TermOutput& termout, const string addr,
                        const string type, char *data, const uint nvalues,
                        const int format)
 {
-    // cout << "node " << GlobalNr << " read: Enabled=" << Enabled << ", Online=" << Online << ", Masked=" << Masked << endl;
+    // cout << "node " << GlobalNr << ", Online=" << Online << ", Masked=" << Masked << endl;
     bool retval = false;
 
     termout.datatype = format;
@@ -126,7 +125,7 @@ bool Periph_fpga::read(TermOutput& termout, const string addr,
     if (!Masked) {  // Not selected
         return false;
     }
-    if ((!Enabled) || (!Online)) {  // Selected but not possible
+    if (!Online) {  // Selected but not possible
         cout << "read() error node " << GlobalNr << " not enabled or not online" << endl;
         return false;
     }
@@ -309,13 +308,13 @@ bool Periph_fpga::read(TermOutput& termout, const string addr,
 bool Periph_fpga::write(TermOutput& termout, const string addr, const string type,
                         char *data, const uint nvalues, const int format)
 {
-    // cout << "node " << GlobalNr << " write: Enabled=" << Enabled << ", Online=" << Online << ", Masked=" << Masked << endl;
+    // cout << "node " << GlobalNr << " write: Online=" << Online << ", Masked=" << Masked << endl;
     bool retval = false;
 
     if (!Masked) {  // Not selected
         return false;
     }
-    if ((!Enabled) || (!Online)) {  // Selected but not possible
+    if (!Online) {  // Selected but not possible
         cout << "write() error node " << GlobalNr << " not enabled or not online" << endl;
         return false;
     }
@@ -466,7 +465,6 @@ bool Periph_fpga::write(TermOutput& termout, const string addr, const string typ
 */
 bool Periph_fpga::monitor(TermOutput& termout)
 {
-    if (!Enabled) { return false; }
     // use tictoc, tic(start) toc(stop) to see how long this function takes
     // first 9 read functions on 4 nodes will take 6 msec.
     string name = "periph.fpga.monitor node " + to_string(GlobalNr);
@@ -504,7 +502,7 @@ bool Periph_fpga::monitor(TermOutput& termout)
 bool Periph_fpga::Read(const string addr_str, uint32_t *data_ptr, bool use_mask_shift=true)
 {
     bool ret;
-    if ((!Enabled) || (!Masked)) {
+    if (!Masked) {
         return false;
     }
     if (mmap->empty()) {
@@ -540,7 +538,7 @@ bool Periph_fpga::Read(const string addr_str, uint32_t *data_ptr, bool use_mask_
 */
 bool Periph_fpga::Write(const string addr_str, uint32_t *data_ptr, bool use_shift_mask=true)
 {
-    if ((!Enabled) || (!Masked)) {
+    if (!Masked) {
         return false;
     }
     if (!mmap->find_register(addr_str)) {
diff --git a/src/periph/fpga.h b/src/periph/fpga.h
index 2a4fea97..7a4f0386 100644
--- a/src/periph/fpga.h
+++ b/src/periph/fpga.h
@@ -47,7 +47,6 @@ private:
   UCP *ucp;
   CMMap *mmap;
   uint32_t GlobalNr;
-  bool Enabled;
   bool Masked;
   bool Online;
 
@@ -186,7 +185,7 @@ private:
   CMMap read_reg_map();
 
 public:
-  Periph_fpga(uint global_nr, std::string ipaddr, std::string expected_design_name, uint expected_firmware_version, bool enabled);
+  Periph_fpga(uint global_nr, std::string ipaddr, std::string expected_design_name, uint expected_firmware_version);
   ~Periph_fpga();
 
 
@@ -197,7 +196,6 @@ public:
   bool monitor(TermOutput& termout);
 
   CMMap* getMMap(void) { return mmap; };
-  bool isEnabled(void) { return Enabled; }
   bool isOnline(void) { return Online; }
   bool isMasked(void) { return Masked; }
   void setMasked(bool mask) { Masked = mask; }
diff --git a/src/sdptr.conf b/src/sdptr.conf
index a73f8f65..5b39e3e7 100644
--- a/src/sdptr.conf
+++ b/src/sdptr.conf
@@ -52,3 +52,9 @@ n_fpgas = 16
 first_fpga_nr = 0
 ip_prefix = 10.99.
 n_beamsets = 1
+
+[LTS_S8]
+n_fpgas = 16
+first_fpga_nr = 8
+ip_prefix = 10.99.
+n_beamsets = 1
\ No newline at end of file
diff --git a/src/sdptr.cpp b/src/sdptr.cpp
index 782926d6..bcf0e224 100644
--- a/src/sdptr.cpp
+++ b/src/sdptr.cpp
@@ -137,12 +137,11 @@ void server_init(bool warm_start)
         nc.firmware = firmware_name;
         nc.n_beamsets = n_beamsets;
         nc.version = (uint)firmware_version;
-        nc.enabled = 1;
         NC.push_back(nc);
     }
 
     for (auto nc : NC) {
-        cout << nc.gn << ", " << nc.ipaddr << ", " << nc.firmware << ", " << nc.version << ", " << nc.enabled << endl;
+        cout << nc.gn << ", " << nc.ipaddr << ", " << nc.firmware << ", " << nc.version << endl;
     }
 
     cerr << "done, it is mine. Now (re)init all" << endl;
@@ -159,7 +158,7 @@ void server_init(bool warm_start)
         uint n = GLOBALNODE_to_NODE(gn);
         string type = GLOBALNODE_to_TYPE(gn);
 
-        Node *node = new Node(nc.ipaddr, uniboardnr, n, type, nc.firmware, nc.version, (bool)nc.enabled);
+        Node *node = new Node(nc.ipaddr, uniboardnr, n, type, nc.firmware, nc.version);
         nodelist.push_back(node);
     }
     SD.unb = new UniboardMap(nodelist);
diff --git a/src/tr.cpp b/src/tr.cpp
index 1eb9638e..16cda715 100644
--- a/src/tr.cpp
+++ b/src/tr.cpp
@@ -138,8 +138,14 @@ bool TranslatorMap::translator(TermOutput& termout, const char cmd, const string
     else if (addr == "TR_tod_pps_delta_R") {
         double *ptr_out = (double *)termout.val;
         vector<uint32_t> pps_offset_cnt = SD.unb->get_all_pps_offset_cnt();
-        cout << "pps_offset_cnt=" << pps_offset_cnt[0] << endl;
-        double pps_delta = (double)(pps_offset_cnt[0] * C_200MHZ_1_CNT_NS);
+        double pps_delta = 0.0;
+        for (uint i=0; i<pps_offset_cnt.size(); i++) {
+            if (pps_offset_cnt[i] > 0) {
+                cout << "use pps_offset_cnt from node " << i << " cnt=" << pps_offset_cnt[i] << endl;
+                pps_delta = (double)(pps_offset_cnt[i] * C_200MHZ_1_CNT_NS);
+                break;
+            }
+        }
         *ptr_out = pps_delta;
     }
     else if (addr == "TR_start_time_R") {
-- 
GitLab