updateStatistics(vals) { function modcodToStr(modcod) { // модкоды из раздела 5.5.2.2 https://www.etsi.org/deliver/etsi_en/302300_302399/302307/01.01.02_60/en_302307v010102p.pdf 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") { return "?"; } if (modcod < 0 || modcod >= modcods.length) { return `? (${modcod})` } return modcods[modcod] } this.lastUpdateTime = new Date(); this.initState = vals["mainState"]["initState"] {% if modem == 'scpc' %} this.isCinC = vals["mainState"]["isCinC"] {% endif %} this.statRx.state = vals["mainState"]["rx.state"] this.statRx.sym_sync_lock = vals["mainState"]["rx.sym_sync_lock"] this.statRx.freq_search_lock = vals["mainState"]["rx.freq_search_lock"] this.statRx.afc_lock = vals["mainState"]["rx.afc_lock"] this.statRx.pkt_sync = vals["mainState"]["rx.pkt_sync"] this.statRx.snr = vals["mainState"]["rx.snr"] this.statRx.rssi = vals["mainState"]["rx.rssi"] this.statRx.modcod = modcodToStr(vals["mainState"]["rx.modcod"]) this.statRx.frameSizeNormal = vals["mainState"]["rx.frameSizeNormal"] this.statRx.isPilots = vals["mainState"]["rx.isPilots"] this.statRx.symError = vals["mainState"]["rx.symError"] this.statRx.freqErr = vals["mainState"]["rx.freqErr"] this.statRx.freqErrAcc = vals["mainState"]["rx.freqErrAcc"] this.statRx.inputSignalLevel = vals["mainState"]["rx.inputSignalLevel"] this.statRx.pllError = vals["mainState"]["rx.pllError"] this.statRx.speedOnRxKbit = vals["mainState"]["rx.speedOnRxKbit"] this.statRx.speedOnIifKbit = vals["mainState"]["rx.speedOnIifKbit"] this.statRx.packetsOk = vals["mainState"]["rx.packetsOk"] this.statRx.packetsBad = vals["mainState"]["rx.packetsBad"] this.statRx.packetsDummy = vals["mainState"]["rx.packetsDummy"] {% if modem == 'scpc' %} this.statTx.state = vals["mainState"]["tx.state"] this.statTx.snr = vals["mainState"]["tx.snr"] this.statTx.modcod = modcodToStr(vals["mainState"]["tx.modcod"]) this.statTx.frameSizeNormal = vals["mainState"]["tx.frameSizeNormal"] this.statTx.isPilots = vals["mainState"]["tx.isPilots"] this.statTx.speedOnTxKbit = vals["mainState"]["tx.speedOnTxKbit"] this.statTx.speedOnIifKbit = vals["mainState"]["tx.speedOnIifKbit"] this.statCinc.occ = vals["mainState"]["cinc.occ"] this.statCinc.correlator = vals["mainState"]["cinc.correlator"] this.statCinc.correlatorFails = vals["mainState"]["cinc.correlatorFails"] this.statCinc.freqErr = vals["mainState"]["cinc.freqErr"] this.statCinc.freqErrAcc = vals["mainState"]["cinc.freqErrAcc"] this.statCinc.channelDelay = vals["mainState"]["cinc.channelDelay"] {% else %} this.statTx.state = vals["mainState"]["tx.state"] this.statTx.modcod = modcodToStr(vals["mainState"]["tx.modcod"]) this.statTx.speedOnTxKbit = vals["mainState"]["tx.speedOnTxKbit"] this.statTx.speedOnIifKbit = vals["mainState"]["tx.speedOnIifKbit"] this.statTx.centerFreq = vals["mainState"]["tx.centerFreq"] this.statTx.symSpeed = vals["mainState"]["tx.symSpeed"] {% endif %} this.statDevice.adrv = vals["mainState"]["device.adrv"] this.statDevice.zynq = vals["mainState"]["device.zynq"] this.statDevice.fpga = vals["mainState"]["device.fpga"] this.testState = vals["mainState"]["testState"] // аптайм приходит в секундах, надо преобразовать его в человеко-читаемый вид let uptime = vals["sysinfo"]["uptime"] if (uptime) { let secs = uptime % 60; uptime = Math.floor(uptime / 60) let mins = uptime % 60; uptime = Math.floor(uptime / 60) let hours = uptime % 24 uptime = Math.floor( uptime / 24) let res = `${hours}:${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}` if (uptime > 0) { res = `${uptime} дней, ` + res } this.statOs.uptime = res } else { this.statOs.uptime = '?' } this.statOs.load1 = vals["sysinfo"]["load1min"] this.statOs.load5 = vals["sysinfo"]["load5min"] this.statOs.load15 = vals["sysinfo"]["load15min"] this.statOs.totalram = vals["sysinfo"]["totalram"] this.statOs.freeram = vals["sysinfo"]["freeram"] }, resetPacketsStatistics() { fetch('/api/resetPacketStatistics', { method: 'POST', credentials: 'same-origin' }).then(() => { this.statRx.packetsOk = 0 this.statRx.packetsBad = 0 this.statRx.packetsDummy = 0 }) },