summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhyunho <hhstark.kang@samsung.com>2018-04-04 19:14:44 +0900
committerhyunho <hhstark.kang@samsung.com>2018-04-05 13:04:48 +0900
commit08fa3316cc659cf28977eb0477d89d35c6b7434c (patch)
tree6b29bd1f9d2f7f0a90eb12636d042f650c31e060
parent9dfe64cb537298e73a1589151df6e8b33794a129 (diff)
downloadaul-1-08fa3316cc659cf28977eb0477d89d35c6b7434c.tar.gz
aul-1-08fa3316cc659cf28977eb0477d89d35c6b7434c.tar.bz2
aul-1-08fa3316cc659cf28977eb0477d89d35c6b7434c.zip
Add complication launch with extra API
- aul_complication_launch_with_extra_data Change-Id: I2f647e13d5ed1bf3ab72b21e46af9926e0ce12d8 Signed-off-by: hyunho <hhstark.kang@samsung.com>
-rwxr-xr-xinclude/aul_complication.h3
-rwxr-xr-xsrc/aul_complication.c62
2 files changed, 64 insertions, 1 deletions
diff --git a/include/aul_complication.h b/include/aul_complication.h
index ac072fe6..3990b2d5 100755
--- a/include/aul_complication.h
+++ b/include/aul_complication.h
@@ -22,7 +22,8 @@ extern "C" {
#endif
int aul_complication_update_request(const char *appid, const char *provider_appid, uid_t uid);
-
+int aul_complication_launch_with_extra_data(const char *appid,
+ const char *provider_appid, uid_t uid, const char *key, char *value);
#ifdef __cplusplus
}
diff --git a/src/aul_complication.c b/src/aul_complication.c
index 53ca32d4..602e7e86 100755
--- a/src/aul_complication.c
+++ b/src/aul_complication.c
@@ -79,3 +79,65 @@ API int aul_complication_update_request(const char *appid, const char *provider_
return AUL_R_OK;
}
+
+API int aul_complication_launch_with_extra_data(const char *appid,
+ const char *provider_appid, uid_t uid, const char *key, char *value)
+{
+ bundle *b;
+ int r;
+ char buf[MAX_UID_STR_BUFSZ];
+
+ if (!appid || !provider_appid || !key || !value) {
+ _E("Invalid parameter");
+ return AUL_R_EINVAL;
+ }
+
+ b = bundle_create();
+ if (!b) {
+ _E("Out of memory");
+ return AUL_R_ERROR;
+ }
+
+ r = bundle_add(b, AUL_K_CALLER_APPID, appid);
+ if (r != BUNDLE_ERROR_NONE) {
+ _E("Failed to add appid(%s)", appid);
+ bundle_free(b);
+ return AUL_R_ERROR;
+ }
+
+ r = bundle_add(b, AUL_K_APPID, provider_appid);
+ if (r != BUNDLE_ERROR_NONE) {
+ _E("Failed to add provider_appid(%s)", provider_appid);
+ bundle_free(b);
+ return AUL_R_ERROR;
+ }
+
+ snprintf(buf, sizeof(buf), "%d", uid);
+ r = bundle_add(b, AUL_K_TARGET_UID, buf);
+ if (r != BUNDLE_ERROR_NONE) {
+ _E("Failed to add uid(%d)", uid);
+ bundle_free(b);
+ return AUL_R_ERROR;
+ }
+
+ if (key && value) {
+ r = bundle_add(b, key, value);
+ if (r != BUNDLE_ERROR_NONE) {
+ _E("Failed to add key value data (%s)", key);
+ bundle_free(b);
+ return AUL_R_ERROR;
+ }
+ }
+
+ r = aul_sock_send_bundle(AUL_UTIL_PID, getuid(),
+ COMPLICATION_UPDATE_REQUEST, b, AUL_SOCK_QUEUE);
+ if (r < 0) {
+ _E("Failed to send request(%d:%s)",
+ COMPLICATION_UPDATE_REQUEST, appid);
+ bundle_free(b);
+ return r;
+ }
+ bundle_free(b);
+
+ return AUL_R_OK;
+}