Compare commits
No commits in common. "c05a9cff7a893f872fd7456db2cf608e0f474293" and "43f35da9a2b076e3ff23a0b48524f589e739e7f6" have entirely different histories.
c05a9cff7a
...
43f35da9a2
@ -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();
|
||||
}
|
||||
|
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user