From 49533399810630031541b25407cd88498a72f6c3 Mon Sep 17 00:00:00 2001 From: Fulup Ar Foll Date: Tue, 7 Mar 2017 22:35:52 +0100 Subject: Lock on WS afb-daemon Segmentation fault --- htdocs/README.md | 7 +++ htdocs/alsa-core.html | 43 +++++++++++++++++++ htdocs/index.html | 7 +++ htdocs/websock.js | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 174 insertions(+) create mode 100644 htdocs/README.md create mode 100644 htdocs/alsa-core.html create mode 100644 htdocs/index.html create mode 100644 htdocs/websock.js (limited to 'htdocs') diff --git a/htdocs/README.md b/htdocs/README.md new file mode 100644 index 0000000..6468356 --- /dev/null +++ b/htdocs/README.md @@ -0,0 +1,7 @@ +------------------------------------------------------------------------ + Simple HTML test +------------------------------------------------------------------------ + + # Load bindings directly from development tree for debug + afb-daemon --token=x --ldpaths=build/Alsa/core-binding --port=1234 --roothttp=htdocs --verbose + diff --git a/htdocs/alsa-core.html b/htdocs/alsa-core.html new file mode 100644 index 0000000..e408a01 --- /dev/null +++ b/htdocs/alsa-core.html @@ -0,0 +1,43 @@ + + + Hello world test + + + + + +

Hello world test

+
    +
  1. getinfo: List Sound Cards +
  2. Card info about hw:0 +
  3. List controls for hw:0 (quiet) +
  4. List controls for hw:0 (verbose) +
  5. return control numid=1 for hw:0 +
  6. + diff --git a/htdocs/index.html b/htdocs/index.html new file mode 100644 index 0000000..dfb3c71 --- /dev/null +++ b/htdocs/index.html @@ -0,0 +1,7 @@ + + + AGL-AudioBindins tests + +

    audio-bindings test

    +
      +
    1. AlsaCore Low Level Binding diff --git a/htdocs/websock.js b/htdocs/websock.js new file mode 100644 index 0000000..c429553 --- /dev/null +++ b/htdocs/websock.js @@ -0,0 +1,117 @@ + +AfbCtxItf = (function(){ + + var UUID = undefined; + var TOKEN = undefined; + + function AfbCtxItf(token, uuid) { + this.token = token; + this.uuid = uuid; + } + + AfbCtxItf.prototype = { + get token() {return TOKEN;}, + set token(tok) {if(tok) TOKEN=tok;}, + get uuid() {return UUID;}, + set uuid(id) {if(id) UUID=id;} + }; + + return AfbCtxItf; +})(); + + +AfbWsItf = (function(){ + + var CALL = 2; + var RETOK = 3; + var RETERR = 4; + + function AfbWsItf(base, onopen, onabort, ctx) { + ctx = ctx || new AfbCtxItf(); + var wl = window.location; + var u = "ws://"+wl.host+"/"+base; + if (ctx.token) { + u = u + '?x-afb-token=' + ctx.token; + if (ctx.uuid) + u = u + '&x-afb-uuid=' + ctx.uuid; + } + this.ws = new (WebSocket || MozWebSocket)(u, [ "x-afb-ws-json1" ]); + this.pendings = {}; + this.counter = 0; + this.ctx = ctx; + this.ws.onopen = onopen.bind(this); + this.ws.onerror = onerror.bind(this); + this.ws.onclose = onclose.bind(this); + this.ws.onmessage = onmessage.bind(this); + this.onopen = onopen; + this.onabort = onabort; + } + + function onerror(event) { + var f = this.onabort; + if (f) { + delete this.onopen; + delete this.onabort; + f && f(this); + } + this.onerror && this.onerror(this); + } + + function onopen(event) { + var f = this.onopen; + delete this.onopen; + delete this.onabort; + f && f(this); + } + + function onclose(event) { + for (var id in this.pendings) { + var ferr = this.pendings[id].onerror; + ferr && ferr(null, this); + } + this.pendings = {}; + this.onclose && this.onclose(); + } + + function onmessage(event) { + var obj = JSON.parse(event.data); + var code = obj[0]; + var id = obj[1]; + var ans = obj[2]; + this.ctx.token = obj[3]; + var pend; + if (id && id in this.pendings) { + pend = this.pendings[id]; + delete this.pendings[id]; + } + switch (code) { + case RETOK: + pend && pend.onsuccess && pend.onsuccess(ans, this); + break; + case RETERR: + default: + pend && pend.onerror && pend.onerror(ans, this); + break; + } + } + + function close() { + this.ws.close(); + } + + function call(api, verb, request, onsuccess, onerror) { + var id = String(++this.counter); + this.pendings[id] = { onsuccess: onsuccess, onerror: onerror }; + var arr = [CALL, id, api+"/"+verb, request ]; + if (this.ctx.token) arr.push(this.ctx.token); + this.ws.send(JSON.stringify(arr)); + } + + AfbWsItf.prototype = { + close: close, + call: call + }; + + return AfbWsItf; +})(); + -- cgit 1.2.3-korg