From e8eeee37557155f7787b58da52a7e67ed16ba71b Mon Sep 17 00:00:00 2001 From: Vladislav Ostapov Date: Wed, 30 Oct 2024 18:00:48 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B0?= =?UTF-8?q?=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=BE=D0=B2=20=D1=87=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B7=20api,=20=D0=BD=D0=B5=D0=BC=D0=BD=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=BF=D0=BE=D0=B4=D1=80=D0=B5=D0=B4=D0=B0=D1=87?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=84=D1=80=D0=BE=D0=BD=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.cpp | 3 +- src/terminal_api_driver.cpp | 65 +++++++++++++++--- src/terminal_api_driver.h | 10 +-- static/login.html | 127 ++++++++++++++++++++++++------------ static/main.html | 118 +++++++++++++++++++++++++++++++++ 5 files changed, 268 insertions(+), 55 deletions(-) create mode 100644 static/main.html diff --git a/src/main.cpp b/src/main.cpp index 46589b6..d28565a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -73,7 +73,8 @@ void init_logging() { } static void initResources(http::server::Server& s, std::shared_ptr& api) { - s.resources.emplace_back(std::make_unique("/", "static/login.html", mime_types::text_html)); + s.resources.emplace_back(std::make_unique("/", "static/main.html", mime_types::text_html)); + s.resources.emplace_back(std::make_unique("/login", "static/login.html", mime_types::text_html)); s.resources.emplace_back(std::make_unique("/favicon.ico", "static/favicon.png", mime_types::image_png)); s.resources.emplace_back(std::make_unique("/style.css", "static/style.css", mime_types::text_css)); s.resources.emplace_back(std::make_unique("/js/vue.js", "static/js/vue.js", mime_types::javascript)); diff --git a/src/terminal_api_driver.cpp b/src/terminal_api_driver.cpp index c2dbec5..a981f8d 100644 --- a/src/terminal_api_driver.cpp +++ b/src/terminal_api_driver.cpp @@ -1,26 +1,73 @@ #include "terminal_api_driver.h" #include "terminal_api/ControlProtoCInterface.h" - +#include api_driver::ApiDriver::ApiDriver() { CP_Login("admin", "pass", &sid, &access); } +static bool DriverCP_GetLevelDemod(TSID sid, const char* param) { + double variable_dbl = 0; + CP_GetLevelDemod(sid, param, &variable_dbl); + return variable_dbl == 0; +} + +static bool DriverCP_GetGain(TSID sid, const char* param) { + double variable_dbl = 0; + CP_GetGain(sid, param, &variable_dbl); + return variable_dbl == 0; +} + +static const char* boolAsStr(bool value) { + return value ? "true" : "false"; +} + std::string api_driver::ApiDriver::loadTerminalState() { + std::stringstream result; + result << "{"; - return R"({"rxState":0,"txState":0,"testState":0})"; -} + result << "\"txState\":" << boolAsStr(DriverCP_GetGain(sid, "TXPWD")); -std::string api_driver::ApiDriver::loadTxStatistics() { - return R"("{"error":"no impl"}")"; -} + const auto sym_sync_lock = DriverCP_GetLevelDemod(sid, "sym_sync_lock"); // захват символьной + const auto freq_search_lock = DriverCP_GetLevelDemod(sid, "freq_lock"); // Захват поиска по частоте + const auto afc_lock = DriverCP_GetLevelDemod(sid, "afc_lock"); // захват ФАПЧ + const auto pkt_sync = DriverCP_GetLevelDemod(sid, "pkt_sync"); // захват пакетной синхронизации + const auto receive_active = sym_sync_lock && freq_search_lock && afc_lock && pkt_sync; -std::string api_driver::ApiDriver::loadRxStatistics() { - return R"("{"error":"no impl"}")"; + result << ",\"rxState\":" << boolAsStr(receive_active); + result << ",\"rx.sym_sync_lock\":" << boolAsStr(sym_sync_lock); + result << ",\"rx.freq_search_lock\":" << boolAsStr(freq_search_lock); + result << ",\"rx.afc_lock\":" << boolAsStr(afc_lock); + result << ",\"rx.pkt_sync\":" << boolAsStr(pkt_sync); + + result << "}"; + + // return R"({"rxState":0,"txState":0,"testState":0})"; + return result.str(); } std::string api_driver::ApiDriver::loadDeviceStatistics() { - return R"("{"error":"no impl"}")"; + std::stringstream result; + result << "{"; + + result << "\"txState\":" << boolAsStr(DriverCP_GetGain(sid, "TXPWD")); + + const auto sym_sync_lock = DriverCP_GetLevelDemod(sid, "sym_sync_lock"); // захват символьной + const auto freq_search_lock = DriverCP_GetLevelDemod(sid, "freq_lock"); // Захват поиска по частоте + const auto afc_lock = DriverCP_GetLevelDemod(sid, "afc_lock"); // захват ФАПЧ + const auto pkt_sync = DriverCP_GetLevelDemod(sid, "pkt_sync"); // захват пакетной синхронизации + const auto receive_active = sym_sync_lock && freq_search_lock && afc_lock && pkt_sync; + + result << ",\"rxState\":" << boolAsStr(receive_active); + result << ",\"rx.sym_sync_lock\":" << boolAsStr(sym_sync_lock); + result << ",\"rx.freq_search_lock\":" << boolAsStr(freq_search_lock); + result << ",\"rx.afc_lock\":" << boolAsStr(afc_lock); + result << ",\"rx.pkt_sync\":" << boolAsStr(pkt_sync); + + result << "}"; + + // return R"({"rxState":0,"txState":0,"testState":0})"; + return result.str(); } api_driver::ApiDriver::~ApiDriver() = default; diff --git a/src/terminal_api_driver.h b/src/terminal_api_driver.h index 3a5e7d5..8a3d406 100644 --- a/src/terminal_api_driver.h +++ b/src/terminal_api_driver.h @@ -15,14 +15,14 @@ namespace api_driver { /** * Запросить общее состояние терминала - * @return {"rxState":0,"txState":0,"testState":0} + * @return {"txState":false,"rxState":false,"rx.sym_sync_lock":false,"rx.freq_search_lock":false,"rx.afc_lock":false,"rx.pkt_sync":false} */ std::string loadTerminalState(); - std::string loadTxStatistics(); - - std::string loadRxStatistics(); - + /** + * Запросить статистику модулятора, демодулятора, CicC и температурные датчики + * @return + */ std::string loadDeviceStatistics(); ~ApiDriver(); diff --git a/static/login.html b/static/login.html index 35b8717..07a3c67 100644 --- a/static/login.html +++ b/static/login.html @@ -3,54 +3,101 @@ - Главная + Вход + -