добавил в мониторинг TDMA-морды статус обновления
This commit is contained in:
@@ -255,7 +255,6 @@ private:
|
||||
void updateState() {
|
||||
modulator_state modulator{};
|
||||
demodulator_state demodulator{};
|
||||
device_state device{};
|
||||
#ifdef MODEM_IS_SCPC
|
||||
CinC_state cinc{};
|
||||
#endif
|
||||
@@ -263,7 +262,6 @@ private:
|
||||
std::lock_guard lock(this->cpApiMutex);
|
||||
logCpApiError("api_driver::TerminalApiDaemon::updateState()->CP_GetModulatorState()", CP_GetModulatorState(sid, modulator));
|
||||
logCpApiError("api_driver::TerminalApiDaemon::updateState()->CP_GetDemodulatorState()", CP_GetDemodulatorState(sid, demodulator));
|
||||
logCpApiError("api_driver::TerminalApiDaemon::updateState()->CP_GetDeviceState()", CP_GetDeviceState(sid, device));
|
||||
#ifdef MODEM_IS_TDMA
|
||||
std::string tmpDevState;
|
||||
logCpApiError("api_driver::TerminalApiDaemon::updateState()->CP_GetDmaDebug(status_init)", CP_GetDmaDebug(sid, "status_init", &tmpDevState));
|
||||
@@ -281,7 +279,6 @@ private:
|
||||
std::lock_guard lock2(this->stateMutex);
|
||||
this->modState = modulator;
|
||||
this->demodState = demodulator;
|
||||
this->devState = device;
|
||||
#ifdef MODEM_IS_TDMA
|
||||
this->deviceInitState = tmpDevState;
|
||||
#endif
|
||||
@@ -323,6 +320,16 @@ private:
|
||||
}
|
||||
}
|
||||
|
||||
void updateDeviceState() {
|
||||
device_state device{};
|
||||
std::lock_guard lock(this->cpApiMutex);
|
||||
logCpApiError("api_driver::TerminalApiDaemon::updateState()->CP_GetDeviceState()", CP_GetDeviceState(sid, device));
|
||||
{
|
||||
std::lock_guard lock2(this->stateMutex);
|
||||
this->devState = device;
|
||||
}
|
||||
}
|
||||
|
||||
void unsafeLoadNetworkSettings(TerminalNetworkSettings& s) {
|
||||
s.loadDefaults();
|
||||
logCpApiError("api_driver::TerminalApiDaemon::unsafeLoadNetworkSettings()->CP_GetNetwork(addr)", CP_GetNetwork(sid, "addr", &s.managementIp));
|
||||
@@ -475,6 +482,15 @@ private:
|
||||
BOOST_LOG_TRIVIAL(error) << "api_driver::TerminalApiDaemon::updateState() failed to log: " << e.what();
|
||||
}
|
||||
}},
|
||||
// обновление состояния устройства (обновления, температура)
|
||||
{.lastUpdate = 0, .periodMs = CACHE_DEV_STATE_UPDATE_MS, .callback = [this]() {
|
||||
try {
|
||||
this->updateDeviceState();
|
||||
BOOST_LOG_TRIVIAL(debug) << "api_driver::TerminalApiDaemon::updateDeviceState(): success update!";
|
||||
} catch (std::exception& e) {
|
||||
BOOST_LOG_TRIVIAL(error) << "api_driver::TerminalApiDaemon::updateDeviceState(): " << e.what();
|
||||
}
|
||||
}},
|
||||
// обновление кеша настроек
|
||||
{.lastUpdate = 0, .periodMs = CACHE_SETTINGS_UPDATE_MS, .callback = [this]() {
|
||||
try {
|
||||
@@ -515,7 +531,12 @@ private:
|
||||
auto now = TIME_NOW();
|
||||
for (auto& u: updaters) {
|
||||
if (u.checkNeedUpdate(now)) {
|
||||
u.lastUpdate = now;
|
||||
// выравнивание таймингов (-20ms...+50ms)
|
||||
if (u.lastUpdate + u.periodMs + 50 < now) {
|
||||
u.lastUpdate += u.periodMs;
|
||||
} else {
|
||||
u.lastUpdate = now;
|
||||
}
|
||||
u.callback();
|
||||
now = TIME_NOW();
|
||||
}
|
||||
@@ -942,6 +963,25 @@ std::string api_driver::ApiDriver::loadTerminalState() const {
|
||||
result << ",\n\"device.adrv\":"; writeDouble(result, device.adrv_temp, 1);
|
||||
result << ",\"device.fpga\":"; writeDouble(result, device.pl_temp, 1);
|
||||
result << ",\"device.zynq\":"; writeDouble(result, device.zynq_temp, 1);
|
||||
#ifdef MODEM_IS_TDMA
|
||||
if (device.cur_image.empty()) {
|
||||
result << R"(,
|
||||
"device.upgradeStatus":"Нет обновлений","device.upgradePercent":0,"device.upgradeImage":"")";
|
||||
} else {
|
||||
switch (device.status) {
|
||||
case NORM_RX_OBJECT_NEW_API: result << ",\n" R"("device.upgradeStatus": "Начало загрузки")"; break;
|
||||
case NORM_RX_OBJECT_INFO_API: result << ",\n" R"("device.upgradeStatus": "Получено имя образа")"; break;
|
||||
case NORM_RX_OBJECT_UPDATED_API: result << ",\n" R"("device.upgradeStatus": "Загружается")"; break;
|
||||
case NORM_RX_OBJECT_COMPLETED_API: result << ",\n" R"("device.upgradeStatus": "Загрузка завершена")"; break;
|
||||
case NORM_RX_OBJECT_ABORTED_API: result << ",\n" R"("device.upgradeStatus": "Загрузка прервана")"; break;
|
||||
default: result << ",\n" R"("device.upgradeStatus": "?")";
|
||||
|
||||
}
|
||||
result << ",\"device.upgradePercent\":" << device.dwl_percent;
|
||||
result << ",\"device.upgradeImage\":" << buildEscapedString(device.cur_image);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
result << "}";
|
||||
|
||||
|
@@ -9,7 +9,8 @@
|
||||
|
||||
|
||||
namespace api_driver {
|
||||
constexpr int CACHE_STATISTICS_UPDATE_MS = 500;
|
||||
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;
|
||||
|
||||
|
Reference in New Issue
Block a user