diff options
Diffstat (limited to 'htdocs/AudioBinding.js')
-rw-r--r-- | htdocs/AudioBinding.js | 75 |
1 files changed, 58 insertions, 17 deletions
diff --git a/htdocs/AudioBinding.js b/htdocs/AudioBinding.js index 9771726..7105b20 100644 --- a/htdocs/AudioBinding.js +++ b/htdocs/AudioBinding.js @@ -1,5 +1,6 @@ var afb = new AFB("api", "mysecret"); var ws; + var halapi="HALNotSelected"; var evtidx=0; function getParameterByName(name, url) { @@ -26,25 +27,31 @@ var quiet=getParameterByName("quiet"); if (!quiet) quiet="99"; - - function init() { - ws = new afb.ws(onopen, onabort); - } - function onopen() { - document.getElementById("main").style.visibility = "visible"; - document.getElementById("connected").innerHTML = "Binder WS Active"; - document.getElementById("connected").style.background = "lightgreen"; - ws.onevent("*", gotevent); - } + - function onabort() { - document.getElementById("main").style.visibility = "hidden"; - document.getElementById("connected").innerHTML = "Connected Closed"; - document.getElementById("connected").style.background = "red"; + function init(elemid, api, verb, query) { + + function onopen() { + // check for active HALs + probeActiveHal (elemid, api, verb, query); + + document.getElementById("main").style.visibility = "visible"; + document.getElementById("connected").innerHTML = "Binder WS Active"; + document.getElementById("connected").style.background = "lightgreen"; + ws.onevent("*", gotevent); + } + function onabort() { + document.getElementById("main").style.visibility = "hidden"; + document.getElementById("connected").innerHTML = "Connected Closed"; + document.getElementById("connected").style.background = "red"; + + } + + ws = new afb.ws(onopen, onabort); } - + function replyok(obj) { console.log("replyok:" + JSON.stringify(obj)); document.getElementById("output").innerHTML = "OK: "+JSON.stringify(obj); @@ -67,9 +74,43 @@ ws.call(api+"/"+verb, {data:message}).then(replyok, replyerr); } - + + // On button click from HTML page function callbinder(api, verb, query) { console.log ("subscribe api="+api+" verb="+verb+" query=" +query); document.getElementById("question").innerHTML = "apicall: " + api+"/"+verb +" ("+ JSON.stringify(query)+")"; ws.call(api+"/"+verb, query).then(replyok, replyerr); - }
\ No newline at end of file + } + + + // Retrieve the list of active HAL + function probeActiveHal (elemid, api, verb, query) { + var selectobj = document.getElementById(elemid); + + // onlick update selected HAL api + selectobj.onclick=function(){ + halapi= this.value; + console.log ("New Default HAL=" + halapi); + }; + + function gotit (result) { + + // display response as for normal onclick action + replyok(result); + var response=result.response; + + // fulfill select with avaliable active HAL + for (idx=0; idx<response.length; idx++) { + console.log ("probeActiveHal =" + response[idx].shortname); + var opt = document.createElement('option'); + opt.value = response[idx].api; + opt.text = response[idx].shortname; + selectobj.appendChild(opt); + } + + halapi= selectobj.value; + } + + // request lowlevel ALSA to get API list + ws.call(api+"/"+verb, query).then(gotit, replyerr); + } |