summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFulup Ar Foll <fulup@iot.bzh>2017-08-18 01:09:56 +0200
committerFulup Ar Foll <fulup@iot.bzh>2017-08-18 01:09:56 +0200
commita7d41a6fa1e29d800ce8ac9e95e8f943814463e8 (patch)
tree30ca09383f1ce30df559601328e1714f67afc8fc
parent5e919fde0a4c66b0203c46b8f06f303fcceaedde (diff)
Integration with Alsa HookPlugin is now working.
-rw-r--r--Alsa-Plugin/Alsa-Policy-Hook/PolicyHookCb.c43
-rw-r--r--Alsa-Plugin/Alsa-Policy-Hook/README.md7
-rw-r--r--Alsa-afb/Alsa-ApiHat.c6
-rw-r--r--Audio-Common/filescan-utils.c4
-rw-r--r--Audio-Common/filescan-utils.h2
-rw-r--r--Controller-afb/CMakeLists.txt (renamed from Controler-afb/CMakeLists.txt)0
-rw-r--r--Controller-afb/README.md (renamed from Controler-afb/README.md)79
-rwxr-xr-xController-afb/a.outbin0 -> 12552 bytes
-rw-r--r--Controller-afb/ctl-apidef.h (renamed from Controler-afb/ctl-apidef.h)54
-rw-r--r--Controller-afb/ctl-apidef.json (renamed from Controler-afb/ctl-apidef.json)31
-rw-r--r--Controller-afb/ctl-binding.c (renamed from Controler-afb/ctl-binding.c)0
-rw-r--r--Controller-afb/ctl-binding.h (renamed from Controler-afb/ctl-binding.h)25
-rw-r--r--Controller-afb/ctl-dispatch.c (renamed from Controler-afb/ctl-dispatch.c)70
-rw-r--r--Controller-afb/ctl-lua.c (renamed from Controler-afb/ctl-lua.c)25
-rw-r--r--Controller-afb/ctl-plugin-sample.c (renamed from Controler-afb/ctl-plugin-sample.c)34
-rw-r--r--Controller-afb/ctl-policy.c (renamed from Controler-afb/ctl-policy.c)0
-rw-r--r--Controller-afb/ctl-timer.c (renamed from Controler-afb/ctl-timer.c)55
-rw-r--r--HAL-afb/HAL-interface/hal-interface.c13
-rw-r--r--conf.d/cmake/config.cmake8
-rw-r--r--conf.d/project/alsa.d/asoundrc.sample (renamed from conf.d/alsa-sample/asoundrc.sample)34
-rw-r--r--conf.d/project/alsa.d/ucm.sample/HDA Intel PCH.conf (renamed from conf.d/alsa-sample/ucm.sample/HDA Intel PCH.conf)0
-rw-r--r--conf.d/project/alsa.d/ucm.sample/HiFi.conf (renamed from conf.d/alsa-sample/ucm.sample/HiFi.conf)0
-rw-r--r--conf.d/project/alsa.d/ucm.sample/README (renamed from conf.d/alsa-sample/ucm.sample/README)0
-rw-r--r--conf.d/project/config.d/onload-audio-control.json14
-rw-r--r--conf.d/project/lua.d/doscript-helloworld.lua2
-rw-r--r--conf.d/project/lua.d/onload-audio-0utils.lua86
-rw-r--r--conf.d/project/lua.d/onload-audio-controls.lua159
-rw-r--r--conf.d/project/lua.d/onload-audio-oncall.lua16
-rw-r--r--conf.d/project/lua.d/onload-audio-timer.lua10
-rw-r--r--conf.d/project/lua.d/onload-audio-utils.lua32
-rw-r--r--data/default-control-policy.json2
-rw-r--r--htdocs/AudioBinding.js1
-rw-r--r--htdocs/alsa-hal.html16
-rw-r--r--htdocs/audio-control.html23
-rw-r--r--nbproject/configurations.xml933
-rw-r--r--nbproject/project.xml4
36 files changed, 1329 insertions, 459 deletions
diff --git a/Alsa-Plugin/Alsa-Policy-Hook/PolicyHookCb.c b/Alsa-Plugin/Alsa-Policy-Hook/PolicyHookCb.c
index 7c85e22..80a9ceb 100644
--- a/Alsa-Plugin/Alsa-Policy-Hook/PolicyHookCb.c
+++ b/Alsa-Plugin/Alsa-Policy-Hook/PolicyHookCb.c
@@ -53,11 +53,14 @@
#define MAX_EVT_CALL 10
// timeout in ms
-#define REQUEST_DEFAULT_TIMEOUT 100
+#define REQUEST_DEFAULT_TIMEOUT 500
#ifndef MAINLOOP_WATCHDOG
-#define MAINLOOP_WATCHDOG 60000
+#define MAINLOOP_WATCHDOG 100000
#endif
+// closing message is added to query when PCM is closed
+#define CLOSING_MSG ",\"source\":-1}"
+
// Currently not implemented
#define UNUSED_ARG(x) UNUSED_ ## x __attribute__((__unused__))
void OnRequestCB(void* UNUSED_ARG(handle) , const char* UNUSED_ARG(api), const char* UNUSED_ARG(verb), struct afb_wsj1_msg*UNUSED_ARG(msg)) {}
@@ -67,6 +70,7 @@ typedef struct {
const char *verb;
long timeout;
char *query;
+ size_t length;
sd_event_source *evtSource;
char *callIdTag;
@@ -101,7 +105,7 @@ static void *LoopInThread(void *handle) {
/* loop until end */
for (;;) {
- if (afbClient->verbose) printf("ON-MAINLOOP Active count=%d\n", count++);
+ if (afbClient->verbose) printf("ON-MAINLOOP ping=%d\n", count++);
sd_event_run(afbClient->sdLoop, watchdog);
}
@@ -214,7 +218,6 @@ int OnTimeoutCB (sd_event_source* source, uint64_t timer, void* handle) {
static int CallWithTimeout(afbClientT *afbClient, afbRequestT *afbRequest, int count, hookActionT action) {
uint64_t usec;
int err;
- const char *query;
// create a unique tag for request
(void) asprintf(&afbRequest->callIdTag, "%d:%s/%s", count, afbRequest->api, afbRequest->verb);
@@ -223,9 +226,19 @@ static int CallWithTimeout(afbClientT *afbClient, afbRequestT *afbRequest, int c
sd_event_now(afbClient->sdLoop, CLOCK_MONOTONIC, &usec);
sd_event_add_time(afbClient->sdLoop, &afbRequest->evtSource, CLOCK_MONOTONIC, usec+afbRequest->timeout*1000, 250, OnTimeoutCB, afbClient);
- if (action == HOOK_INSTALL) query=afbRequest->query;
- else query="{'closing': 1}";
- err = afb_wsj1_call_s(afbClient->wsj1, afbRequest->api, afbRequest->verb, query, OnResponseCB, afbRequest);
+ if (afbClient->verbose) printf("CALL-REQUEST api=%s/%s tag=%s\n", afbRequest->api, afbRequest->verb, afbRequest->callIdTag);
+
+ // on PCM close replace last '}' by CLOSING_MSG
+ if (action == HOOK_CLOSE) {
+ for (size_t index=afbRequest->length; index >0; index--) {
+ if (afbRequest->query[index] == '}') {
+ strcpy (&afbRequest->query[index], CLOSING_MSG);
+ break;
+ }
+ }
+ }
+
+ err = afb_wsj1_call_s(afbClient->wsj1, afbRequest->api, afbRequest->verb, afbRequest->query, OnResponseCB, afbRequest);
if (err) goto OnErrorExit;
// save client handle in request
@@ -421,18 +434,22 @@ int PLUGIN_ENTRY_POINT (snd_pcm_t *pcm, snd_config_t *conf) {
if (!err) {
const char *query;
if (snd_config_get_string(itemConf, &query) < 0) {
- SNDERR("Invalid query string %s", id);
+ SNDERR("Invalid args string %s", id);
goto OnErrorExit;
}
+ // reserve enough space to ad closing message
+ afbRequest[callCount]->length= strlen(query);
+ afbRequest[callCount]->query = malloc (afbRequest[callCount]->length+strlen(CLOSING_MSG)+1);
+ strcpy (afbRequest[callCount]->query, query);
+
// cleanup string for json_tokener
- afbRequest[callCount]->query = strdup(query);
for (int idx = 0; query[idx] != '\0'; idx++) {
if (query[idx] == '\'') afbRequest[callCount]->query[idx] = '"';
else afbRequest[callCount]->query[idx] = query[idx];
}
- json_object *queryJ = json_tokener_parse(query);
+ json_object *queryJ = json_tokener_parse(afbRequest[callCount]->query);
if (!queryJ) {
- SNDERR("Invalid Json %s query=%s format \"{'tok1':'val1', 'tok2':'val2'}\" ", id, query);
+ SNDERR("Invalid Json %s args=%s should be args=\"{'tok1':'val1', 'tok2':'val2'}\" ", id, afbRequest[callCount]->query);
goto OnErrorExit;
}
}
@@ -520,7 +537,7 @@ int PLUGIN_ENTRY_POINT (snd_pcm_t *pcm, snd_config_t *conf) {
// wait for all call request to return
sem_wait(&afbClient->semaphore);
if (afbClient->error) {
- fprintf (stderr, "PCM Authorisation from Audio Agent Refused\n");
+ fprintf (stderr, "PCM Authorisation Deny from AAAA Controller (AGL Advanced Audio Agent)\n");
goto OnErrorExit;
}
@@ -528,7 +545,7 @@ int PLUGIN_ENTRY_POINT (snd_pcm_t *pcm, snd_config_t *conf) {
return 0;
OnErrorExit:
- fprintf(stderr, "\nAlsaPcmHook Plugin Install Fail PCM=%s\n", snd_pcm_name(afbClient->pcm));
+ fprintf(stderr, "\nAlsaPcmHook Plugin Install Fail PCM=%s\n", snd_pcm_name(pcm));
if (h_close)
snd_pcm_hook_remove(h_close);
diff --git a/Alsa-Plugin/Alsa-Policy-Hook/README.md b/Alsa-Plugin/Alsa-Policy-Hook/README.md
index 8fa2643..6a8e67e 100644
--- a/Alsa-Plugin/Alsa-Policy-Hook/README.md
+++ b/Alsa-Plugin/Alsa-Policy-Hook/README.md
@@ -14,6 +14,10 @@ Installation
- This plugin implement a hook on a slave PCM. Typically this slave PCM is a dedicated virtual channel (eg: navigation, emergency,...)
- Config should be place in ~/.asoundrc (see config sample in PROJECT_ROOT/conf.d/alsa)
+Test
+ - Install a full .asoundrc from conf.d/project/alsa.d
+ - speaker-test -DMyNavigationHook -c2 -twav
+
Config
```
# Define sharelib location and entry point
@@ -42,8 +46,7 @@ pcm.MyNavigationHook {
navigation-ctl {
api "control"
verb "dispatch"
- target "navigation"
- args "{'any_valid': 'json object'}"
+ args "{'target':'navigation', 'args':{'device':'Jabra SOLEMATE v1.34.0'}}"
}
# subscribe to Audio Agent Event map them to signal
subscribe-evt {
diff --git a/Alsa-afb/Alsa-ApiHat.c b/Alsa-afb/Alsa-ApiHat.c
index 1e9f5ad..a8663ca 100644
--- a/Alsa-afb/Alsa-ApiHat.c
+++ b/Alsa-afb/Alsa-ApiHat.c
@@ -31,7 +31,7 @@
#include "Alsa-ApiHat.h"
STATIC int AlsaInit(void) {
- int rc= prctl(PR_SET_NAME, "afb-audio-agent\0",NULL,NULL,NULL);
+ int rc= prctl(PR_SET_NAME, "afb-audio-agent",NULL,NULL,NULL);
if (rc) AFB_ERROR("ERROR: AlsaCore fail to rename process");
return rc;
@@ -62,8 +62,8 @@ static const struct afb_verb_v2 api_verbs[] = {
/*
* description of the binding for afb-daemon
*/
-const struct afb_binding_v2 afbBindingV2 = {
+const afb_binding_v2 afbBindingV2 = {
.api = "alsacore",
.verbs = api_verbs,
- .init = AlsaInit,
+ .preinit = AlsaInit,
};
diff --git a/Audio-Common/filescan-utils.c b/Audio-Common/filescan-utils.c
index 33dacdf..af0b5c9 100644
--- a/Audio-Common/filescan-utils.c
+++ b/Audio-Common/filescan-utils.c
@@ -27,7 +27,7 @@
// List Avaliable Configuration Files
-PUBLIC json_object* ScanForConfig (char* searchPath, CtlScanDirModeT mode, const char *pre, const char *ext) {
+PUBLIC json_object* ScanForConfig (const char* searchPath, CtlScanDirModeT mode, const char *pre, const char *ext) {
json_object *responseJ;
char *dirPath;
char* dirList= strdup(searchPath);
@@ -94,7 +94,7 @@ PUBLIC const char *GetMidleName(const char*name) {
int start;
if (fullname[idx] == '-') {
start = idx + 1;
- for (int jdx = start; fullname[jdx] != '\0'; jdx++) {
+ for (int jdx = start; ; jdx++) {
if (fullname[jdx] == '-' || fullname[jdx] == '.' || fullname[jdx] == '\0') {
fullname[jdx] = '\0';
return &fullname[start];
diff --git a/Audio-Common/filescan-utils.h b/Audio-Common/filescan-utils.h
index 671e728..cbe15de 100644
--- a/Audio-Common/filescan-utils.h
+++ b/Audio-Common/filescan-utils.h
@@ -35,7 +35,7 @@ typedef enum {
PUBLIC const char *GetMidleName(const char*name);
PUBLIC const char *GetBinderName();
-PUBLIC json_object* ScanForConfig (char* searchPath, CtlScanDirModeT mode, const char *pre, const char *ext);
+PUBLIC json_object* ScanForConfig (const char* searchPath, CtlScanDirModeT mode, const char *pre, const char *ext);
#endif /* FILESCAN_UTILS_H */
diff --git a/Controler-afb/CMakeLists.txt b/Controller-afb/CMakeLists.txt
index a9e8e60..a9e8e60 100644
--- a/Controler-afb/CMakeLists.txt
+++ b/Controller-afb/CMakeLists.txt
diff --git a/Controler-afb/README.md b/Controller-afb/README.md
index a81d4f7..403f637 100644
--- a/Controler-afb/README.md
+++ b/Controller-afb/README.md
@@ -29,6 +29,9 @@ Each bloc in the configuration file are defined with
* label: must be provided is used either for debugging or as input for the action (eg: signal name, control name, ...)
* info: optional used for documentation purpose only
+Note by default controller config search path is defined at compilation time, but path might be overloaded with CONTROL_CONFIG_PATH
+environment variable.
+
### Config is organised in 4 sections:
* metadata
@@ -95,6 +98,82 @@ Controler support tree categories of actions. Each action return a status status
Note: Lua added functions systematically prefix. AGL standard AppFw functions are prefixed with AGL: (eg: AGL:notice(), AGL_success(), ...).
User Lua functions added though the plugin and CTLP_Lua2C are prefix with plugin label (eg: MyPlug:HelloWorld1).
+### Avaliable Application Framework Commands
+
+Each Lua AppFw commands should be prefixed by AFB:
+
+ * AFB:notice ("format", arg1,... argn) LUA table are print directly as json string with '%s'.
+ AFB:error, AFB:warning, AFB:info, AFB:debug work on the same model. Printed message are limited to 512 characters.
+
+ * AFB:service ('API', 'VERB', {query}, "Lua_Callback_Name", {context}) asynchronous call to an other binding. When empty query/context should be set to '{}'
+ and not to 'nil'. When 'nil' Lua does not send 'NULL' value but remove arguments to calling stack. WARNING:"Callback"
+ is the name of the callback as a string and not a pointer to the callback. (If someone as a solution to fix this, please
+ let me known). Callback is call as LUA "function Alsa_Get_Hal_CB (error, result, context)" where:
+ * error is a Boolean
+ * result is the full answer from AppFw (do not forget to extract response)
+ * context is a copy of the Lua table pas as argument (warning it's a copy not a pointer to original table)
+
+ * error,result=AFB:servsync('API', 'VERB', {query}) Save as previous but for synchronous call. Note that Lua accept multiple
+ return. AFB:servsync return both the error message and the response as a Lua table. Like for AFB:service user should not
+ forget to extract response from result.
+
+ * AFB:success(request, response) request is the opaque handle pass when Lua is called from (api="control", verb="docall").
+ Response is a Lua table that will be return to client.
+
+ * AFB:fail(request, response) same as for success. Note that LUA generate automatically the error code from Lua function name.
+ The response is tranformed to a json string before being return to client.
+
+ * EventHandle=AFB:evtmake("MyEventName") Create an event and return the handle as an opaque handle. Note that due to a limitation
+ of json_object this opaque handle cannot be passed as argument in a callback context.
+
+ * AFB:subscribe(request, MyEventHandle) Subscribe a given client to previously created event.
+
+ * AFB:evtpush (MyEventHandle, MyEventData) Push an event to every subscribed client. MyEventData is a Lua table that will be
+ send as a json object to corresponding clients.
+
+ * timerHandle=AFB:timerset (MyTimer, "Timer_Test_CB", context) Initialise a timer from MyTimer Lua table. This table should contend 3 elements:
+ MyTimer={[l"abel"]="MyTimerName", ["delay"]=timeoutInMs, ["count"]=nBOfCycles}. Note that is count==0 then timer is cycle
+ infinitively. Context is a standard Lua table. This function return an opaque handle to be use to further control the timer.
+
+ * AFB:timerclear(timerHandle) Kill an existing timer. Return an error when timer does not exit.
+
+ * MyTimer=AFB:timerget(timerHandle) Return Label, Delay and Count of an active timer. Return an error when timerHandle does not
+ point on an active timer.
+
+Note: Except for function call during binding initialisation period. Lua call are protected and should return clean message
+ even when improperly used. If you find bug please report.
+
+### Adding Lua command from User Plugin
+
+User Plugin is optional and may provide either native C-action accessible directly from controller actions as defined in
+JSON config file, or alternatively may provide at set of Lua commands usable inside any script (onload, control,event). A simple
+plugin that provide both natice C API and Lua commands is provided as example (see ctl-plugin-sample.c). Technically a
+plugin is a simple sharelibrary and any code fitting in sharelib might be used as a plugin. Developer should nevertheless
+not forget that except when no-concurrency flag was at binding construction time, any binding should to be thread safe.
+
+A plugin must be declare with CTLP_REGISTER("MyCtlSamplePlugin"). This entry point defines a special structure that is check
+at plugin load time by the controller. Then you have an optional init routine declare with CTLP_ONLOAD(label, version, info).
+This init routine receives controller onload profile as selected by DispatchOnLoad("profile"). The init routine may create
+a plugin context that is later one presented to every plugin API this for both LUA and native C ones. Then each:
+
+ * C API declare with CTLP_CAPI (MyCFunction, label, argsJ, queryJ, context) {your code}. Where:
+ * MyFunction is your function
+ * Label is a string containing the name of your function
+ * ArgsJ a json_object containing the argument attach the this control in JSON config file.
+ * context your C context as return from CTLP_ONLOAD
+
+ * Lua API declarewith TLP_LUA2C (MyLuaCFunction, label, argsJ, context) {your code}. Where
+ * MyLuaCFunction is both the name of your C function and Lua command
+ * Label your function name as a string
+ * Args the arguments passed this time from Lua script and not from Json config file.
+ * Query is not provided as LuaC function are called from a script and not directly from controller action list.
+
+Warning: Lua samples use with controller enforce strict mode. As a result every variables should be declare either as
+local or as global. Unfortunately "luac" is not smart enough to handle strict mode at build time and errors only appear
+at run time. Because of this strict mode every global variables (which include functions) should be prefix by '_'.
+Note that LUA require an initialisation value for every variables and declaring something like "local myvar" wont
+allocate "myvar"
+
### Debugging Facilities
Controler Lua script are check for syntax from CMAKE template with Luac. When needed to go further an developer API allow to
diff --git a/Controller-afb/a.out b/Controller-afb/a.out
new file mode 100755
index 0000000..d18064f
--- /dev/null
+++ b/Controller-afb/a.out
Binary files differ
diff --git a/Controler-afb/ctl-apidef.h b/Controller-afb/ctl-apidef.h
index 848fd14..68f9725 100644
--- a/Controler-afb/ctl-apidef.h
+++ b/Controller-afb/ctl-apidef.h
@@ -31,32 +31,26 @@ static const char _afb_description_v2_control[] =
" End\",\"get\":{\"x-permissions\":{\"$ref\":\"#/components/x-permissions"
"/monitor\"},\"parameters\":[{\"in\":\"query\",\"name\":\"event_patern\","
"\"required\":true,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"20"
- "0\":{\"$ref\":\"#/components/responses/200\"}}}},\"/timer_test\":{\"desc"
- "ription\":\"Pause Resume Test\",\"get\":{\"x-permissions\":{\"$ref\":\"#"
- "/components/x-permissions/monitor\"},\"parameters\":[{\"in\":\"query\",\""
- "name\":\"delay\",\"required\":false,\"schema\":{\"type\":\"interger\"}},"
- "{\"in\":\"query\",\"name\":\"count\",\"required\":false,\"schema\":{\"ty"
- "pe\":\"interger\"}}],\"responses\":{\"200\":{\"$ref\":\"#/components/res"
- "ponses/200\"}}}},\"/dispatch\":{\"description\":\"Request Access to Navi"
- "gation Audio Channel.\",\"get\":{\"x-permissions\":{\"$ref\":\"#/compone"
- "nts/x-permissions/navigation\"},\"parameters\":[{\"in\":\"query\",\"name"
- "\":\"zone\",\"required\":false,\"schema\":{\"type\":\"string\"}}],\"resp"
- "onses\":{\"200\":{\"$ref\":\"#/components/responses/200\"}}}},\"/lua_doc"
- "all\":{\"description\":\"Execute LUA string script.\",\"get\":{\"x-permi"
- "ssions\":{\"$ref\":\"#/components/x-permissions/navigation\"},\"paramete"
- "rs\":[{\"in\":\"query\",\"name\":\"func\",\"required\":true,\"schema\":{"
- "\"type\":\"string\"}},{\"in\":\"query\",\"name\":\"args\",\"required\":f"
- "alse,\"schema\":{\"type\":\"array\"}}],\"responses\":{\"200\":{\"$ref\":"
- "\"#/components/responses/200\"}}}},\"/lua_dostring\":{\"description\":\""
- "Execute LUA string script.\",\"get\":{\"x-permissions\":{\"$ref\":\"#/co"
- "mponents/x-permissions/navigation\"},\"parameters\":[{\"in\":\"query\",\""
- "required\":true,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\""
- ":{\"$ref\":\"#/components/responses/200\"}}}},\"/lua_doscript\":{\"descr"
- "iption\":\"Execute LUA string script.\",\"get\":{\"x-permissions\":{\"$r"
- "ef\":\"#/components/x-permissions/navigation\"},\"parameters\":[{\"in\":"
- "\"query\",\"name\":\"filename\",\"required\":true,\"schema\":{\"type\":\""
- "string\"}}],\"responses\":{\"200\":{\"$ref\":\"#/components/responses/20"
- "0\"}}}}}}"
+ "0\":{\"$ref\":\"#/components/responses/200\"}}}},\"/dispatch\":{\"descri"
+ "ption\":\"Request Access to Navigation Audio Channel.\",\"get\":{\"x-per"
+ "missions\":{\"$ref\":\"#/components/x-permissions/navigation\"},\"parame"
+ "ters\":[{\"in\":\"query\",\"name\":\"zone\",\"required\":false,\"schema\""
+ ":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"$ref\":\"#/components"
+ "/responses/200\"}}}},\"/lua_docall\":{\"description\":\"Execute LUA stri"
+ "ng script.\",\"get\":{\"x-permissions\":{\"$ref\":\"#/components/x-permi"
+ "ssions/navigation\"},\"parameters\":[{\"in\":\"query\",\"name\":\"func\""
+ ",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"in\":\"query\",\""
+ "name\":\"args\",\"required\":false,\"schema\":{\"type\":\"array\"}}],\"r"
+ "esponses\":{\"200\":{\"$ref\":\"#/components/responses/200\"}}}},\"/lua_"
+ "dostring\":{\"description\":\"Execute LUA string script.\",\"get\":{\"x-"
+ "permissions\":{\"$ref\":\"#/components/x-permissions/navigation\"},\"par"
+ "ameters\":[{\"in\":\"query\",\"required\":true,\"schema\":{\"type\":\"st"
+ "ring\"}}],\"responses\":{\"200\":{\"$ref\":\"#/components/responses/200\""
+ "}}}},\"/lua_doscript\":{\"description\":\"Execute LUA string script.\",\""
+ "get\":{\"x-permissions\":{\"$ref\":\"#/components/x-permissions/navigati"
+ "on\"},\"parameters\":[{\"in\":\"query\",\"name\":\"filename\",\"required"
+ "\":true,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"$re"
+ "f\":\"#/components/responses/200\"}}}}}}"
;
static const struct afb_auth _afb_auths_v2_control[] = {
@@ -64,7 +58,6 @@ static const struct afb_auth _afb_auths_v2_control[] = {
};
void ctlapi_monitor(struct afb_req req);
- void ctlapi_timer_test(struct afb_req req);
void ctlapi_dispatch(struct afb_req req);
void ctlapi_lua_docall(struct afb_req req);
void ctlapi_lua_dostring(struct afb_req req);
@@ -79,13 +72,6 @@ static const struct afb_verb_v2 _afb_verbs_v2_control[] = {
.session = AFB_SESSION_NONE_V2
},
{
- .verb = "timer_test",
- .callback = ctlapi_timer_test,
- .auth = &_afb_auths_v2_control[0],
- .info = NULL,
- .session = AFB_SESSION_NONE_V2
- },
- {
.verb = "dispatch",
.callback = ctlapi_dispatch,
.auth = &_afb_auths_v2_control[0],
diff --git a/Controler-afb/ctl-apidef.json b/Controller-afb/ctl-apidef.json
index 621fd5e..c35cbc0 100644
--- a/Controler-afb/ctl-apidef.json
+++ b/Controller-afb/ctl-apidef.json
@@ -147,37 +147,6 @@
}
}
},
- "/timer_test": {
- "description": "Pause Resume Test",
- "get": {
- "x-permissions": {
- "$ref": "#/components/x-permissions/monitor"
- },
- "parameters": [
- {
- "in": "query",
- "name": "delay",
- "required": false,
- "schema": {
- "type": "interger"
- }
- },
- {
- "in": "query",
- "name": "count",
- "required": false,
- "schema": {
- "type": "interger"
- }
- }
- ],
- "responses": {
- "200": {
- "$ref": "#/components/responses/200"
- }
- }
- }
- },
"/dispatch": {
"description": "Request Access to Navigation Audio Channel.",
"get": {
diff --git a/Controler-afb/ctl-binding.c b/Controller-afb/ctl-binding.c
index 8771fc0..8771fc0 100644
--- a/Controler-afb/ctl-binding.c
+++ b/Controller-afb/ctl-binding.c
diff --git a/Controler-afb/ctl-binding.h b/Controller-afb/ctl-binding.h
index c998007..a1c7ef2 100644
--- a/Controler-afb/ctl-binding.h
+++ b/Controller-afb/ctl-binding.h
@@ -16,8 +16,8 @@
*/
-#ifndef CONTROLER_BINDING_INCLUDE
-#define CONTROLER_BINDING_INCLUDE
+#ifndef CONTROLLER_BINDING_INCLUDE
+#define CONTROLLER_BINDING_INCLUDE
#define AFB_BINDING_VERSION 2
#include <afb/afb-binding.h>
@@ -61,7 +61,6 @@ typedef struct TimerHandleS {
PUBLIC int TimerEvtInit (void);
PUBLIC afb_event TimerEvtGet(void);
-PUBLIC void ctlapi_event_test (afb_req request);
PUBLIC void TimerEvtStart(TimerHandleT *timerHandle, timerCallbackT callback, void *context);
PUBLIC void TimerEvtStop(TimerHandleT *timerHandle);
@@ -75,6 +74,15 @@ typedef enum {
CTL_MODE_LUA,
} CtlRequestModeT;
+
+typedef enum {
+ CTL_SOURCE_CLOSE=-1,
+ CTL_SOURCE_UNKNOWN=0,
+ CTL_SOURCE_ONLOAD=1,
+ CTL_SOURCE_OPEN=2,
+ CTL_SOURCE_EVENT=3,
+} DispatchSourceT;
+
typedef struct DispatchActionS{
const char *info;
const char* label;
@@ -83,8 +91,9 @@ typedef struct DispatchActionS{
const char* call;
json_object *argsJ;
int timeout;
- int (*actionCB)(const char*label, json_object *argsJ, json_object *queryJ, void *context);
+ int (*actionCB)(DispatchSourceT source, const char*label, json_object *argsJ, json_object *queryJ, void *context);
} DispatchActionT;
+
typedef int (*Lua2cFunctionT)(char *funcname, json_object *argsJ, void*context);
PUBLIC int DispatchInit(void);
@@ -97,7 +106,7 @@ PUBLIC void ctlapi_dispatch (afb_req request);
// ctl-lua.c
typedef int (*Lua2cWrapperT) (lua_State* luaState, char *funcname, Lua2cFunctionT callback);
-#define CTLP_LUA2C(FuncName,label,argsJ, context) static int FuncName(char*label,json_object*argsJ, void*context);\
+#define CTLP_LUA2C(FuncName, label,argsJ, context) static int FuncName(char*label,json_object*argsJ, void*context);\
int lua2c_ ## FuncName(lua_State* luaState){return((*Lua2cWrap)(luaState, MACRO_STR_VALUE(FuncName), FuncName));};\
static int FuncName(char* label, json_object* argsJ, void* context)
@@ -110,7 +119,7 @@ typedef enum {
PUBLIC int LuaLibInit ();
PUBLIC void LuaL2cNewLib(const char *label, luaL_Reg *l2cFunc, int count);
PUBLIC int Lua2cWrapper(lua_State* luaState, char *funcname, Lua2cFunctionT callback, void *context);
-PUBLIC int LuaCallFunc (DispatchActionT *action, json_object *queryJ);
+PUBLIC int LuaCallFunc (DispatchSourceT source, DispatchActionT *action, json_object *queryJ) ;
PUBLIC void ctlapi_lua_docall (afb_req request);
PUBLIC void ctlapi_lua_dostring (afb_req request);
PUBLIC void ctlapi_lua_doscript (afb_req request);
@@ -130,8 +139,8 @@ typedef struct {
#define MACRO_STR_VALUE(arg) #arg
#define CTLP_REGISTER(pluglabel) CtlPluginMagicT CtlPluginMagic={.magic=CTL_PLUGIN_MAGIC,.label=pluglabel}; struct afb_binding_data_v2; Lua2cWrapperT Lua2cWrap;
#define CTLP_ONLOAD(label,version,info) void* CtlPluginOnload(char* label, char* version, char* info)
-#define CTLP_CAPI(funcname,label,argsJ, queryJ, context) int funcname(char* label, json_object* argsJ, json_object* queryJ, void* context)
+#define CTLP_CAPI(funcname,source, label,argsJ, queryJ, context) int funcname(DispatchSourceT source, char* label, json_object* argsJ, json_object* queryJ, void* context)
-#endif // CONTROLER_BINDING_INCLUDE
+#endif // CONTROLLER_BINDING_INCLUDE
diff --git a/Controler-afb/ctl-dispatch.c b/Controller-afb/ctl-dispatch.c
index 1afb846..1708204 100644
--- a/Controler-afb/ctl-dispatch.c
+++ b/Controller-afb/ctl-dispatch.c
@@ -27,13 +27,9 @@
typedef void*(*DispatchPluginInstallCbT)(const char* label, const char*version, const char*info);
+
static afb_req NULL_AFBREQ = {};
-typedef enum {
- CTL_DISPATCH_ONLOAD,
- CTL_DISPATCH_CONTROL,
- CTL_DISPATCH_EVENT,
-} DispatchClassT;
typedef struct {
const char* label;
@@ -72,7 +68,7 @@ STATIC int DispatchControlToIndex(DispatchHandleT **controls, const char* contro
return -1;
}
-STATIC int DispatchOneControl(DispatchHandleT **controls, const char* controlLabel, json_object *queryJ, afb_req request) {
+STATIC int DispatchOneControl(DispatchSourceT source, DispatchHandleT **controls, const char* controlLabel, json_object *queryJ, afb_req request) {
int err;
if (!configHandle) {
@@ -105,8 +101,23 @@ STATIC int DispatchOneControl(DispatchHandleT **controls, const char* controlLab
{
json_object *returnJ;
- json_object_get(actions[idx].argsJ); // make sure afb_service_call does not free the argsJ
- int err = afb_service_call_sync(actions[idx].api, actions[idx].call, actions[idx].argsJ, &returnJ);
+ // if query is empty increment usage count and pass args
+ if (!queryJ || json_object_get_type(queryJ) != json_type_object) {
+ json_object_get(actions[idx].argsJ);
+ queryJ= actions[idx].argsJ;
+ } else if (actions[idx].argsJ) {
+
+ // Merge queryJ and argsJ before sending request
+ if (json_object_get_type(actions[idx].argsJ) == json_type_object) {
+ json_object_object_foreach(actions[idx].argsJ, key, val) {
+ json_object_object_add(queryJ, key, val);
+ }
+ } else {
+ json_object_object_add(queryJ, "args", actions[idx].argsJ);
+ }
+ }
+
+ int err = afb_service_call_sync(actions[idx].api, actions[idx].call, queryJ, &returnJ);
if (err) {
static const char*format = "DispatchOneControl(Api) api=%s verb=%s args=%s";
if (afb_req_is_valid(request))afb_req_fail_f(request, "DISPATCH-CTL-MODE:API", format, actions[idx].label, actions[idx].api, actions[idx].call);
@@ -118,7 +129,7 @@ STATIC int DispatchOneControl(DispatchHandleT **controls, const char* controlLab
#ifdef CONTROL_SUPPORT_LUA
case CTL_MODE_LUA:
- err = LuaCallFunc(&actions[idx], queryJ);
+ err = LuaCallFunc(source, &actions[idx], queryJ);
if (err) {
static const char*format = "DispatchOneControl(Lua) label=%s func=%s args=%s";
if (afb_req_is_valid(request)) afb_req_fail_f(request, "DISPATCH-CTL-MODE:Lua", format, actions[idx].label, actions[idx].call, json_object_get_string(actions[idx].argsJ));
@@ -129,7 +140,7 @@ STATIC int DispatchOneControl(DispatchHandleT **controls, const char* controlLab
#endif
case CTL_MODE_CB:
- err = (*actions[idx].actionCB) (actions[idx].label, actions[idx].argsJ, queryJ, configHandle->plugin->context);
+ err = (*actions[idx].actionCB) (source, actions[idx].label, actions[idx].argsJ, queryJ, configHandle->plugin->context);
if (err) {
static const char*format = "DispatchOneControl(Callback) label%s func=%s args=%s";
if (afb_req_is_valid(request)) afb_req_fail_f(request, "DISPATCH-CTL-MODE:Cb", format, actions[idx].label, actions[idx].call, json_object_get_string(actions[idx].argsJ));
@@ -161,7 +172,7 @@ OnErrorExit:
PUBLIC void DispatchOneEvent(const char *evtLabel, json_object *eventJ) {
DispatchHandleT **events = configHandle->events;
- (void) DispatchOneControl(events, evtLabel, eventJ, NULL_AFBREQ);
+ (void) DispatchOneControl(CTL_SOURCE_EVENT, events, evtLabel, eventJ, NULL_AFBREQ);
}
// Event name is mapped on control label and executed as a standard control
@@ -169,23 +180,24 @@ PUBLIC void DispatchOneEvent(const char *evtLabel, json_object *eventJ) {
PUBLIC int DispatchOnLoad(const char *onLoadLabel) {
DispatchHandleT **onloads = configHandle->onloads;
- int err = DispatchOneControl(onloads, onLoadLabel, NULL, NULL_AFBREQ);
+ int err = DispatchOneControl(CTL_SOURCE_ONLOAD, onloads, onLoadLabel, NULL, NULL_AFBREQ);
return err;
}
PUBLIC void ctlapi_dispatch(afb_req request) {
DispatchHandleT **controls = configHandle->controls;
- json_object *queryJ, *argsJ;
+ json_object *queryJ, *argsJ=NULL;
const char *target;
-
+ DispatchSourceT source= CTL_SOURCE_UNKNOWN;
+
queryJ = afb_req_json(request);
- int err = wrap_json_unpack(queryJ, "{s:s, s:o !}", "target", &target, "args", &argsJ);
+ int err = wrap_json_unpack(queryJ, "{s:s, s?i s?o !}", "target", &target, "source", &source, "args", &argsJ);
if (err) {
afb_req_fail_f(request, "CTL-DISPTACH-INVALID", "missing target or args not a valid json object query=%s", json_object_get_string(queryJ));
goto OnErrorExit;
}
-
- (void) DispatchOneControl(controls, target, argsJ, request);
+
+ (void) DispatchOneControl(source, controls, target, argsJ, request);
OnErrorExit:
return;
@@ -208,12 +220,15 @@ PUBLIC int DispatchOneL2c(lua_State* luaState, char *funcname, Lua2cFunctionT ca
PUBLIC void ctlapi_config(struct afb_req request) {
json_object*tmpJ;
char *dirList;
+
json_object* queryJ = afb_req_json(request);
if (queryJ && json_object_object_get_ex(queryJ, "cfgpath", &tmpJ)) {
dirList = strdup(json_object_get_string(tmpJ));
} else {
- dirList = strdup(CONTROL_CONFIG_PATH);
+
+ dirList = getenv("CONTROL_CONFIG_PATH");
+ if (!dirList) dirList = strdup(CONTROL_CONFIG_PATH);
AFB_NOTICE("CONFIG-MISSING: use default CONTROL_CONFIG_PATH=%s", CONTROL_CONFIG_PATH);
}
@@ -339,7 +354,7 @@ STATIC DispatchHandleT *DispatchLoadOnload(DispatchConfigT *controlConfig, json_
int err;
DispatchHandleT *dispatchHandle = calloc(1, sizeof (DispatchHandleT));
- err = wrap_json_unpack(onloadJ, "{ss,s?s,s?o,s?o,s?o !}",
+ err = wrap_json_unpack(onloadJ, "{ss,s?s, s?o,s?o,s?o !}",
"label", &dispatchHandle->label, "info", &dispatchHandle->info, "plugin", &pluginJ, "require", &requireJ, "actions", &actionsJ);
if (err) {
AFB_ERROR("DISPATCH-LOAD-CONFIG:ONLOAD Missing something label|[info]|[plugin]|[actions] in %s", json_object_get_string(onloadJ));
@@ -370,18 +385,22 @@ STATIC DispatchHandleT *DispatchLoadOnload(DispatchConfigT *controlConfig, json_
json_object *lua2csJ = NULL;
DispatchPluginT *dPlugin= calloc(1, sizeof(DispatchPluginT));
controlConfig->plugin = dPlugin;
+ const char*ldSearchPath=NULL;
- err = wrap_json_unpack(pluginJ, "{ss,s?s,ss,s?o!}",
- "label", &dPlugin->label, "info", &dPlugin->info, "sharelib", &dPlugin->sharelib, "lua2c", &lua2csJ);
+ err = wrap_json_unpack(pluginJ, "{ss,s?s,s?s,ss,s?o!}",
+ "label", &dPlugin->label, "info", &dPlugin->info, "ldpath", &ldSearchPath, "sharelib", &dPlugin->sharelib, "lua2c", &lua2csJ);
if (err) {
AFB_ERROR("DISPATCH-LOAD-CONFIG:ONLOAD Plugin missing label|[info]|sharelib|[lua2c] in %s", json_object_get_string(onloadJ));
goto OnErrorExit;
}
+ // if search path not in Json config file, then try default
+ if (!ldSearchPath) ldSearchPath=CONTROL_PLUGIN_PATH;
+
// search for default policy config file
- json_object *pluginPathJ = ScanForConfig(CONTROL_PLUGIN_PATH, CTL_SCAN_RECURSIVE, dPlugin->sharelib, NULL);
+ json_object *pluginPathJ = ScanForConfig(ldSearchPath, CTL_SCAN_RECURSIVE, dPlugin->sharelib, NULL);
if (!pluginPathJ || json_object_array_length(pluginPathJ) == 0) {
- AFB_ERROR("DISPATCH-LOAD-CONFIG:PLUGIN Missing plugin=%s in path=%s", dPlugin->sharelib, CONTROL_PLUGIN_PATH);
+ AFB_ERROR("DISPATCH-LOAD-CONFIG:PLUGIN Missing plugin=%s in path=%s", dPlugin->sharelib, ldSearchPath);
goto OnErrorExit;
}
@@ -588,12 +607,15 @@ OnErrorExit:
PUBLIC int DispatchInit() {
int index, err, luaLoaded = 0;
char controlFile [CONTROL_MAXPATH_LEN];
+
+ const char *dirList= getenv("CONTROL_CONFIG_PATH");
+ if (!dirList) dirList=CONTROL_CONFIG_PATH;
strncpy(controlFile, CONTROL_CONFIG_PRE "-", CONTROL_MAXPATH_LEN);
strncat(controlFile, GetBinderName(), CONTROL_MAXPATH_LEN);
// search for default dispatch config file
- json_object* responseJ = ScanForConfig(CONTROL_CONFIG_PATH, CTL_SCAN_RECURSIVE, controlFile, "json");
+ json_object* responseJ = ScanForConfig(dirList, CTL_SCAN_RECURSIVE, controlFile, "json");
// We load 1st file others are just warnings
for (index = 0; index < json_object_array_length(responseJ); index++) {
diff --git a/Controler-afb/ctl-lua.c b/Controller-afb/ctl-lua.c
index 9d2cceb..4ef6b65 100644
--- a/Controler-afb/ctl-lua.c
+++ b/Controller-afb/ctl-lua.c
@@ -14,10 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
* ref:
- * http://www.troubleshooters.com/codecorn/lua/lua_c_calls_lua.htm#_Anatomy_of_a_Lua_Call
- * http://acamara.es/blog/2012/08/passing-variables-from-lua-5-2-to-c-and-vice-versa/
- * https://john.nachtimwald.com/2014/07/12/wrapping-a-c-library-in-lua/
- * https://gist.github.com/SONIC3D/10388137
+ * (manual) https://www.lua.org/manual/5.3/manual.html
+ * (lua->C) http://www.troubleshooters.com/codecorn/lua/lua_c_calls_lua.htm#_Anatomy_of_a_Lua_Call
+ * (lua/C Var) http://acamara.es/blog/2012/08/passing-variables-from-lua-5-2-to-c-and-vice-versa/
+ * (Lua/C Lib)https://john.nachtimwald.com/2014/07/12/wrapping-a-c-library-in-lua/
+ * (Lua/C Table) https://gist.github.com/SONIC3D/10388137
+ * (Lua/C Nested table) https://stackoverflow.com/questions/45699144/lua-nested-table-from-lua-to-c
+ * (Lua/C Wrapper) https://stackoverflow.com/questions/45699950/lua-passing-handle-to-function-created-with-newlib
+ *
*/
#define _GNU_SOURCE
@@ -170,7 +174,7 @@ STATIC json_object *LuaTableToJson (lua_State* luaState, int index) {
const char *key;
char number[3];
lua_pushnil(luaState); // 1st key
- if (index < 0) index--; // nested table https://stackoverflow.com/questions/45699144/lua-nested-table-from-lua-to-c
+ if (index < 0) index--;
for (idx=1; lua_next(luaState, index) != 0; idx++) {
// uses 'key' (at index -2) and 'value' (at index -1)
@@ -587,7 +591,7 @@ STATIC int LuaAfbEventMake(lua_State* luaState) {
// Function call from LUA when lua2c plugin L2C is used
PUBLIC int Lua2cWrapper(lua_State* luaState, char *funcname, Lua2cFunctionT callback, void *context) {
- json_object *argsJ= LuaPopArgs(luaState, LUA_FIST_ARG);
+ json_object *argsJ= LuaPopArgs(luaState, LUA_FIST_ARG+1);
int response = (*callback) (funcname, argsJ, context);
// push response to LUA
@@ -596,7 +600,7 @@ PUBLIC int Lua2cWrapper(lua_State* luaState, char *funcname, Lua2cFunctionT call
}
// Generated some fake event based on watchdog/counter
-PUBLIC int LuaCallFunc (DispatchActionT *action, json_object *queryJ) {
+PUBLIC int LuaCallFunc (DispatchSourceT source, DispatchActionT *action, json_object *queryJ) {
int err, count;
@@ -606,8 +610,11 @@ PUBLIC int LuaCallFunc (DispatchActionT *action, json_object *queryJ) {
// load function (should exist in CONTROL_PATH_LUA
lua_getglobal(luaState, func);
+ // push source on the stack
+ count=1;
+ lua_pushinteger(luaState, source);
+
// push argsJ on the stack
- count=0;
if (!argsJ) {
lua_pushnil(luaState);
count++;
@@ -937,7 +944,7 @@ static const luaL_Reg afbFunction[] = {
{"warning" , LuaPrintWarning},
{"debug" , LuaPrintDebug},
{"error" , LuaPrintError},
- {"callsync" , LuaAfbServiceSync},
+ {"servsync" , LuaAfbServiceSync},
{"service" , LuaAfbService},
{"success" , LuaAfbSuccess},
{"fail" , LuaAfbFail},
diff --git a/Controler-afb/ctl-plugin-sample.c b/Controller-afb/ctl-plugin-sample.c
index 1d24487..1d66802 100644
--- a/Controler-afb/ctl-plugin-sample.c
+++ b/Controller-afb/ctl-plugin-sample.c
@@ -50,57 +50,57 @@ PUBLIC CTLP_ONLOAD(label, version, info) {
pluginCtx->magic = MY_PLUGIN_MAGIC;
pluginCtx->count = -1;
- AFB_NOTICE ("CONTROLER-PLUGIN-SAMPLE:Onload label=%s version=%s info=%s", label, info, version);
+ AFB_NOTICE ("CONTROLLER-PLUGIN-SAMPLE:Onload label=%s version=%s info=%s", label, info, version);
return (void*)pluginCtx;
}
-PUBLIC CTLP_CAPI (SamplePolicyInit, label, argsJ, queryJ, context) {
+PUBLIC CTLP_CAPI (SamplePolicyInit, source, label, argsJ, queryJ, context) {
MyPluginCtxT *pluginCtx= (MyPluginCtxT*)context;
if (!context || pluginCtx->magic != MY_PLUGIN_MAGIC) {
- AFB_ERROR("CONTROLER-PLUGIN-SAMPLE:SamplePolicyInit (Hoops) Invalid Sample Plugin Context");
+ AFB_ERROR("CONTROLLER-PLUGIN-SAMPLE:SamplePolicyInit (Hoops) Invalid Sample Plugin Context");
return -1;
};
pluginCtx->count = 0;
- AFB_NOTICE ("CONTROLER-PLUGIN-SAMPLE:Init label=%s args=%s\n", label, jsonToString(argsJ));
+ AFB_NOTICE ("CONTROLLER-PLUGIN-SAMPLE:Init label=%s args=%s\n", label, jsonToString(argsJ));
return 0;
}
-PUBLIC CTLP_CAPI (sampleControlMultimedia,label, argsJ,queryJ,context) {
+PUBLIC CTLP_CAPI (sampleControlMultimedia, source, label, argsJ,queryJ,context) {
MyPluginCtxT *pluginCtx= (MyPluginCtxT*)context;
if (!context || pluginCtx->magic != MY_PLUGIN_MAGIC) {
- AFB_ERROR("CONTROLER-PLUGIN-SAMPLE:sampleControlMultimedia (Hoops) Invalid Sample Plugin Context");
+ AFB_ERROR("CONTROLLER-PLUGIN-SAMPLE:sampleControlMultimedia (Hoops) Invalid Sample Plugin Context");
return -1;
};
pluginCtx->count++;
- AFB_NOTICE ("CONTROLER-PLUGIN-SAMPLE:sampleControlMultimedia SamplePolicyCount action=%s args=%s query=%s count=%d"
+ AFB_NOTICE ("CONTROLLER-PLUGIN-SAMPLE:sampleControlMultimedia SamplePolicyCount action=%s args=%s query=%s count=%d"
, label, jsonToString(argsJ), jsonToString(queryJ), pluginCtx->count);
return 0;
}
-PUBLIC CTLP_CAPI (sampleControlNavigation, label, argsJ, queryJ, context) {
+PUBLIC CTLP_CAPI (sampleControlNavigation, source, label, argsJ, queryJ, context) {
MyPluginCtxT *pluginCtx= (MyPluginCtxT*)context;
if (!context || pluginCtx->magic != MY_PLUGIN_MAGIC) {
- AFB_ERROR("CONTROLER-PLUGIN-SAMPLE:sampleControlNavigation (Hoops) Invalid Sample Plugin Context");
+ AFB_ERROR("CONTROLLER-PLUGIN-SAMPLE:sampleControlNavigation (Hoops) Invalid Sample Plugin Context");
return -1;
};
pluginCtx->count++;
- AFB_NOTICE ("CONTROLER-PLUGIN-SAMPLE:sampleControlNavigation SamplePolicyCount action=%s args=%s query=%s count=%d"
+ AFB_NOTICE ("CONTROLLER-PLUGIN-SAMPLE:sampleControlNavigation SamplePolicyCount action=%s args=%s query=%s count=%d"
,label, jsonToString(argsJ), jsonToString(queryJ), pluginCtx->count);
return 0;
}
-PUBLIC CTLP_CAPI (SampleControlEvent, label, argsJ, queryJ, context) {
+PUBLIC CTLP_CAPI (SampleControlEvent, source, label, argsJ, queryJ, context) {
MyPluginCtxT *pluginCtx= (MyPluginCtxT*)context;
if (!context || pluginCtx->magic != MY_PLUGIN_MAGIC) {
- AFB_ERROR("CONTROLER-PLUGIN-SAMPLE:cousampleControlMultimediant (Hoops) Invalid Sample Plugin Context");
+ AFB_ERROR("CONTROLLER-PLUGIN-SAMPLE:cousampleControlMultimediant (Hoops) Invalid Sample Plugin Context");
return -1;
};
pluginCtx->count++;
- AFB_NOTICE ("CONTROLER-PLUGIN-SAMPLE:sampleControlMultimedia SamplePolicyCount action=%s args=%s query=%s count=%d"
+ AFB_NOTICE ("CONTROLLER-PLUGIN-SAMPLE:sampleControlMultimedia SamplePolicyCount action=%s args=%s query=%s count=%d"
,label, jsonToString(argsJ), jsonToString(queryJ), pluginCtx->count);
return 0;
}
@@ -110,11 +110,11 @@ PUBLIC CTLP_LUA2C (Lua2cHelloWorld1, label, argsJ, context) {
MyPluginCtxT *pluginCtx= (MyPluginCtxT*)context;
if (!context || pluginCtx->magic != MY_PLUGIN_MAGIC) {
- AFB_ERROR("CONTROLER-PLUGIN-SAMPLE:Lua2cHelloWorld1 (Hoops) Invalid Sample Plugin Context");
+ AFB_ERROR("CONTROLLER-PLUGIN-SAMPLE:Lua2cHelloWorld1 (Hoops) Invalid Sample Plugin Context");
return -1;
};
pluginCtx->count++;
- AFB_NOTICE ("CONTROLER-PLUGIN-SAMPLE:Lua2cHelloWorld1 SamplePolicyCount action=%s args=%s count=%d"
+ AFB_NOTICE ("CONTROLLER-PLUGIN-SAMPLE:Lua2cHelloWorld1 SamplePolicyCount action=%s args=%s count=%d"
,label, jsonToString(argsJ), pluginCtx->count);
return 0;
}
@@ -124,11 +124,11 @@ PUBLIC CTLP_LUA2C (Lua2cHelloWorld2, label, argsJ, context) {
MyPluginCtxT *pluginCtx= (MyPluginCtxT*)context;
if (!context || pluginCtx->magic != MY_PLUGIN_MAGIC) {
- AFB_ERROR("CONTROLER-PLUGIN-SAMPLE:Lua2cHelloWorld2 (Hoops) Invalid Sample Plugin Context");
+ AFB_ERROR("CONTROLLER-PLUGIN-SAMPLE:Lua2cHelloWorld2 (Hoops) Invalid Sample Plugin Context");
return -1;
};
pluginCtx->count++;
- AFB_NOTICE ("CONTROLER-PLUGIN-SAMPLE:Lua2cHelloWorld2 SamplePolicyCount action=%s args=%s count=%d"
+ AFB_NOTICE ("CONTROLLER-PLUGIN-SAMPLE:Lua2cHelloWorld2 SamplePolicyCount action=%s args=%s count=%d"
,label, jsonToString(argsJ), pluginCtx->count);
return 0;
}
diff --git a/Controler-afb/ctl-policy.c b/Controller-afb/ctl-policy.c
index e9798b3..e9798b3 100644
--- a/Controler-afb/ctl-policy.c
+++ b/Controller-afb/ctl-policy.c
diff --git a/Controler-afb/ctl-timer.c b/Controller-afb/ctl-timer.c
index f7ee6f0..a826f9f 100644
--- a/Controler-afb/ctl-timer.c
+++ b/Controller-afb/ctl-timer.c
@@ -85,61 +85,6 @@ PUBLIC afb_event TimerEvtGet(void) {
}
-STATIC int DoSendEvent (void *context) {
- AutoTestCtxT *ctx= (AutoTestCtxT*)context;
- json_object *ctlEventJ;
-
- if (ctx->value) ctx->value =0;
- else ctx->value =1;
-
- ctlEventJ = json_object_new_object();
- json_object_object_add(ctlEventJ,"signal", json_object_new_string(ctx->label));
- json_object_object_add(ctlEventJ,"value" , json_object_new_int(ctx->value));
- int done = afb_event_push(afbevt, ctlEventJ);
-
- AFB_NOTICE ("DoSendEvent {action: '%s', value:%d} status=%d", ctx->label, ctx->value, done);
-
- return (done);
-}
-
-// Generated some fake event based on watchdog/counter
-PUBLIC void ctlapi_timer_test (afb_req request) {
- json_object *queryJ, *tmpJ;
- TimerHandleT *timerHandle = malloc (sizeof (TimerHandleT));
- AutoTestCtxT *context = calloc (1, sizeof (AutoTestCtxT));
- int done;
-
- queryJ= afb_req_json(request);
-
- // Closing call only has one parameter
- done=json_object_object_get_ex(queryJ, "closing", &tmpJ);
- if (done) return;
-
- done=json_object_object_get_ex(queryJ, "label", &tmpJ);
- if (!done) {
- afb_req_fail_f(request, "TEST-LABEL-MISSING", "label is mandatory for event_test");
- goto OnErrorExit;
- }
- timerHandle->label = strdup(json_object_get_string (tmpJ));
-
- json_object_object_get_ex(queryJ, "delay", &tmpJ);
- timerHandle->delay = json_object_get_int (tmpJ) * 1000;
- if (timerHandle->delay == 0) timerHandle->delay=DEFAULT_PAUSE_DELAY * 1000;
-
- json_object_object_get_ex(queryJ, "count", &tmpJ);
- timerHandle->count = json_object_get_int (tmpJ);
- if (timerHandle->count == 0) timerHandle->count=DEFAULT_TEST_COUNT;
-
- // start a lool timer
- TimerEvtStart (timerHandle, DoSendEvent, context);
-
- afb_req_success(request, NULL, NULL);
- return;
-
- OnErrorExit:
- return;
-}
-
// Create Binding Event at Init
PUBLIC int TimerEvtInit () {
diff --git a/HAL-afb/HAL-interface/hal-interface.c b/HAL-afb/HAL-interface/hal-interface.c
index 4d86504..0abe67e 100644
--- a/HAL-afb/HAL-interface/hal-interface.c
+++ b/HAL-afb/HAL-interface/hal-interface.c
@@ -44,7 +44,7 @@ STATIC int halCtlStringToIndex(const char* label) {
alsaHalMapT *halCtls = halSndCard->ctls;
for (int idx = 0; halCtls[idx].tag != EndHalCrlTag; idx++) {
- if (halCtls[idx].label && !strcmp(halCtls[idx].label, label)) return idx;
+ if (halCtls[idx].label && !strcasecmp(halCtls[idx].label, label)) return idx;
}
// not found
@@ -502,11 +502,12 @@ PUBLIC int halServiceInit(const char *apiPrefix, alsaHalSndCardT *alsaHalSndCard
json_object *ctlJ;
// Try to find best equivalent label for tag
- if (halCtls[idx].tag >StartHalCrlTag && halCtls[idx].tag < EndHalCrlTag && halCtls[idx].label != NULL) {
+ if (halCtls[idx].tag >StartHalCrlTag && halCtls[idx].tag < EndHalCrlTag && halCtlsLabels[halCtls[idx].tag] != NULL) {
halCtls[idx].label = halCtlsLabels[halCtls[idx].tag];
} else {
if (halCtls[idx].ctl.name) halCtls[idx].label=halCtls[idx].ctl.name;
else if (halCtls[idx].info) halCtls[idx].label=halCtls[idx].info;
+ else halCtls[idx].label="NoHalCttNameSet";
}
ctlJ = json_object_new_object();
@@ -617,9 +618,9 @@ PUBLIC void halServiceEvent(const char *evtname, json_object *eventJ) {
PUBLIC afb_verb_v2 halServiceApi[] = {
/* VERB'S NAME FUNCTION TO CALL SHORT DESCRIPTION */
{ .verb = "ping", .callback = pingtest, .info = "ping test for API"},
- { .verb = "ctl-list", .callback = halListCtls, .info = "List AGL normalised Sound Controls"},
- { .verb = "ctl-get", .callback = halGetCtls, .info = "Get one/many sound controls"},
- { .verb = "ctl-set", .callback = halSetCtls, .info = "Set one/many sound controls"},
- { .verb = "evt-sub", .callback = halSubscribe, .info = "Subscribe to HAL events"},
+ { .verb = "ctllist", .callback = halListCtls, .info = "List AGL normalised Sound Controls"},
+ { .verb = "ctlget", .callback = halGetCtls, .info = "Get one/many sound controls"},
+ { .verb = "ctlset", .callback = halSetCtls, .info = "Set one/many sound controls"},
+ { .verb = "evtsub", .callback = halSubscribe, .info = "Subscribe to HAL events"},
{ .verb = NULL} /* marker for end of the array */
};
diff --git a/conf.d/cmake/config.cmake b/conf.d/cmake/config.cmake
index 4719486..9293781 100644
--- a/conf.d/cmake/config.cmake
+++ b/conf.d/cmake/config.cmake
@@ -73,7 +73,7 @@ set (PKG_REQUIRED_LIST
add_compile_options(-DCONTROL_DOSCRIPT_PRE="doscript")
add_compile_options(-DCONTROL_CONFIG_PRE="onload")
add_compile_options(-DCONTROL_CONFIG_POST="control" )
- add_compile_options(-DCONTROL_CONFIG_PATH="${CMAKE_SOURCE_DIR}/conf.d/project/config.d:${CMAKE_INSTALL_PREFIX}/controler/config.d")
+ add_compile_options(-DCONTROL_CONFIG_PATH="${CMAKE_SOURCE_DIR}/conf.d/project/config.d:${CMAKE_INSTALL_PREFIX}/controller/config.d")
set(CONTROL_SUPPORT_LUA 1 CACHE BOOL "Active or not LUA Support")
@@ -81,13 +81,13 @@ set (PKG_REQUIRED_LIST
set(LUA_COMPILER "luac5.3" CACHE STRING "LUA syntaxe check")
add_compile_options(-DCONTROL_SUPPORT_LUA)
add_compile_options(-DCONTROL_LUA_EVENT="luaevt")
- add_compile_options(-DCONTROL_LUA_PATH="${CMAKE_SOURCE_DIR}/conf.d/project/lua.d:${CMAKE_INSTALL_PREFIX}/controler/ctl-lua.d")
+ add_compile_options(-DCONTROL_LUA_PATH="${CMAKE_SOURCE_DIR}/conf.d/project/lua.d:${CMAKE_INSTALL_PREFIX}/controller/ctl-lua.d")
else(CONTROL_SUPPORT_LUA)
message(STATUS "Warning: LUA Without Support ")
endif(CONTROL_SUPPORT_LUA)
- set (CTL_PLUGIN_PRE "ctl-" CACHE STRING "Prefix for Controler share plugin")
- set (CTL_PLUGIN_EXT ".ctlso" CACHE STRING "Postfix for Controler share plugin")
+ set (CTL_PLUGIN_PRE "ctl-" CACHE STRING "Prefix for Controller share plugin")
+ set (CTL_PLUGIN_EXT ".ctlso" CACHE STRING "Postfix for Controller share plugin")
add_compile_options(-DCTL_PLUGIN_MAGIC=2468013579)
add_compile_options(-DCONTROL_PLUGIN_PATH="${CMAKE_BINARY_DIR}:${BINDINGS_INSTALL_DIR}/ctlplug:/usr/lib/afb/ctlplug")
diff --git a/conf.d/alsa-sample/asoundrc.sample b/conf.d/project/alsa.d/asoundrc.sample
index 1786c46..b208a09 100644
--- a/conf.d/alsa-sample/asoundrc.sample
+++ b/conf.d/project/alsa.d/asoundrc.sample
@@ -49,12 +49,12 @@ pcm_hook_type.MyHookPlugin {
lib "/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build/Alsa-Plugin/Alsa-Policy-Hook/policy_hook_cb.so"
}
+
# Define a HookedPCM that point to Hook_type sharelib
# ----------------------------------------------------
pcm.MyNavigationHook {
type hooks
slave.pcm "MyMixerPCM"
-
# Defined used hook sharelib and provide arguments/config to install func
hooks.0 {
type "MyHookPlugin"
@@ -66,31 +66,17 @@ pcm.MyNavigationHook {
request {
# Request autorisation to write on navigation
RequestNavigation {
- api "polctl"
- verb "navigation"
- }
- # subscribe to Audio Agent Event
- SubscriveEvents {
- api "polctl"
- verb "monitor"
- }
- TestAutoStop {
- api "polctl"
- verb "event_test"
- query "{'label':'stop', 'delay':10000}"
- }
- TestAutoStart {
- api "polctl"
- verb "event_test"
- query "{'label':'stop', 'delay':20000}"
- }
- # start a test pause/resume not supported by every hardware
- TestPauseResume {
- api "polctl"
- verb "event_test"
- query "{'label':'pause', 'delay':3000, 'count':10}"
+ api "control"
+ verb "dispatch"
+ query "{'target':'navigation', 'args':{'device':'Jabra SOLEMATE v1.34.0'}}"
}
}
+ # map event reception to self generated signal
+ event {
+ pause 30
+ resume 31
+ stop 3
+ }
}
}
}
diff --git a/conf.d/alsa-sample/ucm.sample/HDA Intel PCH.conf b/conf.d/project/alsa.d/ucm.sample/HDA Intel PCH.conf
index f6608a0..f6608a0 100644
--- a/conf.d/alsa-sample/ucm.sample/HDA Intel PCH.conf
+++ b/conf.d/project/alsa.d/ucm.sample/HDA Intel PCH.conf
diff --git a/conf.d/alsa-sample/ucm.sample/HiFi.conf b/conf.d/project/alsa.d/ucm.sample/HiFi.conf
index 9a53c8c..9a53c8c 100644
--- a/conf.d/alsa-sample/ucm.sample/HiFi.conf
+++ b/conf.d/project/alsa.d/ucm.sample/HiFi.conf
diff --git a/conf.d/alsa-sample/ucm.sample/README b/conf.d/project/alsa.d/ucm.sample/README
index e7f08ae..e7f08ae 100644
--- a/conf.d/alsa-sample/ucm.sample/README
+++ b/conf.d/project/alsa.d/ucm.sample/README
diff --git a/conf.d/project/config.d/onload-audio-control.json b/conf.d/project/config.d/onload-audio-control.json
index 7180bd5..77a8fce 100644
--- a/conf.d/project/config.d/onload-audio-control.json
+++ b/conf.d/project/config.d/onload-audio-control.json
@@ -9,7 +9,7 @@
"label": "onload-default",
"info": "onload initialisation config",
"plugin": {
- "label" : "MyPlug",
+ "label" : "_MyPlug",
"sharelib": "ctl-audio-plugin-sample.ctlso",
"lua2c": ["Lua2cHelloWorld1", "Lua2cHelloWorld2"]
},
@@ -28,11 +28,11 @@
"info": "Assert AlsaCore Presence",
"api": "alsacore",
"verb": "ping",
- "args": "test"
+ "args": {"data": "none"}
}, {
"label": "onload-hal-lua",
"info": "Load avaliable HALs",
- "lua": "Audio_Init_Hal"
+ "lua": "_Alsa_Get_Hal"
}
]
}],
@@ -43,20 +43,20 @@
"actions": {
"label": "multimedia-control-lua",
"info": "Call Lua Script function Test_Lua_Engin",
- "lua": "Audio_Set_Multimedia"
+ "lua": "_Audio_Set_Multimedia"
}
}, {
"label": "navigation",
"actions": {
"label": "navigation-control-lua",
"info": "Call Lua Script to set Navigation",
- "lua": "Audio_Set_Navigation"
+ "lua": "_Audio_Set_Navigation"
}
}, {
"label": "emergency",
"actions": {
"label": "emergency-control-ucm",
- "lua": "Audio_Set_Emergency"
+ "lua": "_Audio_Set_Emergency"
}
}, {
"label": "multi-step-sample",
@@ -79,7 +79,7 @@
}, {
"label": "navigation-control-lua",
"info": "Call Lua Script to set Navigation",
- "lua": "Audio_Set_Navigation"
+ "lua": "_Audio_Set_Navigation"
}]
}
],
diff --git a/conf.d/project/lua.d/doscript-helloworld.lua b/conf.d/project/lua.d/doscript-helloworld.lua
index 64bc94a..a06c3db 100644
--- a/conf.d/project/lua.d/doscript-helloworld.lua
+++ b/conf.d/project/lua.d/doscript-helloworld.lua
@@ -21,7 +21,7 @@
--]]
-function helloworld (request, query)
+local function helloworld (request, query)
AFB:notice ("LUA HelloWorld: Simple test query=%s", query);
diff --git a/conf.d/project/lua.d/onload-audio-0utils.lua b/conf.d/project/lua.d/onload-audio-0utils.lua
new file mode 100644
index 0000000..b8ecd7e
--- /dev/null
+++ b/conf.d/project/lua.d/onload-audio-0utils.lua
@@ -0,0 +1,86 @@
+--[[
+ Copyright (C) 2016 "IoT.bzh"
+ Author Fulup Ar Foll <fulup@iot.bzh>
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ Note: this file should be called before any other to assert declare function
+ is loaded before anything else.
+
+ References:
+ http://lua-users.org/wiki/DetectingUndefinedVariables
+
+--]]
+
+
+--===================================================
+--= Niklas Frykholm
+-- basically if user tries to create global variable
+-- the system will not let them!!
+-- call GLOBAL_lock(_G)
+--
+--===================================================
+function GLOBAL_lock(t)
+ local mt = getmetatable(t) or {}
+ mt.__newindex = lock_new_index
+ setmetatable(t, mt)
+end
+
+--===================================================
+-- call GLOBAL_unlock(_G)
+-- to change things back to normal.
+--===================================================
+function GLOBAL_unlock(t)
+ local mt = getmetatable(t) or {}
+ mt.__newindex = unlock_new_index
+ setmetatable(t, mt)
+end
+
+function lock_new_index(t, k, v)
+ if (string.sub(k,1,1) ~= "_") then
+ GLOBAL_unlock(_G)
+ error("GLOBALS are locked -- " .. k ..
+ " must be declared local or prefix with '_' for globals.", 2)
+ else
+ rawset(t, k, v)
+ end
+end
+
+function unlock_new_index(t, k, v)
+ rawset(t, k, v)
+end
+
+-- return serialised version of printable table
+function Dump_Table(o)
+ if type(o) == 'table' then
+ local s = '{ '
+ for k,v in pairs(o) do
+ if type(k) ~= 'number' then k = '"'..k..'"' end
+ s = s .. '['..k..'] = ' .. Dump_Table(v) .. ','
+ end
+ return s .. '} '
+ else
+ return tostring(o)
+ end
+end
+
+
+-- simulate C prinf function
+printf = function(s,...)
+ io.write(s:format(...))
+ io.write("\n")
+ return
+end
+
+-- lock global variable
+GLOBAL_lock(_G)
diff --git a/conf.d/project/lua.d/onload-audio-controls.lua b/conf.d/project/lua.d/onload-audio-controls.lua
index 4849632..24c4f71 100644
--- a/conf.d/project/lua.d/onload-audio-controls.lua
+++ b/conf.d/project/lua.d/onload-audio-controls.lua
@@ -18,54 +18,145 @@
Provide sample policy function for AGL Advance Audio Agent
--]]
-function Audio_Init_CB (status, result, context)
- print ("--inlua:Audio_Init_CB-- result=", Dump_Table(result))
- print ("--inlua:Audio_Init_CB-- context=", Dump_Table(context))
-
- AFB:notice("Audio_Init_Hal_CB result='%s' context='%s'", result, context)
+-- Global HAL registry
+_Audio_Hal_Registry={}
+
+-- Callback when receiving HAL registry
+function _Alsa_Get_Hal_CB (error, result, context)
+ -- Initialise an empty table
+ local registry={}
+
+ -- Only process when response is valid
+ if (error) then
+ AFB_ErrOr ("[Audio_Init_CB] ErrOr result=%s", result)
+ return
+ end
+
+ -- Extract response from result
+ local response=result["response"]
+
+ -- Index HAL Bindings APIs by shortname
+ for key,value in pairs(response) do
+ registry[value["shortname"]]=value["api"]
+ end
+
+ -- store Exiting HAL for further use
+ printf ("-- [Audio_Init_CB] -- Audio_register_Hal=%s", Dump_Table(registry))
+ _Audio_Hal_Registry=registry
end
-- Function call at binding load time
-function Audio_Init_Hal(args, query)
+function _Alsa_Get_Hal(args)
- local nested = {
- ["next1"]=1234,
- ["next2"]="nested",
- ["next3"]=9999,
- }
- local context = {
- ["arg1"]=1234,
- ["arg2"]=nested,
- ["arg3"]=5678,
- }
+ printf ("[-- Audio_Get_Hal --] args=%s", Dump_Table(argsT))
+
+ -- Query AlsaCore for Active HALs (no query, no context)
+ AFB:service ('alsacore', 'hallist', {}, "_Alsa_Get_Hal_CB", {})
+
+end
- print ("--inlua:Audio_Init-- response=", Dump_Table(responseT))
+-- In sample configuration Query/Args parsing is common to all audio control
+local function Audio_Parse_Request (source, args, query)
- print("myplug=", Dump_Table(MyPlug));
+ local apihal={}
- -- This routine is defined in C sample plugin
- local status=MyPlug:Lua2cHelloWorld1(nested)
-
- -- query asynchronously loaded HAL
- AFB:service ('alsacore', 'hallist', {}, "Audio_Init_CB", context)
-
+ -- In this test we expect targeted device to be given from query (could come for args as well)
+ if (query == nil ) then
+ AFB:error ("--LUA:Audio_Set_Navigation query should contain and args with targeted apihal|device")
+ return -- refuse control
+ end
+
+ -- Alsa Hook plugin asound sample config provides target sound card by name
+ if (query["device"] ~= nil) then
+ apihal=_Audio_Hal_Registry[query["device"]]
+ end
+
+ -- HTML5 test page provides directly HAL api.
+ if (query["apihal"] ~= nil) then
+ apihal= query["apihal"]
+ end
+
+ -- if requested HAL is not found then deny the control
+ if (apihal == nil) then
+ AFB:error ("--LUA:Audio_Set_Navigation No Active HAL Found")
+ return -- refuse control
+ end
+
+ -- return api or nil when not found
+ return apihal
end
-function Audio_Set_Navigation(args, query)
+-- Set Navigation lower sound when play
+function _Audio_Set_Navigation(source, args, query)
+
+ -- in strict mode every variables should be declared
+ local err=0
+ local ctlhal={}
+ local response={}
+ local apihal={}
+
+ AFB:notice ("LUA:Audio_Set_Use_Case source=%d args=%s query=%s", source, args, query);
+
+ -- Parse Query/Args and if HAL not found then refuse access
+ apihal= Audio_Parse_Request (source, args, query)
+ if (apihal == nil) then return 1 end
+
- AFB:notice ("LUA:Audio_Set_Use_Case args=%s query=%s", args, query);
+ -- if source < 0 then Alsa HookPlugin is closing PCM
+ if (source < 0) then
+ -- Ramp Up Multimedia channel synchronously
+ ctlhal={['label']='Master_Playback_Volume', ['val']=100}
+ err, response= AFB:servsync (apihal, 'ctlset',ctlhal)
+ else
+ -- Ramp Down Multimedia channel synchronously
+ ctlhal={['label']='Master_Playback_Volume', ['val']=50}
+ err, response= AFB:servsync (apihal, 'ctlset',ctlhal)
+ end
- -- synchronous call to alsacore service
- local error,data= AFB:callsync ('alsacore', 'ping', {})
- if (error) then
- AFB:error ("LUA:Audio_Set_Use_Case FAIL args=%s", args)
- else
- AFB:notice ("--LUA:Audio_Set_Use_Case DONE args=%s response=%s", args, data["response"])
+ if (err) then
+ AFB:error("--LUA:Audio_Set_Navigation halapi=%s refuse ctl=%s", apihal, ctlhal)
+ return 1 -- control refused
end
- -- return OK
- return 0
+
+ return 0 -- control accepted
end
+-- Select Multimedia mode
+function _Audio_Set_Multimedia (source, args, query)
+
+ -- in strict mode every variables should be declared
+ local err=0
+ local ctlhal={}
+ local response={}
+ local apihal={}
+
+ AFB:notice ("LUA:Audio_Set_Use_Case source=%d args=%s query=%s", source, args, query);
+
+ -- Parse Query/Args and if HAL not found then refuse access
+ apihal= Audio_Parse_Request (source, args, query)
+ if (apihal == nil) then return 1 end
+
+
+ -- if Mumtimedia control only increase volume on open
+ if (source >= 0) then
+ -- Ramp Down Multimedia channel synchronously
+ ctlhal={['label']='Master_Playback_Volume', ['val']=100}
+ err, response= AFB:servsync (apihal, 'ctlset',ctlhal)
+ end
+
+ if (err) then
+ AFB:error("--LUA:Audio_Set_Navigation halapi=%s refuse ctl=%s", apihal, ctlhal)
+ return 1 -- control refused
+ end
+
+
+ return 0 -- control accepted
+end
+
+-- Select Emergency Mode
+function _Audio_Set_Emergency(source, args, query)
+ return 1 -- Always refuse in this test
+end
diff --git a/conf.d/project/lua.d/onload-audio-oncall.lua b/conf.d/project/lua.d/onload-audio-oncall.lua
index 08b25e5..23b538e 100644
--- a/conf.d/project/lua.d/onload-audio-oncall.lua
+++ b/conf.d/project/lua.d/onload-audio-oncall.lua
@@ -18,18 +18,18 @@
Provide sample LUA routines to be used with AGL control "lua_docall" API
--]]
--- global counter to keep track of calls
-count=0
+--global counter to keep track of calls
+_count=0
-- Display receive arguments and echo them to caller
-function Simple_Echo_Args (request, args)
- count=count+1
+function _Simple_Echo_Args (request, args)
+ _count=_count+1
AFB:notice("LUA OnCall Echo Args count=%d args=%s", count, args)
print ("--inlua-- args=", Dump_Table(args))
local response={
- ["count"]=count,
+ ["count"]=_count,
["args"]=args,
}
@@ -37,7 +37,7 @@ function Simple_Echo_Args (request, args)
AFB:success (request, {["func"]="Simple_Echo_Args", ["ret1"]=5678, ["ret2"]="abcd"})
end
-function Test_Async_CB (request, result, context)
+local function Test_Async_CB (request, result, context)
response={
["result"]=result,
["context"]=context,
@@ -47,7 +47,7 @@ function Test_Async_CB (request, result, context)
AFB:success (request, response)
end
-function Test_Call_Async (request, args)
+function _Test_Call_Async (request, args)
local context={
["value1"]="abcd",
["value2"]=1234
@@ -57,7 +57,7 @@ function Test_Call_Async (request, args)
AFB:service("alsacore","ping", "Test_Async_CB", context)
end
-function Test_Call_Sync (request, args)
+function _Test_Call_Sync (request, args)
AFB:notice ("Test_Call_Sync args=%s", args)
local err, response= AFB:service_sync ("alsacore","ping", args)
diff --git a/conf.d/project/lua.d/onload-audio-timer.lua b/conf.d/project/lua.d/onload-audio-timer.lua
index 5f25de7..db7a937 100644
--- a/conf.d/project/lua.d/onload-audio-timer.lua
+++ b/conf.d/project/lua.d/onload-audio-timer.lua
@@ -19,11 +19,10 @@
--]]
-- Create event on Lua script load
-print ("*** Create MyTestEvent ***")
-MyEventHandle= AFB:evtmake("MyTestEvent")
+local MyEventHandle=AFB:evtmake("MyTestEvent")
-- Call count time every delay/ms
-function Timer_Test_CB (timer, context)
+local function Timer_Test_CB (timer, context)
local evtinfo= AFB:timerget(timer)
print ("timer=", Dump_Table(evtinfo))
@@ -37,7 +36,7 @@ function Timer_Test_CB (timer, context)
end
-- sendback event depending on count and delay
-function Simple_Timer_Test (request, args)
+function _Simple_Timer_Test (request, args)
local context = {
["info"]="My 1st private Event",
@@ -68,6 +67,3 @@ function Simple_Timer_Test (request, args)
return 0
end
-
-
-
diff --git a/conf.d/project/lua.d/onload-audio-utils.lua b/conf.d/project/lua.d/onload-audio-utils.lua
deleted file mode 100644
index 40ef8a3..0000000
--- a/conf.d/project/lua.d/onload-audio-utils.lua
+++ /dev/null
@@ -1,32 +0,0 @@
---[[
- Copyright (C) 2016 "IoT.bzh"
- Author Fulup Ar Foll <fulup@iot.bzh>
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
---]]
-
-
--- return serialised version of printable table
-function Dump_Table(o)
- if type(o) == 'table' then
- local s = '{ '
- for k,v in pairs(o) do
- if type(k) ~= 'number' then k = '"'..k..'"' end
- s = s .. '['..k..'] = ' .. Dump_Table(v) .. ','
- end
- return s .. '} '
- else
- return tostring(o)
- end
-end
diff --git a/data/default-control-policy.json b/data/default-control-policy.json
index 30cd1ce..c6f8bd0 100644
--- a/data/default-control-policy.json
+++ b/data/default-control-policy.json
@@ -6,7 +6,7 @@
"version": "1.0"
},
"onload": {
- "info": "controler initialisation config",
+ "info": "controller initialisation config",
"plugin": "sample-audio-policy.so",
"actions": [
{
diff --git a/htdocs/AudioBinding.js b/htdocs/AudioBinding.js
index 607d31c..4d14600 100644
--- a/htdocs/AudioBinding.js
+++ b/htdocs/AudioBinding.js
@@ -94,7 +94,6 @@
var selectobj = document.getElementById(elemid);
if (!selectobj) {
- console.log ("****** elemid=%s does not exit in HTML page ****", elemid);
return;
}
diff --git a/htdocs/alsa-hal.html b/htdocs/alsa-hal.html
index f1d5aaf..013c547 100644
--- a/htdocs/alsa-hal.html
+++ b/htdocs/alsa-hal.html
@@ -27,15 +27,15 @@
<br>
<ol>
- <li><button onclick="callbinder(sndcard,'ctl-list')">List Selected HAL Controls </button></li>
- <li><button onclick="callbinder(sndcard,'ctl-get', {label:'Master_Playback_Volume'})">Get {label:'Master_Playback_Volume'}</button></li>
- <li><button onclick="callbinder(sndcard,'ctl-get', [{tag:4},{tag:5}])">Get[{tag:4},{tag:5}]</button></li>
- <li><button onclick="callbinder(sndcard,'ctl-get', [4,5])">Get [4,5]</button></li>
+ <li><button onclick="callbinder(sndcard,'ctllist')">List Selected HAL Controls </button></li>
+ <li><button onclick="callbinder(sndcard,'ctlget', {label:'Master_Playback_Volume'})">Get {label:'Master_Playback_Volume'}</button></li>
+ <li><button onclick="callbinder(sndcard,'ctlget', [{tag:4},{tag:5}])">Get[{tag:4},{tag:5}]</button></li>
+ <li><button onclick="callbinder(sndcard,'ctlget', [4,5])">Get [4,5]</button></li>
<br>
- <li><button onclick="callbinder(sndcard,'ctl-set', {label:'Master_Playback_Volume', val:[50]})">Set {label:'Master_Playback_Volume', value=[50]}</button></li>
- <li><button onclick="callbinder(sndcard,'ctl-set', {tag: 4, val:5})">Set {tag: 4, val:5}</button></li>
- <li><button onclick="callbinder(sndcard,'ctl-set', [{tag:4, val:25},{tag:5, val:25}])">Set[{tag:4, val:25},{tag:5, val:25}]</button></li>
- <li><button onclick="callbinder(sndcard,'ctl-set', [{tag:4, val:[55,45]},{tag:5, val:[45,55]}])">Set[{tag:4, val:[55,45]},{tag:5, val:[45,55]}]]</button></li>
+ <li><button onclick="callbinder(sndcard,'ctlset', {label:'Master_Playback_Volume', val:[50]})">Set {label:'Master_Playback_Volume', value=[50]}</button></li>
+ <li><button onclick="callbinder(sndcard,'ctlset', {tag: 4, val:5})">Set {tag: 4, val:5}</button></li>
+ <li><button onclick="callbinder(sndcard,'ctlset', [{tag:4, val:25},{tag:5, val:25}])">Set[{tag:4, val:25},{tag:5, val:25}]</button></li>
+ <li><button onclick="callbinder(sndcard,'ctlset', [{tag:4, val:[55,45]},{tag:5, val:[45,55]}])">Set[{tag:4, val:[55,45]},{tag:5, val:[45,55]}]]</button></li>
<br>
<li>
diff --git a/htdocs/audio-control.html b/htdocs/audio-control.html
index d51ae55..6b7872f 100644
--- a/htdocs/audio-control.html
+++ b/htdocs/audio-control.html
@@ -5,14 +5,15 @@
<script type="text/javascript" src="AFB-websock.js"></script>
<script type="text/javascript" src="AudioBinding.js"></script>
</head>
-
-
+
<body onload="init('hal_registry','alsacore', 'hallist')">
- <h1>Simple Audio Control test</h1>
- <button id="connected" onclick="init('alsa_registry','alsacore', 'getinfo');">Binder WS Fail</button>
+ <h1>Simple Audio Control Test</h1>
+ <button id="connected" onclick="init('hal_registry','alsacore', 'hallist')">Binder WS Fail</button>
<br><br>
-
+ <b>Selected HAL </b>
+ <select id='hal_registry'></select>
+
<b>API Verbosity </b>
<select id='api_verbosity' onclick='mode=this.value'>
<option value='0'>Quiet</option>
@@ -21,18 +22,18 @@
<option value='3'>Full</option>
</select>
<br>
-
<br>
+
<ol>
- <li><button onclick="callbinder('control','navigation' ,{'var': 'nav'});">Select Navigation</button></li>
- <li><button onclick="callbinder('control','multimedia' ,{'xxx': 'multi'});">Select Mutimedia</button></li>
- <li><button onclick="callbinder('control','emergency' ,{'yyy': 'emerg'});">Select Emergency</button></li>
+ <li><button onclick="callbinder('control','dispatch' ,{'target':'navigation','args':{'apihal':sndcard}});">Dispatch Navigation</button></li>
+ <li><button onclick="callbinder('control','dispatch' ,{'target':'multimedia','args':{'apihal':sndcard}});">Dispatch Mutimedia</button></li>
+ <li><button onclick="callbinder('control','dispatch' ,{'target':'emergency' });">Dispatch Emergency</button></li>
<br>
<li><button onclick="callbinder('control','lua_dostring','print(\'Bonjours\'); return true, 1234');">LUA string</button></li>
- <li><button onclick="callbinder('control','lua_docall' , {'func':'Simple_Echo_Args', 'args':{speed:20}});">LUA function</button></li>
+ <li><button onclick="callbinder('control','lua_docall' , {'func':'_Simple_Echo_Args', 'args':{speed:20}});">LUA function</button></li>
<li><button onclick="callbinder('control','lua_doscript', {'script':'helloworld.lua', args:{'arg1':'abcd', 'next':7890, 'last':[1,2,3,4]}});">LUA script</button></li>
- <li><button onclick="callbinder('control','lua_docall' , {'func':'Simple_Timer_Test', args:{label:'MyTimer', 'delay':3000, 'count':10}});">LUA Timer</button></li>
+ <li><button onclick="callbinder('control','lua_docall' , {'func':'_Simple_Timer_Test', args:{label:'MyTimer', 'delay':3000, 'count':10}});">LUA Timer</button></li>
</ol>
diff --git a/nbproject/configurations.xml b/nbproject/configurations.xml
index a5d9f8e..235c3b0 100644
--- a/nbproject/configurations.xml
+++ b/nbproject/configurations.xml
@@ -43,7 +43,7 @@
<df name="Common">
<in>AudioCommonLib.c</in>
</df>
- <df name="Controler-afb">
+ <df name="Controller-afb">
<in>ctl-binding.c</in>
<in>ctl-dispatch.c</in>
<in>ctl-lua.c</in>
@@ -234,7 +234,7 @@
<cTool flags="1">
</cTool>
</item>
- <item path="Controler-afb/ctl-binding.c" ex="false" tool="0" flavor2="3">
+ <item path="Controller-afb/ctl-binding.c" ex="false" tool="0" flavor2="3">
<cTool flags="0">
<incDir>
<pElem>../../../opt/include</pElem>
@@ -243,15 +243,15 @@
<pElem>/usr/include/json-c</pElem>
<pElem>/usr/include/lua5.3</pElem>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
</incDir>
<preprocessorList>
- <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controler/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
<Elem>CONTROL_CONFIG_POST="control"</Elem>
<Elem>CONTROL_CONFIG_PRE="onload"</Elem>
<Elem>CONTROL_DOSCRIPT_PRE="doscript"</Elem>
<Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
- <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controler/ctl-lua.d"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
<Elem>CONTROL_MAXPATH_LEN=255</Elem>
<Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
<Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
@@ -265,79 +265,60 @@
</preprocessorList>
</cTool>
</item>
- <item path="Controler-afb/ctl-dispatch.c" ex="false" tool="0" flavor2="3">
+ <item path="Controller-afb/ctl-dispatch.c" ex="false" tool="0" flavor2="3">
<cTool flags="2">
<incDir>
<pElem>../../../opt/include/afb</pElem>
- <pElem>Controler-afb</pElem>
+ <pElem>Controller-afb</pElem>
<pElem>/usr/include/json-c</pElem>
<pElem>/usr/include/lua5.3</pElem>
<pElem>Audio-Common</pElem>
<pElem>../../../opt/include</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
</incDir>
</cTool>
</item>
- <item path="Controler-afb/ctl-lua.c" ex="false" tool="0" flavor2="3">
- <cTool flags="0">
+ <item path="Controller-afb/ctl-lua.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="2">
<incDir>
- <pElem>../../../opt/include</pElem>
- <pElem>../../../opt/include/alsa</pElem>
- <pElem>/usr/include/p11-kit-1</pElem>
+ <pElem>../../../opt/include/afb</pElem>
+ <pElem>Controller-afb</pElem>
<pElem>/usr/include/json-c</pElem>
<pElem>/usr/include/lua5.3</pElem>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>../../../opt/include</pElem>
+ <pElem>build/Controller-afb</pElem>
</incDir>
- <preprocessorList>
- <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controler/config.d"</Elem>
- <Elem>CONTROL_CONFIG_POST="control"</Elem>
- <Elem>CONTROL_CONFIG_PRE="onload"</Elem>
- <Elem>CONTROL_DOSCRIPT_PRE="doscript"</Elem>
- <Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
- <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controler/ctl-lua.d"</Elem>
- <Elem>CONTROL_MAXPATH_LEN=255</Elem>
- <Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
- <Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
- <Elem>CONTROL_SUPPORT_LUA</Elem>
- <Elem>CTL_PLUGIN_MAGIC=2468013579</Elem>
- <Elem>MAX_LINEAR_DB_SCALE=24</Elem>
- <Elem>MAX_SND_CARD=16</Elem>
- <Elem>NATIVE_LINUX</Elem>
- <Elem>TLV_BYTE_SIZE=256</Elem>
- <Elem>control_afb_EXPORTS</Elem>
- </preprocessorList>
</cTool>
</item>
- <item path="Controler-afb/ctl-misc.c" ex="false" tool="0" flavor2="3">
+ <item path="Controller-afb/ctl-misc.c" ex="false" tool="0" flavor2="3">
<cTool flags="2">
<incDir>
<pElem>../../../opt/include/afb</pElem>
- <pElem>Controler-afb</pElem>
+ <pElem>Controller-afb</pElem>
<pElem>/usr/include/json-c</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
</incDir>
</cTool>
</item>
- <item path="Controler-afb/ctl-plugin-sample.c" ex="false" tool="0" flavor2="3">
+ <item path="Controller-afb/ctl-plugin-sample.c" ex="false" tool="0" flavor2="3">
<cTool flags="2">
<incDir>
<pElem>../../../opt/include/afb</pElem>
- <pElem>Controler-afb</pElem>
+ <pElem>Controller-afb</pElem>
<pElem>/usr/include/json-c</pElem>
<pElem>/usr/include/lua5.3</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
</incDir>
</cTool>
</item>
- <item path="Controler-afb/ctl-timer.c" ex="false" tool="0" flavor2="3">
+ <item path="Controller-afb/ctl-timer.c" ex="false" tool="0" flavor2="3">
<cTool flags="2">
<incDir>
<pElem>../../../opt/include/afb</pElem>
- <pElem>Controler-afb</pElem>
- <pElem>/usr/include/json-c</pElem>
+ <pElem>Controller-afb</pElem>
<pElem>../../../opt/include</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
</incDir>
</cTool>
</item>
@@ -462,12 +443,12 @@
<pElem>build/Alsa-Plugin/Alsa-Policy-Hook</pElem>
</incDir>
<preprocessorList>
- <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controler/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
<Elem>CONTROL_CONFIG_POST="control"</Elem>
<Elem>CONTROL_CONFIG_PRE="onload"</Elem>
<Elem>CONTROL_DOSCRIPT_PRE="doscript"</Elem>
<Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
- <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controler/ctl-lua.d"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
<Elem>CONTROL_MAXPATH_LEN=255</Elem>
<Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
<Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
@@ -499,7 +480,7 @@
<pElem>/usr/include/json-c</pElem>
<pElem>/usr/include/lua5.3</pElem>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
<pElem>build/HAL-afb/HAL-plugin</pElem>
<pElem>/usr/include/alsa</pElem>
<pElem>build/Common</pElem>
@@ -507,11 +488,11 @@
<preprocessorList>
<Elem>CONTROL_CDEV_RX="/dev/inic-usb-crx"</Elem>
<Elem>CONTROL_CDEV_TX="/dev/inic-usb-ctx"</Elem>
- <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controler/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
<Elem>CONTROL_CONFIG_POST="control"</Elem>
<Elem>CONTROL_CONFIG_PRE="onload"</Elem>
<Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
- <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controler/ctl-lua.d"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
<Elem>CONTROL_MAXPATH_LEN=255</Elem>
<Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
<Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
@@ -534,11 +515,11 @@
<pElem>/usr/include/lua5.3</pElem>
</incDir>
<preprocessorList>
- <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controler/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
<Elem>CONTROL_CONFIG_POST="control"</Elem>
<Elem>CONTROL_CONFIG_PRE="onload"</Elem>
<Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
- <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controler/ctl-lua.d"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
<Elem>CONTROL_MAXPATH_LEN=255</Elem>
<Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
<Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
@@ -561,7 +542,7 @@
<cTool>
<incDir>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
<pElem>build/HAL-afb/HAL-plugin</pElem>
<pElem>../../../opt/include/afb</pElem>
<pElem>HAL-afb/HAL-plugin</pElem>
@@ -611,7 +592,7 @@
<cTool>
<incDir>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
<pElem>build/HAL-afb/HAL-plugin</pElem>
<pElem>../../../opt/include/afb</pElem>
<pElem>HAL-afb/Unicens-USB</pElem>
@@ -633,7 +614,7 @@
<pElem>/usr/include/json-c</pElem>
<pElem>/usr/include/lua5.3</pElem>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
<pElem>build/HAL-afb/HAL-plugin</pElem>
<pElem>../../../opt/include/afb</pElem>
<pElem>HighLevel-afb</pElem>
@@ -641,11 +622,11 @@
<pElem>build/HighLevel-afb</pElem>
</incDir>
<preprocessorList>
- <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controler/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
<Elem>CONTROL_CONFIG_POST="control"</Elem>
<Elem>CONTROL_CONFIG_PRE="onload"</Elem>
<Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
- <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controler/ctl-lua.d"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
<Elem>CONTROL_MAXPATH_LEN=255</Elem>
<Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
<Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
@@ -667,15 +648,15 @@
<pElem>/usr/include/json-c</pElem>
<pElem>/usr/include/lua5.3</pElem>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
<pElem>build/HAL-afb/HAL-plugin</pElem>
</incDir>
<preprocessorList>
- <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controler/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
<Elem>CONTROL_CONFIG_POST="control"</Elem>
<Elem>CONTROL_CONFIG_PRE="onload"</Elem>
<Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
- <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controler/ctl-lua.d"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
<Elem>CONTROL_MAXPATH_LEN=255</Elem>
<Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
<Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
@@ -1058,7 +1039,8 @@
</toolsSet>
<flagsDictionary>
<element flagsID="0" commonFlags="-g -fPIC -fPIC"/>
- <element flagsID="1"
+ <element flagsID="1" commonFlags="-mtune=generic -march=x86-64 -g -fPIC"/>
+ <element flagsID="2"
commonFlags="-mtune=generic -march=x86-64 -g -ggdb -g -ggdb -fPIC"/>
</flagsDictionary>
<codeAssistance>
@@ -1105,16 +1087,16 @@
<incDir>
<pElem>../../../opt/include/alsa</pElem>
<pElem>/usr/include/json-c</pElem>
- <pElem>Shared-Interface</pElem>
+ <pElem>Audio-Common</pElem>
<pElem>../../../opt/include</pElem>
- <pElem>build/ALSA-afb</pElem>
+ <pElem>build/Alsa-afb</pElem>
</incDir>
</cTool>
</item>
<item path="Alsa-afb/Alsa-ApiHat.c" ex="false" tool="0" flavor2="3">
<cTool flags="1">
<incDir>
- <pElem>build/ALSA-afb</pElem>
+ <pElem>build/Alsa-afb</pElem>
</incDir>
</cTool>
</item>
@@ -1123,9 +1105,9 @@
<incDir>
<pElem>../../../opt/include/alsa</pElem>
<pElem>/usr/include/json-c</pElem>
- <pElem>Shared-Interface</pElem>
+ <pElem>Audio-Common</pElem>
<pElem>../../../opt/include</pElem>
- <pElem>build/ALSA-afb</pElem>
+ <pElem>build/Alsa-afb</pElem>
</incDir>
</cTool>
</item>
@@ -1134,9 +1116,9 @@
<incDir>
<pElem>../../../opt/include/alsa</pElem>
<pElem>/usr/include/json-c</pElem>
- <pElem>Shared-Interface</pElem>
+ <pElem>Audio-Common</pElem>
<pElem>../../../opt/include</pElem>
- <pElem>build/ALSA-afb</pElem>
+ <pElem>build/Alsa-afb</pElem>
</incDir>
</cTool>
</item>
@@ -1145,28 +1127,76 @@
<incDir>
<pElem>../../../opt/include/alsa</pElem>
<pElem>/usr/include/json-c</pElem>
- <pElem>Shared-Interface</pElem>
+ <pElem>Audio-Common</pElem>
<pElem>../../../opt/include</pElem>
- <pElem>build/ALSA-afb</pElem>
+ <pElem>build/Alsa-afb</pElem>
</incDir>
</cTool>
</item>
<item path="Audio-Common/audio-common.c" ex="false" tool="0" flavor2="3">
<cTool flags="1">
+ <incDir>
+ <pElem>../../../opt/include/afb</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>build/Audio-Common</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="Audio-Common/filescan-utils.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="1">
+ <incDir>
+ <pElem>../../../opt/include/afb</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>build/Audio-Common</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="Audio-Common/wrap-json.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="1">
+ <incDir>
+ <pElem>Audio-Common</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>build/Audio-Common</pElem>
+ </incDir>
</cTool>
</item>
<item path="Common/AudioCommonLib.c" ex="false" tool="0" flavor2="2">
</item>
- <item path="Controler-afb/ctl-binding.c" ex="false" tool="0" flavor2="0">
+ <item path="Controller-afb/ctl-binding.c" ex="false" tool="0" flavor2="3">
<cTool flags="0">
+ <preprocessorList>
+ <Elem>control_afb_EXPORTS</Elem>
+ </preprocessorList>
</cTool>
</item>
- <item path="Controler-afb/ctl-lua.c" ex="false" tool="0" flavor2="0">
+ <item path="Controller-afb/ctl-dispatch.c" ex="false" tool="0" flavor2="3">
<cTool flags="0">
+ <preprocessorList>
+ <Elem>control_afb_EXPORTS</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="Controller-afb/ctl-lua.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="0">
+ <preprocessorList>
+ <Elem>control_afb_EXPORTS</Elem>
+ </preprocessorList>
</cTool>
</item>
- <item path="Controler-afb/ctl-timer.c" ex="false" tool="0" flavor2="0">
+ <item path="Controller-afb/ctl-plugin-sample.c" ex="false" tool="0" flavor2="3">
<cTool flags="0">
+ <preprocessorList>
+ <Elem>audio_plugin_sample_EXPORTS</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="Controller-afb/ctl-timer.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="0">
+ <preprocessorList>
+ <Elem>control_afb_EXPORTS</Elem>
+ </preprocessorList>
</cTool>
</item>
<item path="HAL-afb/HAL-interface/hal-interface.c"
@@ -1175,7 +1205,7 @@
flavor2="3">
<cTool flags="1">
<incDir>
- <pElem>Shared-Interface</pElem>
+ <pElem>Audio-Common</pElem>
<pElem>../../../opt/include</pElem>
<pElem>build/HAL-afb/HAL-interface</pElem>
</incDir>
@@ -1187,7 +1217,7 @@
flavor2="3">
<cTool flags="1">
<incDir>
- <pElem>Shared-Interface</pElem>
+ <pElem>Audio-Common</pElem>
<pElem>build/HAL-afb/HAL-interface</pElem>
</incDir>
</cTool>
@@ -1220,7 +1250,7 @@
</cTool>
</item>
<item path="HAL-afb/Unicens-USB/UnicensHAL.c" ex="false" tool="0" flavor2="3">
- <cTool flags="1">
+ <cTool flags="2">
<incDir>
<pElem>Shared-Interface</pElem>
<pElem>HAL-afb/HAL-interface</pElem>
@@ -1230,7 +1260,7 @@
</cTool>
</item>
<item path="HAL-afb/Unicens-USB/UnicensVol.c" ex="false" tool="0" flavor2="3">
- <cTool flags="1">
+ <cTool flags="2">
<incDir>
<pElem>HAL-afb/HAL-interface</pElem>
<pElem>build/HAL-afb/Unicens-USB</pElem>
@@ -1300,15 +1330,16 @@
<pElem>build/Alsa-Plugin/Alsa-Policy-Hook</pElem>
</incDir>
<preprocessorList>
- <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controler/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
<Elem>CONTROL_CONFIG_POST="control"</Elem>
<Elem>CONTROL_CONFIG_PRE="onload"</Elem>
<Elem>CONTROL_DOSCRIPT_PRE="doscript"</Elem>
<Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
- <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controler/ctl-lua.d"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
<Elem>CONTROL_MAXPATH_LEN=255</Elem>
<Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
<Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
+ <Elem>CONTROL_SUPPORT_LUA</Elem>
<Elem>CTL_PLUGIN_MAGIC=2468013579</Elem>
<Elem>MAX_LINEAR_DB_SCALE=24</Elem>
<Elem>MAX_SND_CARD=16</Elem>
@@ -1323,21 +1354,11 @@
<cTool>
<incDir>
<pElem>../../../opt/include/afb</pElem>
- <pElem>ALSA-afb</pElem>
- </incDir>
- </cTool>
- </folder>
- <folder path="0/Audio-Common">
- <cTool>
- <incDir>
- <pElem>../../../opt/include/afb</pElem>
- <pElem>Shared-Interface</pElem>
- <pElem>/usr/include/json-c</pElem>
- <pElem>build/Shared-Interface</pElem>
+ <pElem>Alsa-afb</pElem>
</incDir>
</cTool>
</folder>
- <folder path="0/Controler-afb">
+ <folder path="0/Controller-afb">
<cTool>
<incDir>
<pElem>../../../opt/include</pElem>
@@ -1346,24 +1367,24 @@
<pElem>/usr/include/json-c</pElem>
<pElem>/usr/include/lua5.3</pElem>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
</incDir>
<preprocessorList>
- <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controler/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
<Elem>CONTROL_CONFIG_POST="control"</Elem>
<Elem>CONTROL_CONFIG_PRE="onload"</Elem>
<Elem>CONTROL_DOSCRIPT_PRE="doscript"</Elem>
<Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
- <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controler/ctl-lua.d"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
<Elem>CONTROL_MAXPATH_LEN=255</Elem>
<Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
<Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
+ <Elem>CONTROL_SUPPORT_LUA</Elem>
<Elem>CTL_PLUGIN_MAGIC=2468013579</Elem>
<Elem>MAX_LINEAR_DB_SCALE=24</Elem>
<Elem>MAX_SND_CARD=16</Elem>
<Elem>NATIVE_LINUX</Elem>
<Elem>TLV_BYTE_SIZE=256</Elem>
- <Elem>control_afb_EXPORTS</Elem>
</preprocessorList>
</cTool>
</folder>
@@ -1384,7 +1405,7 @@
<pElem>HAL-afb/HDA-intel</pElem>
<pElem>../../../opt/include/alsa</pElem>
<pElem>/usr/include/json-c</pElem>
- <pElem>Shared-Interface</pElem>
+ <pElem>Audio-Common</pElem>
<pElem>HAL-afb/HAL-interface</pElem>
<pElem>../../../opt/include</pElem>
<pElem>build/HAL-afb/HDA-intel</pElem>
@@ -1395,10 +1416,10 @@
<cTool>
<incDir>
<pElem>HAL-afb/Jabra-Solemate</pElem>
+ <pElem>../../../opt/include/afb</pElem>
<pElem>../../../opt/include/alsa</pElem>
<pElem>/usr/include/json-c</pElem>
- <pElem>../../../opt/include/afb</pElem>
- <pElem>Shared-Interface</pElem>
+ <pElem>Audio-Common</pElem>
<pElem>HAL-afb/HAL-interface</pElem>
<pElem>../../../opt/include</pElem>
<pElem>build/HAL-afb/Jabra-Solemate</pElem>
@@ -1412,7 +1433,7 @@
<pElem>HAL-afb/Scarlett-Focusrite</pElem>
<pElem>../../../opt/include/alsa</pElem>
<pElem>/usr/include/json-c</pElem>
- <pElem>Shared-Interface</pElem>
+ <pElem>Audio-Common</pElem>
<pElem>HAL-afb/HAL-interface</pElem>
<pElem>../../../opt/include</pElem>
<pElem>build/HAL-afb/Scarlett-Focusrite</pElem>
@@ -1462,11 +1483,11 @@
<pElem>/usr/include/lua5.3</pElem>
</incDir>
<preprocessorList>
- <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controler/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
<Elem>CONTROL_CONFIG_POST="control"</Elem>
<Elem>CONTROL_CONFIG_PRE="onload"</Elem>
<Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
- <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controler/ctl-lua.d"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
<Elem>CONTROL_MAXPATH_LEN=255</Elem>
<Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
<Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
@@ -1522,65 +1543,65 @@
<cTool flags="1">
</cTool>
</item>
- <item path="Controler-afb/ctl-binding.c" ex="false" tool="0" flavor2="0">
+ <item path="Controller-afb/ctl-binding.c" ex="false" tool="0" flavor2="0">
<cTool flags="0">
<incDir>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
</incDir>
<preprocessorList>
<Elem>control_afb_EXPORTS</Elem>
</preprocessorList>
</cTool>
</item>
- <item path="Controler-afb/ctl-dispatch.c" ex="false" tool="0" flavor2="2">
+ <item path="Controller-afb/ctl-dispatch.c" ex="false" tool="0" flavor2="2">
<cTool flags="0">
<incDir>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
</incDir>
<preprocessorList>
<Elem>control_afb_EXPORTS</Elem>
</preprocessorList>
</cTool>
</item>
- <item path="Controler-afb/ctl-lua.c" ex="false" tool="0" flavor2="2">
+ <item path="Controller-afb/ctl-lua.c" ex="false" tool="0" flavor2="2">
<cTool flags="0">
<incDir>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
</incDir>
<preprocessorList>
<Elem>control_afb_EXPORTS</Elem>
</preprocessorList>
</cTool>
</item>
- <item path="Controler-afb/ctl-misc.c" ex="false" tool="0" flavor2="2">
+ <item path="Controller-afb/ctl-misc.c" ex="false" tool="0" flavor2="2">
<cTool flags="0">
<incDir>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
</incDir>
<preprocessorList>
<Elem>control_afb_EXPORTS</Elem>
</preprocessorList>
</cTool>
</item>
- <item path="Controler-afb/ctl-plugin-sample.c" ex="false" tool="0" flavor2="2">
+ <item path="Controller-afb/ctl-plugin-sample.c" ex="false" tool="0" flavor2="2">
<cTool flags="0">
<incDir>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
</incDir>
<preprocessorList>
<Elem>audio_plugin_sample_EXPORTS</Elem>
</preprocessorList>
</cTool>
</item>
- <item path="Controler-afb/ctl-timer.c" ex="false" tool="0" flavor2="2">
+ <item path="Controller-afb/ctl-timer.c" ex="false" tool="0" flavor2="2">
<cTool flags="0">
<incDir>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
</incDir>
<preprocessorList>
<Elem>control_afb_EXPORTS</Elem>
@@ -1725,7 +1746,7 @@
<cTool>
<incDir>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
<pElem>build/HAL-afb/HAL-plugin</pElem>
<pElem>/usr/include/alsa</pElem>
<pElem>build/Common</pElem>
@@ -1738,7 +1759,7 @@
</preprocessorList>
</cTool>
</folder>
- <folder path="0/Controler-afb">
+ <folder path="0/Controller-afb">
<cTool>
<preprocessorList>
<Elem>CONTROL_DOSCRIPT_PRE="doscript"</Elem>
@@ -1761,7 +1782,7 @@
<cTool>
<incDir>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
<pElem>build/HAL-afb/HAL-plugin</pElem>
<pElem>../../../opt/include/afb</pElem>
<pElem>HAL-afb/HAL-plugin</pElem>
@@ -1817,7 +1838,7 @@
<cTool>
<incDir>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
<pElem>build/HAL-afb/HAL-plugin</pElem>
<pElem>../../../opt/include/afb</pElem>
<pElem>HAL-afb/Unicens-USB</pElem>
@@ -1834,7 +1855,7 @@
<cTool>
<incDir>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
<pElem>build/HAL-afb/HAL-plugin</pElem>
<pElem>../../../opt/include/afb</pElem>
<pElem>HighLevel-afb</pElem>
@@ -1851,7 +1872,7 @@
<cTool>
<incDir>
<pElem>Audio-Common</pElem>
- <pElem>build/Controler-afb</pElem>
+ <pElem>build/Controller-afb</pElem>
<pElem>build/HAL-afb/HAL-plugin</pElem>
</incDir>
<preprocessorList>
@@ -1861,5 +1882,685 @@
</cTool>
</folder>
</conf>
+ <conf name="Local_Raw_Controller" type="0">
+ <toolsSet>
+ <compilerSet>GNU|GNU</compilerSet>
+ <dependencyChecking>false</dependencyChecking>
+ <rebuildPropChanged>false</rebuildPropChanged>
+ </toolsSet>
+ <flagsDictionary>
+ <element flagsID="0" commonFlags="-g -fPIC -fPIC"/>
+ <element flagsID="1" commonFlags="-g -fPIC -fPIC -g"/>
+ <element flagsID="2" commonFlags="-mtune=generic -march=x86-64 -g -fPIC"/>
+ <element flagsID="3" commonFlags="-mtune=generic -march=x86-64 -g -g -fPIC"/>
+ <element flagsID="4"
+ commonFlags="-mtune=generic -march=x86-64 -g -ggdb -g -ggdb -fPIC"/>
+ </flagsDictionary>
+ <codeAssistance>
+ <includeAdditional>true</includeAdditional>
+ </codeAssistance>
+ <makefileType>
+ <makeTool>
+ <buildCommandWorkingDir>build</buildCommandWorkingDir>
+ <buildCommand>${MAKE} -f Makefile install</buildCommand>
+ <cleanCommand>${MAKE} -f Makefile clean</cleanCommand>
+ <executablePath>build/CMakeFiles/feature_tests.bin</executablePath>
+ <cTool flags="0">
+ </cTool>
+ </makeTool>
+ <preBuild>
+ <preBuildCommandWorkingDir>build</preBuildCommandWorkingDir>
+ <preBuildCommand>cmake ..</preBuildCommand>
+ <preBuildFirst>true</preBuildFirst>
+ </preBuild>
+ </makefileType>
+ <item path="Alsa-Plugin/Alsa-Policy-Hook/PolicyHookCb.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="0">
+ </cTool>
+ </item>
+ <item path="Alsa-afb/Alsa-AddCtl.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../../opt/include/afb</pElem>
+ <pElem>Alsa-afb</pElem>
+ <pElem>../../../opt/include/alsa</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>../../../opt/include</pElem>
+ <pElem>build/Alsa-afb</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="Alsa-afb/Alsa-ApiHat.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="0">
+ <incDir>
+ <pElem>../../../opt/include</pElem>
+ <pElem>../../../opt/include/alsa</pElem>
+ <pElem>/usr/include/p11-kit-1</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>/usr/include/lua5.3</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>build/Alsa-afb</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_POST="control"</Elem>
+ <Elem>CONTROL_CONFIG_PRE="onload"</Elem>
+ <Elem>CONTROL_DOSCRIPT_PRE="doscript"</Elem>
+ <Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
+ <Elem>CONTROL_MAXPATH_LEN=255</Elem>
+ <Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
+ <Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
+ <Elem>CONTROL_SUPPORT_LUA</Elem>
+ <Elem>CTL_PLUGIN_MAGIC=2468013579</Elem>
+ <Elem>MAX_LINEAR_DB_SCALE=24</Elem>
+ <Elem>MAX_SND_CARD=16</Elem>
+ <Elem>NATIVE_LINUX</Elem>
+ <Elem>TLV_BYTE_SIZE=256</Elem>
+ <Elem>alsa_lowlevel_EXPORTS</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="Alsa-afb/Alsa-RegEvt.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../../opt/include/afb</pElem>
+ <pElem>Alsa-afb</pElem>
+ <pElem>../../../opt/include/alsa</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>../../../opt/include</pElem>
+ <pElem>build/Alsa-afb</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="Alsa-afb/Alsa-SetGet.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../../opt/include/afb</pElem>
+ <pElem>Alsa-afb</pElem>
+ <pElem>../../../opt/include/alsa</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>../../../opt/include</pElem>
+ <pElem>build/Alsa-afb</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="Alsa-afb/Alsa-Ucm.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../../opt/include/afb</pElem>
+ <pElem>Alsa-afb</pElem>
+ <pElem>../../../opt/include/alsa</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>../../../opt/include</pElem>
+ <pElem>build/Alsa-afb</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="Audio-Common/audio-common.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../../opt/include/afb</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>build/Audio-Common</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="Audio-Common/filescan-utils.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="0">
+ <incDir>
+ <pElem>../../../opt/include</pElem>
+ <pElem>../../../opt/include/alsa</pElem>
+ <pElem>/usr/include/p11-kit-1</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>/usr/include/lua5.3</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>build/Audio-Common</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_POST="control"</Elem>
+ <Elem>CONTROL_CONFIG_PRE="onload"</Elem>
+ <Elem>CONTROL_DOSCRIPT_PRE="doscript"</Elem>
+ <Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
+ <Elem>CONTROL_MAXPATH_LEN=255</Elem>
+ <Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
+ <Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
+ <Elem>CONTROL_SUPPORT_LUA</Elem>
+ <Elem>CTL_PLUGIN_MAGIC=2468013579</Elem>
+ <Elem>MAX_LINEAR_DB_SCALE=24</Elem>
+ <Elem>MAX_SND_CARD=16</Elem>
+ <Elem>NATIVE_LINUX</Elem>
+ <Elem>TLV_BYTE_SIZE=256</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="Audio-Common/wrap-json.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="2">
+ <incDir>
+ <pElem>Audio-Common</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>build/Audio-Common</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="Common/AudioCommonLib.c" ex="false" tool="0" flavor2="2">
+ <cTool flags="1">
+ </cTool>
+ </item>
+ <item path="Controller-afb/ctl-binding.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="0">
+ <incDir>
+ <pElem>../../../opt/include</pElem>
+ <pElem>../../../opt/include/alsa</pElem>
+ <pElem>/usr/include/p11-kit-1</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>/usr/include/lua5.3</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>build/Controller-afb</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_POST="control"</Elem>
+ <Elem>CONTROL_CONFIG_PRE="onload"</Elem>
+ <Elem>CONTROL_DOSCRIPT_PRE="doscript"</Elem>
+ <Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
+ <Elem>CONTROL_MAXPATH_LEN=255</Elem>
+ <Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
+ <Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
+ <Elem>CONTROL_SUPPORT_LUA</Elem>
+ <Elem>CTL_PLUGIN_MAGIC=2468013579</Elem>
+ <Elem>MAX_LINEAR_DB_SCALE=24</Elem>
+ <Elem>MAX_SND_CARD=16</Elem>
+ <Elem>NATIVE_LINUX</Elem>
+ <Elem>TLV_BYTE_SIZE=256</Elem>
+ <Elem>control_afb_EXPORTS</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="Controller-afb/ctl-dispatch.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="0">
+ <incDir>
+ <pElem>../../../opt/include</pElem>
+ <pElem>../../../opt/include/alsa</pElem>
+ <pElem>/usr/include/p11-kit-1</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>/usr/include/lua5.3</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>build/Controller-afb</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_POST="control"</Elem>
+ <Elem>CONTROL_CONFIG_PRE="onload"</Elem>
+ <Elem>CONTROL_DOSCRIPT_PRE="doscript"</Elem>
+ <Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
+ <Elem>CONTROL_MAXPATH_LEN=255</Elem>
+ <Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
+ <Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
+ <Elem>CONTROL_SUPPORT_LUA</Elem>
+ <Elem>CTL_PLUGIN_MAGIC=2468013579</Elem>
+ <Elem>MAX_LINEAR_DB_SCALE=24</Elem>
+ <Elem>MAX_SND_CARD=16</Elem>
+ <Elem>NATIVE_LINUX</Elem>
+ <Elem>TLV_BYTE_SIZE=256</Elem>
+ <Elem>control_afb_EXPORTS</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="Controller-afb/ctl-lua.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="0">
+ <incDir>
+ <pElem>../../../opt/include</pElem>
+ <pElem>../../../opt/include/alsa</pElem>
+ <pElem>/usr/include/p11-kit-1</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>/usr/include/lua5.3</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>build/Controller-afb</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_POST="control"</Elem>
+ <Elem>CONTROL_CONFIG_PRE="onload"</Elem>
+ <Elem>CONTROL_DOSCRIPT_PRE="doscript"</Elem>
+ <Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
+ <Elem>CONTROL_MAXPATH_LEN=255</Elem>
+ <Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
+ <Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
+ <Elem>CONTROL_SUPPORT_LUA</Elem>
+ <Elem>CTL_PLUGIN_MAGIC=2468013579</Elem>
+ <Elem>MAX_LINEAR_DB_SCALE=24</Elem>
+ <Elem>MAX_SND_CARD=16</Elem>
+ <Elem>NATIVE_LINUX</Elem>
+ <Elem>TLV_BYTE_SIZE=256</Elem>
+ <Elem>control_afb_EXPORTS</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="Controller-afb/ctl-misc.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../../opt/include/afb</pElem>
+ <pElem>Controller-afb</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>build/Controller-afb</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="Controller-afb/ctl-plugin-sample.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="0">
+ <incDir>
+ <pElem>../../../opt/include</pElem>
+ <pElem>../../../opt/include/alsa</pElem>
+ <pElem>/usr/include/p11-kit-1</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>/usr/include/lua5.3</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>build/Controller-afb</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_POST="control"</Elem>
+ <Elem>CONTROL_CONFIG_PRE="onload"</Elem>
+ <Elem>CONTROL_DOSCRIPT_PRE="doscript"</Elem>
+ <Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
+ <Elem>CONTROL_MAXPATH_LEN=255</Elem>
+ <Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
+ <Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
+ <Elem>CONTROL_SUPPORT_LUA</Elem>
+ <Elem>CTL_PLUGIN_MAGIC=2468013579</Elem>
+ <Elem>MAX_LINEAR_DB_SCALE=24</Elem>
+ <Elem>MAX_SND_CARD=16</Elem>
+ <Elem>NATIVE_LINUX</Elem>
+ <Elem>TLV_BYTE_SIZE=256</Elem>
+ <Elem>audio_plugin_sample_EXPORTS</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="Controller-afb/ctl-timer.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="0">
+ <incDir>
+ <pElem>../../../opt/include</pElem>
+ <pElem>../../../opt/include/alsa</pElem>
+ <pElem>/usr/include/p11-kit-1</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>/usr/include/lua5.3</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>build/Controller-afb</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_POST="control"</Elem>
+ <Elem>CONTROL_CONFIG_PRE="onload"</Elem>
+ <Elem>CONTROL_DOSCRIPT_PRE="doscript"</Elem>
+ <Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
+ <Elem>CONTROL_MAXPATH_LEN=255</Elem>
+ <Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
+ <Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
+ <Elem>CONTROL_SUPPORT_LUA</Elem>
+ <Elem>CTL_PLUGIN_MAGIC=2468013579</Elem>
+ <Elem>MAX_LINEAR_DB_SCALE=24</Elem>
+ <Elem>MAX_SND_CARD=16</Elem>
+ <Elem>NATIVE_LINUX</Elem>
+ <Elem>TLV_BYTE_SIZE=256</Elem>
+ <Elem>control_afb_EXPORTS</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="HAL-afb/HAL-interface/hal-interface.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="2">
+ <incDir>
+ <pElem>Audio-Common</pElem>
+ <pElem>build/HAL-afb/HAL-interface</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="HAL-afb/HAL-interface/hal-volramp.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="2">
+ <incDir>
+ <pElem>Audio-Common</pElem>
+ <pElem>build/HAL-afb/HAL-interface</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="HAL-afb/HAL-interface/hal-volume.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="2">
+ <incDir>
+ <pElem>build/HAL-afb/HAL-interface</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="HAL-afb/HAL-plugin/HalPlugPcm.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="HAL-afb/HDA-intel/IntelHdaHAL.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="HAL-afb/Jabra-Solemate/JabraUsbHAL.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="HAL-afb/Scarlett-Focusrite/ScarlettUsbHAL.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="HAL-afb/Unicens-USB/UnicensHAL.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="4">
+ <incDir>
+ <pElem>Shared-Interface</pElem>
+ <pElem>HAL-afb/HAL-interface</pElem>
+ <pElem>build/HAL-afb/Unicens-USB</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="HAL-afb/Unicens-USB/UnicensVol.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="4">
+ <incDir>
+ <pElem>HAL-afb/HAL-interface</pElem>
+ <pElem>build/HAL-afb/Unicens-USB</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="HighLevel-afb/HighLevelApiConf.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="3">
+ </cTool>
+ </item>
+ <item path="HighLevel-afb/HighLevelBinding.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="3">
+ </cTool>
+ </item>
+ <item path="MostVolume/DeviceContainer.cpp" ex="false" tool="1" flavor2="4">
+ </item>
+ <item path="MostVolume/DeviceValue.cpp" ex="false" tool="1" flavor2="4">
+ </item>
+ <item path="MostVolume/Mediator.cpp" ex="false" tool="1" flavor2="4">
+ </item>
+ <item path="MostVolume/external/ConnectionInfo.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ </item>
+ <item path="MostVolume/external/Console.c" ex="false" tool="0" flavor2="2">
+ </item>
+ <item path="MostVolume/external/MacAddr.cpp" ex="false" tool="1" flavor2="4">
+ </item>
+ <item path="MostVolume/external/MostIpc.cpp" ex="false" tool="1" flavor2="4">
+ </item>
+ <item path="MostVolume/external/MostMsg.cpp" ex="false" tool="1" flavor2="4">
+ </item>
+ <item path="MostVolume/external/MostMsgTx.cpp" ex="false" tool="1" flavor2="4">
+ </item>
+ <item path="MostVolume/external/MsgAddr.cpp" ex="false" tool="1" flavor2="4">
+ </item>
+ <item path="MostVolume/external/MsgFilter.cpp" ex="false" tool="1" flavor2="4">
+ </item>
+ <item path="MostVolume/external/Shadow_NetworkMaster.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ </item>
+ <item path="MostVolume/external/Thread.cpp" ex="false" tool="1" flavor2="4">
+ </item>
+ <item path="MostVolume/libmostvolume.cpp" ex="false" tool="1" flavor2="4">
+ </item>
+ <folder path="0/Alsa-Plugin">
+ <cTool>
+ <incDir>
+ <pElem>../../../opt/include</pElem>
+ <pElem>../../../opt/include/alsa</pElem>
+ <pElem>/usr/include/p11-kit-1</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>/usr/include/lua5.3</pElem>
+ <pElem>build/Alsa-Plugin/Alsa-Policy-Hook</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_POST="control"</Elem>
+ <Elem>CONTROL_CONFIG_PRE="onload"</Elem>
+ <Elem>CONTROL_DOSCRIPT_PRE="doscript"</Elem>
+ <Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
+ <Elem>CONTROL_MAXPATH_LEN=255</Elem>
+ <Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
+ <Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
+ <Elem>CONTROL_SUPPORT_LUA</Elem>
+ <Elem>CTL_PLUGIN_MAGIC=2468013579</Elem>
+ <Elem>MAX_LINEAR_DB_SCALE=24</Elem>
+ <Elem>MAX_SND_CARD=16</Elem>
+ <Elem>NATIVE_LINUX</Elem>
+ <Elem>PIC</Elem>
+ <Elem>TLV_BYTE_SIZE=256</Elem>
+ <Elem>policy_hook_cb_EXPORTS</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/Common">
+ <cTool>
+ <incDir>
+ <pElem>../../../opt/include</pElem>
+ <pElem>../../../opt/include/alsa</pElem>
+ <pElem>/usr/include/p11-kit-1</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>/usr/include/lua5.3</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>build/Controller-afb</pElem>
+ <pElem>build/HAL-afb/HAL-plugin</pElem>
+ <pElem>/usr/include/alsa</pElem>
+ <pElem>build/Common</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CONTROL_CDEV_RX="/dev/inic-usb-crx"</Elem>
+ <Elem>CONTROL_CDEV_TX="/dev/inic-usb-ctx"</Elem>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_POST="control"</Elem>
+ <Elem>CONTROL_CONFIG_PRE="onload"</Elem>
+ <Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
+ <Elem>CONTROL_MAXPATH_LEN=255</Elem>
+ <Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
+ <Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
+ <Elem>CTL_PLUGIN_MAGIC=2468013579</Elem>
+ <Elem>MAX_LINEAR_DB_SCALE=24</Elem>
+ <Elem>MAX_SND_CARD=16</Elem>
+ <Elem>TLV_BYTE_SIZE=256</Elem>
+ <Elem>audio_plugin_sample_EXPORTS</Elem>
+ <Elem>control_afb_EXPORTS</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/HAL-afb">
+ <cTool>
+ <incDir>
+ <pElem>../../../opt/include</pElem>
+ <pElem>../../../opt/include/alsa</pElem>
+ <pElem>/usr/include/p11-kit-1</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>/usr/include/lua5.3</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_POST="control"</Elem>
+ <Elem>CONTROL_CONFIG_PRE="onload"</Elem>
+ <Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
+ <Elem>CONTROL_MAXPATH_LEN=255</Elem>
+ <Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
+ <Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
+ <Elem>CTL_PLUGIN_MAGIC=2468013579</Elem>
+ <Elem>MAX_LINEAR_DB_SCALE=24</Elem>
+ <Elem>MAX_SND_CARD=16</Elem>
+ <Elem>TLV_BYTE_SIZE=256</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/HAL-afb/HAL-interface">
+ <cTool>
+ <incDir>
+ <pElem>../../../opt/include/afb</pElem>
+ <pElem>HAL-afb/HAL-interface</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/HAL-afb/HAL-plugin">
+ <cTool>
+ <incDir>
+ <pElem>Audio-Common</pElem>
+ <pElem>build/Controller-afb</pElem>
+ <pElem>build/HAL-afb/HAL-plugin</pElem>
+ <pElem>../../../opt/include/afb</pElem>
+ <pElem>HAL-afb/HAL-plugin</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CONTROL_CDEV_RX="/dev/inic-usb-crx"</Elem>
+ <Elem>CONTROL_CDEV_TX="/dev/inic-usb-ctx"</Elem>
+ <Elem>audio_plugin_sample_EXPORTS</Elem>
+ <Elem>control_afb_EXPORTS</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/HAL-afb/HDA-intel">
+ <cTool>
+ <incDir>
+ <pElem>../../../opt/include/afb</pElem>
+ <pElem>HAL-afb/HDA-intel</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>HAL-afb/HAL-interface</pElem>
+ <pElem>build/HAL-afb/HDA-intel</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/HAL-afb/Jabra-Solemate">
+ <cTool>
+ <incDir>
+ <pElem>HAL-afb/Jabra-Solemate</pElem>
+ <pElem>../../../opt/include/afb</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>HAL-afb/HAL-interface</pElem>
+ <pElem>build/HAL-afb/Jabra-Solemate</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/HAL-afb/Scarlett-Focusrite">
+ <cTool>
+ <incDir>
+ <pElem>../../../opt/include/afb</pElem>
+ <pElem>HAL-afb/Scarlett-Focusrite</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>HAL-afb/HAL-interface</pElem>
+ <pElem>build/HAL-afb/Scarlett-Focusrite</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/HAL-afb/Unicens-USB">
+ <cTool>
+ <incDir>
+ <pElem>Audio-Common</pElem>
+ <pElem>build/Controller-afb</pElem>
+ <pElem>build/HAL-afb/HAL-plugin</pElem>
+ <pElem>../../../opt/include/afb</pElem>
+ <pElem>HAL-afb/Unicens-USB</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CONTROL_CDEV_RX="/dev/inic-usb-crx"</Elem>
+ <Elem>CONTROL_CDEV_TX="/dev/inic-usb-ctx"</Elem>
+ <Elem>audio_plugin_sample_EXPORTS</Elem>
+ <Elem>control_afb_EXPORTS</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/HighLevel-afb">
+ <cTool>
+ <incDir>
+ <pElem>../../../opt/include</pElem>
+ <pElem>../../../opt/include/alsa</pElem>
+ <pElem>/usr/include/p11-kit-1</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>/usr/include/lua5.3</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>build/Controller-afb</pElem>
+ <pElem>build/HAL-afb/HAL-plugin</pElem>
+ <pElem>../../../opt/include/afb</pElem>
+ <pElem>HighLevel-afb</pElem>
+ <pElem>Shared-Interface</pElem>
+ <pElem>build/HighLevel-afb</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_POST="control"</Elem>
+ <Elem>CONTROL_CONFIG_PRE="onload"</Elem>
+ <Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
+ <Elem>CONTROL_MAXPATH_LEN=255</Elem>
+ <Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
+ <Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
+ <Elem>CTL_PLUGIN_MAGIC=2468013579</Elem>
+ <Elem>MAX_LINEAR_DB_SCALE=24</Elem>
+ <Elem>MAX_SND_CARD=16</Elem>
+ <Elem>TLV_BYTE_SIZE=256</Elem>
+ <Elem>audio_plugin_sample_EXPORTS</Elem>
+ <Elem>control_afb_EXPORTS</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/MostVolume">
+ <cTool>
+ <incDir>
+ <pElem>../../../opt/include</pElem>
+ <pElem>../../../opt/include/alsa</pElem>
+ <pElem>/usr/include/p11-kit-1</pElem>
+ <pElem>/usr/include/json-c</pElem>
+ <pElem>/usr/include/lua5.3</pElem>
+ <pElem>Audio-Common</pElem>
+ <pElem>build/Controller-afb</pElem>
+ <pElem>build/HAL-afb/HAL-plugin</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CONTROL_CONFIG_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/config.d:/usr/local/controller/config.d"</Elem>
+ <Elem>CONTROL_CONFIG_POST="control"</Elem>
+ <Elem>CONTROL_CONFIG_PRE="onload"</Elem>
+ <Elem>CONTROL_LUA_EVENT="luaevt"</Elem>
+ <Elem>CONTROL_LUA_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/conf.d/project/lua.d:/usr/local/controller/ctl-lua.d"</Elem>
+ <Elem>CONTROL_MAXPATH_LEN=255</Elem>
+ <Elem>CONTROL_ONLOAD_DEFAULT="onload-default"</Elem>
+ <Elem>CONTROL_PLUGIN_PATH="/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build:/home/fulup/opt/audio-bindings/ctlplug:/usr/lib/afb/ctlplug"</Elem>
+ <Elem>CTL_PLUGIN_MAGIC=2468013579</Elem>
+ <Elem>MAX_LINEAR_DB_SCALE=24</Elem>
+ <Elem>MAX_SND_CARD=16</Elem>
+ <Elem>TLV_BYTE_SIZE=256</Elem>
+ <Elem>audio_plugin_sample_EXPORTS</Elem>
+ <Elem>control_afb_EXPORTS</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ </conf>
</confs>
</configurationDescriptor>
diff --git a/nbproject/project.xml b/nbproject/project.xml
index 7c62c94..db3bdab 100644
--- a/nbproject/project.xml
+++ b/nbproject/project.xml
@@ -29,6 +29,10 @@
<name>LocalHostNoTrace</name>
<type>0</type>
</confElem>
+ <confElem>
+ <name>Local_Raw_Controller</name>
+ <type>0</type>
+ </confElem>
</confList>
<formatting>
<project-formatting-style>false</project-formatting-style>