diff options
Diffstat (limited to 'conf.d/project/htdocs/RadioBinding.js')
-rw-r--r-- | conf.d/project/htdocs/RadioBinding.js | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/conf.d/project/htdocs/RadioBinding.js b/conf.d/project/htdocs/RadioBinding.js new file mode 100644 index 0000000..edaf46c --- /dev/null +++ b/conf.d/project/htdocs/RadioBinding.js @@ -0,0 +1,124 @@ + var afb = new AFB("api", "mysecret"); + var ws; + var sndcard="HALNotSelected"; + var evtidx=0; + var numid=0; + + function syntaxHighlight(json) { + if (typeof json !== 'string') { + json = JSON.stringify(json, undefined, 2); + } + json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>'); + return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) { + var cls = 'number'; + if (/^"/.test(match)) { + if (/:$/.test(match)) { + cls = 'key'; + } else { + cls = 'string'; + } + } else if (/true|false/.test(match)) { + cls = 'boolean'; + } else if (/null/.test(match)) { + cls = 'null'; + } + return '<span class="' + cls + '">' + match + '</span>'; + }); + } + + function getParameterByName(name, url) { + if (!url) { + url = window.location.href; + } + name = name.replace(/[\[\]]/g, "\\$&"); + var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), + results = regex.exec(url); + if (!results) return null; + if (!results[2]) return ''; + return decodeURIComponent(results[2].replace(/\+/g, " ")); + } + + function replyok(obj) { + console.log("replyok:" + JSON.stringify(obj)); + $("#output")[0].innerHTML = "OK: "+ syntaxHighlight(obj); + } + + function replyerr(obj) { + console.log("replyerr:" + JSON.stringify(obj)); + $("#output")[0].innerHTML = "ERROR: "+ syntaxHighlight(obj); + } + + function gotevent(obj) { + console.log("gotevent:" + JSON.stringify(obj)); + $("#outevt")[0].innerHTML = (evtidx++) +": "+JSON.stringify(obj); + } + + function send(message) { + var api = $("#api").value; + var verb = $("#verb").value; + $("#question")[0].innerHTML = "subscribe: "+api+"/"+verb + " (" + JSON.stringify(message) +")"; + ws.call(api+"/"+verb, {data:message}).then(replyok, replyerr); + } + + // On button click from HTML page + function callbinder(api, verb, query) { + console.log ("api="+api+" verb="+verb+" query=" +query); + var question = urlws +"/" +api +"/" +verb + "?query=" + JSON.stringify(query); + $("#question")[0].innerHTML = syntaxHighlight(question); + ws.call(api+"/"+verb, query).then(replyok, replyerr); + } + + function init() { + + function onopen() { + + $("#main")[0].style.visibility = "visible"; + $("#connected")[0].innerHTML = "Binder WS Active"; + $("#connected")[0].style.background = "lightgreen"; + ws.onevent("*", gotevent); + + callbinder('radio', 'subscribe',{value:'frequency'} ); + callbinder('radio', 'subscribe',{value:'station_found'} ); + } + + function onabort() { + $("#main")[0].style.visibility = "hidden"; + $("#connected")[0].innerHTML = "Connected Closed"; + $("#connected")[0].style.background = "red"; + + callbinder('radio', 'unsubscribe',{value:'frequency'} ); + callbinder('radio', 'unsubscribe',{value:'station_found'} ); + + } + ws = new afb.ws(onopen, onabort); + } + + function setband() { + band = $("#band input[type='radio']:checked").val(); + callbinder('radio', 'band', {value : band }); + } + + function checkband() { + band = $("#band input[type='radio']:checked").val(); + callbinder('radio', 'band_supported', { band : band }); + } + + function get_frequency_range() { + band = $("#band input[type='radio']:checked").val(); + callbinder('radio', 'frequency_range', { band : band }); + } + + function get_frequency_step() { + band = $("#band input[type='radio']:checked").val(); + callbinder('radio', 'frequency_step', { band : band }); + } + + function get_stereo_mode() { + callbinder('radio', 'stereo_mode', { }); + } + + function set_stereo_mode() { + mode = $("#mode input[type ='radio']:checked").val(); + callbinder('radio', 'stereo_mode', { value : mode }); + } +
\ No newline at end of file |