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

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

View File

@ -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"},

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");

View File

@ -203,6 +203,10 @@
<option :value="false">short</option>
</select>
</label>
<label>
<span>Пилот-символы</span>
<span class="toggle-input"><input type="checkbox" v-model="paramRxtx.txIsPilots" /><span class="slider"></span></span>
</label>
<label v-show="paramRxtx.dvbIsAcm === false">
<span>Модуляция</span>
<select v-model="paramRxtx.dvbCcmModulation" @change="paramRxtx.dvbCcmSpeed = correctModcodSpeed(paramRxtx.dvbCcmModulation, paramRxtx.dvbCcmSpeed)">
@ -614,6 +618,7 @@
dvbServicePacketPeriod: 0,
dvbIsAcm: false,
txFrameSizeNormal: true,
txIsPilots: false,
dvbCcmModulation: "QPSK",
dvbCcmSpeed: "1/4",
dvbAcmMinModulation: "QPSK",
@ -805,6 +810,7 @@
"dvbServicePacketPeriod": this.paramRxtx.dvbServicePacketPeriod,
"dvbIsAcm": this.paramRxtx.dvbIsAcm,
"txFrameSizeNormal": this.paramRxtx.txFrameSizeNormal,
"txIsPilots": this.paramRxtx.txIsPilots,
"dvbCcmModulation": this.paramRxtx.dvbCcmModulation,
"dvbCcmSpeed": this.paramRxtx.dvbCcmSpeed,
"dvbAcmMinModulation": this.paramRxtx.dvbAcmMinModulation,
@ -917,6 +923,7 @@
this.paramRxtx.dvbServicePacketPeriod = vals["settings"]["dvbServicePacketPeriod"]
this.paramRxtx.dvbIsAcm = vals["settings"]["dvbIsAcm"]
this.paramRxtx.txFrameSizeNormal = vals["settings"]["txFrameSizeNormal"]
this.paramRxtx.txIsPilots = vals["settings"]["txIsPilots"]
this.paramRxtx.dvbCcmModulation = vals["settings"]["dvbCcmModulation"]
this.paramRxtx.dvbCcmSpeed = vals["settings"]["dvbCcmSpeed"]
this.paramRxtx.dvbAcmMinModulation = vals["settings"]["dvbAcmMinModulation"]