Consulting on Professional Radio Communication

Home / Radio World / Coherent Radio

Radio World Technology

Coherent Radio Explained

Coherent radio, often referred to as simulcast, utilizes multiple synchronized transmitters on the same frequency to provide an area uniformly.

Radio WorldKnowledge Navigation
":">","\"":""","'":"'"}[ch] || ch; }); } function append(role, text) { if (!messages) return; var item = document.createElement("div"); item.className = "funkwelt-advisor-message is-" + role; item.innerHTML = "

" + escapeHtml(text).replace(/\n/g, "
") + "

"; messages.appendChild(item); messages.scrollTop = messages.scrollHeight; } function setFeedback(text, kind) { if (!feedback) return; feedback.className = "funkwelt-advisor-feedback" + (kind ? " is-" + kind : ""); feedback.textContent = text || ""; } function renderLinks(links) { if (!linksBox) return; linksBox.innerHTML = ""; if (!links || !links.length) { linksBox.hidden = true; return; } var groups = [ {type:"shop", title:"Passende Produkte"}, {type:"funkwelt", title:copy.links || "Passende Funkwelt-Seiten"} ]; groups.forEach(function (group) { var items = links.filter(function (link) { return (link.type || "funkwelt") === group.type; }); if (!items.length) return; var section = document.createElement("div"); section.className = "funkwelt-advisor-link-group is-" + group.type; var title = document.createElement("strong"); title.textContent = group.title; section.appendChild(title); var visibleLimit = group.type === "shop" ? 3 : items.length; var hiddenItems = []; items.forEach(function (link, index) { var a = document.createElement("a"); a.href = link.url || "#"; a.textContent = link.label || link.url || ""; a.className = "is-" + (link.type || "funkwelt"); if (index >= visibleLimit) { a.classList.add("is-collapsed"); hiddenItems.push(a); } section.appendChild(a); }); if (hiddenItems.length) { var more = document.createElement("button"); more.type = "button"; more.className = "funkwelt-advisor-more"; more.textContent = "Weitere Produkte anzeigen (" + hiddenItems.length + ")"; more.addEventListener("click", function () { var expand = more.getAttribute("aria-expanded") !== "true"; hiddenItems.forEach(function (item) { item.classList.toggle("is-collapsed", !expand); }); more.setAttribute("aria-expanded", expand ? "true" : "false"); more.textContent = expand ? "Weniger anzeigen" : "Weitere Produkte anzeigen (" + hiddenItems.length + ")"; }); more.setAttribute("aria-expanded", "false"); section.appendChild(more); } linksBox.appendChild(section); }); linksBox.hidden = false; } function request(payload) { return fetch(api, {method:"POST", credentials:"same-origin", headers:{"Content-Type":"application/json"}, body:JSON.stringify(payload)}) .then(function (response) { return response.text().then(function (text) { var json = {}; try { json = text ? JSON.parse(text) : {}; } catch (e) {} if (!response.ok || !json.ok) throw new Error(json.error || copy.error || "Fehler"); return json; }); }); } function openPanel() { if (!panel) return; panel.hidden = false; if (toggle) toggle.setAttribute("aria-expanded", "true"); if (textarea) textarea.focus(); } function closePanel() { if (!panel) return; panel.hidden = true; if (toggle) toggle.setAttribute("aria-expanded", "false"); } if (toggle) toggle.addEventListener("click", function () { panel && panel.hidden ? openPanel() : closePanel(); }); if (close) close.addEventListener("click", closePanel); document.querySelectorAll("[data-fwa-open]").forEach(function (trigger) { trigger.addEventListener("click", function () { openPanel(); }); }); if (form) form.addEventListener("submit", function (event) { event.preventDefault(); var message = textarea ? textarea.value.trim() : ""; if (!message) return; append("user", message); if (textarea) textarea.value = ""; setFeedback(copy.thinking || "..."); renderLinks([]); request({action:"ask", message:message}).then(function (json) { append("assistant", json.reply || ""); renderLinks(json.links || []); setFeedback(json.status === "fallback" ? "Antwort aus der lokalen Funkwelt-Suche." : ""); }).catch(function (error) { setFeedback(error.message || copy.error || "Fehler", "error"); }); }); if (reset) reset.addEventListener("click", function () { request({action:"reset"}).catch(function () {}); if (messages) messages.innerHTML = '

' + escapeHtml(copy.hello || "") + "

"; renderLinks([]); setFeedback(""); if (textarea) textarea.value = ""; }); })();