Compare commits
9 Commits
833374a80e
...
77ba05e407
Author | SHA1 | Date | |
---|---|---|---|
77ba05e407 | |||
f3454897d8 | |||
dc4e37eb8a | |||
522abee794 | |||
8278e4119f | |||
0a3a282d0f | |||
3d97824ee7 | |||
55fa498dc1 | |||
f5c5caa31c |
75
front-generator/render-params.json
Normal file
75
front-generator/render-params.json
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
{
|
||||||
|
"monitoring-params": {},
|
||||||
|
"params": {
|
||||||
|
"rxtx": {
|
||||||
|
"rx.en": {
|
||||||
|
"model": "w:switch",
|
||||||
|
"label": "Включить передатчик"
|
||||||
|
},
|
||||||
|
"rx.isTestInputData": {
|
||||||
|
"model": "w:select",
|
||||||
|
"label": "Включить передатчик",
|
||||||
|
"items": [
|
||||||
|
{"value": "false", "label": "Ethernet"},
|
||||||
|
{"value": "true", "label": "Тест (CW)"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"rx.freqKhz": {
|
||||||
|
"model": "w:number",
|
||||||
|
"number.type": "int",
|
||||||
|
"number.step": 1,
|
||||||
|
"number.min": 500000,
|
||||||
|
"number.max": 15000000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"modem_types": {
|
||||||
|
"tdma": {
|
||||||
|
"modem_name": "RCSM-101 TDMA",
|
||||||
|
"groupsList": ["rxtx"],
|
||||||
|
"tabs": [
|
||||||
|
{
|
||||||
|
"name": "monitoring",
|
||||||
|
"desc": "Мониторинг"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "setup",
|
||||||
|
"desc": "Настройки",
|
||||||
|
"widgets": [
|
||||||
|
{"group": "html", "name": "h3", "payload": "Настройки передатчика"},
|
||||||
|
{"group": "rxtx", "name": "rx.en"},
|
||||||
|
{"group": "rxtx", "name": "rx.isTestInputData"},
|
||||||
|
{"group": "html", "name": "h3", "payload": "Параметры передачи"},
|
||||||
|
{"group": "rxtx", "name": "rx.freqKhz"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "admin",
|
||||||
|
"desc": "Администрирование"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"scpc": {
|
||||||
|
"modem_name": "RCSM-101",
|
||||||
|
"groupsList": ["rxtx"],
|
||||||
|
"tabs": [
|
||||||
|
{
|
||||||
|
"name": "monitoring",
|
||||||
|
"desc": "Мониторинг"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "setup",
|
||||||
|
"desc": "Настройки"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "qos",
|
||||||
|
"desc": "QoS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "admin",
|
||||||
|
"desc": "Администрирование"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
39
front-generator/render.py
Normal file
39
front-generator/render.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
import json
|
||||||
|
|
||||||
|
from jinja2 import Environment, FileSystemLoader
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def build_modem_env(modem):
|
||||||
|
with open('render-params.json') as f:
|
||||||
|
config = json.load(f)
|
||||||
|
if modem not in config['modem_types']:
|
||||||
|
raise RuntimeError(f"Modem '{modem}' is not exist in config!")
|
||||||
|
|
||||||
|
mc = config['modem_types'][modem]
|
||||||
|
|
||||||
|
return {
|
||||||
|
"modem_name": mc['modem_name'],
|
||||||
|
"header_tabs": mc['tabs'],
|
||||||
|
"js_tabs_array": str([t['name'] for t in mc['tabs']]),
|
||||||
|
"params": {"groupsList": mc["groupsList"]} | config["params"]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def render_modem(modem):
|
||||||
|
loader = FileSystemLoader('template')
|
||||||
|
env = Environment(loader=loader, trim_blocks=True, lstrip_blocks=True)
|
||||||
|
template = env.get_template('main.html')
|
||||||
|
|
||||||
|
context = build_modem_env(modem)
|
||||||
|
|
||||||
|
with open(f"main-{modem}.html", "w") as f:
|
||||||
|
f.write(template.render(context))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
if len(sys.argv) != 2:
|
||||||
|
print(f"Usage: {sys.argv[0]} <scpc|tdma>")
|
||||||
|
|
||||||
|
render_modem(sys.argv[1])
|
||||||
|
|
139
front-generator/template/default-js.js
Normal file
139
front-generator/template/default-js.js
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
{% raw %}// для обновления высоты хидера
|
||||||
|
function updateHeaderHeight() { const header = document.querySelector('header'); document.body.style.setProperty('--header-height', `${header.offsetHeight}px`); }
|
||||||
|
window.addEventListener('load', updateHeaderHeight); window.addEventListener('resize', updateHeaderHeight);
|
||||||
|
|
||||||
|
function getCurrentTab() {
|
||||||
|
const sl = window.location.hash.slice(1)
|
||||||
|
if (availableTabs.indexOf(sl) >= 0) {
|
||||||
|
return sl
|
||||||
|
}
|
||||||
|
return defaultTab
|
||||||
|
}
|
||||||
|
|
||||||
|
function modcodToStr(modcod) {
|
||||||
|
// модкоды из раздела 5.5.2.2 https://www.etsi.org/deliver/etsi_en/302300_302399/302307/01.01.02_60/en_302307v010102p.pdf
|
||||||
|
|
||||||
|
// NOTE модкоды со скоростью хода 3/5 не работают
|
||||||
|
const modcods = [
|
||||||
|
"DUMMY",
|
||||||
|
"QPSK 1/4",
|
||||||
|
"QPSK 1/3",
|
||||||
|
"QPSK 2/5",
|
||||||
|
"QPSK 1/2",
|
||||||
|
"QPSK 3/5", // отключено
|
||||||
|
"QPSK 2/3",
|
||||||
|
"QPSK 3/4",
|
||||||
|
"QPSK 4/5",
|
||||||
|
"QPSK 5/6",
|
||||||
|
"QPSK 8/9",
|
||||||
|
"QPSK 9/10",
|
||||||
|
|
||||||
|
"8PSK 3/5", // отключено
|
||||||
|
"8PSK 2/3",
|
||||||
|
"8PSK 3/4",
|
||||||
|
"8PSK 5/6",
|
||||||
|
"8PSK 8/9",
|
||||||
|
"8PSK 9/10",
|
||||||
|
|
||||||
|
"16APSK 2/3",
|
||||||
|
"16APSK 3/4",
|
||||||
|
"16APSK 4/5",
|
||||||
|
"16APSK 5/6",
|
||||||
|
"16APSK 8/9",
|
||||||
|
"16APSK 9/10",
|
||||||
|
|
||||||
|
"32APSK 3/4",
|
||||||
|
"32APSK 4/5",
|
||||||
|
"32APSK 5/6",
|
||||||
|
"32APSK 8/9",
|
||||||
|
"32APSK 9/10",
|
||||||
|
]
|
||||||
|
if (typeof modcod != "number" || modcod < 0 || modcod >= modcod.length) {
|
||||||
|
return "?";
|
||||||
|
}
|
||||||
|
return modcods[modcod]
|
||||||
|
}
|
||||||
|
|
||||||
|
function toModcod(modulation, speed) {
|
||||||
|
switch (modulation.toLowerCase()) {
|
||||||
|
case 'qpsk':
|
||||||
|
switch (speed) {
|
||||||
|
case '1/4': return 1
|
||||||
|
case '1/3': return 2
|
||||||
|
case '2/5': return 3
|
||||||
|
case '1/2': return 4
|
||||||
|
case '3/5': return 5 // отключено
|
||||||
|
case '2/3': return 6
|
||||||
|
case '3/4': return 7
|
||||||
|
case '4/5': return 8
|
||||||
|
case '5/6': return 9
|
||||||
|
case '8/9': return 10
|
||||||
|
case '9/10': return 11
|
||||||
|
default: return 1 // минимальная скорость
|
||||||
|
}
|
||||||
|
case '8psk':
|
||||||
|
switch (speed) {
|
||||||
|
case '3/5': return 12 // отключено
|
||||||
|
case '2/3': return 13
|
||||||
|
case '3/4': return 14
|
||||||
|
case '5/6': return 15
|
||||||
|
case '8/9': return 16
|
||||||
|
case '9/10': return 17
|
||||||
|
default: return 13 // минимальная скорость
|
||||||
|
}
|
||||||
|
case '16apsk':
|
||||||
|
switch (speed) {
|
||||||
|
case '2/3': return 18
|
||||||
|
case '3/4': return 19
|
||||||
|
case '4/5': return 20
|
||||||
|
case '5/6': return 21
|
||||||
|
case '8/9': return 22
|
||||||
|
case '9/10': return 23
|
||||||
|
default: return 18 // минимальная скорость
|
||||||
|
}
|
||||||
|
case '32apsk':
|
||||||
|
switch (speed) {
|
||||||
|
case '3/4': return 24
|
||||||
|
case '4/5': return 25
|
||||||
|
case '5/6': return 26
|
||||||
|
case '8/9': return 27
|
||||||
|
case '9/10': return 28
|
||||||
|
default: return 24
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractModulationAndSpeedFromModcod(modcod) {
|
||||||
|
switch (modcod) {
|
||||||
|
case 1: return { modulation: 'qpsk', speed: '1/4' }
|
||||||
|
case 2: return { modulation: 'qpsk', speed: '1/3' }
|
||||||
|
case 3: return { modulation: 'qpsk', speed: '2/5' }
|
||||||
|
case 4: return { modulation: 'qpsk', speed: '1/2' }
|
||||||
|
case 5: return { modulation: 'qpsk', speed: '3/5' }
|
||||||
|
case 6: return { modulation: 'qpsk', speed: '2/3' }
|
||||||
|
case 7: return { modulation: 'qpsk', speed: '3/4' }
|
||||||
|
case 8: return { modulation: 'qpsk', speed: '4/5' }
|
||||||
|
case 9: return { modulation: 'qpsk', speed: '5/6' }
|
||||||
|
case 10: return { modulation: 'qpsk', speed: '8/9' }
|
||||||
|
case 11: return { modulation: 'qpsk', speed: '9/10' }
|
||||||
|
case 12: return { modulation: '8psk', speed: '3/5' }
|
||||||
|
case 13: return { modulation: '8psk', speed: '2/3' }
|
||||||
|
case 14: return { modulation: '8psk', speed: '3/4' }
|
||||||
|
case 15: return { modulation: '8psk', speed: '5/6' }
|
||||||
|
case 16: return { modulation: '8psk', speed: '8/9' }
|
||||||
|
case 17: return { modulation: '8psk', speed: '9/10' }
|
||||||
|
case 18: return { modulation: '16apsk', speed: '2/3' }
|
||||||
|
case 19: return { modulation: '16apsk', speed: '3/4' }
|
||||||
|
case 20: return { modulation: '16apsk', speed: '4/5' }
|
||||||
|
case 21: return { modulation: '16apsk', speed: '5/6' }
|
||||||
|
case 22: return { modulation: '16apsk', speed: '8/9' }
|
||||||
|
case 23: return { modulation: '16apsk', speed: '9/10' }
|
||||||
|
case 24: return { modulation: '32apsk', speed: '3/4' }
|
||||||
|
case 25: return { modulation: '32apsk', speed: '4/5' }
|
||||||
|
case 26: return { modulation: '32apsk', speed: '5/6' }
|
||||||
|
case 27: return { modulation: '32apsk', speed: '8/9' }
|
||||||
|
case 28: return { modulation: '32apsk', speed: '9/10' }
|
||||||
|
}
|
||||||
|
return { modulation: 'qpsk', speed: '1/4' }
|
||||||
|
}
|
||||||
|
{% endraw %}
|
1361
front-generator/template/main.html
Normal file
1361
front-generator/template/main.html
Normal file
File diff suppressed because it is too large
Load Diff
181
front-generator/template/vue-data.js
Normal file
181
front-generator/template/vue-data.js
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
isCinC: false,
|
||||||
|
|
||||||
|
// false - означает что статистика не отправляется, true - отправляется
|
||||||
|
submitStatus: {
|
||||||
|
{% for pg in params.groupsList %}
|
||||||
|
{{ pg }}: false,
|
||||||
|
{% endfor %}
|
||||||
|
firmwareUpload: false,
|
||||||
|
firmwareUpgrade: false,
|
||||||
|
// когда модем перезагружается, тут должен быть счетчик. Направление счета - к нулю
|
||||||
|
modemReboot: null
|
||||||
|
},
|
||||||
|
|
||||||
|
stat: {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
stat_rx: {
|
||||||
|
// индикаторы
|
||||||
|
state: '?', // общее состояние
|
||||||
|
sym_sync_lock: '?', // захват символьной
|
||||||
|
freq_search_lock: '?', // Захват поиска по частоте
|
||||||
|
afc_lock: '?', // захват ФАПЧ
|
||||||
|
pkt_sync: '?', // захват пакетной синхронизации
|
||||||
|
|
||||||
|
// куча других параметров, идет в том же порядке, что и в таблице
|
||||||
|
snr: '?', rssi: '?',
|
||||||
|
modcod: '?', frameSizeNormal: '?',
|
||||||
|
isPilots: '?',
|
||||||
|
symError: '?',
|
||||||
|
freqErr: '?', freqErrAcc: '?',
|
||||||
|
inputSignalLevel: '?',
|
||||||
|
pllError: '?',
|
||||||
|
speedOnRxKbit: '?',
|
||||||
|
speedOnIifKbit: '?',
|
||||||
|
|
||||||
|
// статистика пакетов
|
||||||
|
packetsOk: '?', packetsBad: '?', packetsDummy: '?',
|
||||||
|
},
|
||||||
|
stat_tx: {
|
||||||
|
// состояние
|
||||||
|
state: '?',
|
||||||
|
|
||||||
|
// прочие поля
|
||||||
|
snr: '?', modcod: '?', frameSizeNormal: '?', isPilots: '?', speedOnTxKbit: '?', speedOnIifKbit: '?',
|
||||||
|
},
|
||||||
|
stat_cinc: {
|
||||||
|
occ: '?',
|
||||||
|
correlator: null,
|
||||||
|
correlatorFails: '?',
|
||||||
|
freqErr: '?', freqErrAcc: '?',
|
||||||
|
channelDelay: '?'
|
||||||
|
},
|
||||||
|
stat_device: { // температурные датчики
|
||||||
|
adrv: 0, zynq: 0, fpga: 0
|
||||||
|
},
|
||||||
|
|
||||||
|
param: {
|
||||||
|
general: {
|
||||||
|
isCinC: Boolean,
|
||||||
|
txEn: Boolean, // включен/выключен
|
||||||
|
modulatorMode: 'normal', // режим работы модулятора
|
||||||
|
autoStartTx: Boolean, // было "режим работы передатчика"
|
||||||
|
isTestInputData: Boolean, // входные данные: eth или test
|
||||||
|
},
|
||||||
|
tx: {
|
||||||
|
attenuation: Number, // ослабление
|
||||||
|
rolloff: Number,
|
||||||
|
cymRate: Number,
|
||||||
|
centerFreq: Number,
|
||||||
|
},
|
||||||
|
dvbs2: {
|
||||||
|
mode: null, // ccm/acm
|
||||||
|
frameSizeNormal: null, // 'normal' / 'short'
|
||||||
|
// isPilots: false,
|
||||||
|
|
||||||
|
// CCM
|
||||||
|
ccm_modulation: null,
|
||||||
|
ccm_speed: null,
|
||||||
|
|
||||||
|
// ACM
|
||||||
|
acm_maxModulation: null,
|
||||||
|
acm_maxSpeed: null,
|
||||||
|
acm_minModulation: null,
|
||||||
|
acm_minSpeed: null,
|
||||||
|
|
||||||
|
snrReserve: null,
|
||||||
|
servicePacketPeriod: null,
|
||||||
|
},
|
||||||
|
// авто-регулировка мощности
|
||||||
|
acm: {
|
||||||
|
en: false,
|
||||||
|
maxAttenuation: null,
|
||||||
|
minAttenuation: null,
|
||||||
|
requiredSnr: null,
|
||||||
|
},
|
||||||
|
rx: {
|
||||||
|
gainMode: null, // 'auto'/'manual' режим управления усилением
|
||||||
|
manualGain: 0, // усиление, только для ручного режима
|
||||||
|
spectrumInversion: false,
|
||||||
|
rolloff: 0,
|
||||||
|
cymRate: 100000,
|
||||||
|
centerFreq: 1200000.0,
|
||||||
|
},
|
||||||
|
|
||||||
|
cinc: {
|
||||||
|
mode: null, // 'positional' | 'delay'
|
||||||
|
searchBandwidth: 0, // полоса поиска в кГц
|
||||||
|
position: {
|
||||||
|
station: {
|
||||||
|
latitude: 0,
|
||||||
|
longitude: 0
|
||||||
|
},
|
||||||
|
satelliteLongitude: 0,
|
||||||
|
},
|
||||||
|
delayMin: 0,
|
||||||
|
delayMax: 0
|
||||||
|
},
|
||||||
|
|
||||||
|
buc: {
|
||||||
|
refClk10M: false, // подача опоры 10MHz
|
||||||
|
powering: 0 // 0, 24, 48
|
||||||
|
},
|
||||||
|
lnb: {
|
||||||
|
refClk10M: false, // подача опоры 10MHz
|
||||||
|
powering: 0 // 0, 13, 18, 24
|
||||||
|
},
|
||||||
|
serviceSettings: {
|
||||||
|
refClk10M: false, // подача опоры 10MHz
|
||||||
|
autoStart: false
|
||||||
|
},
|
||||||
|
|
||||||
|
network: {
|
||||||
|
managementIp: '', // 0.0.0.0/24
|
||||||
|
managementGateway: '',
|
||||||
|
mode: String, // l2 | l3
|
||||||
|
dataIp: '', //
|
||||||
|
dataMtu: 1500
|
||||||
|
},
|
||||||
|
debugSend: {
|
||||||
|
en: false,
|
||||||
|
receiverIp: '0.0.0.0', // 0.0.0.0
|
||||||
|
portCinC: 0,
|
||||||
|
portData: 0,
|
||||||
|
timeout: 0
|
||||||
|
},
|
||||||
|
|
||||||
|
qos: {
|
||||||
|
en: false,
|
||||||
|
rt1: [],
|
||||||
|
rt2: [],
|
||||||
|
rt3: [],
|
||||||
|
cd: [],
|
||||||
|
},
|
||||||
|
|
||||||
|
tcpAccel: {
|
||||||
|
en: false,
|
||||||
|
maxConnections: 128
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
uploadFw: {
|
||||||
|
progress: null,
|
||||||
|
filename: null,
|
||||||
|
sha256: null
|
||||||
|
},
|
||||||
|
|
||||||
|
// эти "настройки" - read only
|
||||||
|
about: {
|
||||||
|
firmwareVersion: '?',
|
||||||
|
modemUid: '?',
|
||||||
|
modemSn: '?',
|
||||||
|
macManagement: '?',
|
||||||
|
macData: '?',
|
||||||
|
},
|
||||||
|
|
||||||
|
testState: false,
|
||||||
|
initState: '',
|
||||||
|
lastUpdateTime: new Date(),
|
||||||
|
activeTab: getCurrentTab(),
|
||||||
|
settingFetchComplete: false,
|
@ -524,7 +524,7 @@ public:
|
|||||||
|
|
||||||
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", ""));
|
logCpApiError("api_driver::TerminalApiDaemon::setQosSettings()->CP_SetDmaDebug(begin_save_config)", CP_SetDmaDebug(sid, "begin_save_config", ""));
|
||||||
logCpApiError("api_driver::TerminalApiDaemon::setQosSettings()->CP_SetQoSSettings()", CP_SetQoSSettings(this->sid, str, enabled));
|
logCpApiError("api_driver::TerminalApiDaemon::setQosSettings()->CP_SetQoSSettings()", CP_SetQoSSettings(this->sid, str, enabled));
|
||||||
if (readback) {
|
if (readback) {
|
||||||
bool tmp1; std::string tmp2;
|
bool tmp1; std::string tmp2;
|
||||||
@ -535,7 +535,7 @@ public:
|
|||||||
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", ""));
|
logCpApiError("api_driver::TerminalApiDaemon::setQosSettings()->CP_SetDmaDebug(save_config)", CP_SetDmaDebug(sid, "save_config", ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
void setNetworkSettings(TerminalNetworkSettings& s, bool readback = true) {
|
void setNetworkSettings(TerminalNetworkSettings& s, bool readback = true) {
|
||||||
@ -799,7 +799,7 @@ std::string api_driver::ApiDriver::loadSettings() const {
|
|||||||
result << ",\"tx.cymRate\":" << modSettings.baudrate;
|
result << ",\"tx.cymRate\":" << modSettings.baudrate;
|
||||||
result << ",\"tx.centerFreq\":"; writeDouble(result, modSettings.central_freq_in_kGz, 3);
|
result << ",\"tx.centerFreq\":"; writeDouble(result, modSettings.central_freq_in_kGz, 3);
|
||||||
result << ",\"dvbs2.frameSizeNormal\":" << boolAsStr(!(modSettings.modcod_tx & 2));
|
result << ",\"dvbs2.frameSizeNormal\":" << boolAsStr(!(modSettings.modcod_tx & 2));
|
||||||
result << ",\"dvbs2.ccm_modcod\":" << (modSettings.modcod_tx >> 4);
|
result << ",\"dvbs2.ccm_modcod\":" << (modSettings.modcod_tx >> 2);
|
||||||
|
|
||||||
// result << ",\"dvbs2.isPilots\":" << "null";
|
// result << ",\"dvbs2.isPilots\":" << "null";
|
||||||
result << ",\n\"dvbs2.isAcm\":" << boolAsStr(acmSettings.enable);
|
result << ",\n\"dvbs2.isAcm\":" << boolAsStr(acmSettings.enable);
|
||||||
@ -985,6 +985,8 @@ void api_driver::ApiDriver::setCincSettings(boost::property_tree::ptree &pt) {
|
|||||||
s.max_delay = pt.get<uint32_t>(json_path("cinc.delayMax", '/'));
|
s.max_delay = pt.get<uint32_t>(json_path("cinc.delayMax", '/'));
|
||||||
s.min_delay = pt.get<uint32_t>(json_path("cinc.delayMin", '/'));
|
s.min_delay = pt.get<uint32_t>(json_path("cinc.delayMin", '/'));
|
||||||
|
|
||||||
|
s.freq_offset = pt.get<uint32_t>(json_path("cinc.searchBandwidth", '/'));
|
||||||
|
|
||||||
this->daemon->setSettingsCinc(s);
|
this->daemon->setSettingsCinc(s);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
}
|
}
|
||||||
.tabs-btn {
|
.tabs-btn {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-size: 18px;
|
|
||||||
border: none;
|
border: none;
|
||||||
padding: 10px 25px;
|
padding: 10px 25px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@ -87,6 +86,7 @@
|
|||||||
|
|
||||||
.settings-set-container th {
|
.settings-set-container th {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
font-weight: normal;
|
||||||
padding-right: 1em;
|
padding-right: 1em;
|
||||||
}
|
}
|
||||||
.settings-set-container td {
|
.settings-set-container td {
|
||||||
|
@ -161,7 +161,7 @@
|
|||||||
<span>Входные данные</span>
|
<span>Входные данные</span>
|
||||||
<select v-model="param.general.isTestInputData">
|
<select v-model="param.general.isTestInputData">
|
||||||
<option :value="false">Ethernet</option>
|
<option :value="false">Ethernet</option>
|
||||||
<option :value="true">Тест (CW)</option>
|
<option :value="true">Тест</option>
|
||||||
</select>
|
</select>
|
||||||
</label>
|
</label>
|
||||||
<h3>Параметры передачи</h3>
|
<h3>Параметры передачи</h3>
|
||||||
@ -176,6 +176,7 @@
|
|||||||
<label>
|
<label>
|
||||||
<span>Roll-off</span>
|
<span>Roll-off</span>
|
||||||
<select v-model="param.tx.rolloff">
|
<select v-model="param.tx.rolloff">
|
||||||
|
<option :value="2">0.02</option>
|
||||||
<option :value="5">0.05</option>
|
<option :value="5">0.05</option>
|
||||||
<option :value="10">0.10</option>
|
<option :value="10">0.10</option>
|
||||||
<option :value="15">0.15</option>
|
<option :value="15">0.15</option>
|
||||||
@ -325,6 +326,7 @@
|
|||||||
<label>
|
<label>
|
||||||
<span>Roll-off</span>
|
<span>Roll-off</span>
|
||||||
<select v-model="param.rx.rolloff">
|
<select v-model="param.rx.rolloff">
|
||||||
|
<option :value="2">0.02</option>
|
||||||
<option :value="5">0.05</option>
|
<option :value="5">0.05</option>
|
||||||
<option :value="10">0.10</option>
|
<option :value="10">0.10</option>
|
||||||
<option :value="15">0.15</option>
|
<option :value="15">0.15</option>
|
||||||
@ -345,6 +347,10 @@
|
|||||||
<option value="delay">Окном задержки</option>
|
<option value="delay">Окном задержки</option>
|
||||||
</select>
|
</select>
|
||||||
</label>
|
</label>
|
||||||
|
<label>
|
||||||
|
<span>Полоса поиска, кгц ±</span>
|
||||||
|
<input v-model="param.cinc.searchBandwidth" type="number" min="0" max="100" step="1"/>
|
||||||
|
</label>
|
||||||
|
|
||||||
<h3 v-show="param.cinc.mode === 'positional'">Настройки позиционирования</h3>
|
<h3 v-show="param.cinc.mode === 'positional'">Настройки позиционирования</h3>
|
||||||
<label v-show="param.cinc.mode === 'positional'">
|
<label v-show="param.cinc.mode === 'positional'">
|
||||||
@ -611,13 +617,16 @@
|
|||||||
<tr><th>Версия ПО</th><td>{{ about.firmwareVersion }}</td></tr>
|
<tr><th>Версия ПО</th><td>{{ about.firmwareVersion }}</td></tr>
|
||||||
<tr><th>ID модема</th><td>{{ about.modemUid }}</td></tr>
|
<tr><th>ID модема</th><td>{{ about.modemUid }}</td></tr>
|
||||||
<tr><th>Серийный номер</th><td>{{ about.modemSn }}</td></tr>
|
<tr><th>Серийный номер</th><td>{{ about.modemSn }}</td></tr>
|
||||||
<tr><th>MAC интерфейса управления</th><td>{{ about.macManagement }}</td></tr>
|
<tr><th>MAC интерфейса менеджмента</th><td>{{ about.macManagement }}</td></tr>
|
||||||
<tr><th>MAC интерфейса управления</th><td>{{ about.macData }}</td></tr>
|
<tr><th>MAC интерфейса управления</th><td>{{ about.macData }}</td></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div>
|
<div>
|
||||||
<button class="dangerous-button" @click="doModemReboot()">Перезагрузить модем <span class="submit-spinner" v-show="submitStatus.modemReboot !== null"></span></button>
|
<button class="dangerous-button" @click="doModemReboot()">Перезагрузить модем <span class="submit-spinner" v-show="submitStatus.modemReboot !== null"></span></button>
|
||||||
</div>
|
</div>
|
||||||
|
<div hidden> <!-- v-show="submitStatus.modemReboot !== null" -->
|
||||||
|
<img src="/internet.jpg" loading="lazy" alt="internet"/>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<button class="dangerous-button" onclick="fetch('/api/resetSettings', { method: 'POST' }).then((r) => { window.location.reload(); })">Сбросить модем до заводских настроек</button>
|
<button class="dangerous-button" onclick="fetch('/api/resetSettings', { method: 'POST' }).then((r) => { window.location.reload(); })">Сбросить модем до заводских настроек</button>
|
||||||
</div>
|
</div>
|
||||||
@ -1197,10 +1206,10 @@
|
|||||||
"rt3": [],
|
"rt3": [],
|
||||||
"cd": []
|
"cd": []
|
||||||
}
|
}
|
||||||
for (let i = 0; i < this.param.qos.rt1.length; i++) { query.rt1.push(_translateQosClass('rt', this.param.qos.rt1[i])) }
|
for (let i = 0; i < this.param.qos.rt1.length; i++) { query.rt1.push(_translateQosClass('rt1', this.param.qos.rt1[i])) }
|
||||||
for (let i = 0; i < this.param.qos.rt2.length; i++) { query.rt2.push(_translateQosClass('rt', this.param.qos.rt2[i])) }
|
for (let i = 0; i < this.param.qos.rt2.length; i++) { query.rt2.push(_translateQosClass('rt2', this.param.qos.rt2[i])) }
|
||||||
for (let i = 0; i < this.param.qos.rt3.length; i++) { query.rt3.push(_translateQosClass('rt', this.param.qos.rt3[i])) }
|
for (let i = 0; i < this.param.qos.rt3.length; i++) { query.rt3.push(_translateQosClass('rt3', this.param.qos.rt3[i])) }
|
||||||
for (let i = 0; i < this.param.qos.cd.length; i++) { query.cd.push(_translateQosClass('rt', this.param.qos.cd[i])) }
|
for (let i = 0; i < this.param.qos.cd.length; i++) { query.cd.push(_translateQosClass('cd', this.param.qos.cd[i])) }
|
||||||
|
|
||||||
console.log(query)
|
console.log(query)
|
||||||
fetch('/api/set/qos', {
|
fetch('/api/set/qos', {
|
||||||
|
@ -125,7 +125,7 @@
|
|||||||
<span>Входные данные</span>
|
<span>Входные данные</span>
|
||||||
<select v-model="param.tx.isTestInputData">
|
<select v-model="param.tx.isTestInputData">
|
||||||
<option :value="false">Ethernet</option>
|
<option :value="false">Ethernet</option>
|
||||||
<option :value="true">Тест (CW)</option>
|
<option :value="true">Тест</option>
|
||||||
</select>
|
</select>
|
||||||
</label>
|
</label>
|
||||||
<h3>Параметры передачи</h3>
|
<h3>Параметры передачи</h3>
|
||||||
@ -418,7 +418,7 @@
|
|||||||
<tr><th>Версия ПО</th><td>{{ about.firmwareVersion }}</td></tr>
|
<tr><th>Версия ПО</th><td>{{ about.firmwareVersion }}</td></tr>
|
||||||
<tr><th>ID модема</th><td>{{ about.modemUid }}</td></tr>
|
<tr><th>ID модема</th><td>{{ about.modemUid }}</td></tr>
|
||||||
<tr><th>Серийный номер</th><td>{{ about.modemSn }}</td></tr>
|
<tr><th>Серийный номер</th><td>{{ about.modemSn }}</td></tr>
|
||||||
<tr><th>MAC интерфейса управления</th><td>{{ about.macManagement }}</td></tr>
|
<tr><th>MAC интерфейса менеджмента</th><td>{{ about.macManagement }}</td></tr>
|
||||||
<tr><th>MAC интерфейса управления</th><td>{{ about.macData }}</td></tr>
|
<tr><th>MAC интерфейса управления</th><td>{{ about.macData }}</td></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@ -53,6 +53,13 @@ body {
|
|||||||
margin: 0.5em;
|
margin: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* увеличение размера шрифтов */
|
||||||
|
|
||||||
|
* { font-size: large; }
|
||||||
|
h1 { font-size: xxx-large; }
|
||||||
|
h2 { font-size: xx-large; }
|
||||||
|
h3 { font-size: larger; }
|
||||||
|
|
||||||
/* ========== MAIN STYLES ========== */
|
/* ========== MAIN STYLES ========== */
|
||||||
|
|
||||||
.value-good {
|
.value-good {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user