Compare commits

..

No commits in common. "c05a9cff7a893f872fd7456db2cf608e0f474293" and "43f35da9a2b076e3ff23a0b48524f589e739e7f6" have entirely different histories.

2 changed files with 43 additions and 28 deletions

View File

@ -100,6 +100,28 @@ public:
*/
class api_driver::TerminalApiDaemon {
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() {
modulator_state modulator{};
demodulator_state demodulator{};
@ -189,12 +211,7 @@ 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);
updateFirmwareSettings();
struct IntervalUpdate_t {
int64_t lastUpdate;
@ -274,6 +291,9 @@ private:
}
}
std::shared_mutex firmwareMutex;
TerminalFirmwareVersion firmware;
std::shared_mutex stateMutex;
modulator_state modState{};
demodulator_state demodState{};
@ -299,8 +319,6 @@ public:
TSID sid;
boost::thread daemon;
TerminalFirmwareVersion firmware;
explicit TerminalApiDaemon(TSID sid): qosEnabled(false), sid(sid), daemon([this]() { this->run(); }) {
this->qosClassesJson = DEFAULT_QOS_CLASSES;
}
@ -352,6 +370,11 @@ public:
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) {
std::lock_guard lock(this->cpApiMutex);
CP_SetDmaDebug(sid, "begin_save_config", "");
@ -486,25 +509,15 @@ public:
};
api_driver::ApiDriver::ApiDriver() = default;
api_driver::ApiDriver::ApiDriver() {
}
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_Login("admin", "pass", &sid, &access);
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);
BOOST_LOG_TRIVIAL(info) << "api_driver::ApiDriver::startDaemon(): API daemon succes started!";
@ -747,12 +760,14 @@ std::string api_driver::ApiDriver::loadFirmwareVersion() const {
return R"({"error": "api daemon not started!"})";
}
TerminalFirmwareVersion firmware;
daemon->getFirmwareVersion(firmware);
std::stringstream result;
result << "{\n\"fw.version\":" << buildEscapedString(daemon->firmware.version);
result << ",\"fw.modemId\":" << buildEscapedString(daemon->firmware.modemId);
result << ",\"fw.modemSn\":" << buildEscapedString(daemon->firmware.modemSn);
result << ",\"fw.macMang\":" << buildEscapedString(daemon->firmware.macMang);
result << ",\"fw.macData\":" << buildEscapedString(daemon->firmware.macData);
result << "{\n\"fw.version\":" << buildEscapedString(firmware.version);
result << ",\"fw.modemId\":" << buildEscapedString(firmware.modemId);
result << ",\"fw.modemSn\":" << buildEscapedString(firmware.modemSn);
result << ",\"fw.macMang\":" << buildEscapedString(firmware.macMang);
result << ",\"fw.macData\":" << buildEscapedString(firmware.macData);
result << "\n}";
return result.str();
}

View File

@ -167,7 +167,7 @@
<h3>Параметры передачи</h3>
<label>
<span>Центральная частота, КГц</span>
<input v-model="param.tx.centerFreq" type="number" step="0.01"/>
<input v-model="param.tx.centerFreq" type="number"/>
</label>
<label>
<span>Символьная скорость, Бод</span>
@ -316,7 +316,7 @@
</label>
<label>
<span>Центральная частота, кГц</span>
<input v-model="param.rx.centerFreq" type="number" step="0.01"/>
<input v-model="param.rx.centerFreq" type="number"/>
</label>
<label>
<span>Символьная скорость, Бод</span>