добавил повторные попытки подключения к API, если не удалось подключиться
This commit is contained in:
parent
dff0ba1cd3
commit
c05a9cff7a
@ -100,28 +100,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
class api_driver::TerminalApiDaemon {
|
class api_driver::TerminalApiDaemon {
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void updateFirmwareSettings() {
|
|
||||||
std::string version, chip_id, sn, mac0, mac1;
|
|
||||||
std::lock_guard lock(this->cpApiMutex);
|
|
||||||
|
|
||||||
CP_GetNetwork(sid, "version", &version);
|
|
||||||
CP_GetNetwork(sid, "chip_id", &chip_id);
|
|
||||||
rtrim(chip_id);
|
|
||||||
CP_GetNetwork(sid, "serial", &sn);
|
|
||||||
CP_GetNetwork(sid, "mac_eth0", &mac0);
|
|
||||||
CP_GetNetwork(sid, "mac_eth1", &mac1);
|
|
||||||
|
|
||||||
{
|
|
||||||
std::lock_guard lock2(this->firmwareMutex);
|
|
||||||
this->firmware.version = version;
|
|
||||||
this->firmware.modemId = chip_id;
|
|
||||||
this->firmware.modemSn = sn;
|
|
||||||
this->firmware.macMang = mac0;
|
|
||||||
this->firmware.macData = mac1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void updateState() {
|
void updateState() {
|
||||||
modulator_state modulator{};
|
modulator_state modulator{};
|
||||||
demodulator_state demodulator{};
|
demodulator_state demodulator{};
|
||||||
@ -211,7 +189,12 @@ private:
|
|||||||
|
|
||||||
void run() {
|
void run() {
|
||||||
// это демон, который в бесконечном цикле опрашивает API
|
// это демон, который в бесконечном цикле опрашивает API
|
||||||
updateFirmwareSettings();
|
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 {
|
struct IntervalUpdate_t {
|
||||||
int64_t lastUpdate;
|
int64_t lastUpdate;
|
||||||
@ -291,9 +274,6 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_mutex firmwareMutex;
|
|
||||||
TerminalFirmwareVersion firmware;
|
|
||||||
|
|
||||||
std::shared_mutex stateMutex;
|
std::shared_mutex stateMutex;
|
||||||
modulator_state modState{};
|
modulator_state modState{};
|
||||||
demodulator_state demodState{};
|
demodulator_state demodState{};
|
||||||
@ -319,6 +299,8 @@ public:
|
|||||||
TSID sid;
|
TSID sid;
|
||||||
boost::thread daemon;
|
boost::thread daemon;
|
||||||
|
|
||||||
|
TerminalFirmwareVersion firmware;
|
||||||
|
|
||||||
explicit TerminalApiDaemon(TSID sid): qosEnabled(false), sid(sid), daemon([this]() { this->run(); }) {
|
explicit TerminalApiDaemon(TSID sid): qosEnabled(false), sid(sid), daemon([this]() { this->run(); }) {
|
||||||
this->qosClassesJson = DEFAULT_QOS_CLASSES;
|
this->qosClassesJson = DEFAULT_QOS_CLASSES;
|
||||||
}
|
}
|
||||||
@ -370,11 +352,6 @@ public:
|
|||||||
json = this->qosClassesJson;
|
json = this->qosClassesJson;
|
||||||
}
|
}
|
||||||
|
|
||||||
void getFirmwareVersion(TerminalFirmwareVersion& fw) {
|
|
||||||
std::lock_guard lock2(this->firmwareMutex);
|
|
||||||
fw = this->firmware;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setSettingsRxTx(modulator_settings& mod, demodulator_settings& demod, ACM_parameters_serv_& acm, bool readback = true) {
|
void setSettingsRxTx(modulator_settings& mod, demodulator_settings& demod, ACM_parameters_serv_& acm, bool readback = true) {
|
||||||
std::lock_guard lock(this->cpApiMutex);
|
std::lock_guard lock(this->cpApiMutex);
|
||||||
CP_SetDmaDebug(sid, "begin_save_config", "");
|
CP_SetDmaDebug(sid, "begin_save_config", "");
|
||||||
@ -509,15 +486,25 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
api_driver::ApiDriver::ApiDriver() {
|
api_driver::ApiDriver::ApiDriver() = default;
|
||||||
}
|
|
||||||
|
|
||||||
void api_driver::ApiDriver::startDaemon() {
|
void api_driver::ApiDriver::startDaemon() {
|
||||||
if (daemon == nullptr) {
|
if (daemon == nullptr) {
|
||||||
TSID sid{};
|
TSID sid{};
|
||||||
unsigned int access{};
|
unsigned int access{};
|
||||||
CP_Login("admin", "pass", &sid, &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);
|
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>(sid);
|
||||||
BOOST_LOG_TRIVIAL(info) << "api_driver::ApiDriver::startDaemon(): API daemon succes started!";
|
BOOST_LOG_TRIVIAL(info) << "api_driver::ApiDriver::startDaemon(): API daemon succes started!";
|
||||||
@ -760,14 +747,12 @@ std::string api_driver::ApiDriver::loadFirmwareVersion() const {
|
|||||||
return R"({"error": "api daemon not started!"})";
|
return R"({"error": "api daemon not started!"})";
|
||||||
}
|
}
|
||||||
|
|
||||||
TerminalFirmwareVersion firmware;
|
|
||||||
daemon->getFirmwareVersion(firmware);
|
|
||||||
std::stringstream result;
|
std::stringstream result;
|
||||||
result << "{\n\"fw.version\":" << buildEscapedString(firmware.version);
|
result << "{\n\"fw.version\":" << buildEscapedString(daemon->firmware.version);
|
||||||
result << ",\"fw.modemId\":" << buildEscapedString(firmware.modemId);
|
result << ",\"fw.modemId\":" << buildEscapedString(daemon->firmware.modemId);
|
||||||
result << ",\"fw.modemSn\":" << buildEscapedString(firmware.modemSn);
|
result << ",\"fw.modemSn\":" << buildEscapedString(daemon->firmware.modemSn);
|
||||||
result << ",\"fw.macMang\":" << buildEscapedString(firmware.macMang);
|
result << ",\"fw.macMang\":" << buildEscapedString(daemon->firmware.macMang);
|
||||||
result << ",\"fw.macData\":" << buildEscapedString(firmware.macData);
|
result << ",\"fw.macData\":" << buildEscapedString(daemon->firmware.macData);
|
||||||
result << "\n}";
|
result << "\n}";
|
||||||
return result.str();
|
return result.str();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user