Compare commits

..

No commits in common. "98dcc06a6a04b2562ccf2b6c44f25d1aef8dbb2f" and "3e4ffc8281be35dabe3ac686e9b110bf76692252" have entirely different histories.

View File

@ -95,25 +95,6 @@ public:
TerminalFirmwareVersion& operator= (const TerminalFirmwareVersion& src) = default; TerminalFirmwareVersion& operator= (const TerminalFirmwareVersion& src) = default;
}; };
static std::ostream& operator<<(std::ostream& out, CP_Result result) {
switch (result) {
case OK: out << "OK"; break;
case TIMEOUT: out << "TIMEOUT"; break;
case ERROR: out << "ERROR"; break;
case ABORT: out << "ABORT"; break;
case BUSY: out << "BUSY"; break;
default:
out << static_cast<int>(result);
}
return out;
}
static void logCpApiError(const char* desc, CP_Result err) {
if (err != OK) {
BOOST_LOG_TRIVIAL(error) << "CP API error in " << desc << ": " << err;
}
}
/** /**
* Этот демон нужен для того, чтобы получать статистику из API, а так же корректно сохранять настройки * Этот демон нужен для того, чтобы получать статистику из API, а так же корректно сохранять настройки
*/ */
@ -128,13 +109,13 @@ private:
#endif #endif
std::lock_guard lock(this->cpApiMutex); std::lock_guard lock(this->cpApiMutex);
logCpApiError("api_driver::TerminalApiDaemon::updateState()->CP_GetModulatorState()", CP_GetModulatorState(sid, modulator)); CP_GetModulatorState(sid, modulator);
logCpApiError("api_driver::TerminalApiDaemon::updateState()->CP_GetDemodulatorState()", CP_GetDemodulatorState(sid, demodulator)); CP_GetDemodulatorState(sid, demodulator);
logCpApiError("api_driver::TerminalApiDaemon::updateState()->CP_GetDeviceState()", CP_GetDeviceState(sid, device)); CP_GetDeviceState(sid, device);
#ifdef MODEM_IS_SCPC #ifdef MODEM_IS_SCPC
bool isCinC = getIsCinC(); bool isCinC = getIsCinC();
if (isCinC) { if (isCinC) {
logCpApiError("api_driver::TerminalApiDaemon::updateState()->CP_GetCinCState()", CP_GetCinCState(sid, cinc)); CP_GetCinCState(sid, cinc);
} }
#endif #endif
@ -161,13 +142,13 @@ private:
buc_lnb_settings bucLnb{}; buc_lnb_settings bucLnb{};
std::lock_guard lock(this->cpApiMutex); std::lock_guard lock(this->cpApiMutex);
logCpApiError("api_driver::TerminalApiDaemon::updateSettings()->CP_GetModulatorSettings()", CP_GetModulatorSettings(sid, mod)); CP_GetModulatorSettings(sid, mod);
logCpApiError("api_driver::TerminalApiDaemon::updateSettings()->CP_GetDemodulatorSettings()", CP_GetDemodulatorSettings(sid, demod)); CP_GetDemodulatorSettings(sid, demod);
#ifdef MODEM_IS_SCPC #ifdef MODEM_IS_SCPC
logCpApiError("api_driver::TerminalApiDaemon::updateSettings()->CP_GetAcmParams()", CP_GetAcmParams(sid, &acm)); CP_GetAcmParams(sid, &acm);
logCpApiError("api_driver::TerminalApiDaemon::updateSettings()->CP_GetDpdiParams()", CP_GetDpdiParams(sid, &dpdi)); CP_GetDpdiParams(sid, &dpdi);
#endif #endif
logCpApiError("api_driver::TerminalApiDaemon::updateSettings()->CP_GetBUC_LNB_settings()", CP_GetBUC_LNB_settings(sid, bucLnb)); CP_GetBUC_LNB_settings(sid, bucLnb);
{ {
std::lock_guard lock2(this->settingsMutex); std::lock_guard lock2(this->settingsMutex);
@ -185,15 +166,15 @@ private:
TerminalNetworkSettings s; TerminalNetworkSettings s;
std::string tmp; std::string tmp;
std::lock_guard lock(this->cpApiMutex); std::lock_guard lock(this->cpApiMutex);
logCpApiError("api_driver::TerminalApiDaemon::updateNetworkSettings()->CP_GetNetwork(addr)", CP_GetNetwork(sid, "addr", &tmp)); CP_GetNetwork(sid, "addr", &tmp);
s.managementIp = tmp + "/"; s.managementIp = tmp + "/";
tmp.clear(); logCpApiError("api_driver::TerminalApiDaemon::updateNetworkSettings()->CP_GetNetwork(mask)", CP_GetNetwork(sid, "mask", &tmp)); tmp.clear(); CP_GetNetwork(sid, "mask", &tmp);
s.managementIp += std::to_string(calculateSubnetMask(tmp)); s.managementIp += std::to_string(calculateSubnetMask(tmp));
tmp.clear(); logCpApiError("api_driver::TerminalApiDaemon::updateNetworkSettings()->CP_GetNetwork(gateway)", CP_GetNetwork(sid, "gateway", &s.managementGateway)); s.managementGateway = tmp; tmp.clear(); CP_GetNetwork(sid, "gateway", &s.managementGateway); s.managementGateway = tmp;
tmp.clear(); logCpApiError("api_driver::TerminalApiDaemon::updateNetworkSettings()->CP_GetNetwork(mode)", CP_GetNetwork(sid, "mode", &tmp)); tmp.clear(); CP_GetNetwork(sid, "mode", &tmp);
if (tmp == "tun") { if (tmp == "tun") {
s.mode = "l3"; s.mode = "l3";
logCpApiError("api_driver::TerminalApiDaemon::updateNetworkSettings()->CP_GetNetwork(addr_data)", CP_GetNetwork(sid, "addr_data", &s.dataIp)); CP_GetNetwork(sid, "addr_data", &s.dataIp);
s.dataIp += "/24"; s.dataIp += "/24";
} else { } else {
s.mode = "l2"; s.mode = "l2";
@ -210,7 +191,7 @@ private:
void updateQos() { void updateQos() {
bool tmp1; std::string tmp2; bool tmp1; std::string tmp2;
std::scoped_lock lock{this->cpApiMutex}; std::scoped_lock lock{this->cpApiMutex};
logCpApiError("api_driver::TerminalApiDaemon::updateQos()->CP_GetQoSSettings()", CP_GetQoSSettings(this->sid, tmp2, tmp1)); CP_GetQoSSettings(this->sid, tmp2, tmp1);
{ {
std::lock_guard lock2(this->qosSettingsMutex); std::lock_guard lock2(this->qosSettingsMutex);
this->qosEnabled = tmp1; this->qosEnabled = tmp1;
@ -224,9 +205,8 @@ private:
TSID sid{}; TSID sid{};
unsigned int access{}; unsigned int access{};
for (int connectAttempt = 0;; connectAttempt++) { for (int connectAttempt = 0;; connectAttempt++) {
BOOST_LOG_TRIVIAL(info) << "api_driver::TerminalApiDaemon::run(): Try to connect api (attempt " << connectAttempt << ")..."; BOOST_LOG_TRIVIAL(info) << "api_driver::ApiDriver::startDaemon(): Try to connect api (attempt " << connectAttempt << ")...";
auto res = CP_Login("admin", "pass", &sid, &access); auto res = CP_Login("admin", "pass", &sid, &access);
logCpApiError(R"(api_driver::TerminalApiDaemon::run()->CP_Login("admin", "pass"))", res);
if (res != OK) { if (res != OK) {
boost::this_thread::sleep_for(boost::chrono::duration(boost::chrono::milliseconds(1000))); boost::this_thread::sleep_for(boost::chrono::duration(boost::chrono::milliseconds(1000)));
} else { } else {
@ -235,20 +215,20 @@ private:
} }
std::string tmp; std::string tmp;
logCpApiError("api_driver::TerminalApiDaemon::updateState()->CP_GetDmaDebug(status_init)", CP_GetDmaDebug(sid, "status_init", &tmp)); CP_GetDmaDebug(sid, "status_init", &tmp);
{ {
std::lock_guard _lock(this->stateMutex); std::lock_guard _lock(this->stateMutex);
this->deviceInitState = tmp; this->deviceInitState = tmp;
} }
BOOST_LOG_TRIVIAL(info) << "api_driver::TerminalApiDaemon::run(): Success connect!"; BOOST_LOG_TRIVIAL(info) << "api_driver::ApiDriver::startDaemon(): Success connect!";
BOOST_LOG_TRIVIAL(info) << "api_driver::TerminalApiDaemon::run(): API status: " << tmp; BOOST_LOG_TRIVIAL(info) << "api_driver::ApiDriver::startDaemon(): API status: " << tmp;
logCpApiError("api_driver::TerminalApiDaemon::run()->CP_GetNetwork(version)", CP_GetNetwork(sid, "version", &firmware.version)); CP_GetNetwork(sid, "version", &firmware.version);
logCpApiError("api_driver::TerminalApiDaemon::run()->CP_GetNetwork(chip_id)", CP_GetNetwork(sid, "chip_id", &firmware.modemId)); CP_GetNetwork(sid, "chip_id", &firmware.modemId);
rtrim(firmware.modemId); rtrim(firmware.modemId);
logCpApiError("api_driver::TerminalApiDaemon::run()->CP_GetNetwork(serial)", CP_GetNetwork(sid, "serial", &firmware.modemSn)); CP_GetNetwork(sid, "serial", &firmware.modemSn);
logCpApiError("api_driver::TerminalApiDaemon::run()->CP_GetNetwork(mac_eth0)", CP_GetNetwork(sid, "mac_eth0", &firmware.macMang)); CP_GetNetwork(sid, "mac_eth0", &firmware.macMang);
logCpApiError("api_driver::TerminalApiDaemon::run()->CP_GetNetwork(mac_eth1)", CP_GetNetwork(sid, "mac_eth1", &firmware.macData)); CP_GetNetwork(sid, "mac_eth1", &firmware.macData);
} }
struct IntervalUpdate_t { struct IntervalUpdate_t {
@ -450,14 +430,14 @@ public:
#ifdef MODEM_IS_SCPC #ifdef MODEM_IS_SCPC
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);
logCpApiError("api_driver::TerminalApiDaemon::setSettingsRxTx()->CP_SetDmaDebug(begin_save_config)", CP_SetDmaDebug(sid, "begin_save_config", "")); CP_SetDmaDebug(sid, "begin_save_config", "");
logCpApiError("api_driver::TerminalApiDaemon::setSettingsRxTx()->CP_SetModulatorSettings()", CP_SetModulatorSettings(this->sid, mod)); CP_SetModulatorSettings(this->sid, mod);
logCpApiError("api_driver::TerminalApiDaemon::setSettingsRxTx()->CP_SetDemodulatorSettings()", CP_SetDemodulatorSettings(this->sid, demod)); CP_SetDemodulatorSettings(this->sid, demod);
logCpApiError("api_driver::TerminalApiDaemon::setSettingsRxTx()->CP_SetAcmParams()", CP_SetAcmParams(this->sid, acm)); CP_SetAcmParams(this->sid, acm);
if (readback) { if (readback) {
logCpApiError("api_driver::TerminalApiDaemon::setSettingsRxTx()->CP_GetModulatorSettings()", CP_GetModulatorSettings(this->sid, mod)); CP_GetModulatorSettings(this->sid, mod);
logCpApiError("api_driver::TerminalApiDaemon::setSettingsRxTx()->CP_GetDemodulatorSettings()", CP_GetDemodulatorSettings(this->sid, demod)); CP_GetDemodulatorSettings(this->sid, demod);
logCpApiError("api_driver::TerminalApiDaemon::setSettingsRxTx()->CP_GetAcmParams()", CP_GetAcmParams(this->sid, &acm)); CP_GetAcmParams(this->sid, &acm);
{ {
std::lock_guard lock2{this->settingsMutex}; std::lock_guard lock2{this->settingsMutex};
this->modSettings = mod; this->modSettings = mod;
@ -465,71 +445,71 @@ public:
this->acmSettings = acm; this->acmSettings = acm;
} }
} }
logCpApiError("api_driver::TerminalApiDaemon::setSettingsRxTx()->CP_SetDmaDebug(save_config)", CP_SetDmaDebug(sid, "save_config", "")); CP_SetDmaDebug(sid, "save_config", "");
} }
#else #else
void setSettingsRxTx(modulator_settings& mod, demodulator_settings& demod, bool readback = true) { void setSettingsRxTx(modulator_settings& mod, demodulator_settings& demod, bool readback = true) {
std::lock_guard lock(this->cpApiMutex); std::lock_guard lock(this->cpApiMutex);
logCpApiError("api_driver::TerminalApiDaemon::setSettingsRxTx()->CP_SetDmaDebug(begin_save_config)", CP_SetDmaDebug(sid, "begin_save_config", "")); CP_SetDmaDebug(sid, "begin_save_config", "");
logCpApiError("api_driver::TerminalApiDaemon::setSettingsRxTx()->CP_SetModulatorSettings()", CP_SetModulatorSettings(this->sid, mod)); CP_SetModulatorSettings(this->sid, mod);
logCpApiError("api_driver::TerminalApiDaemon::setSettingsRxTx()->CP_SetDemodulatorSettings()", CP_SetDemodulatorSettings(this->sid, demod)); CP_SetDemodulatorSettings(this->sid, demod);
if (readback) { if (readback) {
logCpApiError("api_driver::TerminalApiDaemon::setSettingsRxTx()->CP_GetModulatorSettings()", CP_GetModulatorSettings(this->sid, mod)); CP_GetModulatorSettings(this->sid, mod);
logCpApiError("api_driver::TerminalApiDaemon::setSettingsRxTx()->CP_GetDemodulatorSettings()", CP_GetDemodulatorSettings(this->sid, demod)); CP_GetDemodulatorSettings(this->sid, demod);
{ {
std::lock_guard lock2{this->settingsMutex}; std::lock_guard lock2{this->settingsMutex};
this->modSettings = mod; this->modSettings = mod;
this->demodSettings = demod; this->demodSettings = demod;
} }
} }
logCpApiError("api_driver::TerminalApiDaemon::setSettingsRxTx()->CP_SetDmaDebug(save_config)", CP_SetDmaDebug(sid, "save_config", "")); CP_SetDmaDebug(sid, "save_config", "");
} }
#endif #endif
#ifdef MODEM_IS_SCPC #ifdef MODEM_IS_SCPC
void setSettingsCinc(DPDI_parmeters& s, bool readback = true) { void setSettingsCinc(DPDI_parmeters& s, bool readback = true) {
std::lock_guard lock(this->cpApiMutex); std::lock_guard lock(this->cpApiMutex);
logCpApiError("api_driver::TerminalApiDaemon::setSettingsCinc()->CP_SetDmaDebug(begin_save_config)", CP_SetDmaDebug(sid, "begin_save_config", "")); CP_SetDmaDebug(sid, "begin_save_config", "");
logCpApiError("api_driver::TerminalApiDaemon::setSettingsCinc()->CP_SetDpdiParams()", CP_SetDpdiParams(sid, s))); CP_SetDpdiParams(sid, s);
if (readback) { if (readback) {
logCpApiError("api_driver::TerminalApiDaemon::setSettingsCinc()->CP_GetDpdiParams()", CP_GetDpdiParams(this->sid, &s)); CP_GetDpdiParams(this->sid, &s);
{ {
std::lock_guard lock2{this->settingsMutex}; std::lock_guard lock2{this->settingsMutex};
this->dpdiSettings = s; this->dpdiSettings = s;
} }
} }
logCpApiError("api_driver::TerminalApiDaemon::setSettingsCinc()->CP_SetDmaDebug(save_config)", CP_SetDmaDebug(sid, "save_config", "")); CP_SetDmaDebug(sid, "save_config", "");
} }
#endif #endif
void setSettingsBucLnb(buc_lnb_settings& bucLnb, bool readback = true) { void setSettingsBucLnb(buc_lnb_settings& bucLnb, bool readback = true) {
std::lock_guard lock(this->cpApiMutex); std::lock_guard lock(this->cpApiMutex);
logCpApiError("api_driver::TerminalApiDaemon::setSettingsBucLnb()->CP_SetDmaDebug(begin_save_config)", CP_SetDmaDebug(sid, "begin_save_config", "")); CP_SetDmaDebug(sid, "begin_save_config", "");
logCpApiError("api_driver::TerminalApiDaemon::setSettingsBucLnb()->CP_SetBUC_LNB_settings()", CP_SetBUC_LNB_settings(this->sid, bucLnb)); CP_SetBUC_LNB_settings(this->sid, bucLnb);
if (readback) { if (readback) {
logCpApiError("api_driver::TerminalApiDaemon::setSettingsBucLnb()->CP_GetBUC_LNB_settings()", CP_GetBUC_LNB_settings(this->sid, bucLnb)); CP_GetBUC_LNB_settings(this->sid, bucLnb);
{ {
std::lock_guard lock2{this->settingsMutex}; std::lock_guard lock2{this->settingsMutex};
this->bucLnbSettings = bucLnb; this->bucLnbSettings = bucLnb;
} }
} }
logCpApiError("api_driver::TerminalApiDaemon::setSettingsBucLnb()->CP_SetDmaDebug(save_config)", CP_SetDmaDebug(sid, "save_config", "")); CP_SetDmaDebug(sid, "save_config", "");
} }
void setQosSettings(bool enabled, const std::string& str, bool readback = true) { void setQosSettings(bool enabled, const std::string& str, bool readback = true) {
std::lock_guard lock(this->cpApiMutex); std::lock_guard lock(this->cpApiMutex);
logCpApiError("api_driver::TerminalApiDaemon::setQosSettings()->CP_SetDmaDebug()", CP_SetDmaDebug(sid, "begin_save_config", "")); CP_SetDmaDebug(sid, "begin_save_config", "");
logCpApiError("api_driver::TerminalApiDaemon::setQosSettings()->CP_SetQoSSettings()", CP_SetQoSSettings(this->sid, str, enabled)); CP_SetQoSSettings(this->sid, str, enabled);
if (readback) { if (readback) {
bool tmp1; std::string tmp2; bool tmp1; std::string tmp2;
logCpApiError("api_driver::TerminalApiDaemon::setQosSettings()->CP_GetQoSSettings()", CP_GetQoSSettings(this->sid, tmp2, tmp1)); CP_GetQoSSettings(this->sid, tmp2, tmp1);
{ {
std::lock_guard lock2(this->qosSettingsMutex); std::lock_guard lock2(this->qosSettingsMutex);
this->qosEnabled = tmp1; this->qosEnabled = tmp1;
this->qosClassesJson = tmp2.empty() ? DEFAULT_QOS_CLASSES : tmp2; this->qosClassesJson = tmp2.empty() ? DEFAULT_QOS_CLASSES : tmp2;
} }
} }
logCpApiError("api_driver::TerminalApiDaemon::setQosSettings()->CP_SetDmaDebug()", CP_SetDmaDebug(sid, "save_config", "")); CP_SetDmaDebug(sid, "save_config", "");
} }
void setNetworkSettings(TerminalNetworkSettings& s, bool readback = true) { void setNetworkSettings(TerminalNetworkSettings& s, bool readback = true) {
@ -541,13 +521,13 @@ public:
else { throw std::runtime_error("invalid mode"); } else { throw std::runtime_error("invalid mode"); }
std::lock_guard lock(this->cpApiMutex); std::lock_guard lock(this->cpApiMutex);
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetDmaDebug(begin_save_config)", CP_SetDmaDebug(sid, "begin_save_config", "")); CP_SetDmaDebug(sid, "begin_save_config", "");
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetNetwork(mode)", CP_SetNetwork(sid, "mode", isL2 ? "tap" : "tun")); CP_SetNetwork(sid, "mode", isL2 ? "tap" : "tun");
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetNetwork(addr)", CP_SetNetwork(sid, "addr", mang.first.c_str())); CP_SetNetwork(sid, "addr", mang.first.c_str());
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetNetwork(mask)", CP_SetNetwork(sid, "mask", mang.second.c_str())); CP_SetNetwork(sid, "mask", mang.second.c_str());
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetNetwork(gateway)", CP_SetNetwork(sid, "gateway", s.managementGateway.c_str())); CP_SetNetwork(sid, "gateway", s.managementGateway.c_str());
if (!isL2) { if (!isL2) {
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetNetwork(data_addr)", CP_SetNetwork(sid, "data_addr", data.first.c_str())); CP_SetNetwork(sid, "data_addr", data.first.c_str());
// TODO маска не устанавливается, потому что в API этого нет // TODO маска не устанавливается, потому что в API этого нет
} }
// TODO MTU не устанавливается, потому что в API этого нет // TODO MTU не устанавливается, потому что в API этого нет
@ -556,15 +536,15 @@ public:
std::string tmp; std::string tmp;
s.loadDefaults(); s.loadDefaults();
s.managementIp.clear(); s.managementIp.clear();
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_GetNetwork(addr)", CP_GetNetwork(sid, "addr", &s.managementIp)); CP_GetNetwork(sid, "addr", &s.managementIp);
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_GetNetwork(mask)", CP_GetNetwork(sid, "mask", &tmp)); CP_GetNetwork(sid, "mask", &tmp);
s.managementIp += "/"; s.managementIp += "/";
s.managementIp += std::to_string(calculateSubnetMask(tmp)); s.managementIp += std::to_string(calculateSubnetMask(tmp));
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_GetNetwork(gateway)", CP_GetNetwork(sid, "gateway", &s.managementGateway)); CP_GetNetwork(sid, "gateway", &s.managementGateway);
tmp.clear(); logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_GetNetwork(mode)", CP_GetNetwork(sid, "mode", &tmp)); tmp.clear(); CP_GetNetwork(sid, "mode", &tmp);
if (tmp == "tun") { if (tmp == "tun") {
s.mode = "l3"; s.mode = "l3";
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_GetNetwork(addr_data)", CP_GetNetwork(sid, "addr_data", &s.dataIp)); CP_GetNetwork(sid, "addr_data", &s.dataIp);
} else { } else {
s.mode = "l2"; s.mode = "l2";
s.dataIp = "0.0.0.0/24"; s.dataIp = "0.0.0.0/24";
@ -575,20 +555,20 @@ public:
this->networkSettings = s; this->networkSettings = s;
} }
} }
logCpApiError("api_driver::TerminalApiDaemon::setNetworkSettings()->CP_SetDmaDebug(save_config)", CP_SetDmaDebug(sid, "save_config", "")); CP_SetDmaDebug(sid, "save_config", "");
} }
void resetPacketStatistics() { void resetPacketStatistics() {
std::string tmp; std::string tmp;
std::lock_guard lock(this->cpApiMutex); std::lock_guard lock(this->cpApiMutex);
logCpApiError("api_driver::TerminalApiDaemon::resetPacketStatistics()->CP_GetDmaDebug(reset_cnt_rx)", CP_GetDmaDebug(sid, "reset_cnt_rx", &tmp)); CP_GetDmaDebug(sid, "reset_cnt_rx", &tmp);
} }
void resetDefaultSettings() { void resetDefaultSettings() {
std::lock_guard lock(this->cpApiMutex); std::lock_guard lock(this->cpApiMutex);
logCpApiError("api_driver::TerminalApiDaemon::resetDefaultSettings()->CP_SetDmaDebug(begin_save_config)", CP_SetDmaDebug(sid, "begin_save_config", "")); CP_SetDmaDebug(sid, "begin_save_config", " ");
logCpApiError("api_driver::TerminalApiDaemon::resetDefaultSettings()->CP_SetDmaDebug(default_params)", CP_SetDmaDebug(sid, "default_params", "")); CP_SetDmaDebug(sid, "default_params", "");
logCpApiError("api_driver::TerminalApiDaemon::resetDefaultSettings()->CP_SetDmaDebug(save_config)", CP_SetDmaDebug(sid, "save_config", "")); CP_SetDmaDebug(sid, "save_config", " ");
} }
~TerminalApiDaemon() { ~TerminalApiDaemon() {