еще мелкие исправления
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#include "terminal_api_driver.h"
|
||||
#include "terminal_api/ControlProtoCInterface.h"
|
||||
#include <sstream>
|
||||
#include <cmath>
|
||||
|
||||
/*
|
||||
timer_->timeout().connect([=]{
|
||||
@@ -42,12 +43,18 @@ static bool DriverCP_GetLevelDemod(TSID sid, const char* param) {
|
||||
return variable_dbl == 0;
|
||||
}
|
||||
|
||||
static bool DriverCP_GetGain(TSID sid, const char* param) {
|
||||
static bool DriverCP_GetTxPower(TSID sid) {
|
||||
double variable_dbl = 0;
|
||||
CP_GetGain(sid, param, &variable_dbl);
|
||||
CP_GetGain(sid, "TXPWD", &variable_dbl);
|
||||
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) {
|
||||
return value ? "true" : "false";
|
||||
}
|
||||
@@ -56,13 +63,16 @@ std::string api_driver::ApiDriver::loadTerminalState() {
|
||||
std::stringstream result;
|
||||
result << "{";
|
||||
|
||||
{
|
||||
// формируем структуру TX
|
||||
const auto txEnable = DriverCP_GetTxPower(sid);
|
||||
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;
|
||||
char tmpStr[64];
|
||||
char tmpStr[32];
|
||||
|
||||
CP_GetLevelDemod(sid, "snr_acm", &tmp);
|
||||
sprintf(tmpStr, "%.2f", tmp);
|
||||
@@ -93,9 +103,8 @@ std::string api_driver::ApiDriver::loadTerminalState() {
|
||||
result << ",\"tx.speedOnIifKbit\":" << tmpStr;
|
||||
}
|
||||
|
||||
// формируем структуру для RX
|
||||
{
|
||||
// формируем структуру RX
|
||||
|
||||
const auto sym_sync_lock = DriverCP_GetLevelDemod(sid, "sym_sync_lock"); // захват символьной
|
||||
const auto freq_search_lock = DriverCP_GetLevelDemod(sid, "freq_lock"); // Захват поиска по частоте
|
||||
const auto afc_lock = DriverCP_GetLevelDemod(sid, "afc_lock"); // захват ФАПЧ
|
||||
@@ -109,36 +118,7 @@ std::string api_driver::ApiDriver::loadTerminalState() {
|
||||
result << ",\"rx.pkt_sync\":" << boolAsStr(pkt_sync);
|
||||
|
||||
double tmpd = 0; uint32_t tmpu32 = 0;
|
||||
char tmpStr[64];
|
||||
|
||||
/*
|
||||
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: '?'
|
||||
*/
|
||||
char tmpStr[32];
|
||||
|
||||
CP_GetLevelDemod(sid, "snr", &tmpd);
|
||||
sprintf(tmpStr, "%.2f", tmpd);
|
||||
@@ -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 << "}";
|
||||
|
||||
|
Reference in New Issue
Block a user