tmp = g_variant_dict_lookup_value(dict, "State", G_VARIANT_TYPE_STRING);
if (NULL == tmp) continue;
buf = g_variant_get_string(tmp, &len);
- if (g_strcmp0(buf, "association") != 0 && g_strcmp0(buf, "connected") != 0)
+ MESH_LOGD(" Object: [%s]", obj_path);
+ MESH_LOGD(" State : [%s]", buf);
+
+ /* Skip ignorable state */
+ if (g_strcmp0(buf, "idle") == 0
+ && g_strcmp0(buf, "disconnect") == 0
+ && g_strcmp0(buf, "failure") == 0)
continue;
/* Create an information structure for joined network */
service->joined_network = joined_info;
g_variant_iter_free(property);
+
+ /* If found, stop loop iteration */
+ break;
}
g_variant_iter_free(peer);
}
GVariant *variant = NULL;
GError *error = NULL;
GVariant *var_dict = NULL;
- GVariantDict dict;
+ GVariantBuilder builder;
const gchar* secu = (security == 0) ? "none" : "SAE";
enum nl80211_band band = (channel <= 14) ? NL80211_BAND_2GHZ : NL80211_BAND_5GHZ;
meshd_check_null_ret_error("_gproxy_connman_technology",
_gproxy_connman_technology, MESHD_ERROR_IO_ERROR);
- g_variant_dict_init(&dict, NULL);
- g_variant_dict_insert(&dict, "Name", "s", mesh_id);
- g_variant_dict_insert(&dict, "Frequency", "q", freq);
- g_variant_dict_insert(&dict, "Security", "s", secu);
- var_dict = g_variant_dict_end(&dict);
+ g_variant_builder_init(&builder, G_VARIANT_TYPE("a{sv}"));
+ g_variant_builder_open(&builder, G_VARIANT_TYPE("a{sv}"));
+
+ g_variant_builder_open(&builder, G_VARIANT_TYPE("{sv}"));
+ g_variant_builder_add(&builder, "s", "Name");
+ g_variant_builder_add(&builder, "v", g_variant_new_string(mesh_id));
+ g_variant_builder_close(&builder); /* {sv} */
+
+ g_variant_builder_open(&builder, G_VARIANT_TYPE("{sv}"));
+ g_variant_builder_add(&builder, "s", "Frequency");
+ g_variant_builder_add(&builder, "v", g_variant_new_uint16(freq));
+ g_variant_builder_close(&builder); /* {sv} */
+
+ g_variant_builder_open(&builder, G_VARIANT_TYPE("{sv}"));
+ g_variant_builder_add(&builder, "s", "Security");
+ g_variant_builder_add(&builder, "v", g_variant_new_string(secu));
+ g_variant_builder_close(&builder); /* {sv} */
+
+ g_variant_builder_close(&builder); /* a{sv} */
+
+ var_dict = g_variant_builder_end(&builder);
variant = g_dbus_proxy_call_sync(_gproxy_connman_technology, "MeshCommands",
g_variant_new("(sv)", "MeshCreateNetwork", var_dict),
return TRUE;
}
+static gboolean _meshd_dbus_handle_disconnect_mesh_network(NetMesh *object,
+ GDBusMethodInvocation *invocation,
+ gchar *mesh_id, gint channel, gint security,
+ gpointer user_data)
+{
+ int ret = MESHD_ERROR_NONE;
+ mesh_service *service = (mesh_service *)user_data;
+
+ ret = mesh_request_ipc_disconnect_mesh_network(service, mesh_id, channel, security);
+
+ net_mesh_complete_disconnect_mesh_network(object, invocation, ret);
+
+ return TRUE;
+}
static gboolean _meshd_dbus_handle_forget_mesh_network(NetMesh *object,
GDBusMethodInvocation *invocation,
//ret = mesh_request_forget_saved_mesh_network(&service->saved_mesh_network,
// mesh_id, channel, security);
- ret = mesh_request_ipc_disconnect_mesh_network(service,
+ ret = mesh_request_ipc_remove_mesh_network(service,
mesh_id, channel, security);
net_mesh_complete_forget_mesh_network(object, invocation, ret);
G_CALLBACK(_meshd_dbus_handle_create_mesh_network), service);
g_signal_connect(meshd_dbus_object, "handle-connect-mesh-network",
G_CALLBACK(_meshd_dbus_handle_connect_mesh_network), service);
+ g_signal_connect(meshd_dbus_object, "handle-disconnect-mesh-network",
+ G_CALLBACK(_meshd_dbus_handle_disconnect_mesh_network), service);
g_signal_connect(meshd_dbus_object, "handle-forget-mesh-network",
G_CALLBACK(_meshd_dbus_handle_forget_mesh_network), service);
g_signal_connect(meshd_dbus_object, "handle-set-interfaces",