diff --git a/.gitmodules b/.gitmodules index a686833..c91772d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,9 @@ [submodule "dependencies/control_system_client"] path = dependencies/control_system_client url = http://gitlab.devrss.vg/mf-tdma/protocol_processing/control_system_client.git +[submodule "dependencies/control_system_client_tdma"] + path = dependencies/control_system_client_tdma + url = http://gitlab.devrss.vg/mf-tdma/protocol_processing/control_system_client.git +[submodule "dependencies/control_system_client_shps"] + path = dependencies/control_system_client_shps + url = http://gitlab.devrss.vg/mf-tdma/protocol_processing/control_system_client.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 0552205..a7c928b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,12 +18,15 @@ endif() if("${MODEM_TYPE}" STREQUAL "SCPC") add_definitions(-DMODEM_IS_SCPC) message(STATUS "Selected SCPC modem") + add_subdirectory(dependencies/control_system_client) # подключение правильного control system client SCPC, ветка main elseif ("${MODEM_TYPE}" STREQUAL "TDMA") add_definitions(-DMODEM_IS_TDMA) message(STATUS "Selected TDMA modem") + add_subdirectory(dependencies/control_system_client_tdma) # подключение правильного control system client TDMA, ветка terminal-tdma elseif ("${MODEM_TYPE}" STREQUAL "SHPS") add_definitions(-DMODEM_IS_SHPS) message(STATUS "Selected SHPS modem") + add_subdirectory(dependencies/control_system_client_shps) # подключение правильного control system client SHPS, ветка shps else() message(FATAL_ERROR "You must set `MODEM_TYPE` \"SCPC\" or \"TDMA\" or \"SHPS\"!") endif() @@ -52,7 +55,6 @@ add_compile_options(-Wall -Wextra -Wsign-conversion -DPROJECT_GIT_REVISION="${PR # максимальный размер тела запроса 200mb add_definitions(-DHTTP_MAX_PAYLOAD=200000000) -add_subdirectory(dependencies/control_system_client) include_directories(src/) diff --git a/dependencies/control_system_client b/dependencies/control_system_client index 92fcb8a..76d6dcd 160000 --- a/dependencies/control_system_client +++ b/dependencies/control_system_client @@ -1 +1 @@ -Subproject commit 92fcb8ab674eb592b6237a7b82af2dfb1a0ae00c +Subproject commit 76d6dcdb08d3602ad33f2236a60cc78841b5bdc5 diff --git a/dependencies/control_system_client_shps b/dependencies/control_system_client_shps new file mode 160000 index 0000000..92fcb8a --- /dev/null +++ b/dependencies/control_system_client_shps @@ -0,0 +1 @@ +Subproject commit 92fcb8ab674eb592b6237a7b82af2dfb1a0ae00c diff --git a/dependencies/control_system_client_tdma b/dependencies/control_system_client_tdma new file mode 160000 index 0000000..cb0f743 --- /dev/null +++ b/dependencies/control_system_client_tdma @@ -0,0 +1 @@ +Subproject commit cb0f743535b95b87311318a0b8daf82da9bb7df5 diff --git a/front-generator/render-params.json b/front-generator/render-params.json index 05be67a..cafeb55 100644 --- a/front-generator/render-params.json +++ b/front-generator/render-params.json @@ -65,7 +65,8 @@ {"label": "Выкл", "value": "0"}, {"label": "24В", "value": "24"} ] - } + }, + {"widget": "number-int", "label": "Частота LO, кГц", "name": "bucLoKhz", "min": 0, "max": 40000000, "step": 1} ] }, { @@ -81,7 +82,8 @@ {"label": "18В", "value": "18"}, {"label": "24В", "value": "24"} ] - } + }, + {"widget": "number-int", "label": "Частота LO, кГц", "name": "lnbLoKhz", "min": 0, "max": 40000000, "step": 1} ] }, { @@ -101,17 +103,17 @@ "widget": "settings-container", "childs": [ { - "widget": "select", "label": "Метод расчета задержки", "name": "dpdiIsPositional", + "widget": "select", "label": "Метод расчета задержки", "name": "isPositional", "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": "h2", "label": "Настройки позиционирования", "v_show": "paramDpdi.isPositional === true"}, + {"widget": "number", "label": "Широта станции", "name": "positionStationLatitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180}, + {"widget": "number", "label": "Долгота станции", "name": "positionStationLongitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180}, + {"widget": "number", "label": "Подспутниковая точка", "name": "positionSatelliteLongitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180}, + {"widget": "number", "label": "Задержка до спутника, мс", "name": "delay", "v_show": "paramDpdi.isPositional === false", "min": 0, "step": 0.1, "max": 400}] }, {"widget": "submit"} ], @@ -252,20 +254,20 @@ "widget": "settings-container", "v_show": "paramRxtx.isCinC", "childs": [ { - "widget": "select", "label": "Метод расчета задержки", "name": "dpdiIsPositional", + "widget": "select", "label": "Метод расчета задержки", "name": "isPositional", "values": [ {"label": "Позиционированием", "value": "true"}, {"label": "Окном задержки", "value": "false"} ] }, - {"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": "number", "label": "Полоса поиска, КГц ±", "name": "searchBandwidth", "min": 0, "step": 1, "max": 100}, + {"widget": "h2", "label": "Настройки позиционирования", "v_show": "paramDpdi.isPositional === true"}, + {"widget": "number", "label": "Широта станции", "name": "positionStationLatitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180}, + {"widget": "number", "label": "Долгота станции", "name": "positionStationLongitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180}, + {"widget": "number", "label": "Подспутниковая точка", "name": "positionSatelliteLongitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180}, + {"widget": "h2", "label": "Задержка до спутника", "v_show": "paramDpdi.isPositional === false"}, + {"widget": "number", "label": "от, мс", "name": "delayMin", "v_show": "paramDpdi.isPositional === false", "min": 0, "step": 0.1, "max": 400}, + {"widget": "number", "label": "до, мс", "name": "delayMax", "v_show": "paramDpdi.isPositional === false", "min": 0, "step": 0.1, "max": 400}] }, {"widget": "submit", "v_show": "paramRxtx.isCinC"} ], diff --git a/src/api-driver/structs.cpp b/src/api-driver/structs.cpp index dc39f8e..7accf2f 100644 --- a/src/api-driver/structs.cpp +++ b/src/api-driver/structs.cpp @@ -472,15 +472,16 @@ void api_driver::obj::TerminalDeviceState::updateCallback(proxy::CpProxy &cp) { fTempZynq = ds.pl_temp; fTempFpga = ds.zynq_temp; } -#ifdef MODEM_IS_TDMA - { - progress_msg ds{}; - cp.getUpdateStatus(ds); - fUpgradeStatus = ds.status; - fUpgradePercent = ds.dwl_percent; - fUpgradeImage = ds.cur_image; - } -#endif + // FIXME: тут происходит зависание по неизвестной причине +// #ifdef MODEM_IS_TDMA +// { +// progress_msg ds{}; +// cp.getUpdateStatus(ds); +// fUpgradeStatus = ds.status; +// fUpgradePercent = ds.dwl_percent; +// fUpgradeImage = ds.cur_image; +// } +// #endif struct sysinfo info{}; sysinfo(&info); @@ -735,7 +736,7 @@ void api_driver::obj::TerminalRxTxSettings::updateDpdiSettings(const nlohmann::j dpdi.max_delay = data.value("delayMax", dpdi.max_delay); #else dpdi.min_delay = 0; - dpdi.max_delay = data.value("dpdiDelay", dpdi.max_delay); + dpdi.max_delay = data.value("delay", dpdi.max_delay); #endif } void api_driver::obj::TerminalRxTxSettings::storeDpdiSettings(proxy::CpProxy &cp) { @@ -765,6 +766,9 @@ void api_driver::obj::TerminalRxTxSettings::updateBuclnbSettings(const nlohmann: } } buclnb.is_ref_10MHz_buc = data.value("bucRefClk10M", buclnb.is_ref_10MHz_buc); +#ifdef MODEM_IS_TDMA + buclnb.lo_buc_inkHz = data.value("bucLoKhz", buclnb.lo_buc_inkHz); +#endif { // напряжение lnb @@ -784,8 +788,10 @@ void api_driver::obj::TerminalRxTxSettings::updateBuclnbSettings(const nlohmann: default: buclnb.lnb = voltage_lnb::DISABLE; } } - buclnb.is_ref_10MHz_lnb = data.value("lnbRefClk10M", buclnb.is_ref_10MHz_lnb); +#ifdef MODEM_IS_TDMA + buclnb.lo_lnb_inkHz = data.value("lnbLoKhz", buclnb.lo_lnb_inkHz); +#endif buclnb.is_ref_10MHz_output = data.value("srvRefClk10M", buclnb.is_ref_10MHz_output); buclnb.is_save_current_state = data.value("bucLnbAutoStart", buclnb.is_save_current_state); @@ -916,6 +922,9 @@ nlohmann::json api_driver::obj::TerminalRxTxSettings::asJson() const { #endif default: bl["bucPowering"] = 0; } +#ifdef MODEM_IS_TDMA + bl["bucLoKhz"] = buclnb.lo_buc_inkHz; +#endif bl["bucRefClk10M"] = buclnb.is_ref_10MHz_buc; switch (buclnb.lnb) { @@ -925,6 +934,9 @@ nlohmann::json api_driver::obj::TerminalRxTxSettings::asJson() const { default: bl["lnbPowering"] = 0; } bl["lnbRefClk10M"] = buclnb.is_ref_10MHz_lnb; +#ifdef MODEM_IS_TDMA + bl["lnbLoKhz"] = buclnb.lo_lnb_inkHz; +#endif bl["srvRefClk10M"] = buclnb.is_ref_10MHz_output; bl["bucLnbAutoStart"] = buclnb.is_save_current_state; diff --git a/src/terminal_api_driver.cpp b/src/terminal_api_driver.cpp index 42e803d..88565b9 100644 --- a/src/terminal_api_driver.cpp +++ b/src/terminal_api_driver.cpp @@ -107,7 +107,7 @@ void api_driver::ApiDriver::setDpdiSettings(const nlohmann::json& data) { std::lock_guard _lapi(this->daemon->cpApiMutex); this->daemon->cp.setDmaDebug("begin_save_config", ""); - rxtx.storeMainSettings(this->daemon->cp); + rxtx.storeDpdiSettings(this->daemon->cp); this->daemon->cp.setDmaDebug("save_config", ""); rxtx.updateCallback(this->daemon->cp); { diff --git a/static/main-scpc.html b/static/main-scpc.html index fd06506..b43f079 100644 --- a/static/main-scpc.html +++ b/static/main-scpc.html @@ -326,19 +326,19 @@