diff --git a/src/fpga.cpp b/src/fpga.cpp index 515fe87a0d8c28266d42fb360802a49870a0aa01..557acc9956142a068d8ff47b127763bb59e3b2b0 100644 --- a/src/fpga.cpp +++ b/src/fpga.cpp @@ -59,6 +59,8 @@ Fpga::Fpga(list<class Node*>& nodelist, const int32_t n_beam_sets): pointMap->add_register("FPGA_firmware_version_R", "fpga/firmware_version", nodes.size(), 1, "RO", REG_FORMAT_STRING); pointMap->add_register("FPGA_hardware_version_R", "fpga/hardware_version", nodes.size(), 1, "RO", REG_FORMAT_STRING); + pointMap->add_register("FPGA_global_node_index_R", "fpga/global_node_index", nodes.size(), 1, "RO", REG_FORMAT_UINT32); + pointMap->add_register("FPGA_sst_offload_weighted_subbands_R", "fpga/sst_offload_weighted_subbands", nodes.size(), 1, "RO", REG_FORMAT_BOOLEAN); pointMap->add_register("FPGA_sst_offload_weighted_subbands_RW", "fpga/sst_offload_weighted_subbands", nodes.size(), 1, "RW", REG_FORMAT_BOOLEAN); pointMap->add_register("FPGA_sst_offload_enable_R", "fpga/sst_offload_enable", nodes.size(), 1, "RO", REG_FORMAT_BOOLEAN); diff --git a/src/node.cpp b/src/node.cpp index a953c71aaabe7808159781d315f9b178ec82a063..221ae13f1185d8a4e6e36dbe620b2db64e737b50 100644 --- a/src/node.cpp +++ b/src/node.cpp @@ -263,7 +263,8 @@ bool Node::exec_reply(TermOutput& termout) // cout << "received " << r->nof_vals << " bytes from worker node=" << GlobalNr // << " retval=" << r->retval << " datatype=" << r->datatype << endl; - if (isOnline() && r.retval) { + // if (isOnline() && r.retval) { + if (r.retval) { int sz = reg_format_size_in_bytes(r.format); memcpy((void *)termout.val, (void *)r.data, r.nvalues * sz); } diff --git a/src/periph/fpga.cpp b/src/periph/fpga.cpp index f5619654fd044a2c81f5914df4dad64cd1f8a758..199fd5d79131a9e823d141ba741f2c609b2fe50e 100644 --- a/src/periph/fpga.cpp +++ b/src/periph/fpga.cpp @@ -123,6 +123,11 @@ bool Periph_fpga::read(TermOutput& termout, const string addr, termout.datatype = format; termout.nof_vals = 0; + + if (addr == "fpga/global_node_index") { + retval = read_global_node_index(termout, format); + return true; + } if (!Masked) { // Not selected return false; @@ -140,7 +145,6 @@ bool Periph_fpga::read(TermOutput& termout, const string addr, if (type == "mm") { uint32_t *data_ptr = (uint32_t *)data; retval = Read(addr, data_ptr, true); - termout.datatype = format; } else { // "fpga/..." @@ -149,16 +153,13 @@ bool Periph_fpga::read(TermOutput& termout, const string addr, } else if (addr == "fpga/name") { termout.nof_vals = 1; //my_current_design_name.size(); - termout.datatype = format; strcpy(termout.val, my_current_design_name.c_str()); retval = true; } else if (addr == "fpga/stamps") { retval = read_stamps(termout, format); - termout.datatype = format; } else if (addr == "fpga/note") { - termout.datatype = format; retval = true; } else if (addr == "fpga/firmware_version") { @@ -893,6 +894,17 @@ bool Periph_fpga::read_stamps(TermOutput& termout, int format) return retval; } +bool Periph_fpga::read_global_node_index(TermOutput& termout, int format) +{ + bool retval = true; + + uint32_t *_ptr = (uint32_t *)termout.val; + *_ptr = GlobalNr; + termout.nof_vals = 1; + termout.datatype = format; + return retval; +} + bool Periph_fpga::read_fpga_temperature(TermOutput& termout, int format) { bool retval = true; diff --git a/src/periph/fpga.h b/src/periph/fpga.h index 3419809fdae938a6d684be3fac6d3ff371745273..24337ee3dda554a45c910ef823c4aee356647f99 100644 --- a/src/periph/fpga.h +++ b/src/periph/fpga.h @@ -58,7 +58,7 @@ private: std::string my_current_design_name; uint my_current_hw_version; std::string my_current_fw_version; - + bool my_bsn_input_sync_timeout; int64_t my_bsn_input_bsn; int32_t my_bsn_input_nof_packets; @@ -99,6 +99,8 @@ private: bool read_firmware_version(TermOutput& termout, int format); bool read_stamps(TermOutput& termout, int format); + bool read_global_node_index(TermOutput& termout, int format); + bool read_fpga_temperature(TermOutput& termout, int format); bool read_fpga_scrap(TermOutput& termout, int format); @@ -176,7 +178,7 @@ private: bool read_jesd204b_csr_dev_syncn(TermOutput& termout, int format, int mode); bool read_jesd204b_rx_err0(TermOutput& termout, int format, int mode); bool read_jesd204b_rx_err1(TermOutput& termout, int format, int mode); - + bool write_signal_input_samples_delay(const char *data); bool read_signal_input_samples_delay(TermOutput& termout, int format); bool read_signal_input_mean(TermOutput& termout, int format, int mode);