#ifndef TERMINAL_API_DRIVER_H #define TERMINAL_API_DRIVER_H #include "api-driver/stricts-enable.h" #include "api-driver/proxy.h" #include #include #include "common/nlohmann/json.hpp" namespace api_driver { constexpr int CACHE_STATISTICS_UPDATE_MS = 500; ///< время обновления кеша статистики модулятора/демодулятора constexpr int CACHE_DEV_STATE_UPDATE_MS = 3000; ///< время обновления статуса устройства (обновления по воздуху, температуры) constexpr int CACHE_SETTINGS_UPDATE_MS = 5000; constexpr int CACHE_QOS_UPDATE_MS = 5000; class TerminalApiDaemon; /** * Это ApiDriver. Все ответы он будет возвращать в виде json. */ class ApiDriver { public: explicit ApiDriver(); /** * Запуск демона */ void startDaemon(); /** * Запросить общее состояние терминала */ nlohmann::json loadTerminalState() const; /** * Сбросить статистику пакетов */ void resetPacketStatistics() const; nlohmann::json loadSettings() const; nlohmann::json loadFirmwareVersion() const; /** * Установить настройки RX/TX, readback можно получить используя loadTerminalState */ void setRxTxSettings(const nlohmann::json& data); #ifdef API_OBJECT_DPDI_SETTINGS_ENABLE /** * Установить настройки DPDI, readback можно получить используя loadTerminalState. * @note Для TDMA и SCPC модемов эти настройки доступны */ void setDpdiSettings(const nlohmann::json& data); #endif #ifdef API_OBJECT_BUCLNB_SETTINGS_ENABLE /** * Установить настройки BUC и LNB, readback можно получить используя loadTerminalState. */ void setBucLnbSettings(const nlohmann::json& data); #endif #ifdef API_OBJECT_QOS_SETTINGS_ENABLE /** * Установить настройки QoS, readback можно получить используя loadTerminalState. */ void setQosSettings(const nlohmann::json& data); #endif #ifdef API_OBJECT_NETWORK_SETTINGS_ENABLE void setNetworkSettings(const nlohmann::json& data); #endif void resetDefaultSettings(); void executeInApi(const std::function &callback); #ifdef API_OBJECT_DEBUG_METRICS_ENABLE nlohmann::json getLoggingStatisticsSettings(); void setLoggingStatisticsSettings(const nlohmann::json& data); /** * Получить статистику в формате json. Выход будет дописан в вектор * @param jsonOut вектор, куда должен быть записан результат. Данные будут дописаны к существующим, формат: [] * @param timeStart * @param timeEnd * @param ordering * @param maxItems */ void readLoggingStatistics(std::vector& out, int timeStart = -1, int timeEnd = -1, bool ordering = false, int maxItems = -1); #endif #ifdef MODEM_IS_TDMA std::string getOtaFileLocation() const; #endif ~ApiDriver(); private: std::unique_ptr daemon; }; /** * Функция для создания экранированной строки (для json) * @param source исходная строка (например, {123"}) * @return {"123\""} */ std::string buildEscapedString(const std::string &source); } #endif //TERMINAL_API_DRIVER_H