<option defaultValue="gnu.cpp.compiler.debugging.level.max" id="sbi.gnu.cpp.compiler.option.debugging.level.core.1325773523" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
<option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.2136297964" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
<option id="sbi.gnu.cpp.compiler.option.456295861" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
- <listOptionValue builtIn="false" value="mobile-3.0-device.core_llvm37.armel.core.staticLib"/>
+ <listOptionValue builtIn="false" value="mobile-4.0-device.core_llvm40.armel"/>
</option>
<option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1847717959" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
- <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/SDL2""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/asp/""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/attach-panel""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/nsd/""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/phonenumber-utils""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/privacy-privilege-manager/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/SDL2""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/service-adaptor""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/>
<option defaultValue="gnu.c.debugging.level.max" id="sbi.gnu.c.compiler.option.debugging.level.core.1791860215" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
<option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.1838685288" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
<option id="sbi.gnu.c.compiler.option.38604689" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
- <listOptionValue builtIn="false" value="mobile-3.0-device.core_llvm37.armel.core.staticLib"/>
+ <listOptionValue builtIn="false" value="mobile-4.0-device.core_llvm40.armel"/>
</option>
<option id="sbi.gnu.c.compiler.option.frameworks_inc.core.951430616" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
- <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/SDL2""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/asp/""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/attach-panel""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/nsd/""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/phonenumber-utils""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/privacy-privilege-manager/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/SDL2""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/service-adaptor""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/>
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib}""/>
</option>
</tool>
- <tool command="arm-linux-gnueabi-as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.2077134318" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+ <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.2077134318" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.309089173" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
<tool id="org.tizen.nativecore.tool.fnmapgen.49758331" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
<toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.lib.release.1355058034" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.lib.release">
<targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.67270535" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
<builder buildPath="${workspace_loc:/tizen-service-enabler-lib}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.578292414" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
- <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.1024277500" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+ <tool command="i586-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.1024277500" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
<tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1890593159" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
<option id="gnu.cpp.compiler.option.optimization.level.1721826137" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
<option defaultValue="gnu.cpp.compiler.debugging.level.none" id="sbi.gnu.cpp.compiler.option.debugging.level.core.1675293347" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
<option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.519760806" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
<option id="sbi.gnu.cpp.compiler.option.1016578643" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
- <listOptionValue builtIn="false" value="mobile-3.0-emulator.core_llvm37.i386.core.app"/>
+ <listOptionValue builtIn="false" value="mobile-4.0-emulator.core_llvm40.i386"/>
</option>
<option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1998759441" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
- <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/SDL2""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/asp/""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/attach-panel""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/nsd/""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/phonenumber-utils""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/privacy-privilege-manager/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/SDL2""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/service-adaptor""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/>
<option defaultValue="gnu.c.debugging.level.none" id="sbi.gnu.c.compiler.option.debugging.level.core.844782492" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
<option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.1924273047" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
<option id="sbi.gnu.c.compiler.option.1909906144" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
- <listOptionValue builtIn="false" value="mobile-3.0-emulator.core_llvm37.i386.core.app"/>
+ <listOptionValue builtIn="false" value="mobile-4.0-emulator.core_llvm40.i386"/>
</option>
<option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1163877447" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
- <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/SDL2""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/asp/""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/attach-panel""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/nsd/""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/phonenumber-utils""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/privacy-privilege-manager/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/SDL2""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/service-adaptor""/>
<listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/>
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib}""/>
</option>
</tool>
- <tool command="i386-linux-gnueabi-as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.236641292" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+ <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.236641292" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1387123853" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
<tool id="org.tizen.nativecore.tool.fnmapgen.1596873326" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
<tproject xmlns="http://www.tizen.org/tproject">
<platforms>
<platform>
- <name>mobile-3.0</name>
+ <name>mobile-4.0</name>
</platform>
</platforms>
<package>
--- /dev/null
+#ifndef _STATIC_INTERNAL_H_
+#define _STATIC_INTERNAL_H_
+
+/**
+ * This header file is included to define _EXPORT_.
+ */
+#include <stdbool.h>
+#include <gio/gio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int proxy_send_command(const char *bus_name, const char *bus_obj, const char *bus_if,
+ int cmd_type, GVariant *cmd_param, GVariant **cmd_ret);
+
+
+typedef void (*proxy_cb)(int error, GVariant* ret, void* user_data);
+
+int proxy_send_command_async(const char *bus_name, const char *bus_obj, const char *bus_if,
+ int cmd_type, GVariant *data, proxy_cb user_cb, void *user_data);
+
+
+int dbus_init();
+
+int register_dbus_interface(const char *bus_name, const char *bus_obj, const char *bus_if);
+
+#ifdef __cplusplus
+}
+#endif
+#endif // _STATIC_INTERNAL_H_
+
#endif
// This method is exported from staticlibrary.a
-extern int test_sum(int a, int b);
-typedef void (*hello_cb)(int result, char* echo, void* user_data);
-extern int hello(hello_cb user_cb, void* user_data);
+int test_sum(int a, int b);
+
+int hello(char *hi, char **echo);
+
+typedef void (*bye_cb)(int error, char *echo, void* user_data);
+
+int bye(char* str, bye_cb user_cb, void* user_data);
+
extern int get_name_by_id(int id, char** name);
typedef enum {
--- /dev/null
+#include <dlog.h>
+#include <glib.h>
+#include <gio/gio.h>
+#include <stdlib.h>
+#include "static_internal.h"
+
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+#define LOG_TAG "FMW_LIB"
+#define DEBUG_LOG(fmt, ...) do { \
+ dlog_print(DLOG_INFO, LOG_TAG, "%s : %s(%d) > "fmt, rindex(__FILE__, '/')+1, __FUNCTION__, __LINE__,##__VA_ARGS__);\
+ } while (0)
+
+
+#define DBUS_SERVICE_DBUS "org.freedesktop.DBus"
+#define DBUS_PATH_DBUS "/org/freedesktop/DBus"
+#define DBUS_INTERFACE_DBUS "org.freedesktop.DBus"
+
+static GDBusConnection *__gdbus_conn = NULL;
+
+
+int default_handler(int cmd_type, GVariant *input, GVariant **cmd_ret)
+{
+ char *hi;
+ int err = 0;
+
+ if (!cmd_ret) {
+ return -1; // error code required
+ }
+
+ g_variant_get(input, "s", &hi);
+ DEBUG_LOG("cmd_type[%d], param[%s]", cmd_type, hi);
+
+ char *tmp = g_strdup_printf("you said [%s]", hi);
+ *cmd_ret = g_variant_new("s", tmp);
+
+ return err;
+}
+
+GVariant* stub_send_command(GVariant *parameters)
+{
+ DEBUG_LOG("");
+
+ gint cmd_type;
+ GVariant *val;
+ GVariant *ret = NULL;
+ GVariant *cmd_ret = NULL;
+ int cmd_error = 0;
+
+// sleep(1);
+
+ g_variant_get(parameters, "(iv)", &cmd_type, &val);
+
+ switch (cmd_type) {
+ case 20: {
+ cmd_error = default_handler(cmd_type, val, &cmd_ret);
+ }
+
+ }
+
+ if (cmd_error != 0) {
+ cmd_ret = g_variant_new("s", " ");
+ }
+ ret = g_variant_new("(iv)", cmd_error, cmd_ret );
+
+ return ret;
+}
+
+
+int proxy_send_command(const char *bus_name, const char *bus_obj, const char *bus_if,
+ int cmd_type, GVariant *cmd_param, GVariant **cmd_ret)
+{
+ DEBUG_LOG("2");
+ int ret = 0;
+
+ GError *gerror = NULL;
+ GCancellable *proxy_cancel = g_cancellable_new();
+ DEBUG_LOG("cmd[%d]", cmd_type);
+ GVariant *params = g_variant_new("(iv)", cmd_type, cmd_param);
+
+
+ GVariant *result = g_dbus_connection_call_sync(
+ __gdbus_conn,
+ bus_name,
+ bus_obj,
+ bus_if,
+ "send_command",
+ params,
+ NULL,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ proxy_cancel,
+ &gerror);
+
+ if (!result) {
+ DEBUG_LOG("g_dbus_proxy_call_sync 'send_command' error [%s]",
+ (gerror ? gerror->message : "null"));
+ ret = -1; // error code required
+ goto EXIT;
+ }
+
+ g_variant_get(result, "(iv)", &ret, cmd_ret);
+ DEBUG_LOG("error[%d]", ret);
+
+EXIT:
+ return ret;
+}
+
+
+typedef struct {
+ proxy_cb _cb;
+ void* _data;
+} proxy_data_t;
+
+
+void _proxy_wrapper_cb (GObject *gobj, GAsyncResult *res, gpointer user_data)
+{
+ DEBUG_LOG ("");
+
+ GError *gerror;
+ GVariant *result, *val;
+ int error = 0; // error enum required
+
+ gerror = NULL;
+ result = g_dbus_connection_call_finish (__gdbus_conn, res, &gerror);
+ if (!result) {
+ error = -1; // error enum required
+ val = g_variant_new("()");
+ DEBUG_LOG("g_dbus_connection_call_finish error [%s]",
+ (gerror ? gerror->message : "null"));
+ }
+ else {
+ g_variant_get (result, "(iv)", &error, &val); // error type passing required
+ }
+ proxy_data_t *_wrapper = (proxy_data_t*) user_data;
+ _wrapper->_cb(error, val, _wrapper->_data);
+}
+
+
+int proxy_send_command_async(const char *bus_name, const char *bus_obj, const char *bus_if,
+ int cmd_type, GVariant *data, proxy_cb user_cb, void* user_data)
+{
+ DEBUG_LOG("async begin");
+ int ret = 0;
+
+ GCancellable *proxy_cancel = g_cancellable_new();
+ DEBUG_LOG("cmd[%d]", cmd_type);
+ GVariant *params = g_variant_new("(iv)", cmd_type, data);
+
+ proxy_data_t *_wrapper = (void*) malloc(sizeof(proxy_data_t));
+ if (!_wrapper) {
+ DEBUG_LOG("malloc error");
+ return -1; // error enum required
+ }
+ _wrapper->_cb = user_cb;
+ _wrapper->_data = user_data;
+
+
+ g_dbus_connection_call(
+ __gdbus_conn,
+ bus_name,
+ bus_obj,
+ bus_if,
+ "send_command",
+ params,
+ NULL,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ proxy_cancel,
+ _proxy_wrapper_cb,
+ _wrapper);
+
+
+ return ret;
+}
+
+
+static void __dbus_method_call_handler(GDBusConnection *conn,
+ const gchar *sender, const gchar *object_path,
+ const gchar *iface_name, const gchar *method_name,
+ GVariant *parameters, GDBusMethodInvocation *invocation,
+ gpointer user_data)
+{
+ DEBUG_LOG("method_name: %s", method_name);
+/* gpointer sender_pid = g_hash_table_lookup(__sender_appid_hash, sender);
+ if (sender_pid == NULL) {
+ if (!__check_sender_validation(parameters, sender, conn))
+ goto out;
+ }
+*/
+ GVariant *ret = NULL;
+ if (g_strcmp0(method_name, "send_command") == 0)
+ ret = stub_send_command(parameters);
+
+ g_dbus_method_invocation_return_value(invocation, ret);
+}
+
+
+static const GDBusInterfaceVTable interface_vtable = {
+ __dbus_method_call_handler,
+ NULL,
+ NULL
+};
+
+
+int dbus_init()
+{
+ DEBUG_LOG("");
+ int ret = -1;
+ GError *error = NULL;
+
+ __gdbus_conn = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &error);
+ if (__gdbus_conn == NULL) {
+ if (error != NULL) {
+ DEBUG_LOG("g_bus_get_sync error [%s]", error->message);
+ g_error_free(error);
+ }
+ goto out;
+ }
+
+ ret = 0;
+
+out:
+ if (!__gdbus_conn)
+ g_object_unref(__gdbus_conn);
+
+ return ret;
+
+}
+
+
+int register_dbus_interface(const char *bus_name, const char *bus_obj, const char *bus_if)
+{
+ /* check param */
+ DEBUG_LOG("%s %s %s", bus_name, bus_obj, bus_if);
+ GDBusNodeInfo *introspection_data = NULL;
+ int registration_id = 0;
+
+
+ static gchar introspection_prefix[] =
+ "<node>"
+ " <interface name='";
+
+ static gchar introspection_postfix[] =
+ "'>"
+ " <method name='send_command'>"
+ " <arg type='i' name='cmd' direction='in'/>"
+ " <arg type='v' name='data' direction='in'/>"
+ " <arg type='i' name='error' direction='out'/>"
+ " <arg type='v' name='ret' direction='out'/>"
+ " </method>"
+ " </interface>"
+ "</node>";
+
+ char *introspection_xml = g_strdup_printf("%s%s%s",
+ introspection_prefix, bus_if, introspection_postfix);
+ int owner_id = 0;
+ GError *error = NULL;
+ GVariant *result = NULL;
+
+ DEBUG_LOG("xml[%s]", introspection_xml);
+
+
+ result = g_dbus_connection_call_sync(
+ __gdbus_conn,
+ DBUS_SERVICE_DBUS,
+ DBUS_PATH_DBUS,
+ DBUS_INTERFACE_DBUS,
+ "RequestName",
+ g_variant_new("(su)", bus_name, G_BUS_NAME_OWNER_FLAGS_NONE),
+ G_VARIANT_TYPE("(u)"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
+ if (error) {
+ DEBUG_LOG("RequestName fail : %s", error->message);
+ goto out;
+ }
+ if (result == NULL) {
+ DEBUG_LOG("fail to get name NULL");
+ goto out;
+ }
+ g_variant_get(result, "(u)", &owner_id);
+ if (owner_id == 0) {
+ DEBUG_LOG("Acquiring the own name is failed");
+ goto out;
+ }
+
+ DEBUG_LOG("Acquiring the own name : %d", owner_id);
+
+ introspection_data = g_dbus_node_info_new_for_xml(introspection_xml, NULL);
+ if (!introspection_data) {
+ DEBUG_LOG("g_dbus_node_info_new_for_xml() is failed.");
+ goto out;
+ }
+
+ registration_id = g_dbus_connection_register_object(__gdbus_conn,
+ bus_obj, introspection_data->interfaces[0],
+ &interface_vtable, NULL, NULL, NULL);
+
+ DEBUG_LOG("registration_id %d", registration_id);
+
+ if (registration_id == 0) {
+ DEBUG_LOG("Failed to g_dbus_connection_register_object");
+ goto out;
+ }
+
+out:
+ if (introspection_data)
+ g_dbus_node_info_unref(introspection_data);
+ if (result)
+ g_variant_unref(result);
+
+ return registration_id;
+}
+
+
-#define USE_G_DBUS
-
/**
* This file contains the exported symbol.
*/
#include <glib.h>
#include <sqlite3.h>
-#ifdef USE_G_DBUS
+#include "staticlibrary.h"
+#include "static_internal.h"
#include <gio/gio.h>
-#define SERVICE_ENABLER_NAME "org.example.tizen-service-enabler"
+#define SERVICE_ENABLER_NAME "org.example.TizenServiceEnabler"
#define SERVICE_ENABLER_PATH "/org/example/TizenServiceEnabler"
#define SERVICE_ENABLER_INTERFACE "org.example.TizenServiceEnabler"
-#endif
-
#ifdef LOG_TAG
#undef LOG_TAG
} while (0)
typedef struct {
- hello_cb _cb;
+ bye_cb _cb;
void* _data;
} result_t;
return a+b;
}
-static void
-_wrapper_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
+int
+hello(char *hi, char **echo)
{
- DEBUG_LOG("");
- result_t *_ud = (result_t*) user_data;
- hello_cb func = _ud->_cb;
+ DEBUG_LOG("hello called");
+ int ret = 0;
- int result_param = (result == APP_CONTROL_ERROR_NONE)? 0 : result;
- DEBUG_LOG("result %d", result);
+ dbus_init();
+ int cmd_type = 20;
+ GVariant *param = g_variant_new("s", hi);
+ GVariant *cmd_ret = NULL;
+ ret = proxy_send_command(SERVICE_ENABLER_NAME, SERVICE_ENABLER_PATH, SERVICE_ENABLER_INTERFACE,
+ cmd_type, param, &cmd_ret);
- char *_echo = NULL;
- int ret = app_control_get_extra_data(reply, "echo", &_echo);
- if (ret != APP_CONTROL_ERROR_NONE) {
- DEBUG_LOG("ret %d", ret);
- }
+ g_variant_get(cmd_ret, "s", echo);
- func(result_param, _echo, _ud->_data);
- g_free(_echo);
+ return ret;
}
+typedef struct {
+ bye_cb _cb;
+ void* _data;
+} bye_wrapper_t;
+
+ // proxy_cb type
+void _bye_wrapper_cb(int error, GVariant* ret, void* user_data)
+{
+ bye_wrapper_t *_wrapper = (bye_wrapper_t *) user_data;
+ char *echo = NULL;
+
+ if (error == 0) {
+ g_variant_get(ret, "s", &echo);
+ }
+ _wrapper->_cb(error, echo, _wrapper->_data);
+}
int
-hello(hello_cb user_cb, void* user_data)
+bye(char *str, bye_cb user_cb, void* user_data)
{
DEBUG_LOG("hello called");
int ret = 0;
-#ifdef USE_G_DBUS
-
- GError *gerror = NULL;
- GCancellable *proxy_cancel = g_cancellable_new();
- GDBusProxy* bproxy = g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SESSION,
- G_DBUS_PROXY_FLAGS_NONE,
- NULL,
- SERVICE_ENABLER_NAME,
- SERVICE_ENABLER_PATH,
- SERVICE_ENABLER_INTERFACE,
- proxy_cancel,
- &gerror);
-
- if (!bproxy) {
- DEBUG_LOG("g_dbus_proxy_new_for_bus_sync error [%s]",
- (gerror ? gerror->message : "null"));
- ret = -1;
- goto EXIT;
- }
-
- GVariant *result = g_dbus_proxy_call_sync(bproxy,
- "Hello",
- g_variant_new("(i)", getpid()),
- G_DBUS_CALL_FLAGS_NONE,
- 5000, /* msec, 5s*/
- NULL,
- &gerror);
+ dbus_init();
+ int cmd_type = 30;
+ GVariant *param = g_variant_new("s", str);
-
- if (!result) {
- DEBUG_LOG("g_dbus_proxy_call_sync 'Hello' error [%s]",
- (gerror ? gerror->message : "null"));
- ret = -1;
- goto EXIT;
+ bye_wrapper_t *_wrapper = (bye_wrapper_t *) malloc(sizeof(bye_wrapper_t));
+ if (!_wrapper) {
+ DEBUG_LOG("malloc error");
+ return -1; // error code required
}
+ _wrapper->_cb = user_cb;
+ _wrapper->_data = user_data;
- g_variant_get(result, "(i)", &ret);
-
-EXIT:
- if (bproxy)
- g_object_unref(bproxy);
-
- if (proxy_cancel)
- g_object_unref(proxy_cancel);
-
- if (gerror)
- g_error_free(gerror);
+ proxy_send_command_async(SERVICE_ENABLER_NAME, SERVICE_ENABLER_PATH, SERVICE_ENABLER_INTERFACE,
+ cmd_type, param, _bye_wrapper_cb, (void*) _wrapper);
return ret;
-#else
-
- result_t *_result = (void*) malloc(sizeof(result_t));
- _result->_cb = user_cb;
- _result->_data = user_data;
-
- app_control_h request;
- app_control_create(&request);
- app_control_set_app_id(request, "org.example.tizen-service-enabler");
- app_control_set_operation(request, "http://tizen.org/appcontrol/operation/cloud-service/hi");
-
- ret = app_control_send_launch_request(request, _wrapper_cb, (void*)_result);
- if (ret != APP_CONTROL_ERROR_NONE) {
- DEBUG_LOG("app_control_send_launch_request error %d", ret);
- return ret;
- }
- return ret;
-#endif
-
-
}
-
//access other module's DB
int get_name_by_id(int id, char** name)
{