Compare commits
2 Commits
6ad84b27b6
...
8cb2e88ba5
Author | SHA1 | Date | |
---|---|---|---|
8cb2e88ba5 | |||
0a4ac1f32a |
@ -1,6 +1,7 @@
|
|||||||
#include "terminal_api_driver.h"
|
#include "terminal_api_driver.h"
|
||||||
#include "terminal_api/ControlProtoCInterface.h"
|
#include "terminal_api/ControlProtoCInterface.h"
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
timer_->timeout().connect([=]{
|
timer_->timeout().connect([=]{
|
||||||
@ -42,12 +43,18 @@ static bool DriverCP_GetLevelDemod(TSID sid, const char* param) {
|
|||||||
return variable_dbl == 0;
|
return variable_dbl == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool DriverCP_GetGain(TSID sid, const char* param) {
|
static bool DriverCP_GetTxPower(TSID sid) {
|
||||||
double variable_dbl = 0;
|
double variable_dbl = 0;
|
||||||
CP_GetGain(sid, param, &variable_dbl);
|
CP_GetGain(sid, "TXPWD", &variable_dbl);
|
||||||
return variable_dbl != 0;
|
return variable_dbl != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool DriverCp_GetIsCinC(TSID sid) {
|
||||||
|
uint32_t mode_demod = 0;
|
||||||
|
CP_GetDemodulatorParams(sid, "mode_demod", &mode_demod);
|
||||||
|
return mode_demod == 1;
|
||||||
|
}
|
||||||
|
|
||||||
static const char* boolAsStr(bool value) {
|
static const char* boolAsStr(bool value) {
|
||||||
return value ? "true" : "false";
|
return value ? "true" : "false";
|
||||||
}
|
}
|
||||||
@ -56,13 +63,16 @@ std::string api_driver::ApiDriver::loadTerminalState() {
|
|||||||
std::stringstream result;
|
std::stringstream result;
|
||||||
result << "{";
|
result << "{";
|
||||||
|
|
||||||
{
|
const auto txEnable = DriverCP_GetTxPower(sid);
|
||||||
// формируем структуру TX
|
const auto isCinC = DriverCp_GetIsCinC(sid);
|
||||||
|
result << "\"isCinC\":" << boolAsStr(isCinC);
|
||||||
|
|
||||||
result << "\"tx.state\":" << boolAsStr(DriverCP_GetGain(sid, "TXPWD"));
|
// формируем структуру для TX
|
||||||
|
{
|
||||||
|
result << ",\"tx.state\":" << boolAsStr(txEnable);
|
||||||
|
|
||||||
double tmp = 0;
|
double tmp = 0;
|
||||||
char tmpStr[64];
|
char tmpStr[32];
|
||||||
|
|
||||||
CP_GetLevelDemod(sid, "snr_acm", &tmp);
|
CP_GetLevelDemod(sid, "snr_acm", &tmp);
|
||||||
sprintf(tmpStr, "%.2f", tmp);
|
sprintf(tmpStr, "%.2f", tmp);
|
||||||
@ -93,9 +103,8 @@ std::string api_driver::ApiDriver::loadTerminalState() {
|
|||||||
result << ",\"tx.speedOnIifKbit\":" << tmpStr;
|
result << ",\"tx.speedOnIifKbit\":" << tmpStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// формируем структуру для RX
|
||||||
{
|
{
|
||||||
// формируем структуру RX
|
|
||||||
|
|
||||||
const auto sym_sync_lock = DriverCP_GetLevelDemod(sid, "sym_sync_lock"); // захват символьной
|
const auto sym_sync_lock = DriverCP_GetLevelDemod(sid, "sym_sync_lock"); // захват символьной
|
||||||
const auto freq_search_lock = DriverCP_GetLevelDemod(sid, "freq_lock"); // Захват поиска по частоте
|
const auto freq_search_lock = DriverCP_GetLevelDemod(sid, "freq_lock"); // Захват поиска по частоте
|
||||||
const auto afc_lock = DriverCP_GetLevelDemod(sid, "afc_lock"); // захват ФАПЧ
|
const auto afc_lock = DriverCP_GetLevelDemod(sid, "afc_lock"); // захват ФАПЧ
|
||||||
@ -109,43 +118,14 @@ std::string api_driver::ApiDriver::loadTerminalState() {
|
|||||||
result << ",\"rx.pkt_sync\":" << boolAsStr(pkt_sync);
|
result << ",\"rx.pkt_sync\":" << boolAsStr(pkt_sync);
|
||||||
|
|
||||||
double tmpd = 0; uint32_t tmpu32 = 0;
|
double tmpd = 0; uint32_t tmpu32 = 0;
|
||||||
char tmpStr[64];
|
char tmpStr[32];
|
||||||
|
|
||||||
/*
|
|
||||||
rx: {
|
|
||||||
// индикаторы
|
|
||||||
state: '?', // общее состояние
|
|
||||||
sym_sync_lock: '?', // захват символьной
|
|
||||||
freq_search_lock: '?', // Захват поиска по частоте
|
|
||||||
afc_lock: '?', // захват ФАПЧ
|
|
||||||
pkt_sync: '?', // захват пакетной синхронизации
|
|
||||||
|
|
||||||
// куча других параметров, идет в том же порядке, что и в таблице
|
|
||||||
snr: 0, rssi: -105,
|
|
||||||
modcod: 0, frameSize: 0,
|
|
||||||
pilots: '?',
|
|
||||||
symError: 0.0,
|
|
||||||
freqErr: 0, freqErrAcc: 0,
|
|
||||||
inputSignalLevel: 0,
|
|
||||||
pllError: 0,
|
|
||||||
speedOnRxKbit: 0,
|
|
||||||
speedOnIifKbit: 0,
|
|
||||||
|
|
||||||
// статистика пакетов
|
|
||||||
packetsOk: 0,
|
|
||||||
packetsBad: 0,
|
|
||||||
packetsDummy: 0,
|
|
||||||
},
|
|
||||||
|
|
||||||
testState: '?'
|
|
||||||
*/
|
|
||||||
|
|
||||||
CP_GetLevelDemod(sid, "snr", &tmpd);
|
CP_GetLevelDemod(sid, "snr", &tmpd);
|
||||||
sprintf(tmpStr, "%.2f", tmpd);
|
sprintf(tmpStr, "%.2f", tmpd);
|
||||||
result << ",\"rx.snr\":" << tmpStr;
|
result << ",\"rx.snr\":" << tmpStr;
|
||||||
|
|
||||||
CP_GetLevelDemod(sid, "rssi", &tmpd);
|
CP_GetLevelDemod(sid, "rssi", &tmpd);
|
||||||
sprintf(tmpStr, "%.2f", tmpd);
|
sprintf(tmpStr, "%.2f", -tmpd);
|
||||||
result << ",\"rx.rssi\":" << tmpStr;
|
result << ",\"rx.rssi\":" << tmpStr;
|
||||||
|
|
||||||
CP_GetDemodulatorParams(sid, "modcod", &tmpu32);
|
CP_GetDemodulatorParams(sid, "modcod", &tmpu32);
|
||||||
@ -211,6 +191,64 @@ std::string api_driver::ApiDriver::loadTerminalState() {
|
|||||||
// });
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
stat_cinc: {
|
||||||
|
occ: '?',
|
||||||
|
correlator: '?',
|
||||||
|
correlatorFails: '?',
|
||||||
|
freqErr: '?', freqErrAcc: '?',
|
||||||
|
channelDelay: '?'
|
||||||
|
},
|
||||||
|
*/
|
||||||
|
|
||||||
|
// формируем структуру для CinC
|
||||||
|
{
|
||||||
|
std::string tmps;
|
||||||
|
char tmpbuff[32];
|
||||||
|
CP_GetDmaDebug(sid, "ratio_signal_signal", &tmps);
|
||||||
|
sprintf(tmpbuff, "%.3f", std::atof(tmps.c_str()));
|
||||||
|
result << ",\"cinc.occ\":" << tmpbuff;
|
||||||
|
|
||||||
|
const bool carrierOk = DriverCP_GetLevelDemod(sid, "carrier_lock");
|
||||||
|
if (isCinC && txEnable) {
|
||||||
|
if (carrierOk) {
|
||||||
|
result << R"(,"cinc.correlator":true)";
|
||||||
|
} else {
|
||||||
|
result << R"(,"cinc.correlator":false)";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
result << R"(,"cinc.correlator":null)";
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t tmpu32 = 0;
|
||||||
|
CP_GetDemodulatorParams(sid, "cnt_bad_lock_cinc", &tmpu32);
|
||||||
|
result << ",\"cinc.correlatorFails\":" << tmpu32;
|
||||||
|
|
||||||
|
tmps.clear(); CP_GetDmaDebug(sid, "freq_error_offset", &tmps);
|
||||||
|
// тут так сделано из-за приколов со знаками...
|
||||||
|
result << ",\"cinc.freqErr\":" << std::to_string(static_cast<int32_t>(std::atol(tmps.c_str())));
|
||||||
|
|
||||||
|
tmps.clear(); CP_GetDmaDebug(sid, "freq_fine_estimate", &tmps);
|
||||||
|
result << ",\"cinc.freqErrAcc\":" << tmps;
|
||||||
|
|
||||||
|
tmps.clear(); CP_GetDmaDebug(sid, "delay_dpdi", &tmps);
|
||||||
|
result << ",\"cinc.channelDelay\":" << std::to_string(static_cast<uint32_t>(std::round(std::atof(tmps.c_str()) * 1000)));
|
||||||
|
}
|
||||||
|
|
||||||
|
// структура температур девайса
|
||||||
|
{
|
||||||
|
char tmp[32];
|
||||||
|
double tmp_adrv_c = 0;
|
||||||
|
double tmp_ps = 0;
|
||||||
|
double tmp_pl = 0;
|
||||||
|
CP_ZynqParams(sid,"adrv-c_temper_celsius", &tmp_adrv_c);
|
||||||
|
CP_ZynqParams(sid,"pl_temper_celsius", &tmp_pl);
|
||||||
|
CP_ZynqParams(sid,"ps_temper_celsius", &tmp_ps);
|
||||||
|
|
||||||
|
sprintf(tmp, "%.1f", tmp_adrv_c / 1000); result << ",\"device.adrv\":" << tmp;
|
||||||
|
sprintf(tmp, "%.1f", tmp_pl / 1000); result << ",\"device.fpga\":" << tmp;
|
||||||
|
sprintf(tmp, "%.1f", tmp_ps / 1000); result << ",\"device.zync\":" << tmp;
|
||||||
|
}
|
||||||
|
|
||||||
result << "}";
|
result << "}";
|
||||||
|
|
||||||
|
194
static/main.html
194
static/main.html
@ -75,8 +75,8 @@
|
|||||||
|
|
||||||
<div id="app" hidden>
|
<div id="app" hidden>
|
||||||
<div>
|
<div>
|
||||||
<span class="state-bar-element">Прием: <span :class="{ indicator_bad: rx.state === true, indicator_good: rx.state === false, indicator: true }"></span></span>
|
<span class="state-bar-element">Прием: <span :class="{ indicator_bad: stat_rx.state === true, indicator_good: stat_rx.state === false, indicator: true }"></span></span>
|
||||||
<span class="state-bar-element">Передача: <span :class="{ indicator_bad: tx.state === true, indicator_good: tx.state === false, indicator: true }"></span></span>
|
<span class="state-bar-element">Передача: <span :class="{ indicator_bad: stat_tx.state === true, indicator_good: stat_tx.state === false, indicator: true }"></span></span>
|
||||||
<span class="state-bar-element">Тест: <span :class="{ indicator_bad: testState === true, indicator_good: testState === false, indicator: true }"></span></span>
|
<span class="state-bar-element">Тест: <span :class="{ indicator_bad: testState === true, indicator_good: testState === false, indicator: true }"></span></span>
|
||||||
<!-- Последнее обновление: {{ lastUpdateTime }}-->
|
<!-- Последнее обновление: {{ lastUpdateTime }}-->
|
||||||
</div>
|
</div>
|
||||||
@ -93,28 +93,28 @@
|
|||||||
<h2>Статистика приема</h2>
|
<h2>Статистика приема</h2>
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><th>Прием</th><td><span :class="{ indicator_bad: rx.state === true, indicator_good: rx.state === false, indicator: true }"></span></td></tr>
|
<tr><th>Прием</th><td><span :class="{ indicator_bad: stat_rx.state === true, indicator_good: stat_rx.state === false, indicator: true }"></span></td></tr>
|
||||||
<tr><th>Захват символьной</th><td><span :class="{ indicator_bad: rx.sym_sync_lock === true, indicator_good: rx.sym_sync_lock === false, indicator: true }"></span></td></tr>
|
<tr><th>Захват символьной</th><td><span :class="{ indicator_bad: stat_rx.sym_sync_lock === true, indicator_good: stat_rx.sym_sync_lock === false, indicator: true }"></span></td></tr>
|
||||||
<tr><th>Захват ФАПЧ</th><td><span :class="{ indicator_bad: rx.afc_lock === true, indicator_good: rx.afc_lock === false, indicator: true }"></span></td></tr>
|
<tr><th>Захват ФАПЧ</th><td><span :class="{ indicator_bad: stat_rx.afc_lock === true, indicator_good: stat_rx.afc_lock === false, indicator: true }"></span></td></tr>
|
||||||
<tr><th>Захват поиска по частоте</th><td><span :class="{ indicator_bad: rx.freq_search_lock === true, indicator_good: rx.freq_search_lock === false, indicator: true }"></span></td></tr>
|
<tr><th>Захват поиска по частоте</th><td><span :class="{ indicator_bad: stat_rx.freq_search_lock === true, indicator_good: stat_rx.freq_search_lock === false, indicator: true }"></span></td></tr>
|
||||||
<tr><th>Захват пакетной синхр.</th><td><span :class="{ indicator_bad: rx.pkt_sync === true, indicator_good: rx.pkt_sync === false, indicator: true }"></span></td></tr>
|
<tr><th>Захват пакетной синхр.</th><td><span :class="{ indicator_bad: stat_rx.pkt_sync === true, indicator_good: stat_rx.pkt_sync === false, indicator: true }"></span></td></tr>
|
||||||
<tr><th>ОСШ/RSSI</th><td>{{ rx.snr }} / {{ rx.rssi }}</td></tr>
|
<tr><th>ОСШ/RSSI</th><td>{{ stat_rx.snr }} / {{ stat_rx.rssi }}</td></tr>
|
||||||
<tr><th>Modcod/размер кадра</th><td>{{ rx.modcod }} / {{ rx.frameSize }}</td></tr>
|
<tr><th>Modcod/размер кадра</th><td>{{ stat_rx.modcod }} / {{ stat_rx.frameSize }}</td></tr>
|
||||||
<tr><th>Пилот-символы</th><td>{{ rx.pilots }}</td></tr>
|
<tr><th>Пилот-символы</th><td>{{ stat_rx.pilots }}</td></tr>
|
||||||
<tr><th>Символьная ошибка</th><td>{{ rx.symError }}</td></tr>
|
<tr><th>Символьная ошибка</th><td>{{ stat_rx.symError }}</td></tr>
|
||||||
<tr><th>Грубая/точная част. ошибка, Гц</th><td>{{ rx.freqErr }} / {{ rx.freqErrAcc }}</td></tr>
|
<tr><th>Грубая/точная част. ошибка, Гц</th><td>{{ stat_rx.freqErr }} / {{ stat_rx.freqErrAcc }}</td></tr>
|
||||||
<tr><th>Ур. входного сигнала</th><td>{{ rx.inputSignalLevel }}</td></tr>
|
<tr><th>Ур. входного сигнала</th><td>{{ stat_rx.inputSignalLevel }}</td></tr>
|
||||||
<tr><th>Ошибка ФАПЧ</th><td>{{ rx.pllError }}</td></tr>
|
<tr><th>Ошибка ФАПЧ</th><td>{{ stat_rx.pllError }}</td></tr>
|
||||||
<tr><th>Инф. скорость на приеме</th><td>{{ rx.speedOnRxKbit }} kbit/s</td></tr>
|
<tr><th>Инф. скорость на приеме</th><td>{{ stat_rx.speedOnRxKbit }} kbit/s</td></tr>
|
||||||
<tr><th>Инф. скорость на интерфейсе</th><td>{{ rx.speedOnIifKbit }} kbit/s</td></tr>
|
<tr><th>Инф. скорость на интерфейсе</th><td>{{ stat_rx.speedOnIifKbit }} kbit/s</td></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<p> Статистика пакетов </p>
|
<p> Статистика пакетов </p>
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><th>Качественных пакетов</th><td>{{ rx.packetsOk }}</td></tr>
|
<tr><th>Качественных пакетов</th><td>{{ stat_rx.packetsOk }}</td></tr>
|
||||||
<tr><th>Поврежденных пакетов</th><td>{{ rx.packetsBad }}</td></tr>
|
<tr><th>Поврежденных пакетов</th><td>{{ stat_rx.packetsBad }}</td></tr>
|
||||||
<tr><th>DUMMY</th><td>{{ rx.packetsDummy }}</td></tr>
|
<tr><th>DUMMY</th><td>{{ stat_rx.packetsDummy }}</td></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<button> Сброс статистики </button>
|
<button> Сброс статистики </button>
|
||||||
@ -123,25 +123,25 @@
|
|||||||
<h2>Статистика передачи</h2>
|
<h2>Статистика передачи</h2>
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><th>Передача</th><td><span :class="{ indicator_bad: tx.state === true, indicator_good: tx.state === false, indicator: true }"></span></td></tr>
|
<tr><th>Передача</th><td><span :class="{ indicator_bad: stat_tx.state === true, indicator_good: stat_tx.state === false, indicator: true }"></span></td></tr>
|
||||||
<tr><th>ОСШ дальнего приема</th><td>{{ tx.snr }}</td></tr>
|
<tr><th>ОСШ дальнего приема</th><td>{{ stat_tx.snr }}</td></tr>
|
||||||
<tr><th>Modcod</th><td>{{ tx.modcod }}</td></tr>
|
<tr><th>Modcod</th><td>{{ stat_tx.modcod }}</td></tr>
|
||||||
<tr><th>Размер кадра</th><td>{{ tx.frameSize }}</td></tr>
|
<tr><th>Размер кадра</th><td>{{ stat_tx.frameSize }}</td></tr>
|
||||||
<tr><th>Пилот-символы</th><td>{{ tx.pilots }}</td></tr>
|
<tr><th>Пилот-символы</th><td>{{ stat_tx.pilots }}</td></tr>
|
||||||
<tr><th>Инф. скорость на передаче</th><td>{{ tx.speedOnTxKbit }} kbit/s</td></tr>
|
<tr><th>Инф. скорость на передаче</th><td>{{ stat_tx.speedOnTxKbit }} kbit/s</td></tr>
|
||||||
<tr><th>Инф. скорость на интерфейсе</th><td>{{ tx.speedOnIifKbit }} kbit/s</td></tr>
|
<tr><th>Инф. скорость на интерфейсе</th><td>{{ stat_tx.speedOnIifKbit }} kbit/s</td></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div v-if="isCinC === true">
|
||||||
<h2>Статистика режима CinC</h2>
|
<h2>Статистика режима CinC</h2>
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><th>ОСС</th><td class="value-bad">indcator</td></tr>
|
<tr><th>ОСС</th><td>{{ stat_cinc.occ }}</td></tr>
|
||||||
<tr><th>Захват коррелятора</th><td class="value-bad"><span :class="{ indicator: true }"></span> bool</td></tr>
|
<tr><th>Захват коррелятора</th><td><span :class="{ indicator_bad: stat_cinc.correlator === true, indicator_good: stat_cinc.correlator === false, indicator: true }"></span></td></tr>
|
||||||
<tr><th>Кол-во срывов коррелятора</th><td class="value-bad">indcator</td></tr>
|
<tr><th>Кол-во срывов коррелятора</th><td>{{ stat_cinc.correlatorFails }}</td></tr>
|
||||||
<tr><th>Грубая/точная част. ошибка, Гц</th><td class="value-bad">indcator/indicator</td></tr>
|
<tr><th>Грубая/точная част. ошибка, Гц</th><td>{{ stat_cinc.freqErr }} / {{ stat_cinc.freqErrAcc }}</td></tr>
|
||||||
<tr><th>Задержка в канале, мс</th><td class="value-bad">indcator</td></tr>
|
<tr><th>Задержка в канале, мс</th><td>{{ stat_cinc.channelDelay }}</td></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@ -149,9 +149,9 @@
|
|||||||
<h2>Состояние устройства</h2>
|
<h2>Состояние устройства</h2>
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><th>Температура ADRV</th><td class="value-bad">indcator °C</td></tr>
|
<tr><th>Температура ADRV</th><td>{{ stat_device.adrv }} °C</td></tr>
|
||||||
<tr><th>Температура ZYNC</th><td class="value-bad">indcator °C</td></tr>
|
<tr><th>Температура ZYNC</th><td>{{ stat_device.zync }} °C</td></tr>
|
||||||
<tr><th>Температура FPGA</th><td class="value-bad">indcator °C</td></tr>
|
<tr><th>Температура FPGA</th><td>{{ stat_device.fpga }} °C</td></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@ -192,6 +192,7 @@
|
|||||||
<img src="/images/krokodil_vzryvaetsya_hd.gif" alt="krokodil">
|
<img src="/images/krokodil_vzryvaetsya_hd.gif" alt="krokodil">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<p>Последнее обновление статистики: {{ lastUpdateTime }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -213,7 +214,9 @@
|
|||||||
const app = new Vue({
|
const app = new Vue({
|
||||||
el: '#app',
|
el: '#app',
|
||||||
data: {
|
data: {
|
||||||
rx: {
|
isCinC: null,
|
||||||
|
|
||||||
|
stat_rx: {
|
||||||
// индикаторы
|
// индикаторы
|
||||||
state: '?', // общее состояние
|
state: '?', // общее состояние
|
||||||
sym_sync_lock: '?', // захват символьной
|
sym_sync_lock: '?', // захват символьной
|
||||||
@ -222,72 +225,85 @@
|
|||||||
pkt_sync: '?', // захват пакетной синхронизации
|
pkt_sync: '?', // захват пакетной синхронизации
|
||||||
|
|
||||||
// куча других параметров, идет в том же порядке, что и в таблице
|
// куча других параметров, идет в том же порядке, что и в таблице
|
||||||
snr: 0, rssi: -105,
|
snr: '?', rssi: '?',
|
||||||
modcod: 0, frameSize: 0,
|
modcod: '?', frameSize: '?',
|
||||||
pilots: '?',
|
pilots: '?',
|
||||||
symError: 0.0,
|
symError: '?',
|
||||||
freqErr: 0, freqErrAcc: 0,
|
freqErr: '?', freqErrAcc: '?',
|
||||||
inputSignalLevel: 0,
|
inputSignalLevel: '?',
|
||||||
pllError: 0,
|
pllError: '?',
|
||||||
speedOnRx: 0,
|
speedOnRxKbit: '?',
|
||||||
speedOnIif: 0,
|
speedOnIifKbit: '?',
|
||||||
|
|
||||||
// статистика пакетов
|
// статистика пакетов
|
||||||
packetsOk: 0,
|
packetsOk: '?', packetsBad: '?', packetsDummy: '?',
|
||||||
packetsBad: 0,
|
|
||||||
packetsDummy: 0,
|
|
||||||
},
|
},
|
||||||
|
stat_tx: {
|
||||||
tx: {
|
|
||||||
// состояние
|
// состояние
|
||||||
state: '?',
|
state: '?',
|
||||||
|
|
||||||
// прочие поля
|
// прочие поля
|
||||||
snr: -90,
|
snr: '?', modcod: '?', frameSize: '?', pilots: '?', speedOnTxKbit: '?', speedOnIifKbit: '?',
|
||||||
modcod: -90,
|
},
|
||||||
frameSize: 'normal',
|
stat_cinc: {
|
||||||
pilots: 'no pilots',
|
occ: '?',
|
||||||
speedOnTx: 0,
|
correlator: null,
|
||||||
speedOnIif: 0,
|
correlatorFails: '?',
|
||||||
|
freqErr: '?', freqErrAcc: '?',
|
||||||
|
channelDelay: '?'
|
||||||
|
},
|
||||||
|
stat_device: { // температурные датчики
|
||||||
|
adrv: 0, zync: 0, fpga: 0
|
||||||
},
|
},
|
||||||
|
|
||||||
testState: '?',
|
testState: '?',
|
||||||
lastUpdateTime: new Date(),
|
lastUpdateTime: new Date(),
|
||||||
|
|
||||||
activeTab: getCurrentTab()
|
activeTab: getCurrentTab()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
updateMainState(vals) {
|
updateMainState(vals) {
|
||||||
this.lastUpdateTime = new Date();
|
this.lastUpdateTime = new Date();
|
||||||
|
this.isCinC = vals["mainState"]["isCinC"]
|
||||||
|
|
||||||
this.rx.state = vals["mainState"]["rx.state"]
|
this.stat_rx.state = vals["mainState"]["rx.state"]
|
||||||
this.rx.sym_sync_lock = vals["mainState"]["rx.sym_sync_lock"]
|
this.stat_rx.sym_sync_lock = vals["mainState"]["rx.sym_sync_lock"]
|
||||||
this.rx.freq_search_lock = vals["mainState"]["rx.freq_search_lock"]
|
this.stat_rx.freq_search_lock = vals["mainState"]["rx.freq_search_lock"]
|
||||||
this.rx.afc_lock = vals["mainState"]["rx.afc_lock"]
|
this.stat_rx.afc_lock = vals["mainState"]["rx.afc_lock"]
|
||||||
this.rx.pkt_sync = vals["mainState"]["rx.pkt_sync"]
|
this.stat_rx.pkt_sync = vals["mainState"]["rx.pkt_sync"]
|
||||||
this.rx.snr = vals["mainState"]["rx.snr"]
|
this.stat_rx.snr = vals["mainState"]["rx.snr"]
|
||||||
this.rx.rssi = vals["mainState"]["rx.rssi"]
|
this.stat_rx.rssi = vals["mainState"]["rx.rssi"]
|
||||||
this.rx.modcod = vals["mainState"]["rx.modcod"]
|
this.stat_rx.modcod = vals["mainState"]["rx.modcod"]
|
||||||
this.rx.frameSize = vals["mainState"]["rx.frameSize"]
|
this.stat_rx.frameSize = vals["mainState"]["rx.frameSize"]
|
||||||
this.rx.pilots = vals["mainState"]["rx.pilots"]
|
this.stat_rx.pilots = vals["mainState"]["rx.pilots"]
|
||||||
this.rx.symError = vals["mainState"]["rx.symError"]
|
this.stat_rx.symError = vals["mainState"]["rx.symError"]
|
||||||
this.rx.freqErr = vals["mainState"]["rx.freqErr"]
|
this.stat_rx.freqErr = vals["mainState"]["rx.freqErr"]
|
||||||
this.rx.freqErrAcc = vals["mainState"]["rx.freqErrAcc"]
|
this.stat_rx.freqErrAcc = vals["mainState"]["rx.freqErrAcc"]
|
||||||
this.rx.inputSignalLevel = vals["mainState"]["rx.inputSignalLevel"]
|
this.stat_rx.inputSignalLevel = vals["mainState"]["rx.inputSignalLevel"]
|
||||||
this.rx.pllError = vals["mainState"]["rx.pllError"]
|
this.stat_rx.pllError = vals["mainState"]["rx.pllError"]
|
||||||
this.rx.speedOnRxKbit = vals["mainState"]["rx.speedOnRxKbit"]
|
this.stat_rx.speedOnRxKbit = vals["mainState"]["rx.speedOnRxKbit"]
|
||||||
this.rx.speedOnIifKbit = vals["mainState"]["rx.speedOnIifKbit"]
|
this.stat_rx.speedOnIifKbit = vals["mainState"]["rx.speedOnIifKbit"]
|
||||||
this.rx.packetsOk = vals["mainState"]["rx.packetsOk"]
|
this.stat_rx.packetsOk = vals["mainState"]["rx.packetsOk"]
|
||||||
this.rx.packetsBad = vals["mainState"]["rx.packetsBad"]
|
this.stat_rx.packetsBad = vals["mainState"]["rx.packetsBad"]
|
||||||
this.rx.packetsDummy = vals["mainState"]["rx.packetsDummy"]
|
this.stat_rx.packetsDummy = vals["mainState"]["rx.packetsDummy"]
|
||||||
|
|
||||||
this.tx.state = vals["mainState"]["tx.state"]
|
this.stat_tx.state = vals["mainState"]["tx.state"]
|
||||||
this.tx.snr = vals["mainState"]["rx.snr"]
|
this.stat_tx.snr = vals["mainState"]["rx.snr"]
|
||||||
this.tx.modcod = vals["mainState"]["rx.modcod"]
|
this.stat_tx.modcod = vals["mainState"]["rx.modcod"]
|
||||||
this.tx.frameSize = vals["mainState"]["rx.frameSize"]
|
this.stat_tx.frameSize = vals["mainState"]["rx.frameSize"]
|
||||||
this.tx.pilots = vals["mainState"]["rx.pilots"]
|
this.stat_tx.pilots = vals["mainState"]["rx.pilots"]
|
||||||
this.tx.speedOnTxKbit = vals["mainState"]["rx.speedOnTxKbit"]
|
this.stat_tx.speedOnTxKbit = vals["mainState"]["tx.speedOnTxKbit"]
|
||||||
this.tx.speedOnIifKbit = vals["mainState"]["rx.speedOnIifKbit"]
|
this.stat_tx.speedOnIifKbit = vals["mainState"]["rx.speedOnIifKbit"]
|
||||||
|
|
||||||
|
this.stat_cinc.occ = vals["mainState"]["cinc.occ"]
|
||||||
|
this.stat_cinc.correlator = vals["mainState"]["cinc.correlator"]
|
||||||
|
this.stat_cinc.correlatorFails = vals["mainState"]["cinc.correlatorFails"]
|
||||||
|
this.stat_cinc.freqErr = vals["mainState"]["cinc.freqErr"]
|
||||||
|
this.stat_cinc.freqErrAcc = vals["mainState"]["cinc.freqErrAcc"]
|
||||||
|
this.stat_cinc.channelDelay = vals["mainState"]["cinc.channelDelay"]
|
||||||
|
|
||||||
|
this.stat_device.adrv = vals["mainState"]["device.adrv"]
|
||||||
|
this.stat_device.zync = vals["mainState"]["device.zync"]
|
||||||
|
this.stat_device.fpga = vals["mainState"]["device.fpga"]
|
||||||
|
|
||||||
this.testState = vals["mainState"]["testState"]
|
this.testState = vals["mainState"]["testState"]
|
||||||
}
|
}
|
||||||
@ -296,16 +312,18 @@
|
|||||||
const doFetch = async () => {
|
const doFetch = async () => {
|
||||||
let d = await fetch("/api/mainStatistics")
|
let d = await fetch("/api/mainStatistics")
|
||||||
this.updateMainState(await d.json())
|
this.updateMainState(await d.json())
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
doFetch()
|
||||||
|
}, 1000)
|
||||||
}
|
}
|
||||||
|
|
||||||
doFetch().then(() => {
|
doFetch().then(() => {})
|
||||||
setInterval(() => { doFetch().then(() => {}) }, 1000);
|
|
||||||
});
|
document.getElementById("app").removeAttribute("hidden")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
document.getElementById("app").removeAttribute("hidden")
|
|
||||||
|
|
||||||
// import MyComponent from './modules/header'
|
// import MyComponent from './modules/header'
|
||||||
// const sh = new Vue(MyComponent)
|
// const sh = new Vue(MyComponent)
|
||||||
</script>
|
</script>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user