From 1b6b8b5329fda5431e933b53dd9bfea367637fd7 Mon Sep 17 00:00:00 2001 From: Vladislav Ostapov Date: Tue, 1 Apr 2025 17:18:34 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B2=D0=B5=D0=B7=D0=B4=D0=B5=20=D0=BD=D0=B0=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B9=D0=BA=D0=B8=20CinC=20=D0=BD=D0=B0=20=D0=BD=D0=B0?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8=20DPDI,=20=D1=87?= =?UTF-8?q?=D1=82=D0=BE=20=D0=B2=D0=B5=D1=80=D0=BD=D0=BE=20=D0=B8=20=D1=87?= =?UTF-8?q?=D1=82=D0=BE=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=8F=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C?= =?UTF-8?q?=20=D0=B2=20TDMA=20=D0=BC=D0=BE=D0=B4=D0=B5=D0=BC=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dependencies/control_system_client | 2 +- front-generator/render-params.json | 47 +++++--- front-generator/template/common/setup.html.j2 | 2 +- src/main.cpp | 10 +- src/terminal_api_driver.cpp | 114 ++++++++++-------- src/terminal_api_driver.h | 9 +- static/main-scpc.html | 84 ++++++------- static/main-tdma.html | 57 +++++++-- 8 files changed, 198 insertions(+), 127 deletions(-) diff --git a/dependencies/control_system_client b/dependencies/control_system_client index 1780093..72bc52d 160000 --- a/dependencies/control_system_client +++ b/dependencies/control_system_client @@ -1 +1 @@ -Subproject commit 1780093e8bee4de09d68e702c8d5ee759d8f4de0 +Subproject commit 72bc52d7ae64cea480768efeb8a24e9cda21fda5 diff --git a/front-generator/render-params.json b/front-generator/render-params.json index 363845e..dc89edf 100644 --- a/front-generator/render-params.json +++ b/front-generator/render-params.json @@ -47,13 +47,6 @@ ] } ] - }, - { - "widget": "settings-container", - "childs": [ - {"widget": "h3", "label": "Настройки позиционирования"}, - {"widget": "number", "label": "Задержка до спутника, мс", "name": "rxTxSatDelay", "min": 0, "step": 1, "max": 600} - ] } ], "buclnb": [ @@ -102,6 +95,26 @@ ] } ], + "dpdi": [ + {"widget": "h2", "label": "Настройки DPDI"}, + { + "widget": "settings-container", + "childs": [ + { + "widget": "select", "label": "Метод расчета задержки", "name": "dpdiIsPositional", + "values": [ + {"label": "Позиционированием", "value": "true"}, + {"label": "Окном задержки", "value": "false"} + ] + }, + {"widget": "h2", "label": "Настройки позиционирования", "v_show": "paramDpdi.dpdiIsPositional === true"}, + {"widget": "number", "label": "Широта станции", "name": "dpdiPositionStationLatitude", "v_show": "paramDpdi.dpdiIsPositional === true", "min": -180, "step": 0.000001, "max": 180}, + {"widget": "number", "label": "Долгота станции", "name": "dpdiPositionStationLongitude", "v_show": "paramDpdi.dpdiIsPositional === true", "min": -180, "step": 0.000001, "max": 180}, + {"widget": "number", "label": "Подспутниковая точка", "name": "dpdiPositionSatelliteLongitude", "v_show": "paramDpdi.dpdiIsPositional === true", "min": -180, "step": 0.000001, "max": 180}, + {"widget": "number", "label": "Задержка до спутника, мс", "name": "dpdiDelay", "v_show": "paramDpdi.dpdiIsPositional === false", "min": 0, "step": 0.1, "max": 400}] + }, + {"widget": "submit"} + ], "network": [ {"widget": "h2", "label": "Настройки сети"}, { @@ -237,26 +250,26 @@ ] } ], - "cinc": [ + "dpdi": [ {"widget": "h2", "label": "Настройки режима CinC", "v_show": "paramRxtx.isCinC"}, { "widget": "settings-container", "v_show": "paramRxtx.isCinC", "childs": [ { - "widget": "select", "label": "Метод расчета задержки", "name": "cincIsPositional", + "widget": "select", "label": "Метод расчета задержки", "name": "dpdiIsPositional", "values": [ {"label": "Позиционированием", "value": "true"}, {"label": "Окном задержки", "value": "false"} ] }, - {"widget": "number", "label": "Полоса поиска, КГц ±", "name": "cincSearchBandwidth", "min": 0, "step": 1, "max": 100}, - {"widget": "h2", "label": "Настройки позиционирования", "v_show": "paramCinc.cincIsPositional === true"}, - {"widget": "number", "label": "Широта станции", "name": "cincPositionStationLatitude", "v_show": "paramCinc.cincIsPositional === true", "min": -180, "step": 0.000001, "max": 180}, - {"widget": "number", "label": "Долгота станции", "name": "cincPositionStationLongitude", "v_show": "paramCinc.cincIsPositional === true", "min": -180, "step": 0.000001, "max": 180}, - {"widget": "number", "label": "Подспутниковая точка", "name": "cincPositionSatelliteLongitude", "v_show": "paramCinc.cincIsPositional === true", "min": -180, "step": 0.000001, "max": 180}, - {"widget": "h2", "label": "Задержка до спутника", "v_show": "paramCinc.cincIsPositional === false"}, - {"widget": "number", "label": "от, мс", "name": "cincDelayMin", "v_show": "paramCinc.cincIsPositional === false", "min": 0, "step": 0.1, "max": 400}, - {"widget": "number", "label": "до, мс", "name": "cincDelayMax", "v_show": "paramCinc.cincIsPositional === false", "min": 0, "step": 0.1, "max": 400}] + {"widget": "number", "label": "Полоса поиска, КГц ±", "name": "dpdiSearchBandwidth", "min": 0, "step": 1, "max": 100}, + {"widget": "h2", "label": "Настройки позиционирования", "v_show": "paramDpdi.dpdiIsPositional === true"}, + {"widget": "number", "label": "Широта станции", "name": "dpdiPositionStationLatitude", "v_show": "paramDpdi.dpdiIsPositional === true", "min": -180, "step": 0.000001, "max": 180}, + {"widget": "number", "label": "Долгота станции", "name": "dpdiPositionStationLongitude", "v_show": "paramDpdi.dpdiIsPositional === true", "min": -180, "step": 0.000001, "max": 180}, + {"widget": "number", "label": "Подспутниковая точка", "name": "dpdiPositionSatelliteLongitude", "v_show": "paramDpdi.dpdiIsPositional === true", "min": -180, "step": 0.000001, "max": 180}, + {"widget": "h2", "label": "Задержка до спутника", "v_show": "paramDpdi.dpdiIsPositional === false"}, + {"widget": "number", "label": "от, мс", "name": "dpdiDelayMin", "v_show": "paramDpdi.dpdiIsPositional === false", "min": 0, "step": 0.1, "max": 400}, + {"widget": "number", "label": "до, мс", "name": "dpdiDelayMax", "v_show": "paramDpdi.dpdiIsPositional === false", "min": 0, "step": 0.1, "max": 400}] }, {"widget": "submit", "v_show": "paramRxtx.isCinC"} ], diff --git a/front-generator/template/common/setup.html.j2 b/front-generator/template/common/setup.html.j2 index 6587bc8..9d79feb 100644 --- a/front-generator/template/common/setup.html.j2 +++ b/front-generator/template/common/setup.html.j2 @@ -1,6 +1,6 @@ {% from 'common/widgets.j2' import build_widget %}
- {% for cat in ['rxtx', 'cinc', 'buclnb'] %} + {% for cat in ['rxtx', 'dpdi', 'buclnb'] %} {% if cat in params %} {% for w in params[cat] %}{{ build_widget(cat, w) | indent(12, true) }}{% endfor %} {% endif %} diff --git a/src/main.cpp b/src/main.cpp index 4078bc2..3dc34de 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -297,8 +297,8 @@ public: rep.content.insert(rep.content.end(), result.c_str(), result.c_str() + result.size()); } })); -#ifdef MODEM_IS_SCPC - s.resources.emplace_back(std::make_unique("/api/set/cinc", this->auth, http::auth::User::EDIT_SETTINGS, [this](const auto& req, auto& rep) { + + s.resources.emplace_back(std::make_unique("/api/set/dpdi", this->auth, http::auth::User::EDIT_SETTINGS, [this](const auto& req, auto& rep) { if (req.method != "POST") { http::server::stockReply(http::server::bad_request, rep); return; @@ -313,19 +313,19 @@ public: boost::property_tree::ptree pt; read_json(ss, pt); - api->setCincSettings(pt); + api->setDpdiSettings(pt); std::string result = R"({"status":"ok","settings":)"; result += api->loadSettings(); result += "}"; rep.content.insert(rep.content.end(), result.c_str(), result.c_str() + result.size()); } catch (std::exception& e) { - BOOST_LOG_TRIVIAL(error) << "WebHandle(/api/set/cinc): Can't set CinC settings: " << e.what(); + BOOST_LOG_TRIVIAL(error) << "WebHandle(/api/set/dpdi): Can't set DPDI settings: " << e.what(); const std::string result = R"({"status": "error", "error": )" + api_driver::buildEscapedString(e.what()) + "}"; rep.content.insert(rep.content.end(), result.c_str(), result.c_str() + result.size()); } })); -#endif + s.resources.emplace_back(std::make_unique("/api/set/rxtx", this->auth, http::auth::User::EDIT_SETTINGS, [this](const auto& req, auto& rep) { if (req.method != "POST") { http::server::stockReply(http::server::bad_request, rep); diff --git a/src/terminal_api_driver.cpp b/src/terminal_api_driver.cpp index d968de0..bf2cfa4 100644 --- a/src/terminal_api_driver.cpp +++ b/src/terminal_api_driver.cpp @@ -298,8 +298,8 @@ private: demodulator_settings demod{}; #ifdef MODEM_IS_SCPC ACM_parameters_serv_ acm{}; - DPDI_parmeters dpdi{}; #endif + DPDI_parmeters dpdi{}; buc_lnb_settings bucLnb{}; std::lock_guard lock(this->cpApiMutex); @@ -307,8 +307,8 @@ private: logCpApiError("api_driver::TerminalApiDaemon::updateSettings()->CP_GetDemodulatorSettings()", CP_GetDemodulatorSettings(sid, demod)); #ifdef MODEM_IS_SCPC logCpApiError("api_driver::TerminalApiDaemon::updateSettings()->CP_GetAcmParams()", CP_GetAcmParams(sid, &acm)); - logCpApiError("api_driver::TerminalApiDaemon::updateSettings()->CP_GetDpdiParams()", CP_GetDpdiParams(sid, &dpdi)); #endif + logCpApiError("api_driver::TerminalApiDaemon::updateSettings()->CP_GetDpdiParams()", CP_GetDpdiParams(sid, &dpdi)); logCpApiError("api_driver::TerminalApiDaemon::updateSettings()->CP_GetBUC_LNB_settings()", CP_GetBUC_LNB_settings(sid, bucLnb)); { @@ -317,8 +317,8 @@ private: this->demodSettings = demod; #ifdef MODEM_IS_SCPC this->acmSettings = acm; - this->dpdiSettings = dpdi; #endif + this->dpdiSettings = dpdi; this->bucLnbSettings = bucLnb; } } @@ -544,8 +544,8 @@ private: demodulator_settings demodSettings{}; #ifdef MODEM_IS_SCPC ACM_parameters_serv_ acmSettings{}; - DPDI_parmeters dpdiSettings{}; #endif + DPDI_parmeters dpdiSettings{}; buc_lnb_settings bucLnbSettings{}; std::shared_mutex networkSettingsMutex; @@ -611,27 +611,27 @@ public: /** * Получение настроек, копирует текущие значения в структуры, переданные по указателю. Если передан пустой указатель, копирования не произойдет. */ + void getSettings( + modulator_settings* mod, demodulator_settings* demod, #ifdef MODEM_IS_SCPC - void getSettings(modulator_settings* mod, demodulator_settings* demod, ACM_parameters_serv_* acm, DPDI_parmeters* dpdi, buc_lnb_settings* bucLnb) { - if (mod || demod || acm || dpdi || bucLnb) { + ACM_parameters_serv_* acm, +#endif + DPDI_parmeters* dpdi, buc_lnb_settings* bucLnb) { + if (mod || demod || +#ifdef MODEM_IS_SCPC + acm || +#endif + dpdi || bucLnb) { std::shared_lock lock(this->settingsMutex); if (mod) { *mod = this->modSettings; } if (demod) { *demod = this->demodSettings; } +#ifdef MODEM_IS_SCPC if (acm) { *acm = this->acmSettings; } +#endif if (dpdi) { *dpdi = this->dpdiSettings; } if (bucLnb) { *bucLnb = this->bucLnbSettings; } } } -#else - void getSettings(modulator_settings* mod, demodulator_settings* demod, buc_lnb_settings* bucLnb) { - if (mod || demod || bucLnb) { - std::shared_lock lock(this->settingsMutex); - if (mod) { *mod = this->modSettings; } - if (demod) { *demod = this->demodSettings; } - if (bucLnb) { *bucLnb = this->bucLnbSettings; } - } - } -#endif #ifdef MODEM_IS_SCPC bool getIsCinC() { @@ -699,21 +699,19 @@ public: } #endif -#ifdef MODEM_IS_SCPC - void setSettingsCinc(DPDI_parmeters& s, bool readback = true) { + void setSettingsDpdi(DPDI_parmeters& s, bool readback = true) { std::lock_guard lock(this->cpApiMutex); - logCpApiError("api_driver::TerminalApiDaemon::setSettingsCinc()->CP_SetDmaDebug(begin_save_config)", CP_SetDmaDebug(sid, "begin_save_config", "")); - logCpApiError("api_driver::TerminalApiDaemon::setSettingsCinc()->CP_SetDpdiParams()", CP_SetDpdiParams(sid, s)); + logCpApiError("api_driver::TerminalApiDaemon::setSettingsDpdi()->CP_SetDmaDebug(begin_save_config)", CP_SetDmaDebug(sid, "begin_save_config", "")); + logCpApiError("api_driver::TerminalApiDaemon::setSettingsDpdi()->CP_SetDpdiParams()", CP_SetDpdiParams(sid, s)); if (readback) { - logCpApiError("api_driver::TerminalApiDaemon::setSettingsCinc()->CP_GetDpdiParams()", CP_GetDpdiParams(this->sid, &s)); + logCpApiError("api_driver::TerminalApiDaemon::setSettingsDpdi()->CP_GetDpdiParams()", CP_GetDpdiParams(this->sid, &s)); { std::lock_guard lock2{this->settingsMutex}; this->dpdiSettings = s; } } - logCpApiError("api_driver::TerminalApiDaemon::setSettingsCinc()->CP_SetDmaDebug(save_config)", CP_SetDmaDebug(sid, "save_config", "")); + logCpApiError("api_driver::TerminalApiDaemon::setSettingsDpdi()->CP_SetDmaDebug(save_config)", CP_SetDmaDebug(sid, "save_config", "")); } -#endif void setSettingsBucLnb(buc_lnb_settings& bucLnb, bool readback = true) { std::lock_guard lock(this->cpApiMutex); @@ -824,7 +822,7 @@ static void writeDouble(std::ostream& out, double value, int prec = 2) { out << std::fixed << std::setprecision(prec) << value; } } -#ifdef MODEM_IS_SCPC + double translateCoordinates(uint8_t deg, uint8_t min) { return static_cast(deg) + static_cast(min) / 60; } @@ -835,7 +833,6 @@ std::tuple translateCoordinates(double abs) { auto min = static_cast(min_double); return std::make_tuple(deg, min); } -#endif std::string api_driver::ApiDriver::loadTerminalState() const { @@ -876,7 +873,7 @@ std::string api_driver::ApiDriver::loadTerminalState() const { #else { modulator_settings modSet{}; - daemon->getSettings(&modSet, nullptr, nullptr); + daemon->getSettings(&modSet, nullptr, nullptr, nullptr); result << ",\"tx.centerFreq\":"; writeDouble(result, modSet.central_freq_in_kGz); result << ",\"tx.symSpeed\":"; writeDouble(result, (static_cast(modSet.baudrate) / 1000.0)); } @@ -1018,12 +1015,12 @@ std::string api_driver::ApiDriver::loadSettings() const { demodulator_settings demodSettings{}; buc_lnb_settings bucLnb{}; TerminalNetworkSettings network; + DPDI_parmeters dpdiSettings{}; #ifdef MODEM_IS_SCPC ACM_parameters_serv_ acmSettings{}; - DPDI_parmeters dpdiSettings{}; daemon->getSettings(&modSettings, &demodSettings, &acmSettings, &dpdiSettings, &bucLnb); #else - daemon->getSettings(&modSettings, &demodSettings, &bucLnb); + daemon->getSettings(&modSettings, &demodSettings, &dpdiSettings, &bucLnb); #endif daemon->getNetworkSettings(network); @@ -1060,16 +1057,23 @@ std::string api_driver::ApiDriver::loadSettings() const { result << ",\"aupcMinAttenuation\":"; writeDouble(result, acmSettings.min_attenuation_aupc); result << ",\"aupcMaxAttenuation\":"; writeDouble(result, acmSettings.max_attenuation_aupc); result << ",\"aupcRequiredSnr\":"; writeDouble(result, acmSettings.snr_threashold_aupc); - - result << ",\n\"cincIsPositional\":" << boolAsStr(!dpdiSettings.is_delay_window); - result << ",\"cincSearchBandwidth\":" << dpdiSettings.freq_offset; // полоса поиска в кГц - result << ",\"cincPositionStationLatitude\":"; writeDouble(result, translateCoordinates(dpdiSettings.latitude_station_grad, dpdiSettings.latitude_station_minute), 6); - result << ",\"cincPositionStationLongitude\":"; writeDouble(result, translateCoordinates(dpdiSettings.longitude_station_grad, dpdiSettings.longitude_station_minute), 6); - result << ",\"cincPositionSatelliteLongitude\":"; writeDouble(result, translateCoordinates(dpdiSettings.longitude_sattelite_grad, dpdiSettings.longitude_sattelite_minute), 6); - result << ",\"cincDelayMin\":" << dpdiSettings.min_delay; - result << ",\"cincDelayMax\":" << dpdiSettings.max_delay; #endif + result << ",\n\"dpdiIsPositional\":" << boolAsStr(!dpdiSettings.is_delay_window); +#ifdef MODEM_IS_SCPC + result << ",\"dpdiSearchBandwidth\":" << dpdiSettings.freq_offset; // полоса поиска в кГц +#endif + result << ",\"dpdiPositionStationLatitude\":"; writeDouble(result, translateCoordinates(dpdiSettings.latitude_station_grad, dpdiSettings.latitude_station_minute), 6); + result << ",\"dpdiPositionStationLongitude\":"; writeDouble(result, translateCoordinates(dpdiSettings.longitude_station_grad, dpdiSettings.longitude_station_minute), 6); + result << ",\"dpdiPositionSatelliteLongitude\":"; writeDouble(result, translateCoordinates(dpdiSettings.longitude_sattelite_grad, dpdiSettings.longitude_sattelite_minute), 6); +#ifdef MODEM_IS_SCPC + result << ",\"dpdiDelayMin\":" << dpdiSettings.min_delay; + result << ",\"dpdiDelayMax\":" << dpdiSettings.max_delay; +#else + result << ",\"dpdiDelay\":" << dpdiSettings.max_delay; +#endif + + #ifdef MODEM_IS_TDMA result << ",\n\"rxTxSatDelay\":" << static_cast(demodSettings.delay_ms); #endif @@ -1168,7 +1172,7 @@ void api_driver::ApiDriver::setRxTxSettings(boost::property_tree::ptree &pt) { ACM_parameters_serv_ acm{}; daemon->getSettings(&mod, &demod, &acm, nullptr, nullptr); #else - daemon->getSettings(&mod, &demod, nullptr); + daemon->getSettings(&mod, &demod, nullptr, nullptr); #endif // для модулятора @@ -1227,38 +1231,48 @@ void api_driver::ApiDriver::setRxTxSettings(boost::property_tree::ptree &pt) { #endif } -#ifdef MODEM_IS_SCPC -void api_driver::ApiDriver::setCincSettings(boost::property_tree::ptree &pt) { +void api_driver::ApiDriver::setDpdiSettings(boost::property_tree::ptree &pt) { DPDI_parmeters s{}; +#ifdef MODEM_IS_SCPC + this->daemon->getSettings(nullptr, nullptr, nullptr, &s, nullptr); +#else + this->daemon->getSettings(nullptr, nullptr, &s, nullptr); +#endif - s.is_delay_window = !pt.get("cincIsPositional"); - s.freq_offset = pt.get("cincSearchBandwidth"); + s.is_delay_window = !pt.get("dpdiIsPositional"); +#ifdef MODEM_IS_SCPC + s.freq_offset = pt.get("dpdiSearchBandwidth"); +#endif - auto ctmp = translateCoordinates(pt.get("cincPositionStationLatitude")); + auto ctmp = translateCoordinates(pt.get("dpdiPositionStationLatitude")); s.latitude_station_grad = std::get<0>(ctmp); s.latitude_station_minute = std::get<1>(ctmp); - ctmp = translateCoordinates(pt.get("cincPositionStationLongitude")); + ctmp = translateCoordinates(pt.get("dpdiPositionStationLongitude")); s.longitude_station_grad = std::get<0>(ctmp); s.longitude_station_minute = std::get<1>(ctmp); - ctmp = translateCoordinates(pt.get("cincPositionSatelliteLongitude")); + ctmp = translateCoordinates(pt.get("dpdiPositionSatelliteLongitude")); s.longitude_sattelite_grad = std::get<0>(ctmp); s.longitude_sattelite_minute = std::get<1>(ctmp); - s.min_delay = pt.get("cincDelayMin"); - s.max_delay = pt.get("cincDelayMax"); - - this->daemon->setSettingsCinc(s); -} +#ifdef MODEM_IS_SCPC + s.min_delay = pt.get("dpdiDelayMin"); + s.max_delay = pt.get("dpdiDelayMax"); +#else + s.min_delay = 0; + s.max_delay = pt.get("dpdiDelay"); #endif + this->daemon->setSettingsDpdi(s); +} + void api_driver::ApiDriver::setBucLnbSettings(boost::property_tree::ptree &pt) { buc_lnb_settings s{}; #ifdef MODEM_IS_SCPC daemon->getSettings(nullptr, nullptr, nullptr, nullptr, &s); #else - daemon->getSettings(nullptr, nullptr, &s); + daemon->getSettings(nullptr, nullptr, nullptr, &s); #endif auto tmp = pt.get("bucPowering"); diff --git a/src/terminal_api_driver.h b/src/terminal_api_driver.h index 3b9ec44..dcb316a 100644 --- a/src/terminal_api_driver.h +++ b/src/terminal_api_driver.h @@ -48,12 +48,13 @@ namespace api_driver { */ void setRxTxSettings(boost::property_tree::ptree &pt); -#ifdef MODEM_IS_SCPC + /** - * Установить настройки CinC, readback можно получить используя loadTerminalState. + * Установить настройки DPDI, readback можно получить используя loadTerminalState. + * @note Для TDMA и SCPC модемов эти настройки доступны */ - void setCincSettings(boost::property_tree::ptree &pt); -#endif + void setDpdiSettings(boost::property_tree::ptree &pt); + /** * Установить настройки BUC и LNB, readback можно получить используя loadTerminalState. */ diff --git a/static/main-scpc.html b/static/main-scpc.html index 0bf34ea..d6ab325 100644 --- a/static/main-scpc.html +++ b/static/main-scpc.html @@ -322,21 +322,21 @@
- -

Настройки позиционирования

- - - -

Задержка до спутника

- - + +

Настройки позиционирования

+ + + +

Задержка до спутника

+ +
- +

Настройки питания и опорного генератора

@@ -573,7 +573,7 @@ // false - означает что статистика не отправляется, true - отправляется submitStatus: { rxtx: false, - cinc: false, + dpdi: false, buclnb: false, tcpaccel: false, network: false, @@ -617,14 +617,14 @@ rxRolloff: 2, rxGoldan: 0, }, - paramCinc: { - cincIsPositional: true, - cincSearchBandwidth: 0, - cincPositionStationLatitude: -180, - cincPositionStationLongitude: -180, - cincPositionSatelliteLongitude: -180, - cincDelayMin: 0, - cincDelayMax: 0, + paramDpdi: { + dpdiIsPositional: true, + dpdiSearchBandwidth: 0, + dpdiPositionStationLatitude: -180, + dpdiPositionStationLongitude: -180, + dpdiPositionSatelliteLongitude: -180, + dpdiDelayMin: 0, + dpdiDelayMax: 0, }, paramBuclnb: { bucRefClk10M: false, @@ -815,24 +815,24 @@ .catch((reason) => { alert(`Ошибка при применении настроек: ${reason}`) }) .finally(() => { this.submitStatus.rxtx = false }) }, - settingsSubmitCinc() { - if (this.submitStatus.cinc) { return } + settingsSubmitDpdi() { + if (this.submitStatus.dpdi) { return } let query = { - "cincIsPositional": this.paramCinc.cincIsPositional, - "cincSearchBandwidth": this.paramCinc.cincSearchBandwidth, - "cincPositionStationLatitude": this.paramCinc.cincPositionStationLatitude, - "cincPositionStationLongitude": this.paramCinc.cincPositionStationLongitude, - "cincPositionSatelliteLongitude": this.paramCinc.cincPositionSatelliteLongitude, - "cincDelayMin": this.paramCinc.cincDelayMin, - "cincDelayMax": this.paramCinc.cincDelayMax, + "dpdiIsPositional": this.paramDpdi.dpdiIsPositional, + "dpdiSearchBandwidth": this.paramDpdi.dpdiSearchBandwidth, + "dpdiPositionStationLatitude": this.paramDpdi.dpdiPositionStationLatitude, + "dpdiPositionStationLongitude": this.paramDpdi.dpdiPositionStationLongitude, + "dpdiPositionSatelliteLongitude": this.paramDpdi.dpdiPositionSatelliteLongitude, + "dpdiDelayMin": this.paramDpdi.dpdiDelayMin, + "dpdiDelayMax": this.paramDpdi.dpdiDelayMax, } - this.submitStatus.cinc = true - fetch('/api/set/cinc', {method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify(query), credentials: 'same-origin' }) - .then(async (resp) => { let vals = await resp.json(); if (vals['status'] !== 'ok') { throw new Error(vals['error'] ? vals['error'] : "Server returns undefined error") } this.updateCincSettings(vals) }) + this.submitStatus.dpdi = true + fetch('/api/set/dpdi', {method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify(query), credentials: 'same-origin' }) + .then(async (resp) => { let vals = await resp.json(); if (vals['status'] !== 'ok') { throw new Error(vals['error'] ? vals['error'] : "Server returns undefined error") } this.updateDpdiSettings(vals) }) .catch((reason) => { alert(`Ошибка при применении настроек: ${reason}`) }) - .finally(() => { this.submitStatus.cinc = false }) + .finally(() => { this.submitStatus.dpdi = false }) }, settingsSubmitBuclnb() { if (this.submitStatus.buclnb) { return } @@ -920,15 +920,15 @@ this.paramRxtx.rxRolloff = vals["settings"]["rxRolloff"] this.paramRxtx.rxGoldan = vals["settings"]["rxGoldan"] }, - updateCincSettings(vals) { - this.submitStatus.cinc = false - this.paramCinc.cincIsPositional = vals["settings"]["cincIsPositional"] - this.paramCinc.cincSearchBandwidth = vals["settings"]["cincSearchBandwidth"] - this.paramCinc.cincPositionStationLatitude = vals["settings"]["cincPositionStationLatitude"] - this.paramCinc.cincPositionStationLongitude = vals["settings"]["cincPositionStationLongitude"] - this.paramCinc.cincPositionSatelliteLongitude = vals["settings"]["cincPositionSatelliteLongitude"] - this.paramCinc.cincDelayMin = vals["settings"]["cincDelayMin"] - this.paramCinc.cincDelayMax = vals["settings"]["cincDelayMax"] + updateDpdiSettings(vals) { + this.submitStatus.dpdi = false + this.paramDpdi.dpdiIsPositional = vals["settings"]["dpdiIsPositional"] + this.paramDpdi.dpdiSearchBandwidth = vals["settings"]["dpdiSearchBandwidth"] + this.paramDpdi.dpdiPositionStationLatitude = vals["settings"]["dpdiPositionStationLatitude"] + this.paramDpdi.dpdiPositionStationLongitude = vals["settings"]["dpdiPositionStationLongitude"] + this.paramDpdi.dpdiPositionSatelliteLongitude = vals["settings"]["dpdiPositionSatelliteLongitude"] + this.paramDpdi.dpdiDelayMin = vals["settings"]["dpdiDelayMin"] + this.paramDpdi.dpdiDelayMax = vals["settings"]["dpdiDelayMax"] }, updateBuclnbSettings(vals) { this.submitStatus.buclnb = false @@ -1381,7 +1381,7 @@ let vals = await d.json() this.settingFetchComplete = true this.updateRxtxSettings(vals) - this.updateCincSettings(vals) + this.updateDpdiSettings(vals) this.updateBuclnbSettings(vals) this.updateTcpaccelSettings(vals) this.updateNetworkSettings(vals) diff --git a/static/main-tdma.html b/static/main-tdma.html index f55bc29..e6953f3 100644 --- a/static/main-tdma.html +++ b/static/main-tdma.html @@ -155,11 +155,23 @@
-
-

Настройки позиционирования

- -
+

Настройки DPDI

+
+ +

Настройки позиционирования

+ + + + +
+

Настройки питания и опорного генератора

@@ -285,6 +297,7 @@ submitStatus: { rxtx: false, buclnb: false, + dpdi: false, network: false, firmwareUpload: false, firmwareUpgrade: false, @@ -304,7 +317,6 @@ rxCentralFreq: 900000, rxBaudrate: 0, rxRolloff: 2, - rxTxSatDelay: 0, }, paramBuclnb: { bucRefClk10M: false, @@ -314,6 +326,13 @@ srvRefClk10M: false, bucLnbAutoStart: false, }, + paramDpdi: { + dpdiIsPositional: true, + dpdiPositionStationLatitude: -180, + dpdiPositionStationLongitude: -180, + dpdiPositionSatelliteLongitude: -180, + dpdiDelay: 0, + }, paramNetwork: { netManagementIp: null, netIsL2: false, @@ -445,7 +464,6 @@ "rxCentralFreq": this.paramRxtx.rxCentralFreq, "rxBaudrate": this.paramRxtx.rxBaudrate, "rxRolloff": this.paramRxtx.rxRolloff, - "rxTxSatDelay": this.paramRxtx.rxTxSatDelay, } this.submitStatus.rxtx = true @@ -473,6 +491,23 @@ .catch((reason) => { alert(`Ошибка при применении настроек: ${reason}`) }) .finally(() => { this.submitStatus.buclnb = false }) }, + settingsSubmitDpdi() { + if (this.submitStatus.dpdi) { return } + + let query = { + "dpdiIsPositional": this.paramDpdi.dpdiIsPositional, + "dpdiPositionStationLatitude": this.paramDpdi.dpdiPositionStationLatitude, + "dpdiPositionStationLongitude": this.paramDpdi.dpdiPositionStationLongitude, + "dpdiPositionSatelliteLongitude": this.paramDpdi.dpdiPositionSatelliteLongitude, + "dpdiDelay": this.paramDpdi.dpdiDelay, + } + + this.submitStatus.dpdi = true + fetch('/api/set/dpdi', {method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify(query), credentials: 'same-origin' }) + .then(async (resp) => { let vals = await resp.json(); if (vals['status'] !== 'ok') { throw new Error(vals['error'] ? vals['error'] : "Server returns undefined error") } this.updateDpdiSettings(vals) }) + .catch((reason) => { alert(`Ошибка при применении настроек: ${reason}`) }) + .finally(() => { this.submitStatus.dpdi = false }) + }, settingsSubmitNetwork() { if (this.submitStatus.network) { return } { if (!confirm("Применение этих настроек может сделать модем недоступным! Продолжить?")) return } @@ -504,7 +539,6 @@ this.paramRxtx.rxCentralFreq = vals["settings"]["rxCentralFreq"] this.paramRxtx.rxBaudrate = vals["settings"]["rxBaudrate"] this.paramRxtx.rxRolloff = vals["settings"]["rxRolloff"] - this.paramRxtx.rxTxSatDelay = vals["settings"]["rxTxSatDelay"] }, updateBuclnbSettings(vals) { this.submitStatus.buclnb = false @@ -515,6 +549,14 @@ this.paramBuclnb.srvRefClk10M = vals["settings"]["srvRefClk10M"] this.paramBuclnb.bucLnbAutoStart = vals["settings"]["bucLnbAutoStart"] }, + updateDpdiSettings(vals) { + this.submitStatus.dpdi = false + this.paramDpdi.dpdiIsPositional = vals["settings"]["dpdiIsPositional"] + this.paramDpdi.dpdiPositionStationLatitude = vals["settings"]["dpdiPositionStationLatitude"] + this.paramDpdi.dpdiPositionStationLongitude = vals["settings"]["dpdiPositionStationLongitude"] + this.paramDpdi.dpdiPositionSatelliteLongitude = vals["settings"]["dpdiPositionSatelliteLongitude"] + this.paramDpdi.dpdiDelay = vals["settings"]["dpdiDelay"] + }, updateNetworkSettings(vals) { this.submitStatus.network = false this.paramNetwork.netManagementIp = vals["settings"]["netManagementIp"] @@ -688,6 +730,7 @@ this.settingFetchComplete = true this.updateRxtxSettings(vals) this.updateBuclnbSettings(vals) + this.updateDpdiSettings(vals) this.updateNetworkSettings(vals) if ('netServerName' in vals['settings']) {