работает получение параметров от бекенда (проверено SCPC и TDMA)

This commit is contained in:
Vladislav Ostapov 2025-01-15 12:00:29 +03:00
parent 0982544c2e
commit 46497bfda0
5 changed files with 349 additions and 332 deletions

View File

@ -24,7 +24,7 @@
{"label": "Тест", "value": "true"} {"label": "Тест", "value": "true"}
] ]
}, },
{"widget": "number", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 900000, "step": 1}, {"widget": "number", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 900000, "step": 0.01},
{"widget": "number", "label": "Символьная скорость, Бод", "name": "txBaudrate", "min": 0, "step": 1}, {"widget": "number", "label": "Символьная скорость, Бод", "name": "txBaudrate", "min": 0, "step": 1},
{"widget": "number", "label": "Ослабление, дБ", "name": "txAttenuation", "min": 0, "step": 1} {"widget": "number", "label": "Ослабление, дБ", "name": "txAttenuation", "min": 0, "step": 1}
] ]
@ -42,7 +42,7 @@
}, },
{"widget": "checkbox", "label": "Инверсия спектра", "name": "rxSpectrumInversion"}, {"widget": "checkbox", "label": "Инверсия спектра", "name": "rxSpectrumInversion"},
{"widget": "number", "label": "Ручное усиление, дБ", "name": "rxManualGain", "v_show": "!paramRxtx.rxAgcEn", "min": -40}, {"widget": "number", "label": "Ручное усиление, дБ", "name": "rxManualGain", "v_show": "!paramRxtx.rxAgcEn", "min": -40},
{"widget": "number", "label": "Центральная частота, КГц", "name": "rxCentralFreq", "min": 900000, "step": 1}, {"widget": "number", "label": "Центральная частота, КГц", "name": "rxCentralFreq", "min": 900000, "step": 0.01},
{"widget": "number", "label": "Символьная скорость, Бод", "name": "rxBaudrate", "min": 0, "step": 1}, {"widget": "number", "label": "Символьная скорость, Бод", "name": "rxBaudrate", "min": 0, "step": 1},
{ {
"widget": "select", "label": "Roll-off", "name": "rxRolloff", "widget": "select", "label": "Roll-off", "name": "rxRolloff",
@ -158,7 +158,7 @@
"values": [{"label": "SCPC", "value": "false"}, {"label": "Тест", "value": "true"}] "values": [{"label": "SCPC", "value": "false"}, {"label": "Тест", "value": "true"}]
}, },
{"widget": "h3", "label": "Параметры передачи"}, {"widget": "h3", "label": "Параметры передачи"},
{"widget": "number", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 900000, "step": 1}, {"widget": "number", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 900000, "step": 0.01},
{"widget": "number", "label": "Символьная скорость, Бод", "name": "txBaudrate", "min": 0, "step": 1}, {"widget": "number", "label": "Символьная скорость, Бод", "name": "txBaudrate", "min": 0, "step": 1},
{ {
"widget": "select", "label": "Roll-off", "name": "txRolloff", "widget": "select", "label": "Roll-off", "name": "txRolloff",
@ -198,10 +198,10 @@
"widget": "settings-container", "widget": "settings-container",
"childs": [ "childs": [
{"widget": "h3", "label": "Авто-регулировка мощности"}, {"widget": "h3", "label": "Авто-регулировка мощности"},
{"widget": "checkbox", "label": "Авто-регулировка мощности", "name": "acmEn"}, {"widget": "checkbox", "label": "Авто-регулировка мощности", "name": "aupcEn"},
{"widget": "number", "label": "Минимальное ослабление, дБ", "name": "acmMinAttenuation", "min": 0, "step": 0.01, "max": 10}, {"widget": "number", "label": "Минимальное ослабление, дБ", "name": "aupcMinAttenuation", "min": 0, "step": 0.01, "max": 10},
{"widget": "number", "label": "Максимальное ослабление, дБ", "name": "acmMaxAttenuation", "min": 0, "step": 0.01, "max": 10}, {"widget": "number", "label": "Максимальное ослабление, дБ", "name": "aupcMaxAttenuation", "min": 0, "step": 0.01, "max": 10},
{"widget": "number", "label": "Требуемое ОСШ", "name": "acmRequiredSnr", "min": 0, "step": 0.01, "max": 10} {"widget": "number", "label": "Требуемое ОСШ", "name": "aupcRequiredSnr", "min": 0, "step": 0.01, "max": 10}
] ]
}, },
{ {
@ -214,7 +214,7 @@
}, },
{"widget": "number", "label": "Усиление, дБ", "name": "rxManualGain", "min": -40, "step": 0.01, "max": 40, "v_show": "paramRxtx.rxAgcEn === false"}, {"widget": "number", "label": "Усиление, дБ", "name": "rxManualGain", "min": -40, "step": 0.01, "max": 40, "v_show": "paramRxtx.rxAgcEn === false"},
{"widget": "checkbox", "label": "Инверсия спектра", "name": "rxSpectrumInversion"}, {"widget": "checkbox", "label": "Инверсия спектра", "name": "rxSpectrumInversion"},
{"widget": "number", "label": "Центральная частота, КГц", "name": "rxCentralFreq", "min": 900000, "step": 1}, {"widget": "number", "label": "Центральная частота, КГц", "name": "rxCentralFreq", "min": 900000, "step": 0.01},
{"widget": "number", "label": "Символьная скорость, Бод", "name": "rxBaudrate", "min": 0, "step": 1}, {"widget": "number", "label": "Символьная скорость, Бод", "name": "rxBaudrate", "min": 0, "step": 1},
{ {
"widget": "select", "label": "Roll-off", "name": "rxRolloff", "widget": "select", "label": "Roll-off", "name": "rxRolloff",

View File

@ -29,7 +29,7 @@ def extract_param_names(mc):
ws = [] ws = []
for w in mc['params'][cat]: for w in mc['params'][cat]:
ws += helper_extract(w) ws += helper_extract(w)
ws.sort(key=lambda k: k['name']) # ws.sort(key=lambda k: k['name'])
result.append({ result.append({
"group": cat, "group": cat,
"params": ws "params": ws

View File

@ -16,48 +16,48 @@ typedef boost::property_tree::ptree::path_type json_path;
static constexpr const char* DEFAULT_QOS_CLASSES = R"({"rt1":[],"rt2":[],"rt3":[],"cd":[]})"; static constexpr const char* DEFAULT_QOS_CLASSES = R"({"rt1":[],"rt2":[],"rt3":[],"cd":[]})";
static int calculateSubnetMask(const std::string& subnet_mask) { // static int calculateSubnetMask(const std::string& subnet_mask) {
int mask = 0; // int mask = 0;
std::istringstream iss(subnet_mask); // std::istringstream iss(subnet_mask);
std::string octet; // std::string octet;
while (std::getline(iss, octet, '.')) { // while (std::getline(iss, octet, '.')) {
int octet_value = std::stoi(octet); // int octet_value = std::stoi(octet);
for (int i = 7; i >= 0; i--) { // for (int i = 7; i >= 0; i--) {
if (octet_value & (1 << i)) { // if (octet_value & (1 << i)) {
mask++; // mask++;
} // }
} // }
} // }
return mask; // return mask;
} // }
/** /**
* Преобразует строку вида `1.2.3.4/24` в пару строк вида `1.2.3.4` `255.255.255.0` * Преобразует строку вида `1.2.3.4/24` в пару строк вида `1.2.3.4` `255.255.255.0`
*/ */
std::pair<std::string, std::string> splitIpAndMask(const std::string& input) { // std::pair<std::string, std::string> splitIpAndMask(const std::string& input) {
auto pos = input.find('/'); // auto pos = input.find('/');
if (pos == std::string::npos) { // if (pos == std::string::npos) {
// Обработка ошибки: нет символа '/' // // Обработка ошибки: нет символа '/'
throw std::runtime_error("address not contains mask"); // throw std::runtime_error("address not contains mask");
} // }
std::string ip = input.substr(0, pos); // std::string ip = input.substr(0, pos);
const unsigned int mask_int = std::stoul(input.substr(pos + 1)); // const unsigned int mask_int = std::stoul(input.substr(pos + 1));
//
if (mask_int > 32) { // if (mask_int > 32) {
throw std::runtime_error("invalid mask"); // throw std::runtime_error("invalid mask");
} // }
//
std::string mask_binary = std::string(mask_int, '1') + std::string(32 - mask_int, '0'); // std::string mask_binary = std::string(mask_int, '1') + std::string(32 - mask_int, '0');
std::string mask_str; // std::string mask_str;
//
for (unsigned int i = 0; i < 4; ++i) { // for (unsigned int i = 0; i < 4; ++i) {
std::string octet = mask_binary.substr(i * 8u, 8); // std::string octet = mask_binary.substr(i * 8u, 8);
int octet_value = std::stoi(octet, nullptr, 2); // int octet_value = std::stoi(octet, nullptr, 2);
mask_str += std::to_string(octet_value) + (i < 3 ? "." : ""); // mask_str += std::to_string(octet_value) + (i < 3 ? "." : "");
} // }
//
return std::make_pair(ip, mask_str); // return std::make_pair(ip, mask_str);
} // }
static inline void rtrim(std::string &s) { static inline void rtrim(std::string &s) {
s.erase(std::find_if(s.rbegin(), s.rend(), [](unsigned char ch) { s.erase(std::find_if(s.rbegin(), s.rend(), [](unsigned char ch) {
@ -67,7 +67,8 @@ static inline void rtrim(std::string &s) {
class TerminalNetworkSettings { class TerminalNetworkSettings {
public: public:
std::string managementIp, managementGateway, mode, dataIp; std::string managementIp, managementGateway, dataIp;
bool isL2 = true;
unsigned int dataMtu = 1500; unsigned int dataMtu = 1500;
TerminalNetworkSettings() = default; TerminalNetworkSettings() = default;
@ -79,7 +80,7 @@ public:
void loadDefaults() { void loadDefaults() {
managementIp = "0.0.0.0"; managementIp = "0.0.0.0";
managementGateway = ""; managementGateway = "";
mode = "l2"; isL2 = true;
dataIp = "0.0.0.0"; dataIp = "0.0.0.0";
dataMtu = 1500; dataMtu = 1500;
} }
@ -193,21 +194,22 @@ private:
void updateNetworkSettings() { void updateNetworkSettings() {
TerminalNetworkSettings s; TerminalNetworkSettings s;
std::string tmp;
std::lock_guard lock(this->cpApiMutex); std::lock_guard lock(this->cpApiMutex);
logCpApiError("api_driver::TerminalApiDaemon::updateNetworkSettings()->CP_GetNetwork(addr)", CP_GetNetwork(sid, "addr", &tmp)); logCpApiError("api_driver::TerminalApiDaemon::updateNetworkSettings()->CP_GetNetwork(addr)", CP_GetNetwork(sid, "addr", &s.managementIp));
s.managementIp = tmp + "/"; // s.managementIp = tmp + "/";
tmp.clear(); logCpApiError("api_driver::TerminalApiDaemon::updateNetworkSettings()->CP_GetNetwork(mask)", CP_GetNetwork(sid, "mask", &tmp)); // tmp.clear(); logCpApiError("api_driver::TerminalApiDaemon::updateNetworkSettings()->CP_GetNetwork(mask)", CP_GetNetwork(sid, "mask", &tmp));
s.managementIp += std::to_string(calculateSubnetMask(tmp)); // s.managementIp += std::to_string(calculateSubnetMask(tmp));
tmp.clear(); logCpApiError("api_driver::TerminalApiDaemon::updateNetworkSettings()->CP_GetNetwork(gateway)", CP_GetNetwork(sid, "gateway", &s.managementGateway)); s.managementGateway = tmp; logCpApiError("api_driver::TerminalApiDaemon::updateNetworkSettings()->CP_GetNetwork(gateway)", CP_GetNetwork(sid, "gateway", &s.managementGateway));
tmp.clear(); logCpApiError("api_driver::TerminalApiDaemon::updateNetworkSettings()->CP_GetNetwork(mode)", CP_GetNetwork(sid, "mode", &tmp)); std::string nm; logCpApiError("api_driver::TerminalApiDaemon::updateNetworkSettings()->CP_GetNetwork(mode)", CP_GetNetwork(sid, "mode", &nm));
if (tmp == "tun") { if (nm == "tun") {
s.mode = "l3"; s.isL2 = false;
logCpApiError("api_driver::TerminalApiDaemon::updateNetworkSettings()->CP_GetNetwork(addr_data)", CP_GetNetwork(sid, "addr_data", &s.dataIp)); logCpApiError("api_driver::TerminalApiDaemon::updateNetworkSettings()->CP_GetNetwork(addr_data)", CP_GetNetwork(sid, "addr_data", &s.dataIp));
s.dataIp += "/24"; // s.dataIp += "/24";
} else { } else {
s.mode = "l2"; s.isL2 = true;
s.dataIp = "0.0.0.0/24"; // s.dataIp = "0.0.0.0/24";
s.dataIp = "0.0.0.0";
} }
s.dataMtu = 1500; s.dataMtu = 1500;
@ -564,41 +566,39 @@ public:
} }
void setNetworkSettings(TerminalNetworkSettings& s, bool readback = true) { void setNetworkSettings(TerminalNetworkSettings& s, bool readback = true) {
const auto mang = splitIpAndMask(s.managementIp); // const auto mang = splitIpAndMask();
std::pair<std::string, std::string> data; // std::pair<std::string, std::string> data;
bool isL2; // if (!s.isL2) {
if (s.mode == "l2") { isL2 = true; } // data = splitIpAndMask(s.dataIp);
else if (s.mode == "l3") { isL2 = false; data = splitIpAndMask(s.dataIp); } // }
else { throw std::runtime_error("invalid mode"); }
std::lock_guard lock(this->cpApiMutex); std::lock_guard lock(this->cpApiMutex);
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetDmaDebug(begin_save_config)", CP_SetDmaDebug(sid, "begin_save_config", "")); logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetDmaDebug(begin_save_config)", CP_SetDmaDebug(sid, "begin_save_config", ""));
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetNetwork(mode)", CP_SetNetwork(sid, "mode", isL2 ? "tap" : "tun")); logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetNetwork(mode)", CP_SetNetwork(sid, "mode", s.isL2 ? "tap" : "tun"));
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetNetwork(addr)", CP_SetNetwork(sid, "addr", mang.first.c_str())); logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetNetwork(addr)", CP_SetNetwork(sid, "addr", s.managementIp.c_str()));
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetNetwork(mask)", CP_SetNetwork(sid, "mask", mang.second.c_str())); logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetNetwork(mask)", CP_SetNetwork(sid, "mask", "255.255.255.0"));
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetNetwork(gateway)", CP_SetNetwork(sid, "gateway", s.managementGateway.c_str())); logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetNetwork(gateway)", CP_SetNetwork(sid, "gateway", s.managementGateway.c_str()));
if (!isL2) { if (!s.isL2) {
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetNetwork(data_addr)", CP_SetNetwork(sid, "data_addr", data.first.c_str())); logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetNetwork(data_addr)", CP_SetNetwork(sid, "data_addr", s.dataIp.c_str()));
// TODO маска не устанавливается, потому что в API этого нет // TODO маска не устанавливается, потому что в API этого нет
} }
// TODO MTU не устанавливается, потому что в API этого нет // TODO MTU не устанавливается, потому что в API этого нет
if (readback) { if (readback) {
std::string tmp;
s.loadDefaults(); s.loadDefaults();
s.managementIp.clear(); s.managementIp.clear();
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_GetNetwork(addr)", CP_GetNetwork(sid, "addr", &s.managementIp)); logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_GetNetwork(addr)", CP_GetNetwork(sid, "addr", &s.managementIp));
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_GetNetwork(mask)", CP_GetNetwork(sid, "mask", &tmp)); // logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_GetNetwork(mask)", CP_GetNetwork(sid, "mask", &tmp));
s.managementIp += "/"; // s.managementIp += "/";
s.managementIp += std::to_string(calculateSubnetMask(tmp)); // s.managementIp += std::to_string(calculateSubnetMask(tmp));
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_GetNetwork(gateway)", CP_GetNetwork(sid, "gateway", &s.managementGateway)); logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_GetNetwork(gateway)", CP_GetNetwork(sid, "gateway", &s.managementGateway));
tmp.clear(); logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_GetNetwork(mode)", CP_GetNetwork(sid, "mode", &tmp)); std::string nm; logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_GetNetwork(mode)", CP_GetNetwork(sid, "mode", &nm));
if (tmp == "tun") { if (nm == "tun") {
s.mode = "l3"; s.isL2 = false;
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_GetNetwork(addr_data)", CP_GetNetwork(sid, "addr_data", &s.dataIp)); logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_GetNetwork(addr_data)", CP_GetNetwork(sid, "addr_data", &s.dataIp));
} else { } else {
s.mode = "l2"; s.isL2 = true;
s.dataIp = "0.0.0.0/24"; s.dataIp = "0.0.0.0";
} }
s.dataMtu = 1500; s.dataMtu = 1500;
{ {
@ -799,46 +799,59 @@ void api_driver::ApiDriver::resetPacketStatistics() const {
this->daemon->resetPacketStatistics(); this->daemon->resetPacketStatistics();
} }
static void generateModcode(std::ostream& out, const char* paramName, uint32_t modcod) { #ifdef MODEM_IS_SCPC
struct _modcodDef {const char* modulation; const char* speed;}; struct ModcodDef_t {const char* modulation; const char* speed;};
const static _modcodDef defs[] = { const static ModcodDef_t defs[] = {
{.modulation = "DUMMY", .speed = "0"}, {.modulation = "DUMMY", .speed = "0"},
{.modulation = "QPSK", .speed = "1/4"}, {.modulation = "QPSK", .speed = "1/4"},
{.modulation = "QPSK", .speed = "1/3"}, {.modulation = "QPSK", .speed = "1/3"},
{.modulation = "QPSK", .speed = "2/5"}, {.modulation = "QPSK", .speed = "2/5"},
{.modulation = "QPSK", .speed = "1/2"}, {.modulation = "QPSK", .speed = "1/2"},
{.modulation = "QPSK", .speed = "3/5"}, {.modulation = "QPSK", .speed = "3/5"},
{.modulation = "QPSK", .speed = "2/3"}, {.modulation = "QPSK", .speed = "2/3"},
{.modulation = "QPSK", .speed = "3/4"}, {.modulation = "QPSK", .speed = "3/4"},
{.modulation = "QPSK", .speed = "4/5"}, {.modulation = "QPSK", .speed = "4/5"},
{.modulation = "QPSK", .speed = "5/6"}, {.modulation = "QPSK", .speed = "5/6"},
{.modulation = "QPSK", .speed = "8/9"}, {.modulation = "QPSK", .speed = "8/9"},
{.modulation = "QPSK", .speed = "9/10"}, {.modulation = "QPSK", .speed = "9/10"},
{.modulation = "8PSK", .speed = "3/5"}, {.modulation = "8PSK", .speed = "3/5"},
{.modulation = "8PSK", .speed = "2/3"}, {.modulation = "8PSK", .speed = "2/3"},
{.modulation = "8PSK", .speed = "3/4"}, {.modulation = "8PSK", .speed = "3/4"},
{.modulation = "8PSK", .speed = "5/6"}, {.modulation = "8PSK", .speed = "5/6"},
{.modulation = "8PSK", .speed = "8/9"}, {.modulation = "8PSK", .speed = "8/9"},
{.modulation = "8PSK", .speed = "9/10"}, {.modulation = "8PSK", .speed = "9/10"},
{.modulation = "16APSK", .speed = "2/3"}, {.modulation = "16APSK", .speed = "2/3"},
{.modulation = "16APSK", .speed = "3/4"}, {.modulation = "16APSK", .speed = "3/4"},
{.modulation = "16APSK", .speed = "4/5"}, {.modulation = "16APSK", .speed = "4/5"},
{.modulation = "16APSK", .speed = "5/6"}, {.modulation = "16APSK", .speed = "5/6"},
{.modulation = "16APSK", .speed = "8/9"}, {.modulation = "16APSK", .speed = "8/9"},
{.modulation = "16APSK", .speed = "9/10"}, {.modulation = "16APSK", .speed = "9/10"},
{.modulation = "32APSK", .speed = "3/4"}, {.modulation = "32APSK", .speed = "3/4"},
{.modulation = "32APSK", .speed = "4/5"}, {.modulation = "32APSK", .speed = "4/5"},
{.modulation = "32APSK", .speed = "5/6"}, {.modulation = "32APSK", .speed = "5/6"},
{.modulation = "32APSK", .speed = "8/9"}, {.modulation = "32APSK", .speed = "8/9"},
{.modulation = "32APSK", .speed = "9/10"}, {.modulation = "32APSK", .speed = "9/10"},
}; };
const _modcodDef* d = defs;
static const char* extractModcodModulation(uint32_t modcod, bool defaultQpsk1_4 = true) {
modcod >>= 2;
const auto* d = defaultQpsk1_4 ? defs : defs + 1;
if (modcod < 28) { if (modcod < 28) {
d = defs + modcod; d = defs + modcod;
} }
return d->modulation;
} }
static const char* extractModcodSpeed(uint32_t modcod, bool defaultQpsk1_4 = true) {
modcod >>= 2;
const auto* d = defaultQpsk1_4 ? defs : defs + 1;
if (modcod < 28) {
d = defs + modcod;
}
return d->speed;
}
#endif
std::string api_driver::ApiDriver::loadSettings() const { std::string api_driver::ApiDriver::loadSettings() const {
if (daemon == nullptr) { if (daemon == nullptr) {
return R"({"error": "api daemon not started!"})"; return R"({"error": "api daemon not started!"})";
@ -858,91 +871,92 @@ std::string api_driver::ApiDriver::loadSettings() const {
daemon->getNetworkSettings(network); daemon->getNetworkSettings(network);
std::stringstream result; std::stringstream result;
result << "{\n\"txAutoStart\":" << boolAsStr(modSettings.is_save_current_state);
#ifdef MODEM_IS_SCPC #ifdef MODEM_IS_SCPC
result << "{\n\"isCinC\":" << boolAsStr(modSettings.is_cinc);
result << ",\"txEn\":" << boolAsStr(modSettings.tx_is_on);
result << ",\"txModulatorIsTest\":" << boolAsStr(!modSettings.is_carrier); result << ",\"txModulatorIsTest\":" << boolAsStr(!modSettings.is_carrier);
result << ",\"txAutoStart\":" << boolAsStr(modSettings.is_save_current_state); #endif
result << ",\"txIsTestInput\":" << boolAsStr(modSettings.is_test_data); result << ",\"txIsTestInput\":" << boolAsStr(modSettings.is_test_data);
result << ",\n\"txAttenuation\":"; writeDouble(result, modSettings.attenuation); result << ",\"txCentralFreq\":"; writeDouble(result, modSettings.central_freq_in_kGz);
result << ",\"txRolloff\":" << static_cast<int>(modSettings.rollof * 100);
result << ",\"txBaudrate\":" << modSettings.baudrate; result << ",\"txBaudrate\":" << modSettings.baudrate;
result << ",\"txCentralFreq\":"; writeDouble(result, modSettings.central_freq_in_kGz, 3); result << ",\"txRolloff\":" << static_cast<int>(modSettings.rollof * 100);
result << ",\"dvbs2.frameSizeNormal\":" << boolAsStr(!(modSettings.modcod_tx & 2)); #ifdef MODEM_IS_SCPC
result << ",\"dvbs2.ccm_modcod\":" << (modSettings.modcod_tx >> 2); // result << ",\"txGoldan\":" << static_cast<int>(modSettings.qold_seq_is_active); // TODO обновить библиотеку
#endif
result << ",\"txAttenuation\":"; writeDouble(result, modSettings.attenuation);
// result << ",\"dvbs2.isPilots\":" << "null"; #ifdef MODEM_IS_SCPC
result << ",\n\"dvbIsAcm\":" << boolAsStr(acmSettings.enable); result << ",\n\"isCinC\":" << boolAsStr(modSettings.is_cinc);
result << ",\"dvbs2.acm_maxModcod\":" << (acmSettings.max_modcod >> 2); result << ",\n\"dvbServicePacketPeriod\":" << acmSettings.period_pack;
result << ",\"dvbs2.acm_minModcod\":" << (acmSettings.min_modcod >> 2); result << ",\"dvbIsAcm\":" << boolAsStr(acmSettings.enable);
result << ",\"dvbs2.snrReserve\":"; writeDouble(result, acmSettings.snr_treashold_acm); result << ",\"txFrameSizeNormal\":" << boolAsStr((modSettings.modcod_tx & 2) == 0);
result << ",\"dvbServicePacketPeriod\":" << acmSettings.period_pack;
result << ",\n\"acm.en\":" << boolAsStr(acmSettings.enable_auto_atten); result << R"(,"dvbCcmModulation":")" << extractModcodModulation(modSettings.modcod_tx) << "\"";
result << ",\"acm.maxAttenuation\":"; writeDouble(result, acmSettings.max_attenuation); result << R"(,"dvbCcmSpeed":")" << extractModcodSpeed(modSettings.modcod_tx) << "\"";
result << ",\"acm.minAttenuation\":"; writeDouble(result, acmSettings.min_attenuation); result << R"(,"dvbAcmMinModulation":")" << extractModcodModulation(acmSettings.min_modcod) << "\"";
result << ",\"acm.requiredSnr\":"; writeDouble(result, acmSettings.snr_treashold); result << R"(,"dvbAcmMinSpeed":")" << extractModcodSpeed(acmSettings.min_modcod) << "\"";
result << R"(,"dvbAcmMaxModulation":")" << extractModcodModulation(acmSettings.max_modcod) << "\"";
result << R"(,"dvbAcmMaxSpeed":")" << extractModcodSpeed(acmSettings.max_modcod) << "\"";
result << ",\"dvbSnrReserve\":"; writeDouble(result, acmSettings.snr_treashold_acm);
result << ",\n\"rx.gainMode\":" << (demodSettings.is_aru_on ? "\"auto\"" : "\"manual\""); result << ",\n\"aupcEn\":" << boolAsStr(acmSettings.enable_auto_atten);
result << ",\"rx.manualGain\":"; writeDouble(result, demodSettings.gain); result << ",\"aupcMinAttenuation\":"; writeDouble(result, acmSettings.min_attenuation);
result << ",\"rx.spectrumInversion\":" << boolAsStr(demodSettings.is_rvt_iq); result << ",\"aupcMaxAttenuation\":"; writeDouble(result, acmSettings.max_attenuation);
result << ",\"rx.rolloff\":" << static_cast<int>(demodSettings.rollof * 100); result << ",\"aupcRequiredSnr\":"; writeDouble(result, acmSettings.snr_treashold);
result << ",\"rx.cymRate\":" << demodSettings.baudrate;
result << ",\"rx.centerFreq\":"; writeDouble(result, demodSettings.central_freq_in_kGz);
result << ",\n\"cinc.mode\":" << (dpdiSettings.is_delay_window ? "\"delay\"" : "\"positional\""); result << ",\n\"cincIsPositional\":" << boolAsStr(!dpdiSettings.is_delay_window);
result << ",\"cinc.searchBandwidth\":" << dpdiSettings.freq_offset; // полоса поиска в кГц result << ",\"cincSearchBandwidth\":" << dpdiSettings.freq_offset; // полоса поиска в кГц
result << ",\"cinc.position.station.latitude\":"; writeDouble(result, translateCoordinates(dpdiSettings.latitude_station_grad, dpdiSettings.latitude_station_minute), 6); result << ",\"cincPositionStationLatitude\":"; writeDouble(result, translateCoordinates(dpdiSettings.latitude_station_grad, dpdiSettings.latitude_station_minute), 6);
result << ",\"cinc.position.station.longitude\":"; writeDouble(result, translateCoordinates(dpdiSettings.longitude_station_grad, dpdiSettings.longitude_station_minute), 6); result << ",\"cincPositionStationLongitude\":"; writeDouble(result, translateCoordinates(dpdiSettings.longitude_station_grad, dpdiSettings.longitude_station_minute), 6);
result << ",\"cinc.position.satelliteLongitude\":"; writeDouble(result, translateCoordinates(dpdiSettings.longitude_sattelite_grad, dpdiSettings.longitude_sattelite_minute), 6); result << ",\"cincPositionSatelliteLongitude\":"; writeDouble(result, translateCoordinates(dpdiSettings.longitude_sattelite_grad, dpdiSettings.longitude_sattelite_minute), 6);
result << ",\"cinc.delayMin\":" << dpdiSettings.min_delay; result << ",\"cincDelayMin\":" << dpdiSettings.min_delay;
result << ",\"cinc.delayMax\":" << dpdiSettings.max_delay; result << ",\"cincDelayMax\":" << dpdiSettings.max_delay;
#else
result << "{\n\"tx.txEn\":" << boolAsStr(modSettings.tx_is_on);
result << ",\"tx.isTestInputData\":" << boolAsStr(modSettings.is_test_data);
result << ",\"tx.cymRate\":" << modSettings.baudrate;
result << ",\"tx.centerFreq\":"; writeDouble(result, modSettings.central_freq_in_kGz, 3);
result << ",\"tx.attenuation\":"; writeDouble(result, modSettings.attenuation);
result << ",\n\"rx.gainMode\":" << (demodSettings.is_aru_on ? "\"auto\"" : "\"manual\"");
result << ",\"rx.manualGain\":"; writeDouble(result, demodSettings.gain);
result << ",\"rx.spectrumInversion\":" << boolAsStr(demodSettings.is_rvt_iq);
result << ",\"rx.rolloff\":" << static_cast<int>(demodSettings.rollof * 100);
result << ",\"rx.cymRate\":" << demodSettings.baudrate;
result << ",\"rx.centerFreq\":"; writeDouble(result, demodSettings.central_freq_in_kGz);
#endif #endif
result << ",\n\"buc.refClk10M\":" << boolAsStr(bucLnb.is_ref_10MHz_buc); result << ",\n\"rxAgcEn\":" << boolAsStr(demodSettings.is_aru_on);
result << ",\"rxSpectrumInversion\":" << boolAsStr(demodSettings.is_rvt_iq);
result << ",\"rxManualGain\":"; writeDouble(result, demodSettings.gain);
result << ",\"rxCentralFreq\":"; writeDouble(result, demodSettings.central_freq_in_kGz);
result << ",\"rxBaudrate\":" << demodSettings.baudrate;
result << ",\"rxRolloff\":" << static_cast<int>(demodSettings.rollof * 100);
#ifdef MODEM_IS_SCPC
// result << ",\"txGoldan\":" << static_cast<int>(demodSettings.qold_seq_is_active); // TODO обновить библиотеку
#endif
// BUC LNB
result << ",\n\"bucRefClk10M\":" << boolAsStr(bucLnb.is_ref_10MHz_buc);
switch (bucLnb.buc) { switch (bucLnb.buc) {
case voltage_buc::_24V: result << ",\"buc.powering\":24"; break; case voltage_buc::_24V: result << ",\"bucPowering\":24"; break;
case voltage_buc::_48V: result << ",\"buc.powering\":48"; break; #ifdef MODEM_IS_SCPC
case voltage_buc::_48V: result << ",\"bucPowering\":48"; break;
#endif
case voltage_buc::DISABLE: case voltage_buc::DISABLE:
default: result << ",\"buc.powering\":0"; default: result << ",\"bucPowering\":0";
} }
result << ",\n\"lnb.refClk10M\":" << boolAsStr(bucLnb.is_ref_10MHz_lnb); result << ",\"lnbRefClk10M\":" << boolAsStr(bucLnb.is_ref_10MHz_lnb);
switch (bucLnb.lnb) { switch (bucLnb.lnb) {
case voltage_lnb::_13V: result << ",\"lnb.powering\":13"; break; case voltage_lnb::_13V: result << ",\"lnbPowering\":13"; break;
case voltage_lnb::_18V: result << ",\"lnb.powering\":18"; break; case voltage_lnb::_18V: result << ",\"lnbPowering\":18"; break;
case voltage_lnb::_24V: result << ",\"lnb.powering\":24"; break; case voltage_lnb::_24V: result << ",\"lnbPowering\":24"; break;
case voltage_lnb::DISABLE: case voltage_lnb::DISABLE:
default: result << ",\"lnb.powering\":0"; default: result << ",\"lnbPowering\":0";
} }
result << ",\n\"serviceSettings.refClk10M\":" << boolAsStr(bucLnb.is_ref_10MHz_output); result << ",\"srvRefClk10M\":" << boolAsStr(bucLnb.is_ref_10MHz_output);
result << ",\"serviceSettings.autoStart\":" << boolAsStr(bucLnb.is_save_current_state); result << ",\"bucLnbAutoStart\":" << boolAsStr(bucLnb.is_save_current_state);
// QoS
bool qosEnabled = false; std::string qosClasses; bool qosEnabled = false; std::string qosClasses;
daemon->getQosSettings(qosEnabled, qosClasses); daemon->getQosSettings(qosEnabled, qosClasses);
result << ",\n\"qos.enabled\":" << boolAsStr(qosEnabled); result << ",\n\"qosEnabled\":" << boolAsStr(qosEnabled);
result << ",\"qos.profile\":" << qosClasses; result << ",\"qosProfile\":" << qosClasses;
// сеть // сеть
result << ",\"network.managementIp\":\n" << buildEscapedString(network.managementIp); result << ",\"netManagementIp\":\n" << buildEscapedString(network.managementIp);
result << ",\"network.managementGateway\":\n" << buildEscapedString(network.managementGateway); result << ",\"netIsL2\":\n" << boolAsStr(network.isL2);
result << ",\"network.mode\":\n" << buildEscapedString(network.mode); result << ",\"netManagementGateway\":\n" << buildEscapedString(network.managementGateway);
result << ",\"network.dataIp\":\n" << buildEscapedString(network.dataIp); result << ",\"netDataIp\":\n" << buildEscapedString(network.dataIp);
result << ",\"network.dataMtu\":\n" << network.dataMtu; result << ",\"netDataMtu\":\n" << network.dataMtu;
result << "}"; result << "}";
return result.str(); return result.str();
@ -969,11 +983,14 @@ void api_driver::ApiDriver::setRxTxSettings(boost::property_tree::ptree &pt) {
demodulator_settings demod{}; demodulator_settings demod{};
#ifdef MODEM_IS_SCPC #ifdef MODEM_IS_SCPC
ACM_parameters_serv_ acm{}; ACM_parameters_serv_ acm{};
daemon->getSettings(&mod, &demod, &acm, nullptr, nullptr);
#else
daemon->getSettings(&mod, &demod, nullptr);
#endif #endif
// для модулятора // для модулятора
#ifdef MODEM_IS_SCPC #ifdef MODEM_IS_SCPC
mod.is_cinc = pt.get<bool>(json_path("general.isCinC", '/')); mod.is_cinc = pt.get<bool>("isCinC");
mod.tx_is_on = pt.get<bool>(json_path("general.txEn", '/')); mod.tx_is_on = pt.get<bool>(json_path("general.txEn", '/'));
auto tmp = pt.get<std::string>(json_path("general.modulatorMode", '/')); auto tmp = pt.get<std::string>(json_path("general.modulatorMode", '/'));
if (tmp == "normal") { mod.is_carrier = true; } if (tmp == "normal") { mod.is_carrier = true; }
@ -1109,7 +1126,7 @@ void api_driver::ApiDriver::setNetworkSettings(boost::property_tree::ptree &pt)
TerminalNetworkSettings s; TerminalNetworkSettings s;
s.managementIp = pt.get<std::string>(json_path("network.managementIp", '/')); s.managementIp = pt.get<std::string>(json_path("network.managementIp", '/'));
s.managementGateway = pt.get<std::string>(json_path("network.managementGateway", '/')); s.managementGateway = pt.get<std::string>(json_path("network.managementGateway", '/'));
s.mode = pt.get<std::string>(json_path("network.mode", '/')); s.isL2 = pt.get<bool>(json_path("network.mode", '/'));
s.dataIp = pt.get<std::string>(json_path("network.dataIp", '/')); s.dataIp = pt.get<std::string>(json_path("network.dataIp", '/'));
s.dataMtu = pt.get<unsigned int>(json_path("network.dataMtu", '/')); s.dataMtu = pt.get<unsigned int>(json_path("network.dataMtu", '/'));

View File

@ -162,7 +162,7 @@
</select> </select>
</label> </label>
<h3>Параметры передачи</h3> <h3>Параметры передачи</h3>
<label><span>Центральная частота, КГц</span><input type="number" v-model="paramRxtx.txCentralFreq" min="900000" step="1"/></label> <label><span>Центральная частота, КГц</span><input type="number" v-model="paramRxtx.txCentralFreq" min="900000" step="0.01"/></label>
<label><span>Символьная скорость, Бод</span><input type="number" v-model="paramRxtx.txBaudrate" step="1"/></label> <label><span>Символьная скорость, Бод</span><input type="number" v-model="paramRxtx.txBaudrate" step="1"/></label>
<label> <label>
<span>Roll-off</span> <span>Roll-off</span>
@ -253,11 +253,11 @@
<h3>Авто-регулировка мощности</h3> <h3>Авто-регулировка мощности</h3>
<label> <label>
<span>Авто-регулировка мощности</span> <span>Авто-регулировка мощности</span>
<span class="toggle-input"><input type="checkbox" v-model="paramRxtx.acmEn" /><span class="slider"></span></span> <span class="toggle-input"><input type="checkbox" v-model="paramRxtx.aupcEn" /><span class="slider"></span></span>
</label> </label>
<label><span>Минимальное ослабление, дБ</span><input type="number" v-model="paramRxtx.acmMinAttenuation" max="10" step="0.01"/></label> <label><span>Минимальное ослабление, дБ</span><input type="number" v-model="paramRxtx.aupcMinAttenuation" max="10" step="0.01"/></label>
<label><span>Максимальное ослабление, дБ</span><input type="number" v-model="paramRxtx.acmMaxAttenuation" max="10" step="0.01"/></label> <label><span>Максимальное ослабление, дБ</span><input type="number" v-model="paramRxtx.aupcMaxAttenuation" max="10" step="0.01"/></label>
<label><span>Требуемое ОСШ</span><input type="number" v-model="paramRxtx.acmRequiredSnr" max="10" step="0.01"/></label> <label><span>Требуемое ОСШ</span><input type="number" v-model="paramRxtx.aupcRequiredSnr" max="10" step="0.01"/></label>
</div> </div>
<div class="settings-set-container"> <div class="settings-set-container">
<h3>Настройки приемника</h3> <h3>Настройки приемника</h3>
@ -273,7 +273,7 @@
<span>Инверсия спектра</span> <span>Инверсия спектра</span>
<span class="toggle-input"><input type="checkbox" v-model="paramRxtx.rxSpectrumInversion" /><span class="slider"></span></span> <span class="toggle-input"><input type="checkbox" v-model="paramRxtx.rxSpectrumInversion" /><span class="slider"></span></span>
</label> </label>
<label><span>Центральная частота, КГц</span><input type="number" v-model="paramRxtx.rxCentralFreq" min="900000" step="1"/></label> <label><span>Центральная частота, КГц</span><input type="number" v-model="paramRxtx.rxCentralFreq" min="900000" step="0.01"/></label>
<label><span>Символьная скорость, Бод</span><input type="number" v-model="paramRxtx.rxBaudrate" step="1"/></label> <label><span>Символьная скорость, Бод</span><input type="number" v-model="paramRxtx.rxBaudrate" step="1"/></label>
<label> <label>
<span>Roll-off</span> <span>Roll-off</span>
@ -559,64 +559,64 @@
// ========== include from 'common/all-params-data.js.j2' // ========== include from 'common/all-params-data.js.j2'
paramRxtx: { paramRxtx: {
acmEn: false, isCinC: false,
acmMaxAttenuation: 0, txEn: false,
acmMinAttenuation: 0, txAutoStart: false,
acmRequiredSnr: 0, txModulatorIsTest: false,
dvbAcmMaxModulation: "QPSK", txIsTestInput: false,
dvbAcmMaxSpeed: "1/4", txCentralFreq: 900000,
dvbAcmMinModulation: "QPSK", txBaudrate: 0,
dvbAcmMinSpeed: "1/4", txRolloff: 2,
txGoldan: 0,
txAttenuation: 0,
dvbServicePacketPeriod: 0,
dvbIsAcm: false,
txFrameSizeNormal: true,
dvbCcmModulation: "QPSK", dvbCcmModulation: "QPSK",
dvbCcmSpeed: "1/4", dvbCcmSpeed: "1/4",
dvbIsAcm: false, dvbAcmMinModulation: "QPSK",
dvbServicePacketPeriod: 0, dvbAcmMinSpeed: "1/4",
dvbAcmMaxModulation: "QPSK",
dvbAcmMaxSpeed: "1/4",
dvbSnrReserve: 0, dvbSnrReserve: 0,
isCinC: false, aupcEn: false,
aupcMinAttenuation: 0,
aupcMaxAttenuation: 0,
aupcRequiredSnr: 0,
rxAgcEn: false, rxAgcEn: false,
rxBaudrate: 0,
rxCentralFreq: 900000,
rxGoldan: 0,
rxManualGain: -40, rxManualGain: -40,
rxRolloff: 2,
rxSpectrumInversion: false, rxSpectrumInversion: false,
txAttenuation: 0, rxCentralFreq: 900000,
txAutoStart: false, rxBaudrate: 0,
txBaudrate: 0, rxRolloff: 2,
txCentralFreq: 900000, rxGoldan: 0,
txEn: false,
txFrameSizeNormal: true,
txGoldan: 0,
txIsTestInput: false,
txModulatorIsTest: false,
txRolloff: 2,
}, },
paramCinc: { paramCinc: {
cincDelayMax: 0,
cincDelayMin: 0,
cincIsPositional: true, cincIsPositional: true,
cincPositionSatelliteLongitude: -180, cincSearchBandwidth: 0,
cincPositionStationLatitude: -180, cincPositionStationLatitude: -180,
cincPositionStationLongitude: -180, cincPositionStationLongitude: -180,
cincSearchBandwidth: 0, cincPositionSatelliteLongitude: -180,
cincDelayMin: 0,
cincDelayMax: 0,
}, },
paramBuclnb: { paramBuclnb: {
bucLnbAutoStart: false,
bucPowering: 0,
bucRefClk10M: false, bucRefClk10M: false,
lnbPowering: 0, bucPowering: 0,
lnbRefClk10M: false, lnbRefClk10M: false,
lnbPowering: 0,
srvRefClk10M: false, srvRefClk10M: false,
bucLnbAutoStart: false,
}, },
paramTcpaccel: { paramTcpaccel: {
accelEn: false, accelEn: false,
accelMaxConnections: 0, accelMaxConnections: 0,
}, },
paramNetwork: { paramNetwork: {
netManagementIp: null,
netIsL2: false,
netDataIp: null, netDataIp: null,
netDataMtu: 1500, netDataMtu: 1500,
netIsL2: false,
netManagementIp: null,
}, },
// ========== include end from 'common/all-params-data.js.j2' // ========== include end from 'common/all-params-data.js.j2'
@ -739,37 +739,37 @@
if (this.submitStatus.rxtx) { return } if (this.submitStatus.rxtx) { return }
let query = { let query = {
"acmEn": this.paramRxtx.acmEn, "isCinC": this.paramRxtx.isCinC,
"acmMaxAttenuation": this.paramRxtx.acmMaxAttenuation, "txEn": this.paramRxtx.txEn,
"acmMinAttenuation": this.paramRxtx.acmMinAttenuation, "txAutoStart": this.paramRxtx.txAutoStart,
"acmRequiredSnr": this.paramRxtx.acmRequiredSnr, "txModulatorIsTest": this.paramRxtx.txModulatorIsTest,
"dvbAcmMaxModulation": this.paramRxtx.dvbAcmMaxModulation, "txIsTestInput": this.paramRxtx.txIsTestInput,
"dvbAcmMaxSpeed": this.paramRxtx.dvbAcmMaxSpeed, "txCentralFreq": this.paramRxtx.txCentralFreq,
"dvbAcmMinModulation": this.paramRxtx.dvbAcmMinModulation, "txBaudrate": this.paramRxtx.txBaudrate,
"dvbAcmMinSpeed": this.paramRxtx.dvbAcmMinSpeed, "txRolloff": this.paramRxtx.txRolloff,
"txGoldan": this.paramRxtx.txGoldan,
"txAttenuation": this.paramRxtx.txAttenuation,
"dvbServicePacketPeriod": this.paramRxtx.dvbServicePacketPeriod,
"dvbIsAcm": this.paramRxtx.dvbIsAcm,
"txFrameSizeNormal": this.paramRxtx.txFrameSizeNormal,
"dvbCcmModulation": this.paramRxtx.dvbCcmModulation, "dvbCcmModulation": this.paramRxtx.dvbCcmModulation,
"dvbCcmSpeed": this.paramRxtx.dvbCcmSpeed, "dvbCcmSpeed": this.paramRxtx.dvbCcmSpeed,
"dvbIsAcm": this.paramRxtx.dvbIsAcm, "dvbAcmMinModulation": this.paramRxtx.dvbAcmMinModulation,
"dvbServicePacketPeriod": this.paramRxtx.dvbServicePacketPeriod, "dvbAcmMinSpeed": this.paramRxtx.dvbAcmMinSpeed,
"dvbAcmMaxModulation": this.paramRxtx.dvbAcmMaxModulation,
"dvbAcmMaxSpeed": this.paramRxtx.dvbAcmMaxSpeed,
"dvbSnrReserve": this.paramRxtx.dvbSnrReserve, "dvbSnrReserve": this.paramRxtx.dvbSnrReserve,
"isCinC": this.paramRxtx.isCinC, "aupcEn": this.paramRxtx.aupcEn,
"aupcMinAttenuation": this.paramRxtx.aupcMinAttenuation,
"aupcMaxAttenuation": this.paramRxtx.aupcMaxAttenuation,
"aupcRequiredSnr": this.paramRxtx.aupcRequiredSnr,
"rxAgcEn": this.paramRxtx.rxAgcEn, "rxAgcEn": this.paramRxtx.rxAgcEn,
"rxBaudrate": this.paramRxtx.rxBaudrate,
"rxCentralFreq": this.paramRxtx.rxCentralFreq,
"rxGoldan": this.paramRxtx.rxGoldan,
"rxManualGain": this.paramRxtx.rxManualGain, "rxManualGain": this.paramRxtx.rxManualGain,
"rxRolloff": this.paramRxtx.rxRolloff,
"rxSpectrumInversion": this.paramRxtx.rxSpectrumInversion, "rxSpectrumInversion": this.paramRxtx.rxSpectrumInversion,
"txAttenuation": this.paramRxtx.txAttenuation, "rxCentralFreq": this.paramRxtx.rxCentralFreq,
"txAutoStart": this.paramRxtx.txAutoStart, "rxBaudrate": this.paramRxtx.rxBaudrate,
"txBaudrate": this.paramRxtx.txBaudrate, "rxRolloff": this.paramRxtx.rxRolloff,
"txCentralFreq": this.paramRxtx.txCentralFreq, "rxGoldan": this.paramRxtx.rxGoldan,
"txEn": this.paramRxtx.txEn,
"txFrameSizeNormal": this.paramRxtx.txFrameSizeNormal,
"txGoldan": this.paramRxtx.txGoldan,
"txIsTestInput": this.paramRxtx.txIsTestInput,
"txModulatorIsTest": this.paramRxtx.txModulatorIsTest,
"txRolloff": this.paramRxtx.txRolloff,
} }
this.submitStatus.rxtx = true this.submitStatus.rxtx = true
@ -782,13 +782,13 @@
if (this.submitStatus.cinc) { return } if (this.submitStatus.cinc) { return }
let query = { let query = {
"cincDelayMax": this.paramCinc.cincDelayMax,
"cincDelayMin": this.paramCinc.cincDelayMin,
"cincIsPositional": this.paramCinc.cincIsPositional, "cincIsPositional": this.paramCinc.cincIsPositional,
"cincPositionSatelliteLongitude": this.paramCinc.cincPositionSatelliteLongitude, "cincSearchBandwidth": this.paramCinc.cincSearchBandwidth,
"cincPositionStationLatitude": this.paramCinc.cincPositionStationLatitude, "cincPositionStationLatitude": this.paramCinc.cincPositionStationLatitude,
"cincPositionStationLongitude": this.paramCinc.cincPositionStationLongitude, "cincPositionStationLongitude": this.paramCinc.cincPositionStationLongitude,
"cincSearchBandwidth": this.paramCinc.cincSearchBandwidth, "cincPositionSatelliteLongitude": this.paramCinc.cincPositionSatelliteLongitude,
"cincDelayMin": this.paramCinc.cincDelayMin,
"cincDelayMax": this.paramCinc.cincDelayMax,
} }
this.submitStatus.cinc = true this.submitStatus.cinc = true
@ -802,12 +802,12 @@
{ if (!confirm("Применение неправильных настроек может вывести из строя оборудование! Продолжить?")) return } { if (!confirm("Применение неправильных настроек может вывести из строя оборудование! Продолжить?")) return }
let query = { let query = {
"bucLnbAutoStart": this.paramBuclnb.bucLnbAutoStart,
"bucPowering": this.paramBuclnb.bucPowering,
"bucRefClk10M": this.paramBuclnb.bucRefClk10M, "bucRefClk10M": this.paramBuclnb.bucRefClk10M,
"lnbPowering": this.paramBuclnb.lnbPowering, "bucPowering": this.paramBuclnb.bucPowering,
"lnbRefClk10M": this.paramBuclnb.lnbRefClk10M, "lnbRefClk10M": this.paramBuclnb.lnbRefClk10M,
"lnbPowering": this.paramBuclnb.lnbPowering,
"srvRefClk10M": this.paramBuclnb.srvRefClk10M, "srvRefClk10M": this.paramBuclnb.srvRefClk10M,
"bucLnbAutoStart": this.paramBuclnb.bucLnbAutoStart,
} }
this.submitStatus.buclnb = true this.submitStatus.buclnb = true
@ -835,10 +835,10 @@
{ if (!confirm("Применение этих настроек может сделать модем недоступным! Продолжить?")) return } { if (!confirm("Применение этих настроек может сделать модем недоступным! Продолжить?")) return }
let query = { let query = {
"netManagementIp": this.paramNetwork.netManagementIp,
"netIsL2": this.paramNetwork.netIsL2,
"netDataIp": this.paramNetwork.netDataIp, "netDataIp": this.paramNetwork.netDataIp,
"netDataMtu": this.paramNetwork.netDataMtu, "netDataMtu": this.paramNetwork.netDataMtu,
"netIsL2": this.paramNetwork.netIsL2,
"netManagementIp": this.paramNetwork.netManagementIp,
} }
this.submitStatus.network = true this.submitStatus.network = true
@ -850,56 +850,56 @@
updateRxtxSettings(vals) { updateRxtxSettings(vals) {
this.submitStatus.rxtx = false this.submitStatus.rxtx = false
this.paramRxtx.acmEn = vals["settings"]["acmEn"] this.paramRxtx.isCinC = vals["settings"]["isCinC"]
this.paramRxtx.acmMaxAttenuation = vals["settings"]["acmMaxAttenuation"] this.paramRxtx.txEn = vals["settings"]["txEn"]
this.paramRxtx.acmMinAttenuation = vals["settings"]["acmMinAttenuation"] this.paramRxtx.txAutoStart = vals["settings"]["txAutoStart"]
this.paramRxtx.acmRequiredSnr = vals["settings"]["acmRequiredSnr"] this.paramRxtx.txModulatorIsTest = vals["settings"]["txModulatorIsTest"]
this.paramRxtx.dvbAcmMaxModulation = vals["settings"]["dvbAcmMaxModulation"] this.paramRxtx.txIsTestInput = vals["settings"]["txIsTestInput"]
this.paramRxtx.dvbAcmMaxSpeed = vals["settings"]["dvbAcmMaxSpeed"] this.paramRxtx.txCentralFreq = vals["settings"]["txCentralFreq"]
this.paramRxtx.dvbAcmMinModulation = vals["settings"]["dvbAcmMinModulation"] this.paramRxtx.txBaudrate = vals["settings"]["txBaudrate"]
this.paramRxtx.dvbAcmMinSpeed = vals["settings"]["dvbAcmMinSpeed"] this.paramRxtx.txRolloff = vals["settings"]["txRolloff"]
this.paramRxtx.txGoldan = vals["settings"]["txGoldan"]
this.paramRxtx.txAttenuation = vals["settings"]["txAttenuation"]
this.paramRxtx.dvbServicePacketPeriod = vals["settings"]["dvbServicePacketPeriod"]
this.paramRxtx.dvbIsAcm = vals["settings"]["dvbIsAcm"]
this.paramRxtx.txFrameSizeNormal = vals["settings"]["txFrameSizeNormal"]
this.paramRxtx.dvbCcmModulation = vals["settings"]["dvbCcmModulation"] this.paramRxtx.dvbCcmModulation = vals["settings"]["dvbCcmModulation"]
this.paramRxtx.dvbCcmSpeed = vals["settings"]["dvbCcmSpeed"] this.paramRxtx.dvbCcmSpeed = vals["settings"]["dvbCcmSpeed"]
this.paramRxtx.dvbIsAcm = vals["settings"]["dvbIsAcm"] this.paramRxtx.dvbAcmMinModulation = vals["settings"]["dvbAcmMinModulation"]
this.paramRxtx.dvbServicePacketPeriod = vals["settings"]["dvbServicePacketPeriod"] this.paramRxtx.dvbAcmMinSpeed = vals["settings"]["dvbAcmMinSpeed"]
this.paramRxtx.dvbAcmMaxModulation = vals["settings"]["dvbAcmMaxModulation"]
this.paramRxtx.dvbAcmMaxSpeed = vals["settings"]["dvbAcmMaxSpeed"]
this.paramRxtx.dvbSnrReserve = vals["settings"]["dvbSnrReserve"] this.paramRxtx.dvbSnrReserve = vals["settings"]["dvbSnrReserve"]
this.paramRxtx.isCinC = vals["settings"]["isCinC"] this.paramRxtx.aupcEn = vals["settings"]["aupcEn"]
this.paramRxtx.aupcMinAttenuation = vals["settings"]["aupcMinAttenuation"]
this.paramRxtx.aupcMaxAttenuation = vals["settings"]["aupcMaxAttenuation"]
this.paramRxtx.aupcRequiredSnr = vals["settings"]["aupcRequiredSnr"]
this.paramRxtx.rxAgcEn = vals["settings"]["rxAgcEn"] this.paramRxtx.rxAgcEn = vals["settings"]["rxAgcEn"]
this.paramRxtx.rxBaudrate = vals["settings"]["rxBaudrate"]
this.paramRxtx.rxCentralFreq = vals["settings"]["rxCentralFreq"]
this.paramRxtx.rxGoldan = vals["settings"]["rxGoldan"]
this.paramRxtx.rxManualGain = vals["settings"]["rxManualGain"] this.paramRxtx.rxManualGain = vals["settings"]["rxManualGain"]
this.paramRxtx.rxRolloff = vals["settings"]["rxRolloff"]
this.paramRxtx.rxSpectrumInversion = vals["settings"]["rxSpectrumInversion"] this.paramRxtx.rxSpectrumInversion = vals["settings"]["rxSpectrumInversion"]
this.paramRxtx.txAttenuation = vals["settings"]["txAttenuation"] this.paramRxtx.rxCentralFreq = vals["settings"]["rxCentralFreq"]
this.paramRxtx.txAutoStart = vals["settings"]["txAutoStart"] this.paramRxtx.rxBaudrate = vals["settings"]["rxBaudrate"]
this.paramRxtx.txBaudrate = vals["settings"]["txBaudrate"] this.paramRxtx.rxRolloff = vals["settings"]["rxRolloff"]
this.paramRxtx.txCentralFreq = vals["settings"]["txCentralFreq"] this.paramRxtx.rxGoldan = vals["settings"]["rxGoldan"]
this.paramRxtx.txEn = vals["settings"]["txEn"]
this.paramRxtx.txFrameSizeNormal = vals["settings"]["txFrameSizeNormal"]
this.paramRxtx.txGoldan = vals["settings"]["txGoldan"]
this.paramRxtx.txIsTestInput = vals["settings"]["txIsTestInput"]
this.paramRxtx.txModulatorIsTest = vals["settings"]["txModulatorIsTest"]
this.paramRxtx.txRolloff = vals["settings"]["txRolloff"]
}, },
updateCincSettings(vals) { updateCincSettings(vals) {
this.submitStatus.cinc = false this.submitStatus.cinc = false
this.paramCinc.cincDelayMax = vals["settings"]["cincDelayMax"]
this.paramCinc.cincDelayMin = vals["settings"]["cincDelayMin"]
this.paramCinc.cincIsPositional = vals["settings"]["cincIsPositional"] this.paramCinc.cincIsPositional = vals["settings"]["cincIsPositional"]
this.paramCinc.cincPositionSatelliteLongitude = vals["settings"]["cincPositionSatelliteLongitude"] this.paramCinc.cincSearchBandwidth = vals["settings"]["cincSearchBandwidth"]
this.paramCinc.cincPositionStationLatitude = vals["settings"]["cincPositionStationLatitude"] this.paramCinc.cincPositionStationLatitude = vals["settings"]["cincPositionStationLatitude"]
this.paramCinc.cincPositionStationLongitude = vals["settings"]["cincPositionStationLongitude"] this.paramCinc.cincPositionStationLongitude = vals["settings"]["cincPositionStationLongitude"]
this.paramCinc.cincSearchBandwidth = vals["settings"]["cincSearchBandwidth"] this.paramCinc.cincPositionSatelliteLongitude = vals["settings"]["cincPositionSatelliteLongitude"]
this.paramCinc.cincDelayMin = vals["settings"]["cincDelayMin"]
this.paramCinc.cincDelayMax = vals["settings"]["cincDelayMax"]
}, },
updateBuclnbSettings(vals) { updateBuclnbSettings(vals) {
this.submitStatus.buclnb = false this.submitStatus.buclnb = false
this.paramBuclnb.bucLnbAutoStart = vals["settings"]["bucLnbAutoStart"]
this.paramBuclnb.bucPowering = vals["settings"]["bucPowering"]
this.paramBuclnb.bucRefClk10M = vals["settings"]["bucRefClk10M"] this.paramBuclnb.bucRefClk10M = vals["settings"]["bucRefClk10M"]
this.paramBuclnb.lnbPowering = vals["settings"]["lnbPowering"] this.paramBuclnb.bucPowering = vals["settings"]["bucPowering"]
this.paramBuclnb.lnbRefClk10M = vals["settings"]["lnbRefClk10M"] this.paramBuclnb.lnbRefClk10M = vals["settings"]["lnbRefClk10M"]
this.paramBuclnb.lnbPowering = vals["settings"]["lnbPowering"]
this.paramBuclnb.srvRefClk10M = vals["settings"]["srvRefClk10M"] this.paramBuclnb.srvRefClk10M = vals["settings"]["srvRefClk10M"]
this.paramBuclnb.bucLnbAutoStart = vals["settings"]["bucLnbAutoStart"]
}, },
updateTcpaccelSettings(vals) { updateTcpaccelSettings(vals) {
this.submitStatus.tcpaccel = false this.submitStatus.tcpaccel = false
@ -908,10 +908,10 @@
}, },
updateNetworkSettings(vals) { updateNetworkSettings(vals) {
this.submitStatus.network = false this.submitStatus.network = false
this.paramNetwork.netManagementIp = vals["settings"]["netManagementIp"]
this.paramNetwork.netIsL2 = vals["settings"]["netIsL2"]
this.paramNetwork.netDataIp = vals["settings"]["netDataIp"] this.paramNetwork.netDataIp = vals["settings"]["netDataIp"]
this.paramNetwork.netDataMtu = vals["settings"]["netDataMtu"] this.paramNetwork.netDataMtu = vals["settings"]["netDataMtu"]
this.paramNetwork.netIsL2 = vals["settings"]["netIsL2"]
this.paramNetwork.netManagementIp = vals["settings"]["netManagementIp"]
}, },
// ========== include end from 'common/all-params-methods.js.j2' // ========== include end from 'common/all-params-methods.js.j2'

View File

@ -127,7 +127,7 @@
<option :value="true">Тест</option> <option :value="true">Тест</option>
</select> </select>
</label> </label>
<label><span>Центральная частота, КГц</span><input type="number" v-model="paramRxtx.txCentralFreq" min="900000" step="1"/></label> <label><span>Центральная частота, КГц</span><input type="number" v-model="paramRxtx.txCentralFreq" min="900000" step="0.01"/></label>
<label><span>Символьная скорость, Бод</span><input type="number" v-model="paramRxtx.txBaudrate" step="1"/></label> <label><span>Символьная скорость, Бод</span><input type="number" v-model="paramRxtx.txBaudrate" step="1"/></label>
<label><span>Ослабление, дБ</span><input type="number" v-model="paramRxtx.txAttenuation" step="1"/></label> <label><span>Ослабление, дБ</span><input type="number" v-model="paramRxtx.txAttenuation" step="1"/></label>
</div> </div>
@ -145,7 +145,7 @@
<span class="toggle-input"><input type="checkbox" v-model="paramRxtx.rxSpectrumInversion" /><span class="slider"></span></span> <span class="toggle-input"><input type="checkbox" v-model="paramRxtx.rxSpectrumInversion" /><span class="slider"></span></span>
</label> </label>
<label v-show="!paramRxtx.rxAgcEn"><span>Ручное усиление, дБ</span><input type="number" v-model="paramRxtx.rxManualGain" min="-40"/></label> <label v-show="!paramRxtx.rxAgcEn"><span>Ручное усиление, дБ</span><input type="number" v-model="paramRxtx.rxManualGain" min="-40"/></label>
<label><span>Центральная частота, КГц</span><input type="number" v-model="paramRxtx.rxCentralFreq" min="900000" step="1"/></label> <label><span>Центральная частота, КГц</span><input type="number" v-model="paramRxtx.rxCentralFreq" min="900000" step="0.01"/></label>
<label><span>Символьная скорость, Бод</span><input type="number" v-model="paramRxtx.rxBaudrate" step="1"/></label> <label><span>Символьная скорость, Бод</span><input type="number" v-model="paramRxtx.rxBaudrate" step="1"/></label>
<label> <label>
<span>Roll-off</span> <span>Roll-off</span>
@ -291,31 +291,31 @@
// ========== include from 'common/all-params-data.js.j2' // ========== include from 'common/all-params-data.js.j2'
paramRxtx: { paramRxtx: {
rxAgcEn: true,
rxBaudrate: 0,
rxCentralFreq: 900000,
rxManualGain: -40,
rxRolloff: 2,
rxSpectrumInversion: false,
txAttenuation: 0,
txBaudrate: 0,
txCentralFreq: 900000,
txEn: false, txEn: false,
txIsTestInput: false, txIsTestInput: false,
txCentralFreq: 900000,
txBaudrate: 0,
txAttenuation: 0,
rxAgcEn: true,
rxSpectrumInversion: false,
rxManualGain: -40,
rxCentralFreq: 900000,
rxBaudrate: 0,
rxRolloff: 2,
}, },
paramBuclnb: { paramBuclnb: {
bucLnbAutoStart: false,
bucPowering: 0,
bucRefClk10M: false, bucRefClk10M: false,
lnbPowering: 0, bucPowering: 0,
lnbRefClk10M: false, lnbRefClk10M: false,
lnbPowering: 0,
srvRefClk10M: false, srvRefClk10M: false,
bucLnbAutoStart: false,
}, },
paramNetwork: { paramNetwork: {
netManagementIp: null,
netIsL2: false,
netDataIp: null, netDataIp: null,
netDataMtu: 1500, netDataMtu: 1500,
netIsL2: false,
netManagementIp: null,
}, },
// ========== include end from 'common/all-params-data.js.j2' // ========== include end from 'common/all-params-data.js.j2'
@ -421,17 +421,17 @@
if (this.submitStatus.rxtx) { return } if (this.submitStatus.rxtx) { return }
let query = { let query = {
"rxAgcEn": this.paramRxtx.rxAgcEn,
"rxBaudrate": this.paramRxtx.rxBaudrate,
"rxCentralFreq": this.paramRxtx.rxCentralFreq,
"rxManualGain": this.paramRxtx.rxManualGain,
"rxRolloff": this.paramRxtx.rxRolloff,
"rxSpectrumInversion": this.paramRxtx.rxSpectrumInversion,
"txAttenuation": this.paramRxtx.txAttenuation,
"txBaudrate": this.paramRxtx.txBaudrate,
"txCentralFreq": this.paramRxtx.txCentralFreq,
"txEn": this.paramRxtx.txEn, "txEn": this.paramRxtx.txEn,
"txIsTestInput": this.paramRxtx.txIsTestInput, "txIsTestInput": this.paramRxtx.txIsTestInput,
"txCentralFreq": this.paramRxtx.txCentralFreq,
"txBaudrate": this.paramRxtx.txBaudrate,
"txAttenuation": this.paramRxtx.txAttenuation,
"rxAgcEn": this.paramRxtx.rxAgcEn,
"rxSpectrumInversion": this.paramRxtx.rxSpectrumInversion,
"rxManualGain": this.paramRxtx.rxManualGain,
"rxCentralFreq": this.paramRxtx.rxCentralFreq,
"rxBaudrate": this.paramRxtx.rxBaudrate,
"rxRolloff": this.paramRxtx.rxRolloff,
} }
this.submitStatus.rxtx = true this.submitStatus.rxtx = true
@ -445,12 +445,12 @@
{ if (!confirm("Применение неправильных настроек может вывести из строя оборудование! Продолжить?")) return } { if (!confirm("Применение неправильных настроек может вывести из строя оборудование! Продолжить?")) return }
let query = { let query = {
"bucLnbAutoStart": this.paramBuclnb.bucLnbAutoStart,
"bucPowering": this.paramBuclnb.bucPowering,
"bucRefClk10M": this.paramBuclnb.bucRefClk10M, "bucRefClk10M": this.paramBuclnb.bucRefClk10M,
"lnbPowering": this.paramBuclnb.lnbPowering, "bucPowering": this.paramBuclnb.bucPowering,
"lnbRefClk10M": this.paramBuclnb.lnbRefClk10M, "lnbRefClk10M": this.paramBuclnb.lnbRefClk10M,
"lnbPowering": this.paramBuclnb.lnbPowering,
"srvRefClk10M": this.paramBuclnb.srvRefClk10M, "srvRefClk10M": this.paramBuclnb.srvRefClk10M,
"bucLnbAutoStart": this.paramBuclnb.bucLnbAutoStart,
} }
this.submitStatus.buclnb = true this.submitStatus.buclnb = true
@ -464,10 +464,10 @@
{ if (!confirm("Применение этих настроек может сделать модем недоступным! Продолжить?")) return } { if (!confirm("Применение этих настроек может сделать модем недоступным! Продолжить?")) return }
let query = { let query = {
"netManagementIp": this.paramNetwork.netManagementIp,
"netIsL2": this.paramNetwork.netIsL2,
"netDataIp": this.paramNetwork.netDataIp, "netDataIp": this.paramNetwork.netDataIp,
"netDataMtu": this.paramNetwork.netDataMtu, "netDataMtu": this.paramNetwork.netDataMtu,
"netIsL2": this.paramNetwork.netIsL2,
"netManagementIp": this.paramNetwork.netManagementIp,
} }
this.submitStatus.network = true this.submitStatus.network = true
@ -479,33 +479,33 @@
updateRxtxSettings(vals) { updateRxtxSettings(vals) {
this.submitStatus.rxtx = false this.submitStatus.rxtx = false
this.paramRxtx.rxAgcEn = vals["settings"]["rxAgcEn"]
this.paramRxtx.rxBaudrate = vals["settings"]["rxBaudrate"]
this.paramRxtx.rxCentralFreq = vals["settings"]["rxCentralFreq"]
this.paramRxtx.rxManualGain = vals["settings"]["rxManualGain"]
this.paramRxtx.rxRolloff = vals["settings"]["rxRolloff"]
this.paramRxtx.rxSpectrumInversion = vals["settings"]["rxSpectrumInversion"]
this.paramRxtx.txAttenuation = vals["settings"]["txAttenuation"]
this.paramRxtx.txBaudrate = vals["settings"]["txBaudrate"]
this.paramRxtx.txCentralFreq = vals["settings"]["txCentralFreq"]
this.paramRxtx.txEn = vals["settings"]["txEn"] this.paramRxtx.txEn = vals["settings"]["txEn"]
this.paramRxtx.txIsTestInput = vals["settings"]["txIsTestInput"] this.paramRxtx.txIsTestInput = vals["settings"]["txIsTestInput"]
this.paramRxtx.txCentralFreq = vals["settings"]["txCentralFreq"]
this.paramRxtx.txBaudrate = vals["settings"]["txBaudrate"]
this.paramRxtx.txAttenuation = vals["settings"]["txAttenuation"]
this.paramRxtx.rxAgcEn = vals["settings"]["rxAgcEn"]
this.paramRxtx.rxSpectrumInversion = vals["settings"]["rxSpectrumInversion"]
this.paramRxtx.rxManualGain = vals["settings"]["rxManualGain"]
this.paramRxtx.rxCentralFreq = vals["settings"]["rxCentralFreq"]
this.paramRxtx.rxBaudrate = vals["settings"]["rxBaudrate"]
this.paramRxtx.rxRolloff = vals["settings"]["rxRolloff"]
}, },
updateBuclnbSettings(vals) { updateBuclnbSettings(vals) {
this.submitStatus.buclnb = false this.submitStatus.buclnb = false
this.paramBuclnb.bucLnbAutoStart = vals["settings"]["bucLnbAutoStart"]
this.paramBuclnb.bucPowering = vals["settings"]["bucPowering"]
this.paramBuclnb.bucRefClk10M = vals["settings"]["bucRefClk10M"] this.paramBuclnb.bucRefClk10M = vals["settings"]["bucRefClk10M"]
this.paramBuclnb.lnbPowering = vals["settings"]["lnbPowering"] this.paramBuclnb.bucPowering = vals["settings"]["bucPowering"]
this.paramBuclnb.lnbRefClk10M = vals["settings"]["lnbRefClk10M"] this.paramBuclnb.lnbRefClk10M = vals["settings"]["lnbRefClk10M"]
this.paramBuclnb.lnbPowering = vals["settings"]["lnbPowering"]
this.paramBuclnb.srvRefClk10M = vals["settings"]["srvRefClk10M"] this.paramBuclnb.srvRefClk10M = vals["settings"]["srvRefClk10M"]
this.paramBuclnb.bucLnbAutoStart = vals["settings"]["bucLnbAutoStart"]
}, },
updateNetworkSettings(vals) { updateNetworkSettings(vals) {
this.submitStatus.network = false this.submitStatus.network = false
this.paramNetwork.netManagementIp = vals["settings"]["netManagementIp"]
this.paramNetwork.netIsL2 = vals["settings"]["netIsL2"]
this.paramNetwork.netDataIp = vals["settings"]["netDataIp"] this.paramNetwork.netDataIp = vals["settings"]["netDataIp"]
this.paramNetwork.netDataMtu = vals["settings"]["netDataMtu"] this.paramNetwork.netDataMtu = vals["settings"]["netDataMtu"]
this.paramNetwork.netIsL2 = vals["settings"]["netIsL2"]
this.paramNetwork.netManagementIp = vals["settings"]["netManagementIp"]
}, },
// ========== include end from 'common/all-params-methods.js.j2' // ========== include end from 'common/all-params-methods.js.j2'