изменил логику подключения к API
This commit is contained in:
parent
1f8ea04f43
commit
3e4ffc8281
@ -201,12 +201,35 @@ private:
|
||||
|
||||
void run() {
|
||||
// это демон, который в бесконечном цикле опрашивает API
|
||||
CP_GetNetwork(sid, "version", &firmware.version);
|
||||
CP_GetNetwork(sid, "chip_id", &firmware.modemId);
|
||||
rtrim(firmware.modemId);
|
||||
CP_GetNetwork(sid, "serial", &firmware.modemSn);
|
||||
CP_GetNetwork(sid, "mac_eth0", &firmware.macMang);
|
||||
CP_GetNetwork(sid, "mac_eth1", &firmware.macData);
|
||||
{
|
||||
TSID sid{};
|
||||
unsigned int access{};
|
||||
for (int connectAttempt = 0;; connectAttempt++) {
|
||||
BOOST_LOG_TRIVIAL(info) << "api_driver::ApiDriver::startDaemon(): Try to connect api (attempt " << connectAttempt << ")...";
|
||||
auto res = CP_Login("admin", "pass", &sid, &access);
|
||||
if (res != OK) {
|
||||
boost::this_thread::sleep_for(boost::chrono::duration(boost::chrono::milliseconds(1000)));
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
std::string tmp;
|
||||
CP_GetDmaDebug(sid, "status_init", &tmp);
|
||||
{
|
||||
std::lock_guard _lock(this->stateMutex);
|
||||
this->deviceInitState = tmp;
|
||||
}
|
||||
BOOST_LOG_TRIVIAL(info) << "api_driver::ApiDriver::startDaemon(): Success connect!";
|
||||
BOOST_LOG_TRIVIAL(info) << "api_driver::ApiDriver::startDaemon(): API status: " << tmp;
|
||||
|
||||
CP_GetNetwork(sid, "version", &firmware.version);
|
||||
CP_GetNetwork(sid, "chip_id", &firmware.modemId);
|
||||
rtrim(firmware.modemId);
|
||||
CP_GetNetwork(sid, "serial", &firmware.modemSn);
|
||||
CP_GetNetwork(sid, "mac_eth0", &firmware.macMang);
|
||||
CP_GetNetwork(sid, "mac_eth1", &firmware.macData);
|
||||
}
|
||||
|
||||
struct IntervalUpdate_t {
|
||||
int64_t lastUpdate;
|
||||
@ -290,6 +313,7 @@ private:
|
||||
modulator_state modState{};
|
||||
demodulator_state demodState{};
|
||||
device_state devState{};
|
||||
std::string deviceInitState;
|
||||
#ifdef MODEM_IS_SCPC
|
||||
CinC_state cincState{};
|
||||
#endif
|
||||
@ -317,10 +341,15 @@ public:
|
||||
|
||||
TerminalFirmwareVersion firmware;
|
||||
|
||||
explicit TerminalApiDaemon(TSID sid): qosEnabled(false), sid(sid), daemon([this]() { this->run(); }) {
|
||||
explicit TerminalApiDaemon(): deviceInitState("Not connected to API"), qosEnabled(false), sid(0), daemon([this]() { this->run(); }) {
|
||||
this->qosClassesJson = DEFAULT_QOS_CLASSES;
|
||||
}
|
||||
|
||||
std::string getDeviceInitState() {
|
||||
std::shared_lock lock(this->stateMutex);
|
||||
return this->deviceInitState;
|
||||
}
|
||||
|
||||
#ifdef MODEM_IS_SCPC
|
||||
/**
|
||||
* Получение статистики, копирует текущие значения в структуры, переданные по указателю. Если передан пустой указатель, копирования не произойдет.
|
||||
@ -557,23 +586,7 @@ api_driver::ApiDriver::ApiDriver() = default;
|
||||
|
||||
void api_driver::ApiDriver::startDaemon() {
|
||||
if (daemon == nullptr) {
|
||||
TSID sid{};
|
||||
unsigned int access{};
|
||||
for (int connectAttempt = 0; connectAttempt <= 10; connectAttempt++) {
|
||||
BOOST_LOG_TRIVIAL(info) << "api_driver::ApiDriver::startDaemon(): Try to connect api (attempt " << connectAttempt << ")...";
|
||||
auto res = CP_Login("admin", "pass", &sid, &access);
|
||||
if (res != OK) {
|
||||
boost::this_thread::sleep_for(boost::chrono::duration(boost::chrono::milliseconds(1000)));
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
CP_GetDmaDebug(sid, "status_init", &deviceInitState);
|
||||
BOOST_LOG_TRIVIAL(info) << "api_driver::ApiDriver::startDaemon(): Success connect!";
|
||||
BOOST_LOG_TRIVIAL(info) << "api_driver::ApiDriver::startDaemon(): API status: " << deviceInitState;
|
||||
|
||||
daemon = std::make_unique<TerminalApiDaemon>(sid);
|
||||
daemon = std::make_unique<TerminalApiDaemon>();
|
||||
BOOST_LOG_TRIVIAL(info) << "api_driver::ApiDriver::startDaemon(): API daemon succes started!";
|
||||
}
|
||||
}
|
||||
@ -619,7 +632,7 @@ std::string api_driver::ApiDriver::loadTerminalState() const {
|
||||
}
|
||||
std::stringstream result;
|
||||
|
||||
result << "{\n\"initState\":" << buildEscapedString(this->deviceInitState);
|
||||
result << "{\n\"initState\":" << buildEscapedString(daemon->getDeviceInitState());
|
||||
|
||||
modulator_state modulator{};
|
||||
demodulator_state demodulator{};
|
||||
|
@ -73,7 +73,6 @@ namespace api_driver {
|
||||
~ApiDriver();
|
||||
|
||||
private:
|
||||
std::string deviceInitState;
|
||||
std::unique_ptr<TerminalApiDaemon> daemon;
|
||||
};
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user