добавление пилотов в вебку

This commit is contained in:
2025-04-22 11:55:06 +03:00
parent 008ad2f184
commit 35b25287ad
3 changed files with 18 additions and 3 deletions

View File

@@ -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<std::string>(name + "Modulation");
const auto speed = pt.get<std::string>(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<bool>("txFrameSizeNormal");
mod.modcod_tx = buildModcodFromPt(pt, "dvbCcm", acmIsShortFrame);
const bool acmIsPilots = pt.get<bool>("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<uint32_t>("dvbServicePacketPeriod");
acm.enable_acm = pt.get<bool>("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<double>("dvbSnrReserve"); // запас ОСШ
acm.enable_aupc = pt.get<bool>(json_path("aupcEn", '/'));
acm.min_attenuation_aupc = pt.get<int>("aupcMinAttenuation");