diff options
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 Binary files differnew file mode 100755 index 0000000..d18064f --- /dev/null +++ b/Controller-afb/a.out 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> |