добавил изменение параметров rx/tx + изменил верстку блоков с настройками
This commit is contained in:
parent
dc2d464f41
commit
df4b990316
@ -57,6 +57,7 @@ struct modulator_settings_com{
|
||||
bool is_carrier;
|
||||
bool tx_is_on;
|
||||
bool is_cinc;
|
||||
uint32_t modcod_tx;
|
||||
};
|
||||
|
||||
struct modulator_state_com{
|
||||
@ -476,7 +477,7 @@ struct cmd_modulator_settings
|
||||
archive(modulator_settings.attenuation,modulator_settings.baudrate, modulator_settings.central_freq_in_kGz,
|
||||
modulator_settings.is_carrier, modulator_settings.is_cinc,
|
||||
modulator_settings.is_save_current_state, modulator_settings.is_test_data,
|
||||
modulator_settings.rollof, modulator_settings.tx_is_on);
|
||||
modulator_settings.rollof, modulator_settings.tx_is_on, modulator_settings.modcod_tx);
|
||||
}
|
||||
|
||||
};
|
||||
|
@ -139,6 +139,7 @@ struct modulator_settings{
|
||||
bool is_carrier;
|
||||
bool tx_is_on;
|
||||
bool is_cinc;
|
||||
uint32_t modcod_tx;
|
||||
};
|
||||
|
||||
EXTERNC CP_Result CP_SetModulatorSettings(TSID sid, modulator_settings& settings);
|
||||
|
@ -208,33 +208,49 @@ public:
|
||||
json = this->qosClassesJson;
|
||||
}
|
||||
|
||||
void setSettingsRxTx(bool readback = true) {}
|
||||
|
||||
void setSettingsCinc(const DPDI_parmeters& s, bool readback = true) {
|
||||
DPDI_parmeters tmp = s;
|
||||
void setSettingsRxTx(modulator_settings& mod, demodulator_settings& demod, ACM_parameters_serv_& acm, bool readback = true) {
|
||||
std::lock_guard lock(this->cpApiMutex);
|
||||
CP_SetDmaDebug(sid, "begin_save_config", "");
|
||||
CP_SetDpdiParams(sid, tmp);
|
||||
CP_SetModulatorSettings(this->sid, mod);
|
||||
CP_SetDemodulatorSettings(this->sid, demod);
|
||||
CP_SetAcmParams(this->sid, acm);
|
||||
if (readback) {
|
||||
CP_GetDpdiParams(this->sid, &tmp);
|
||||
CP_GetModulatorSettings(this->sid, mod);
|
||||
CP_GetDemodulatorSettings(this->sid, demod);
|
||||
CP_GetAcmParams(this->sid, &acm);
|
||||
{
|
||||
std::lock_guard lock2{this->settingsMutex};
|
||||
this->dpdiSettings = tmp;
|
||||
this->modSettings = mod;
|
||||
this->demodSettings = demod;
|
||||
this->acmSettings = acm;
|
||||
}
|
||||
}
|
||||
CP_SetDmaDebug(sid, "save_config", "");
|
||||
}
|
||||
|
||||
void setSettingsBucLnb(const buc_lnb_settings& bucLnb, bool readback = true) {
|
||||
buc_lnb_settings tmp = bucLnb;
|
||||
void setSettingsCinc(DPDI_parmeters& s, bool readback = true) {
|
||||
std::lock_guard lock(this->cpApiMutex);
|
||||
CP_SetDmaDebug(sid, "begin_save_config", "");
|
||||
CP_SetBUC_LNB_settings(this->sid, tmp);
|
||||
CP_SetDpdiParams(sid, s);
|
||||
if (readback) {
|
||||
CP_GetBUC_LNB_settings(this->sid, tmp);
|
||||
CP_GetDpdiParams(this->sid, &s);
|
||||
{
|
||||
std::lock_guard lock2{this->settingsMutex};
|
||||
this->bucLnbSettings = tmp;
|
||||
this->dpdiSettings = s;
|
||||
}
|
||||
}
|
||||
CP_SetDmaDebug(sid, "save_config", "");
|
||||
}
|
||||
|
||||
void setSettingsBucLnb(buc_lnb_settings& bucLnb, bool readback = true) {
|
||||
std::lock_guard lock(this->cpApiMutex);
|
||||
CP_SetDmaDebug(sid, "begin_save_config", "");
|
||||
CP_SetBUC_LNB_settings(this->sid, bucLnb);
|
||||
if (readback) {
|
||||
CP_GetBUC_LNB_settings(this->sid, bucLnb);
|
||||
{
|
||||
std::lock_guard lock2{this->settingsMutex};
|
||||
this->bucLnbSettings = bucLnb;
|
||||
}
|
||||
}
|
||||
CP_SetDmaDebug(sid, "save_config", "");
|
||||
@ -440,12 +456,12 @@ std::string api_driver::ApiDriver::loadSettings() const {
|
||||
buc_lnb_settings bucLnb{};
|
||||
daemon->getSettings(&modSettings, &demodSettings, &acmSettings, &dpdiSettings, &bucLnb);
|
||||
|
||||
uint32_t modulatorModcod;
|
||||
{
|
||||
modulator_state ms{};
|
||||
daemon->getStatistics(&ms, nullptr, nullptr);
|
||||
modulatorModcod = ms.modcod;
|
||||
}
|
||||
// uint32_t modulatorModcod;
|
||||
// {
|
||||
// modulator_state ms{};
|
||||
// daemon->getStatistics(&ms, nullptr, nullptr);
|
||||
// modulatorModcod = ms.modcod;
|
||||
// }
|
||||
|
||||
std::stringstream result;
|
||||
result << "{\n\"general.isCinC\":" << boolAsStr(modSettings.is_cinc);
|
||||
@ -453,25 +469,24 @@ std::string api_driver::ApiDriver::loadSettings() const {
|
||||
result << ",\"general.modulatorMode\":" << (modSettings.is_carrier ? "\"normal\"" : "\"test\"");
|
||||
result << ",\"general.autoStartTx\":" << boolAsStr(modSettings.is_save_current_state);
|
||||
result << ",\"general.isTestInputData\":" << boolAsStr(modSettings.is_test_data);
|
||||
|
||||
result << ",\n\"tx.attenuation\":"; writeDouble(result, modSettings.attenuation);
|
||||
result << ",\"tx.rolloff\":" << static_cast<int>(modSettings.rollof * 100);
|
||||
result << ",\"tx.cymRate\":" << modSettings.baudrate;
|
||||
result << ",\"tx.centerFreq\":"; writeDouble(result, modSettings.central_freq_in_kGz, 3);
|
||||
result << ",\"dvbs2.frameSizeNormal\":" << boolAsStr(!(modSettings.modcod_tx & 2));
|
||||
result << ",\"dvbs2.ccm_modcod\":" << (modSettings.modcod_tx >> 4);
|
||||
|
||||
result << ",\n\"dvbs2.isAcm\":" << boolAsStr(acmSettings.enable);
|
||||
result << ",\"dvbs2.frameSizeNormal\":" << boolAsStr(!(modulatorModcod & 2));
|
||||
// result << ",\"dvbs2.isPilots\":" << "null";
|
||||
result << ",\"dvbs2.ccm_modcod\":" << (modulatorModcod >> 4);
|
||||
result << ",\n\"dvbs2.isAcm\":" << boolAsStr(acmSettings.enable);
|
||||
result << ",\"dvbs2.acm_maxModcod\":" << (acmSettings.max_modcod >> 2);
|
||||
result << ",\"dvbs2.acm_minModcod\":" << (acmSettings.min_modcod >> 2);
|
||||
result << ",\"dvbs2.snrReserve\":"; writeDouble(result, acmSettings.min_attenuation);
|
||||
result << ",\"dvbs2.snrReserve\":"; writeDouble(result, acmSettings.snr_treashold_acm);
|
||||
result << ",\"dvbs2.servicePacketPeriod\":" << acmSettings.period_pack;
|
||||
|
||||
result << ",\n\"acm.en\":" << boolAsStr(acmSettings.enable_auto_atten);
|
||||
result << ",\"acm.maxAttenuation\":"; writeDouble(result, acmSettings.max_attenuation);
|
||||
result << ",\"acm.minAttenuation\":"; writeDouble(result, acmSettings.min_attenuation);
|
||||
result << ",\"acm.requiredSnr\":"; writeDouble(result, acmSettings.snr_treashold_acm);
|
||||
result << ",\"acm.requiredSnr\":"; writeDouble(result, acmSettings.snr_treashold);
|
||||
|
||||
result << ",\n\"rx.gainMode\":" << (demodSettings.is_aru_on ? "\"auto\"" : "\"manual\"");
|
||||
result << ",\"rx.manualGain\":"; writeDouble(result, demodSettings.gain);
|
||||
@ -516,6 +531,50 @@ std::string api_driver::ApiDriver::loadSettings() const {
|
||||
}
|
||||
|
||||
void api_driver::ApiDriver::setRxTxSettings(boost::property_tree::ptree &pt) {
|
||||
modulator_settings mod{};
|
||||
demodulator_settings demod{};
|
||||
ACM_parameters_serv_ acm{};
|
||||
|
||||
// для модулятора
|
||||
mod.is_cinc = pt.get<bool>(json_path("general.isCinC", '/'));
|
||||
mod.tx_is_on = pt.get<bool>(json_path("general.txEn", '/'));
|
||||
auto tmp = pt.get<std::string>(json_path("general.modulatorMode", '/'));
|
||||
if (tmp == "normal") { mod.is_carrier = true; }
|
||||
else if (tmp == "test") { mod.is_carrier = false; }
|
||||
else { throw std::runtime_error("api_driver::ApiDriver::setRxTxSettings(): Wrong carrier mode: " + tmp); }
|
||||
mod.is_save_current_state = pt.get<bool>(json_path("general.autoStartTx", '/'));
|
||||
mod.is_test_data = pt.get<bool>(json_path("general.isTestInputData", '/'));
|
||||
mod.attenuation = pt.get<double>(json_path("tx.attenuation", '/'));
|
||||
mod.rollof = pt.get<double>(json_path("tx.rolloff", '/')) / 100.0;
|
||||
mod.baudrate = pt.get<uint32_t>(json_path("tx.cymRate", '/'));
|
||||
mod.central_freq_in_kGz = pt.get<double>(json_path("tx.centerFreq", '/'));
|
||||
|
||||
const bool acmIsShortFrame = pt.get<bool>(json_path("dvbs2.frameSizeNormal", '/'));
|
||||
mod.modcod_tx = (pt.get<uint32_t>(json_path("dvbs2.ccm_modcod", '/')) << 2) | (acmIsShortFrame ? 2 : 0);
|
||||
|
||||
// демодулятор
|
||||
tmp = pt.get<std::string>(json_path("rx.gainMode", '/'));
|
||||
if (tmp == "normal") { demod.is_aru_on = true; }
|
||||
else if (tmp == "test") { demod.is_aru_on = false; }
|
||||
else { throw std::runtime_error("api_driver::ApiDriver::setRxTxSettings(): Wrong gain mode: " + tmp); }
|
||||
demod.gain = pt.get<double>(json_path("rx.manualGain", '/'));
|
||||
demod.baudrate = pt.get<uint32_t>(json_path("rx.cymRate", '/'));
|
||||
demod.is_rvt_iq = pt.get<bool>(json_path("rx.spectrumInversion", '/'));
|
||||
demod.rollof = pt.get<double>(json_path("rx.rolloff", '/')) / 100.0;
|
||||
demod.central_freq_in_kGz = pt.get<double>(json_path("rx.centerFreq", '/'));
|
||||
|
||||
// ACM
|
||||
acm.enable = pt.get<bool>(json_path("dvbs2.isAcm", '/'));
|
||||
acm.max_modcod = (pt.get<uint32_t>(json_path("dvbs2.acm_maxModcod", '/')) << 2) | (acmIsShortFrame ? 2 : 0);
|
||||
acm.min_modcod = (pt.get<uint32_t>(json_path("dvbs2.acm_minModcod", '/')) << 2) | (acmIsShortFrame ? 2 : 0);
|
||||
acm.snr_treashold_acm = pt.get<double>(json_path("dvbs2.snrReserve", '/')); // запас ОСШ
|
||||
acm.period_pack = pt.get<uint32_t>(json_path("dvbs2.servicePacketPeriod", '/'));
|
||||
acm.enable_auto_atten = pt.get<bool>(json_path("acm.en", '/'));
|
||||
acm.max_attenuation = pt.get<double>(json_path("dvbs2.maxAttenuation", '/'));
|
||||
acm.min_attenuation = pt.get<double>(json_path("dvbs2.minAttenuation", '/'));
|
||||
acm.snr_treashold = pt.get<double>(json_path("dvbs2.requiredSnr", '/')); // требуемый ОСШ
|
||||
|
||||
daemon->setSettingsRxTx(mod, demod, acm);
|
||||
}
|
||||
|
||||
void api_driver::ApiDriver::setCincSettings(boost::property_tree::ptree &pt) {
|
||||
@ -541,8 +600,8 @@ void api_driver::ApiDriver::setCincSettings(boost::property_tree::ptree &pt) {
|
||||
s.longitude_sattelite_grad = std::get<0>(ctmp);
|
||||
s.longitude_sattelite_minute = std::get<1>(ctmp);
|
||||
|
||||
s.max_delay = pt.get<int>(json_path("cinc.delayMax", '/'));
|
||||
s.min_delay = pt.get<int>(json_path("cinc.delayMin", '/'));
|
||||
s.max_delay = pt.get<uint32_t>(json_path("cinc.delayMax", '/'));
|
||||
s.min_delay = pt.get<uint32_t>(json_path("cinc.delayMin", '/'));
|
||||
|
||||
this->daemon->setSettingsCinc(s);
|
||||
}
|
||||
|
@ -154,8 +154,6 @@
|
||||
<option value="true">Тест (CW)</option>
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
<div class="settings-set-container">
|
||||
<h3>Параметры передачи</h3>
|
||||
<label>
|
||||
<span>Центральная частота, КГц</span>
|
||||
@ -179,8 +177,8 @@
|
||||
<span>Ослабление, дБ</span>
|
||||
<input v-model="param.tx.attenuation" type="number"/>
|
||||
</label>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="settings-set-container">
|
||||
<h3>Режим работы DVB-S2</h3>
|
||||
<label>
|
||||
@ -264,8 +262,7 @@
|
||||
<span>Запас ОСШ</span>
|
||||
<input v-model="param.dvbs2.snrReserve" type="number">
|
||||
</label>
|
||||
</div>
|
||||
<div class="settings-set-container">
|
||||
|
||||
<h3>Авто-регулировка мощности</h3>
|
||||
<label>
|
||||
<span>Авто-регулировка мощности</span>
|
||||
|
Loading…
x
Reference in New Issue
Block a user