diff --git a/src/constants.h b/src/constants.h index fbc39cc04cb0bd3581a00ffd7807693b4fc9ebf6..bc4d7344d83bfdc87d038a76b96e57d5d6b101f8 100644 --- a/src/constants.h +++ b/src/constants.h @@ -52,5 +52,5 @@ #define C_A_pn 6 // Number of dual polarization antennas per Processing Node (PN) FPGA. #define C_N_beamlets 976 // Number of beamlets per antenna band 488, 976 - +#define C_200MHZ_1_CNT_NS 5 // Time of one cnt in nS #endif diff --git a/src/periph/fpga.cpp b/src/periph/fpga.cpp index d254619054d3e82a5592f72ef21f666de8bf44d5..1a2fa7057edfe180992c3c7dd215ae62fdbde2df 100644 --- a/src/periph/fpga.cpp +++ b/src/periph/fpga.cpp @@ -2257,10 +2257,9 @@ bool Periph_fpga::read_subband_weights(TermOutput& termout, int format) { bool Periph_fpga::read_time_since_last_pps(TermOutput& termout, int format, int mode) { bool retval = true; if (mode == R_UCP) { - uint32_t data[20]; - memset((void *)data, 0, sizeof(data)); - retval = Read("mm/0/PIO_PPS/0/offset_cnt", data); - my_pps_offset_cnt = (uint32_t)data[0]; + uint32_t data = 0; + retval = Read("mm/0/PIO_PPS/0/offset_cnt", &data); + my_pps_offset_cnt = data; } uint32_t *_ptr = (uint32_t *)termout.val; diff --git a/src/tr.cpp b/src/tr.cpp index e5d031102742c4d3fbe7bf29f188cc74323fc874..f63ce90be75573e2d748e63547d180a69ca6cbd6 100644 --- a/src/tr.cpp +++ b/src/tr.cpp @@ -53,17 +53,13 @@ TranslatorMap::TranslatorMap() translatorMap->add_register("TR_fpga_mask_RW", "-", C_N_pn, 1, "RW", REG_FORMAT_BOOLEAN); translatorMap->add_register("TR_software_version_R", "-", 1, 1, "RO", REG_FORMAT_STRING); translatorMap->add_register("TR_start_time_R", "-", 1, 1, "RO", REG_FORMAT_UINT32); - // translatorMap->add_register("TR_tod_client_status_R", "-", 1, 1, "RO", REG_FORMAT_BOOLEAN); + // translatorMap->add_register("TR_tod_client_status_R", "-", 1, 1, "RO", REG_FORMAT_BOOLEAN); // TODO: PTP client is part of linux, can I get a status? translatorMap->add_register("TR_tod_R", "-", 1, 1, "RO", REG_FORMAT_UINT32); translatorMap->add_register("TR_tod_pps_delta_R", "-", 1, 1, "RO", REG_FORMAT_DOUBLE); translatorMap->add_register("TR_fpga_communication_error_R", "-", C_N_pn, 1, "RO", REG_FORMAT_BOOLEAN); - - // translatorMap->add_register("TR_uptime_R", "-", 1, 1, "RO", REG_FORMAT_UINT32); - // translatorMap->add_register("TR_busy_R", "-", 1, 1, "RO", REG_FORMAT_BOOLEAN); - // translatorMap->add_register("TR_reload_RW", "-", 1, 1, "RW", REG_FORMAT_BOOLEAN); + // translatorMap->add_register("TR_reload_RW", "-", 1, 1, "RW", REG_FORMAT_BOOLEAN); // Maybe for future. } - TranslatorMap::~TranslatorMap() { if (translatorMap != NULL) { @@ -94,13 +90,15 @@ bool TranslatorMap::translator(TermOutput& termout, const char cmd, const string retval = true; - if (addr == "TR_reload_W") { - if (cmd == 'W') { - cout << "Tr: tr_reload_W: initiate RELOAD now" << endl; - raise(SIGHUP); - } - } - else if (addr == "TR_fpga_mask_R") { + // reload is not used now, but maybe needed in future + // if (addr == "TR_reload_W") { + // if (cmd == 'W') { + // cout << "Tr: tr_reload_W: initiate RELOAD now" << endl; + // raise(SIGHUP); + // } + // } + // else + if (addr == "TR_fpga_mask_R") { bool *ptr_out = (bool *)termout.val; vector<bool> masked = SD.unb->get_all_masked_nodes(); for (auto val : masked) { @@ -138,7 +136,7 @@ bool TranslatorMap::translator(TermOutput& termout, const char cmd, const string 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] * 5); // TODO: make constant of 5(nS) + double pps_delta = (double)(pps_offset_cnt[0] * C_200MHZ_1_CNT_NS); *ptr_out = pps_delta; } else if (addr == "TR_start_time_R") { @@ -171,7 +169,6 @@ bool TranslatorMap::translator(TermOutput& termout, const char cmd, const string bool TranslatorMap::read(TermOutput& termout, const string addr, const int nvalues) { - cout << "TR:read" << endl; return translator(termout, 'R', addr, NULL, nvalues); } @@ -179,6 +176,5 @@ bool TranslatorMap::write(TermOutput& termout, const string addr, const unsigned int *data, const int nvalues) { - cout << "TR:write" << endl; return translator(termout, 'W', addr, data, nvalues); }