Files
terminal-web-server/src/terminal_api_driver.h

114 lines
3.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef TERMINAL_API_DRIVER_H
#define TERMINAL_API_DRIVER_H
#include "api-driver/stricts-enable.h"
#include "api-driver/proxy.h"
#include <memory>
#include <string>
#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<void(proxy::CpProxy&)> &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<uint8_t>& 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<TerminalApiDaemon> daemon;
};
/**
* Функция для создания экранированной строки (для json)
* @param source исходная строка (например, {123"})
* @return {"123\""}
*/
std::string buildEscapedString(const std::string &source);
}
#endif //TERMINAL_API_DRIVER_H