#define AGENT_ENABLER_OBJ_PATH "/net/d2ds/enabler"
#define AGENT_ENABLER_INTERFACE "net.d2ds.enabler"
+#define NOTUSED(var) (var = var)
+
#define AGENT_DBUS_PROXY_TIMEOUT ((9.5 + 2) * 1000) /**< default timeout for GDBus */
struct agent_s {
};
struct agent_s agent;
+int get_ownerid(char* deviceid)
+{
+ GVariant *variant = NULL;
+ int result = FN_ERROR_NONE;
+ GError *error = NULL;
+
+ if (NULL == agent.dbus_connection || NULL == agent.gproxy_agent_service) {
+ LOG_ERR("I/O error");
+ return FN_ERROR_IO_ERROR;
+ }
+
+ variant = g_dbus_proxy_call_sync(agent.gproxy_agent_service, "get_ownerid",
+ NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
+ if (variant) {
+ g_variant_get(variant, "(si)", deviceid, &result);
+ LOGD("get_ownerid status 0x%x", result);
+ } else if (error) {
+ LOGE("Failed DBus call [%s]", error->message);
+ g_error_free(error);
+ return FN_ERROR_IO_ERROR;
+ }
+
+ return result;
+}
+
+int find_mot_enable_devices()
+{
+ GVariant *variant = NULL;
+ int result = FN_ERROR_NONE;
+ GError *error = NULL;
+
+ if (NULL == agent.dbus_connection || NULL == agent.gproxy_agent_service) {
+ LOG_ERR("I/O error");
+ return FN_ERROR_IO_ERROR;
+ }
+
+ variant = g_dbus_proxy_call_sync(agent.gproxy_agent_service, "disc_mot_enb_devs",
+ NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
+ if (variant) {
+ g_variant_get(variant, "(i)", &result);
+ LOGD("disc_mot_enb_devs status 0x%x", result);
+ } else if (error) {
+ LOGE("Failed DBus call [%s]", error->message);
+ g_error_free(error);
+ return FN_ERROR_IO_ERROR;
+ }
+
+ return result;
+}
+
+int find_mowned_devices()
+{
+ GVariant *variant = NULL;
+ int result = FN_ERROR_NONE;
+ GError *error = NULL;
+
+ if (NULL == agent.dbus_connection || NULL == agent.gproxy_agent_service) {
+ LOG_ERR("I/O error");
+ return FN_ERROR_IO_ERROR;
+ }
+
+ variant = g_dbus_proxy_call_sync(agent.gproxy_agent_service, "disc_mowned_devs",
+ NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
+ if (variant) {
+ g_variant_get(variant, "(i)", &result);
+ LOGD("disc_mowned_devs status 0x%x", result);
+ } else if (error) {
+ LOGE("Failed DBus call [%s]", error->message);
+ g_error_free(error);
+ return FN_ERROR_IO_ERROR;
+ }
+
+ return result;
+}
+
+int mot_device(char* uuid_str, char *pin)
+{
+ GVariant *variant = NULL;
+ int result = FN_ERROR_NONE;
+ GError *error = NULL;
+
+ if (NULL == agent.dbus_connection || NULL == agent.gproxy_agent_service) {
+ LOG_ERR("I/O error");
+ return FN_ERROR_IO_ERROR;
+ }
+
+ variant = g_dbus_proxy_call_sync(agent.gproxy_agent_service, "mot",
+ g_variant_new("(ss)", uuid_str, pin), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
+ if (variant) {
+ g_variant_get(variant, "(i)", &result);
+ LOGD("mot status 0x%x", result);
+ } else if (error) {
+ LOGE("Failed DBus call [%s]", error->message);
+ g_error_free(error);
+ return FN_ERROR_IO_ERROR;
+ }
+
+ return result;
+}
+
+int remove_mot_device(char* uuid_str)
+{
+ GVariant *variant = NULL;
+ int result = FN_ERROR_NONE;
+ GError *error = NULL;
+
+ if (NULL == agent.dbus_connection || NULL == agent.gproxy_agent_service) {
+ LOG_ERR("I/O error");
+ return FN_ERROR_IO_ERROR;
+ }
+
+ variant = g_dbus_proxy_call_sync(agent.gproxy_agent_service, "remove_mo",
+ g_variant_new("(s)", uuid_str), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
+ if (variant) {
+ g_variant_get(variant, "(i)", &result);
+ LOGD("remove_mo status 0x%x", result);
+ } else if (error) {
+ LOGE("Failed DBus call [%s]", error->message);
+ g_error_free(error);
+ return FN_ERROR_IO_ERROR;
+ }
+
+ return result;
+}
+
int agent_enable()
{
GVariant *variant = NULL;
{
GDBusProxy *proxy = G_DBUS_PROXY(object);
gchar *name_owner = g_dbus_proxy_get_name_owner(proxy);
- struct agent_s* handle = (struct agent_s*)userdata;
+
+ NOTUSED(userdata);
LOG_DEBUG("Name owner notify [%s]", name_owner);
const gchar *sender_name, const gchar *object_path, const gchar *interface_name,
const gchar *signal_name, GVariant *parameters, gpointer userdata)
{
+ int result = FN_ERROR_NONE;
struct agent_s *h = userdata;
if (NULL == h) {
LOG_DEBUG("signal received = %s", signal_name);
if (0 == g_strcmp0(signal_name, "subowner_enabled")) {
- int result = FN_ERROR_NONE;
+ g_variant_get(parameters, "(i)", &result);
+ LOG_DEBUG("Result : %d", result);
+ } else if (0 == g_strcmp0(signal_name, "disc_mot_enb_devs_done")) {
+ GVariantIter *iter = NULL;
+ GVariantIter *iter_row = NULL;
+
+ gchar *key;
+ GVariant *val;
+ gsize len = 0;
+
+ if (NULL == parameters) {
+ LOG_ERR("No MOT enabled devices found");
+ return;
+ }
+ g_variant_get(parameters, "(aa{sv})", &iter);
+ while (g_variant_iter_next(iter, "a{sv}", &iter_row)) {
+ while (g_variant_iter_loop(iter_row, "{sv}", &key, &val)) {
+ if (strcasecmp(key, "deviceId") == 0) {
+ const char *deviceid = g_variant_get_string(val, &len);
+ LOG_DEBUG("deviceId=%s", deviceid);
+ } else if (strcasecmp(key, "adapter") == 0) {
+ int adapter = g_variant_get_uint32(val);
+ LOG_DEBUG("adapter = %d", adapter);
+ } else if (strcasecmp(key, "adapter") == 0) {
+ int flags = g_variant_get_uint32(val);
+ LOG_DEBUG("flags = %d", flags);
+ } else if (strcasecmp(key, "port") == 0) {
+ int port = g_variant_get_uint16(val);
+ LOG_DEBUG("port = %d", port);
+ } else if (strcasecmp(key, "addr") == 0) {
+ const char *addr = g_variant_get_string(val, &len);
+ LOG_DEBUG("addr=%s", addr);
+ } else if (strcasecmp(key, "ifindex") == 0) {
+ int ifindex = g_variant_get_uint32(val);
+ LOG_DEBUG("ifindex = %d", ifindex);
+ } else if (strcasecmp(key, "routeData") == 0) {
+ const char *routeData = g_variant_get_string(val, &len);
+ LOG_DEBUG("routeData=%s", routeData);
+ } else if (strcasecmp(key, "remoteId") == 0) {
+ const char *remoteId = g_variant_get_string(val, &len);
+ LOG_DEBUG("remoteId=%s", remoteId);
+ } else if (strcasecmp(key, "connType") == 0) {
+ int connType = g_variant_get_uint32(val);
+ LOG_DEBUG("connType = %d", connType);
+ } else if (strcasecmp(key, "securePort") == 0) {
+ int securePort = g_variant_get_uint16(val);
+ LOG_DEBUG("securePort = %d", securePort);
+#ifdef WITH_TCP
+ } else if (strcasecmp(key, "tcpPort") == 0) {
+ int tcpPort = g_variant_get_uint16(val);
+ LOG_DEBUG("tcpPort = %d", tcpPort);
+ }
+#endif
+ else if (strcasecmp(key, "secVer") == 0) {
+ const char *secVer = g_variant_get_string(val, &len);
+ LOG_DEBUG("secVer=%s", secVer);
+ } else if (strcasecmp(key, "ifindex") == 0) {
+ int devStatus = g_variant_get_uint32(val);
+ LOG_DEBUG("devStatus = %d", devStatus);
+ }
+ }
+ g_variant_iter_free(iter_row);
+ }
+ g_variant_iter_free(iter);
+
+ } else if (0 == g_strcmp0(signal_name, "disc_mowned_devs_done")) {
+ GVariantIter *iter = NULL;
+ GVariantIter *iter_row = NULL;
+
+ gchar *key;
+ GVariant *val;
+ gsize len = 0;
+
+ if (NULL == parameters) {
+ LOG_ERR("No Multiple Owned devices found");
+ return;
+ }
+ g_variant_get(parameters, "(aa{sv})", &iter);
+ while (g_variant_iter_next(iter, "a{sv}", &iter_row)) {
+ while (g_variant_iter_loop(iter_row, "{sv}", &key, &val)) {
+ if (strcasecmp(key, "deviceId") == 0) {
+ const char *deviceid = g_variant_get_string(val, &len);
+ LOG_DEBUG("deviceId=%s", deviceid);
+ } else if (strcasecmp(key, "adapter") == 0) {
+ int adapter = g_variant_get_uint32(val);
+ LOG_DEBUG("adapter = %d", adapter);
+ } else if (strcasecmp(key, "adapter") == 0) {
+ int flags = g_variant_get_uint32(val);
+ LOG_DEBUG("flags = %d", flags);
+ } else if (strcasecmp(key, "port") == 0) {
+ int port = g_variant_get_uint16(val);
+ LOG_DEBUG("port = %d", port);
+ } else if (strcasecmp(key, "addr") == 0) {
+ const char *addr = g_variant_get_string(val, &len);
+ LOG_DEBUG("addr=%s", addr);
+ } else if (strcasecmp(key, "ifindex") == 0) {
+ int ifindex = g_variant_get_uint32(val);
+ LOG_DEBUG("ifindex = %d", ifindex);
+ } else if (strcasecmp(key, "routeData") == 0) {
+ const char *routeData = g_variant_get_string(val, &len);
+ LOG_DEBUG("routeData=%s", routeData);
+ } else if (strcasecmp(key, "remoteId") == 0) {
+ const char *remoteId = g_variant_get_string(val, &len);
+ LOG_DEBUG("remoteId=%s", remoteId);
+ } else if (strcasecmp(key, "connType") == 0) {
+ int connType = g_variant_get_uint32(val);
+ LOG_DEBUG("connType = %d", connType);
+ } else if (strcasecmp(key, "securePort") == 0) {
+ int securePort = g_variant_get_uint16(val);
+ LOG_DEBUG("securePort = %d", securePort);
+#ifdef WITH_TCP
+ } else if (strcasecmp(key, "tcpPort") == 0) {
+ int tcpPort = g_variant_get_uint16(val);
+ LOG_DEBUG("tcpPort = %d", tcpPort);
+ }
+#endif
+ else if (strcasecmp(key, "secVer") == 0) {
+ const char *secVer = g_variant_get_string(val, &len);
+ LOG_DEBUG("secVer=%s", secVer);
+ } else if (strcasecmp(key, "ifindex") == 0) {
+ int devStatus = g_variant_get_uint32(val);
+ LOG_DEBUG("devStatus = %d", devStatus);
+ }
+ }
+ g_variant_iter_free(iter_row);
+ }
+ g_variant_iter_free(iter);
+
+ } else if (0 == g_strcmp0(signal_name, "mot_done")) {
+ g_variant_get(parameters, "(i)", &result);
+ LOG_DEBUG("Result : %d", result);
+ } else if (0 == g_strcmp0(signal_name, "remove_mo_done")) {
g_variant_get(parameters, "(i)", &result);
LOG_DEBUG("Result : %d", result);
}