diff --git a/front-generator/render-params.json b/front-generator/render-params.json index 2fe6f10..624fa47 100644 --- a/front-generator/render-params.json +++ b/front-generator/render-params.json @@ -18,14 +18,10 @@ {"widget": "h3", "label": "Настройки передатчика"}, {"widget": "checkbox", "label": "Включить передатчик", "name": "txEn"}, { - "widget": "select", "label": "Входные данные", "name": "txIsTestInput", - "values": [ - {"label": "SCPC", "value": "false"}, - {"label": "Тест", "value": "true"} - ] + "widget": "select", "label": "Режим работы модулятора", "name": "txModulatorIsTest", + "values": [{"label": "Нормальный", "value": "false"}, {"label": "Тест (CW)", "value": "true"}] }, - {"widget": "number", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 900000, "step": 0.01, "v_show": "paramRxrx.txIsTestInput"}, - {"widget": "number", "label": "Символьная скорость, Бод", "name": "txBaudrate", "min": 0, "step": 1, "v_show": "paramRxrx.txIsTestInput"}, + {"widget": "number", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 900000, "step": 0.01, "v_show": "paramRxtx.txModulatorIsTest"}, {"widget": "number", "label": "Ослабление, дБ", "name": "txAttenuation", "min": 0, "step": 1} ] }, diff --git a/src/auth/jwt.cpp b/src/auth/jwt.cpp index a785c3b..1709465 100644 --- a/src/auth/jwt.cpp +++ b/src/auth/jwt.cpp @@ -30,10 +30,10 @@ http::auth::jwt::Jwt http::auth::jwt::Jwt::fromCookies(const std::string &cookie const auto auth = pc.at("auth"); std::string::size_type firstDot = std::string::npos; std::string::size_type secondDot = std::string::npos; - for (size_t i = 0; i < auth.size(); i++) { + for (std::string::size_type i = 0; i < auth.size(); i++) { if (auth[i] == '.') { - if (firstDot == std::string::npos) { firstDot = static_cast(i); } - else if (secondDot == std::string::npos) { secondDot = static_cast(i); } + if (firstDot == std::string::npos) { firstDot = i; } + else if (secondDot == std::string::npos) { secondDot = i; } else { // так быть не должно return t; diff --git a/src/main.cpp b/src/main.cpp index b3ade5e..74906c1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -28,25 +28,6 @@ constexpr const char* REBOOT_COMMAND = "web-action reboot"; constexpr const char* UPGRADE_COMMAND = "web-action upgrade"; -static std::vector loadFile(const std::string& path) { - std::ifstream is(path, std::ios::in | std::ios::binary); - if (!is) { - throw std::runtime_error("File not found"); - } - - std::vector content; - for (;;) { - char buf[512]; - auto len = is.read(buf, sizeof(buf)).gcount(); - if (len <= 0) { - break; - } - content.insert(content.end(), buf, buf + len); - } - return content; -} - - namespace mime_types = http::server::mime_types; void init_logging() { @@ -515,9 +496,9 @@ int main(int argc, char *argv[]) { s->run(); } else if (strcmp(argv[1], "ssl") == 0) { - const auto cert = loadFile("cert.pem"); - const auto key = loadFile("key.pem"); - const auto dh = loadFile("dh.pem"); + std::vector cert; http::resource::loadFile("cert.pem", cert); + std::vector key; http::resource::loadFile("key.pem", key); + std::vector dh; http::resource::loadFile("dh.pem", dh); auto ctx = std::make_shared(ssl::context::tlsv12); diff --git a/src/server/resource.cpp b/src/server/resource.cpp index f935ecd..5c46571 100644 --- a/src/server/resource.cpp +++ b/src/server/resource.cpp @@ -3,10 +3,10 @@ #include #include -static void loadFile(const std::string& path, std::vector& content) { +void http::resource::loadFile(const std::string& path, std::vector& content) { std::ifstream is(path, std::ios::in | std::ios::binary); if (!is) { - throw std::runtime_error("File not found"); + throw std::runtime_error("File not found " + path); } content.clear(); diff --git a/src/server/resource.h b/src/server/resource.h index 085ce66..b6a62fc 100644 --- a/src/server/resource.h +++ b/src/server/resource.h @@ -62,6 +62,8 @@ namespace http::resource { ~GenericResource() override; }; + + void loadFile(const std::string& path, std::vector& content); } #endif //RESOURCE_H diff --git a/src/terminal_api_driver.cpp b/src/terminal_api_driver.cpp index 6aeae4f..791f5fc 100644 --- a/src/terminal_api_driver.cpp +++ b/src/terminal_api_driver.cpp @@ -469,6 +469,15 @@ public: } #endif + bool isTest() { + std::shared_lock lock(this->settingsMutex); + return !modSettings.is_carrier +#ifdef MODEM_IS_SCPC + || this->modSettings.is_test_data +#endif + ; + } + void getNetworkSettings(TerminalNetworkSettings& dest) { std::shared_lock lock(this->networkSettingsMutex); dest = this->networkSettings; @@ -690,6 +699,7 @@ std::string api_driver::ApiDriver::loadTerminalState() const { std::stringstream result; result << "{\n\"initState\":" << buildEscapedString(daemon->getDeviceInitState()); + result << ",\n\"testState\":" << boolAsStr(daemon->isTest()); modulator_state modulator{}; demodulator_state demodulator{}; @@ -873,15 +883,15 @@ std::string api_driver::ApiDriver::loadSettings() const { std::stringstream result; result << "{\n\"txAutoStart\":" << boolAsStr(modSettings.is_save_current_state); -#ifdef MODEM_IS_SCPC result << ",\"txEn\":" << boolAsStr(modSettings.tx_is_on); - result << ",\"txModulatorIsTest\":" << boolAsStr(!modSettings.is_carrier); -#endif +#ifdef MODEM_IS_SCPC result << ",\"txIsTestInput\":" << boolAsStr(modSettings.is_test_data); +#endif + result << ",\"txModulatorIsTest\":" << boolAsStr(!modSettings.is_carrier); result << ",\"txCentralFreq\":"; writeDouble(result, modSettings.central_freq_in_kGz); +#ifdef MODEM_IS_SCPC result << ",\"txBaudrate\":" << modSettings.baudrate; result << ",\"txRolloff\":" << static_cast(modSettings.rollof); -#ifdef MODEM_IS_SCPC result << ",\"txGoldan\":" << static_cast(modSettings.gold_seq_is_active); #endif result << ",\"txAttenuation\":"; writeDouble(result, modSettings.attenuation); @@ -1017,13 +1027,13 @@ void api_driver::ApiDriver::setRxTxSettings(boost::property_tree::ptree &pt) { mod.tx_is_on = pt.get("txEn"); #ifdef MODEM_IS_SCPC mod.is_save_current_state = pt.get("txAutoStart"); - mod.is_carrier = !pt.get("txModulatorIsTest"); -#endif mod.is_test_data = pt.get("txIsTestInput"); +#endif + mod.is_carrier = !pt.get("txModulatorIsTest"); mod.central_freq_in_kGz = pt.get("txCentralFreq"); - mod.baudrate = pt.get("txBaudrate"); - mod.rollof = pt.get("txRolloff"); #ifdef MODEM_IS_SCPC + mod.baudrate = pt.get("txBaudrate"); + mod.rollof = pt.get("txRolloff"); mod.gold_seq_is_active = pt.get("txGoldan"); #endif mod.attenuation = pt.get("txAttenuation"); @@ -1036,10 +1046,10 @@ void api_driver::ApiDriver::setRxTxSettings(boost::property_tree::ptree &pt) { // демодулятор demod.is_aru_on = pt.get("rxAgcEn"); demod.gain = pt.get("rxManualGain"); - demod.is_rvt_iq = pt.get("aupcEn"); + demod.is_rvt_iq = pt.get("rxSpectrumInversion"); demod.central_freq_in_kGz = pt.get("rxCentralFreq"); demod.baudrate = pt.get("rxBaudrate"); - demod.rollof = pt.get("rxRolloff"); + demod.rollof = pt.get("rxRolloff"); #ifdef MODEM_IS_SCPC demod.gold_seq_is_active = pt.get("rxGoldan"); #endif diff --git a/static/main-tdma.html b/static/main-tdma.html index 0bb359b..b976948 100644 --- a/static/main-tdma.html +++ b/static/main-tdma.html @@ -121,14 +121,13 @@ - - +
@@ -292,9 +291,8 @@ // ========== include from 'common/all-params-data.js.j2' paramRxtx: { txEn: false, - txIsTestInput: false, + txModulatorIsTest: false, txCentralFreq: 900000, - txBaudrate: 0, txAttenuation: 0, rxAgcEn: true, rxManualGain: -40, @@ -422,9 +420,8 @@ let query = { "txEn": this.paramRxtx.txEn, - "txIsTestInput": this.paramRxtx.txIsTestInput, + "txModulatorIsTest": this.paramRxtx.txModulatorIsTest, "txCentralFreq": this.paramRxtx.txCentralFreq, - "txBaudrate": this.paramRxtx.txBaudrate, "txAttenuation": this.paramRxtx.txAttenuation, "rxAgcEn": this.paramRxtx.rxAgcEn, "rxManualGain": this.paramRxtx.rxManualGain, @@ -480,9 +477,8 @@ updateRxtxSettings(vals) { this.submitStatus.rxtx = false this.paramRxtx.txEn = vals["settings"]["txEn"] - this.paramRxtx.txIsTestInput = vals["settings"]["txIsTestInput"] + this.paramRxtx.txModulatorIsTest = vals["settings"]["txModulatorIsTest"] 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.rxManualGain = vals["settings"]["rxManualGain"]