изменил политику кеширования, убрал строковые константы из статистик (пилоты, размер кадра)

This commit is contained in:
Vladislav Ostapov 2024-11-12 14:13:07 +03:00
parent c0e7e1e300
commit 087da149f1
4 changed files with 47 additions and 42 deletions

View File

@ -105,17 +105,11 @@ public:
sf->registerFile(VUE_JS, mime_types::javascript, true); sf->registerFile(VUE_JS, mime_types::javascript, true);
sf->registerFile(KB_MP4, mime_types::video_mp4, true); sf->registerFile(KB_MP4, mime_types::video_mp4, true);
#if USE_DEBUG sf->registerFile(STYLE_CSS, mime_types::text_css, true);
constexpr bool allowCacheCss = false; sf->registerFile(FIELDS_CSS, mime_types::text_css, true);
#else
constexpr bool allowCacheCss = true;
#endif
sf->registerFile(INDEX_HTML, mime_types::text_html, allowCacheCss); sf->registerFile(INDEX_HTML, mime_types::text_html, false);
sf->registerFile(LOGIN_HTML, mime_types::text_html, allowCacheCss); sf->registerFile(LOGIN_HTML, mime_types::text_html, true);
sf->registerFile(STYLE_CSS, mime_types::text_css, allowCacheCss);
sf->registerFile(FIELDS_CSS, mime_types::text_css, allowCacheCss);
} }
void registerResources(http::server::Server& s) { void registerResources(http::server::Server& s) {

View File

@ -43,6 +43,7 @@ void http::resource::StaticFileFactory::registerFile(const std::string &path, se
void http::resource::StaticFileFactory::serve(const std::string &path, server::Reply &rep) { void http::resource::StaticFileFactory::serve(const std::string &path, server::Reply &rep) {
for (auto& f: this->files) { for (auto& f: this->files) {
if (f.path == path) { if (f.path == path) {
#ifdef USE_DEBUG
if (f.allowCache) { if (f.allowCache) {
rep.content.clear(); rep.content.clear();
rep.content.insert(rep.content.end(), f.content.begin(), f.content.end()); rep.content.insert(rep.content.end(), f.content.begin(), f.content.end());
@ -50,6 +51,10 @@ void http::resource::StaticFileFactory::serve(const std::string &path, server::R
BOOST_LOG_TRIVIAL(debug) << "Reload file " << path << " (http path: " << path << ")"; BOOST_LOG_TRIVIAL(debug) << "Reload file " << path << " (http path: " << path << ")";
loadFile(f.path, rep.content); loadFile(f.path, rep.content);
} }
#else
rep.content.clear();
rep.content.insert(rep.content.end(), f.content.begin(), f.content.end());
#endif
rep.status = server::ok; rep.status = server::ok;
// rep.headers.clear(); // rep.headers.clear();
rep.headers.push_back({.name = "Content-Type", .value = server::mime_types::toString(f.type)}); rep.headers.push_back({.name = "Content-Type", .value = server::mime_types::toString(f.type)});

View File

@ -242,6 +242,12 @@ public:
CP_SetDmaDebug(sid, "save_config", ""); CP_SetDmaDebug(sid, "save_config", "");
} }
void resetPacketStatistics() {
std::string tmp;
std::lock_guard lock(this->cpApiMutex);
CP_GetDmaDebug(sid, "reset_cnt_rx", &tmp);
}
~TerminalApiDaemon() { ~TerminalApiDaemon() {
try { try {
daemon.interrupt(); daemon.interrupt();
@ -321,15 +327,15 @@ std::string api_driver::ApiDriver::loadTerminalState() const {
result << ",\"tx.snr\":"; writeDouble(result, modulator.snr_remote); result << ",\"tx.snr\":"; writeDouble(result, modulator.snr_remote);
if (modulator.is_short) { if (modulator.is_short) {
result << R"(,"tx.frameSize":"short")"; result << R"(,"tx.frameSizeNormal":false)";
} else { } else {
result << R"(,"tx.frameSize":"normal")"; result << R"(,"tx.frameSizeNormal":true)";
} }
if (modulator.is_pilots) { if (modulator.is_pilots) {
result << R"(,"tx.pilots":"pilots")"; result << R"(,"tx.isPilots":true)";
} else { } else {
result << R"(,"tx.pilots":"no pilots")"; result << R"(,"tx.isPilots":false)";
} }
result << ",\"tx.speedOnTxKbit\":"; writeDouble(result, static_cast<double>(modulator.speed_in_bytes_tx) / 128.0); result << ",\"tx.speedOnTxKbit\":"; writeDouble(result, static_cast<double>(modulator.speed_in_bytes_tx) / 128.0);
@ -347,15 +353,15 @@ std::string api_driver::ApiDriver::loadTerminalState() const {
result << ",\"rx.modcod\":" << demodulator.modcod; result << ",\"rx.modcod\":" << demodulator.modcod;
if (demodulator.is_short) { if (demodulator.is_short) {
result << R"(,"rx.frameSize":"short")"; result << R"(,"rx.frameSizeNormal":false)";
} else { } else {
result << R"(,"rx.frameSize":"normal")"; result << R"(,"rx.frameSizeNormal":true)";
} }
if (demodulator.is_pilots) { if (demodulator.is_pilots) {
result << R"(,"rx.pilots":"pilots")"; result << R"(,"rx.isPilots":true)";
} else { } else {
result << R"(,"rx.pilots":"no pilots")"; result << R"(,"rx.isPilots":false)";
} }
result << ",\n\"rx.symError\":"; writeDouble(result, demodulator.sym_err); result << ",\n\"rx.symError\":"; writeDouble(result, demodulator.sym_err);
@ -405,8 +411,7 @@ std::string api_driver::ApiDriver::loadTerminalState() const {
void api_driver::ApiDriver::resetPacketStatistics() const { void api_driver::ApiDriver::resetPacketStatistics() const {
std::string tmp; this->daemon->resetPacketStatistics();
CP_GetDmaDebug(sid, "reset_cnt_rx", &tmp);
} }
std::string api_driver::ApiDriver::loadSettings() const { std::string api_driver::ApiDriver::loadSettings() const {
@ -441,8 +446,8 @@ std::string api_driver::ApiDriver::loadSettings() const {
result << ",\"tx.centerFreq\":"; writeDouble(result, modSettings.central_freq_in_kGz, 3); result << ",\"tx.centerFreq\":"; writeDouble(result, modSettings.central_freq_in_kGz, 3);
result << ",\n\"dvbs2.isAcm\":" << boolAsStr(acmSettings.enable); result << ",\n\"dvbs2.isAcm\":" << boolAsStr(acmSettings.enable);
result << ",\"dvbs2.frameSize\":" << ((modulatorModcod & 2) ? "\"short\"" : "\"normal\""); result << ",\"dvbs2.frameSizeNormal\":" << boolAsStr(!(modulatorModcod & 2));
// result << ",\"dvbs2.pilots\":" << "null"; // result << ",\"dvbs2.isPilots\":" << "null";
result << ",\"dvbs2.ccm_modcod\":" << (modulatorModcod >> 4); result << ",\"dvbs2.ccm_modcod\":" << (modulatorModcod >> 4);
result << ",\"dvbs2.acm_maxModcod\":" << (acmSettings.max_modcod >> 2); result << ",\"dvbs2.acm_maxModcod\":" << (acmSettings.max_modcod >> 2);
result << ",\"dvbs2.acm_minModcod\":" << (acmSettings.min_modcod >> 2); result << ",\"dvbs2.acm_minModcod\":" << (acmSettings.min_modcod >> 2);

View File

@ -31,7 +31,7 @@
<span class="nav-bar-element">Передача: <span :class="{ indicator_good: stat_tx.state === true, indicator: true }"></span></span> <span class="nav-bar-element">Передача: <span :class="{ indicator_good: stat_tx.state === true, indicator: true }"></span></span>
<span class="nav-bar-element">Тест: <span :class="{ indicator_good: (param.general.isTestInputData === true || param.general.modulatorMode === 'test'), indicator: true }"></span></span> <span class="nav-bar-element">Тест: <span :class="{ indicator_good: (param.general.isTestInputData === true || param.general.modulatorMode === 'test'), indicator: true }"></span></span>
<!-- Последнее обновление: {{ lastUpdateTime }}--> <!-- Последнее обновление: {{ lastUpdateTime }}-->
<div :class="{ value_bad: initState !== 'Успешная инициализация системы' }">{{ initState }}</div> <span :class="{ value_bad: initState !== 'Успешная инициализация системы' }">{{ initState }}</span>
<div class="tabs-header"> <div class="tabs-header">
<span style="font-weight:bold">RSCM-101</span> <span style="font-weight:bold">RSCM-101</span>
@ -55,8 +55,8 @@
<tr><th>Захват пакетной синхр.</th><td><span :class="{ indicator_bad: stat_rx.pkt_sync === false, indicator_good: stat_rx.pkt_sync === true, indicator: true }"></span></td></tr> <tr><th>Захват пакетной синхр.</th><td><span :class="{ indicator_bad: stat_rx.pkt_sync === false, indicator_good: stat_rx.pkt_sync === true, indicator: true }"></span></td></tr>
<tr><th>ОСШ/RSSI</th><td>{{ stat_rx.snr }} / {{ stat_rx.rssi }}</td></tr> <tr><th>ОСШ/RSSI</th><td>{{ stat_rx.snr }} / {{ stat_rx.rssi }}</td></tr>
<tr><th>Modcod</th><td>{{ stat_rx.modcod }}</td></tr> <tr><th>Modcod</th><td>{{ stat_rx.modcod }}</td></tr>
<tr><th>Размер кадра</th><td>{{ stat_rx.frameSize }}</td></tr> <tr><th>Размер кадра</th><td>{{ stat_rx.frameSizeNormal ? 'normal' : 'short' }}</td></tr>
<tr><th>Пилот-символы</th><td>{{ stat_rx.pilots }}</td></tr> <tr><th>Пилот-символы</th><td>{{ stat_rx.isPilots ? 'pilots' : 'no pilots' }}</td></tr>
<tr><th>Символьная ошибка</th><td>{{ stat_rx.symError }}</td></tr> <tr><th>Символьная ошибка</th><td>{{ stat_rx.symError }}</td></tr>
<tr><th>Грубая/точная част. ошибка, Гц</th><td>{{ stat_rx.freqErr }} / {{ stat_rx.freqErrAcc }}</td></tr> <tr><th>Грубая/точная част. ошибка, Гц</th><td>{{ stat_rx.freqErr }} / {{ stat_rx.freqErrAcc }}</td></tr>
<tr><th>Ур. входного сигнала</th><td>{{ stat_rx.inputSignalLevel }}</td></tr> <tr><th>Ур. входного сигнала</th><td>{{ stat_rx.inputSignalLevel }}</td></tr>
@ -82,8 +82,8 @@
<tr><th>Передача</th><td><span :class="{ indicator_bad: stat_tx.state === false, indicator_good: stat_tx.state === true, indicator: true }"></span></td></tr> <tr><th>Передача</th><td><span :class="{ indicator_bad: stat_tx.state === false, indicator_good: stat_tx.state === true, indicator: true }"></span></td></tr>
<tr><th>ОСШ дальнего приема</th><td>{{ stat_tx.snr }}</td></tr> <tr><th>ОСШ дальнего приема</th><td>{{ stat_tx.snr }}</td></tr>
<tr><th>Modcod</th><td>{{ stat_tx.modcod }}</td></tr> <tr><th>Modcod</th><td>{{ stat_tx.modcod }}</td></tr>
<tr><th>Размер кадра</th><td>{{ stat_tx.frameSize }}</td></tr> <tr><th>Размер кадра</th><td>{{ stat_tx.frameSizeNormal ? 'normal' : 'short' }}</td></tr>
<tr><th>Пилот-символы</th><td>{{ stat_tx.pilots }}</td></tr> <tr><th>Пилот-символы</th><td>{{ stat_tx.isPilots ? 'pilots' : 'no pilots' }}</td></tr>
<tr><th>Инф. скорость на передаче</th><td>{{ stat_tx.speedOnTxKbit }} kbit/s</td></tr> <tr><th>Инф. скорость на передаче</th><td>{{ stat_tx.speedOnTxKbit }} kbit/s</td></tr>
<tr><th>Инф. скорость на интерфейсе</th><td>{{ stat_tx.speedOnIifKbit }} kbit/s</td></tr> <tr><th>Инф. скорость на интерфейсе</th><td>{{ stat_tx.speedOnIifKbit }} kbit/s</td></tr>
</tbody> </tbody>
@ -196,14 +196,14 @@
</label> </label>
<label> <label>
<span>Размер кадра</span> <span>Размер кадра</span>
<select v-model="param.dvbs2.frameSize"> <select v-model="param.dvbs2.frameSizeNormal">
<option value="normal">normal</option> <option value="true">normal</option>
<option value="short">short</option> <option value="false">short</option>
</select> </select>
</label> </label>
<!-- <label>--> <!-- <label>-->
<!-- <span>Пилот-символы</span>--> <!-- <span>Пилот-символы</span>-->
<!-- <select v-model="param.dvbs2.pilots">--> <!-- <select v-model="param.dvbs2.isPilots">-->
<!-- <option value="true">pilots</option>--> <!-- <option value="true">pilots</option>-->
<!-- <option value="false">no pilots</option>--> <!-- <option value="false">no pilots</option>-->
<!-- </select>--> <!-- </select>-->
@ -655,8 +655,8 @@
// куча других параметров, идет в том же порядке, что и в таблице // куча других параметров, идет в том же порядке, что и в таблице
snr: '?', rssi: '?', snr: '?', rssi: '?',
modcod: '?', frameSize: '?', modcod: '?', frameSizeNormal: '?',
pilots: '?', isPilots: '?',
symError: '?', symError: '?',
freqErr: '?', freqErrAcc: '?', freqErr: '?', freqErrAcc: '?',
inputSignalLevel: '?', inputSignalLevel: '?',
@ -672,7 +672,7 @@
state: '?', state: '?',
// прочие поля // прочие поля
snr: '?', modcod: '?', frameSize: '?', pilots: '?', speedOnTxKbit: '?', speedOnIifKbit: '?', snr: '?', modcod: '?', frameSizeNormal: '?', isPilots: '?', speedOnTxKbit: '?', speedOnIifKbit: '?',
}, },
stat_cinc: { stat_cinc: {
occ: '?', occ: '?',
@ -701,8 +701,8 @@
}, },
dvbs2: { dvbs2: {
mode: null, // ccm/acm mode: null, // ccm/acm
frameSize: null, // 'normal' / 'short' frameSizeNormal: null, // 'normal' / 'short'
// pilots: false, // isPilots: false,
// CCM // CCM
ccm_modulation: null, ccm_modulation: null,
@ -793,6 +793,7 @@
updateStatistics(vals) { updateStatistics(vals) {
this.lastUpdateTime = new Date(); this.lastUpdateTime = new Date();
this.initState = vals["mainState"]["initState"]
this.isCinC = vals["mainState"]["isCinC"] this.isCinC = vals["mainState"]["isCinC"]
this.stat_rx.state = vals["mainState"]["rx.state"] this.stat_rx.state = vals["mainState"]["rx.state"]
@ -803,8 +804,8 @@
this.stat_rx.snr = vals["mainState"]["rx.snr"] this.stat_rx.snr = vals["mainState"]["rx.snr"]
this.stat_rx.rssi = vals["mainState"]["rx.rssi"] this.stat_rx.rssi = vals["mainState"]["rx.rssi"]
this.stat_rx.modcod = modcodToStr(vals["mainState"]["rx.modcod"]) this.stat_rx.modcod = modcodToStr(vals["mainState"]["rx.modcod"])
this.stat_rx.frameSize = vals["mainState"]["rx.frameSize"] this.stat_rx.frameSizeNormal = vals["mainState"]["rx.frameSizeNormal"]
this.stat_rx.pilots = vals["mainState"]["rx.pilots"] this.stat_rx.isPilots = vals["mainState"]["rx.isPilots"]
this.stat_rx.symError = vals["mainState"]["rx.symError"] this.stat_rx.symError = vals["mainState"]["rx.symError"]
this.stat_rx.freqErr = vals["mainState"]["rx.freqErr"] this.stat_rx.freqErr = vals["mainState"]["rx.freqErr"]
this.stat_rx.freqErrAcc = vals["mainState"]["rx.freqErrAcc"] this.stat_rx.freqErrAcc = vals["mainState"]["rx.freqErrAcc"]
@ -819,8 +820,8 @@
this.stat_tx.state = vals["mainState"]["tx.state"] this.stat_tx.state = vals["mainState"]["tx.state"]
this.stat_tx.snr = vals["mainState"]["tx.snr"] this.stat_tx.snr = vals["mainState"]["tx.snr"]
this.stat_tx.modcod = modcodToStr(vals["mainState"]["tx.modcod"]) this.stat_tx.modcod = modcodToStr(vals["mainState"]["tx.modcod"])
this.stat_tx.frameSize = vals["mainState"]["tx.frameSize"] this.stat_tx.frameSizeNormal = vals["mainState"]["tx.frameSizeNormal"]
this.stat_tx.pilots = vals["mainState"]["tx.pilots"] this.stat_tx.isPilots = vals["mainState"]["tx.isPilots"]
this.stat_tx.speedOnTxKbit = vals["mainState"]["tx.speedOnTxKbit"] this.stat_tx.speedOnTxKbit = vals["mainState"]["tx.speedOnTxKbit"]
this.stat_tx.speedOnIifKbit = vals["mainState"]["tx.speedOnIifKbit"] this.stat_tx.speedOnIifKbit = vals["mainState"]["tx.speedOnIifKbit"]
@ -978,8 +979,8 @@
this.param.tx.centerFreq = vals["settings"]["tx.centerFreq"] this.param.tx.centerFreq = vals["settings"]["tx.centerFreq"]
this.param.dvbs2.mode = (vals["settings"]["dvbs2.isAcm"] ? 'acm' : 'ccm') this.param.dvbs2.mode = (vals["settings"]["dvbs2.isAcm"] ? 'acm' : 'ccm')
this.param.dvbs2.frameSize = vals["settings"]["dvbs2.frameSize"] this.param.dvbs2.frameSizeNormal = vals["settings"]["dvbs2.frameSizeNormal"]
// this.param.dvbs2.pilots = vals["settings"]["dvbs2.pilots"] // this.param.dvbs2.isPilots = vals["settings"]["dvbs2.isPilots"]
let m = extractModulationAndSpeedFromModcod(vals["settings"]["dvbs2.ccm_modcod"]) let m = extractModulationAndSpeedFromModcod(vals["settings"]["dvbs2.ccm_modcod"])
this.param.dvbs2.ccm_modulation = m.modulation this.param.dvbs2.ccm_modulation = m.modulation