139 lines
5.0 KiB
JavaScript
139 lines
5.0 KiB
JavaScript
{% 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 %} |