diff --git a/front-generator/render-params.json b/front-generator/render-params.json index c9b7162..a5fef06 100644 --- a/front-generator/render-params.json +++ b/front-generator/render-params.json @@ -201,6 +201,7 @@ "widget": "select", "label": "Размер кадра", "name": "txFrameSizeNormal", "values": [{"label": "normal", "value": "true"}, {"label": "short", "value": "false"}] }, + {"widget": "checkbox", "label": "Пилот-символы", "name": "txIsPilots"}, {"widget": "modulation-modcod", "label": "Модуляция", "name": "dvbCcm", "v_show": "paramRxtx.dvbIsAcm === false"}, {"widget": "modulation-speed", "label": "Скорость кода", "name": "dvbCcm", "v_show": "paramRxtx.dvbIsAcm === false"}, {"widget": "watch-expr", "label": "Расчетная скорость", "expr": "calcInterfaceSpeedKb(paramRxtx.txBaudrate, paramRxtx.dvbCcmModulation, paramRxtx.dvbCcmSpeed, paramRxtx.txFrameSizeNormal)", "v_show": "paramRxtx.dvbIsAcm === false"}, diff --git a/src/terminal_api_driver.cpp b/src/terminal_api_driver.cpp index 584c454..01a8001 100644 --- a/src/terminal_api_driver.cpp +++ b/src/terminal_api_driver.cpp @@ -1090,6 +1090,7 @@ std::string api_driver::ApiDriver::loadSettings() const { result << ",\n\"dvbServicePacketPeriod\":" << acmSettings.period_pack_acm; result << ",\"dvbIsAcm\":" << boolAsStr(acmSettings.enable_acm); result << ",\"txFrameSizeNormal\":" << boolAsStr((modSettings.modcod_tx & 2) == 0); + result << ",\"txIsPilots\":" << boolAsStr((modSettings.modcod_tx & 1) != 0); result << R"(,"dvbCcmModulation":")" << extractModcodModulation(modSettings.modcod_tx) << "\""; result << R"(,"dvbCcmSpeed":")" << extractModcodSpeed(modSettings.modcod_tx) << "\""; @@ -1187,7 +1188,7 @@ std::string api_driver::ApiDriver::loadFirmwareVersion() const { } #ifdef MODEM_IS_SCPC -static uint32_t buildModcodFromPt(const boost::property_tree::ptree& pt, const std::string& name, bool isShortFrame) { +static uint32_t buildModcodFromPt(const boost::property_tree::ptree& pt, const std::string& name, bool isShortFrame, bool isPilots = false) { uint32_t modcod = 0; const auto mod = pt.get(name + "Modulation"); const auto speed = pt.get(name + "Speed"); @@ -1202,7 +1203,7 @@ static uint32_t buildModcodFromPt(const boost::property_tree::ptree& pt, const s } _index++; } - return (modcod << 2) | (isShortFrame ? 2 : 0); + return (modcod << 2)| (isShortFrame ? 2 : 0) | (isPilots ? 1 : 0); } #endif @@ -1236,7 +1237,8 @@ void api_driver::ApiDriver::setRxTxSettings(boost::property_tree::ptree &pt) { #ifdef MODEM_IS_SCPC const bool acmIsShortFrame = !pt.get("txFrameSizeNormal"); - mod.modcod_tx = buildModcodFromPt(pt, "dvbCcm", acmIsShortFrame); + const bool acmIsPilots = pt.get("txIsPilots"); + mod.modcod_tx = buildModcodFromPt(pt, "dvbCcm", acmIsShortFrame, acmIsPilots); #endif // демодулятор @@ -1254,8 +1256,13 @@ void api_driver::ApiDriver::setRxTxSettings(boost::property_tree::ptree &pt) { // ACM acm.period_pack_acm = pt.get("dvbServicePacketPeriod"); acm.enable_acm = pt.get("dvbIsAcm"); +#ifdef MODEM_IS_SCPC + acm.min_modcod_acm = buildModcodFromPt(pt, "dvbAcmMin", acmIsShortFrame, acmIsPilots); + acm.max_modcod_acm = buildModcodFromPt(pt, "dvbAcmMax", acmIsShortFrame, acmIsPilots); +#else acm.min_modcod_acm = buildModcodFromPt(pt, "dvbAcmMin", acmIsShortFrame); acm.max_modcod_acm = buildModcodFromPt(pt, "dvbAcmMax", acmIsShortFrame); +#endif acm.snr_threashold_acm = pt.get("dvbSnrReserve"); // запас ОСШ acm.enable_aupc = pt.get(json_path("aupcEn", '/')); acm.min_attenuation_aupc = pt.get("aupcMinAttenuation"); diff --git a/static/main-scpc.html b/static/main-scpc.html index d3a2815..7b8c768 100644 --- a/static/main-scpc.html +++ b/static/main-scpc.html @@ -203,6 +203,10 @@ +