114 lines
3.8 KiB
C++
114 lines
3.8 KiB
C++
#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
|