summaryrefslogtreecommitdiffstats
path: root/src/wgt-json.c
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2018-08-02 18:48:57 +0200
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2018-08-16 13:49:16 +0000
commit6caade489f8bd15dccdde6c69452d920ead2201e (patch)
treefd04aca394c42225aa235a6453c560f2eb6761a6 /src/wgt-json.c
parent8c7132a146aa744f167ea2fc45dcd8d53018ecc0 (diff)
Add the external binding featureflounder_5.99.3flounder/5.99.35.99.3
This commit introduce two new features: <urn:AGL:widget:provided-binding> <param "name"="public-name" "value"="relative-path-to-the-binding"/> <urn:AGL:widget:required-binding> <param "name"="public-name" "value"="extern"> <param "name"="relative-path-to-the-binding" "value"="local"> TODO: manage security by setting correct Smack label to the exported files Bugs-AGL: SPEC-1439 Bugs-AGL: SPEC-1663 Change-Id: I70aad7d523ece7a2ae0058b79708a02ef81144e2 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/wgt-json.c')
-rw-r--r--src/wgt-json.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/wgt-json.c b/src/wgt-json.c
index bb1ba55..f4212d0 100644
--- a/src/wgt-json.c
+++ b/src/wgt-json.c
@@ -387,6 +387,26 @@ static int add_required_api(struct json_object *targets, const struct wgt_desc_f
return add_targeted_params(targets, feat, actions);
}
+/* Treats the feature "provided_binding" */
+static int add_provided_binding(struct json_object *targets, const struct wgt_desc_feature *feat)
+{
+ static struct paramaction actions[] = {
+ { .name = string_sharp_target, .action = NULL, .closure = NULL }, /* TODO: should be an error! */
+ { .name = NULL, .action = add_param_array, .closure = (void*)string_provided_binding }
+ };
+ return add_targeted_params(targets, feat, actions);
+}
+
+/* Treats the feature "required_binding" */
+static int add_required_binding(struct json_object *targets, const struct wgt_desc_feature *feat)
+{
+ static struct paramaction actions[] = {
+ { .name = string_sharp_target, .action = NULL, .closure = NULL }, /* skip #target */
+ { .name = NULL, .action = add_param_array, .closure = (void*)string_required_binding }
+ };
+ return add_targeted_params(targets, feat, actions);
+}
+
/* Treats the feature "required_permission" */
static int add_required_permission(struct json_object *targets, const struct wgt_desc_feature *feat)
{
@@ -460,9 +480,15 @@ static struct json_object *to_json(const struct wgt_desc *desc)
else if (!strcmp(featname, string_provided_api)) {
rc2 = add_provided_api(targets, feat);
}
+ else if (!strcmp(featname, string_provided_binding)) {
+ rc2 = add_provided_binding(targets, feat);
+ }
else if (!strcmp(featname, string_required_api)) {
rc2 = add_required_api(targets, feat);
}
+ else if (!strcmp(featname, string_required_binding)) {
+ rc2 = add_required_binding(targets, feat);
+ }
else if (!strcmp(featname, string_required_permission)) {
rc2 = add_required_permission(targets, feat);
} else {