Fixed bugs about managing mesh networks
authorsaerome.kim <saerome.kim@samsung.com>
Mon, 13 Mar 2017 05:24:20 +0000 (14:24 +0900)
committersaerome.kim <saerome.kim@samsung.com>
Mon, 17 Jul 2017 02:09:10 +0000 (11:09 +0900)
 - added show scanned network list when calling mesh_add_network()
 - added show configuraed network list when calling mesh_select_network or mesh_remove_network
 - mesh_get_joined_mesh_network

Signed-off-by: saerome.kim <saerome.kim@samsung.com>
src/mesh.c
src/mesh_dbus.c
test/main.c
test/mesh_network.c

index cda3cb58f86115c802c7e812b41ff2fc771247d0..187ab758c072b9c77a3195a8b910fea3e35fc978 100644 (file)
@@ -98,8 +98,6 @@ EXPORT_API int mesh_network_new_with(mesh_network_h* network, const char *meshid
        net->data_rate = data_rate;
        *network = (mesh_network_h)net;
 
-       LOGE("KSR");
-
        return MESH_ERROR_NONE;
 }
 
index d578b4386582b4424bcfd7646514676419e61278..d4fd8c3a4e816de365ef3c7eecbd32b95a1ec35b 100644 (file)
@@ -668,10 +668,10 @@ int _mesh_get_joined_mesh_network(mesh_h handle, mesh_network_h* _network)
                                NULL, &error);
        if (variant) {
 
-               int len;
+               //int len;
                char *meshid = NULL;
                char *bssid = NULL;
-               int channel;
+               int channel = -1;
                unsigned int result;
 
                g_variant_get(variant, "(ssiu)", meshid, bssid, &channel, &result);
@@ -680,17 +680,23 @@ int _mesh_get_joined_mesh_network(mesh_h handle, mesh_network_h* _network)
                if (MESH_ITNL_ERR_NONE != result)
                        return (int)result;
 
-               len = strlen(meshid);
-               LOGE("meshid=%s len=%d", meshid, len);
-               memcpy(g_joined_network.meshid, meshid, len > 32 ? 32 : len);
-               len = strlen(bssid);
-               LOGE("bssid=%s len=%d", bssid, len);
-               memcpy(g_joined_network.bssid, bssid, len > 32 ? 32 : len);
+               if (meshid) {
+                       //len = strlen(meshid);
+                       //LOGE("meshid=%s len=%d", meshid, len);
+                       memcpy(g_joined_network.meshid, meshid, MAX_MESHID_LEN);
+               }
+               if (bssid) {
+                       //len = strlen(bssid);
+                       //LOGE("bssid=%s len=%d", bssid, len);
+                       memcpy(g_joined_network.bssid, bssid, MAX_BSSID_LEN);
+               }
                g_joined_network.channel = channel;
                g_joined_network.rssi = -1;
 
                *_network= &g_joined_network;
 
+               LOGE("meshid=%s bssid=%s", meshid, bssid);
+
        } else if (error) {
                LOGE("Failed DBus call [%s]", error->message);
                g_error_free(error);
index 29cfcc59f24cafb017b4f0f9bfcdb5e2e263996a..c9090a7083274bd145af309147c22a4f15e8c18b 100644 (file)
@@ -166,6 +166,11 @@ OUT:
        if (g_hash_saved_net_list)
                g_hash_table_remove_all(g_hash_saved_net_list);
 
+       if (mesh) {
+               mesh_disable(mesh);
+               mesh_deinitialize(mesh);
+       }
+
        g_main_loop_unref(mainloop);
        msg("******* Bye bye *******");
 
index 79846b337006729e9f0de6d5e2a5579a6d98527f..f2fb2521b4e5b91bd78e608442441131b6f0aedc 100644 (file)
@@ -110,6 +110,67 @@ static gboolean _mesh_lookup_by_id(gpointer key, gpointer value, gpointer user_d
        return FALSE;
 }
 
+static int run_show_saved_network(MManager *mm, struct menu_data *menu)
+{
+       int i = 0;
+       char *_meshid = NULL;
+       int _channel = 1;
+
+       GList *values = NULL;
+       GList *iter_list = NULL;
+
+       if (NULL == g_hash_saved_net_list) {
+               return RET_FAILURE;
+       }
+
+       msg("Saved Mesh Network Configuratios : ");
+       values = g_hash_table_get_values(g_hash_saved_net_list);
+       iter_list = values;
+
+       while (iter_list != NULL) {
+               mesh_network_h _net = iter_list->data;
+               mesh_network_get_meshid(_net, &_meshid);
+               mesh_network_get_channel(_net, &_channel);
+               msgb("[%d] meshid=%s channel=%d", ++i, _meshid, _channel);
+               iter_list = g_list_next(iter_list);
+       }
+
+       g_list_free(values);
+
+       return RET_SUCCESS;
+}
+
+static int run_show_scanned_network(MManager *mm, struct menu_data *menu)
+{
+       int i = 0;
+       char *_meshid = NULL;
+       int _channel = 1;
+
+       GList *values = NULL;
+       GList *iter_list = NULL;
+
+       if (NULL == g_hash_scan_net_list) {
+               msgp("There is not any scan result.. do scan first");
+               return RET_FAILURE;
+       }
+
+       msg("Scan Results : ");
+       values = g_hash_table_get_values(g_hash_scan_net_list);
+       iter_list = values;
+
+       while (iter_list != NULL) {
+               mesh_network_h _net = iter_list->data;
+               mesh_network_get_meshid(_net, &_meshid);
+               mesh_network_get_channel(_net, &_channel);
+               msgb("[%d] meshid=%s channel=%d", ++i, _meshid, _channel);
+               iter_list = g_list_next(iter_list);
+       }
+
+       g_list_free(values);
+
+       return RET_SUCCESS;
+}
+
 static int run_mesh_scan(MManager *mm, struct menu_data *menu)
 {
        int ret;
@@ -212,6 +273,9 @@ static int run_mesh_disable(MManager *mm, struct menu_data *menu)
 static int run_get_joined_mesh_network(MManager *mm, struct menu_data *menu)
 {
        int ret;
+       char *_meshid = NULL;
+       char *_bssid = NULL;
+       int _channel = -1;
        mesh_network_h network = NULL;
 
        msg("Get Joined Mesh Network Information");
@@ -222,8 +286,13 @@ static int run_get_joined_mesh_network(MManager *mm, struct menu_data *menu)
                        mesh_error_to_string(ret), ret);
                return RET_FAILURE;
        }
-       mesh_network_destroy(network);
 
+       mesh_network_get_meshid(network, &_meshid);
+       msgp("meshid = %s", _meshid);
+       mesh_network_get_bssid(network, &_bssid);
+       msgp("bssid = %s", _bssid);
+       mesh_network_get_channel(network, &_channel);
+       msgp("channel = %d", _channel);
        return RET_SUCCESS;
 }
 
@@ -397,7 +466,6 @@ static int run_add_new_network(MManager *mm, struct menu_data *menu)
        return RET_SUCCESS;
 }
 
-
 static int run_select_network(MManager *mm, struct menu_data *menu)
 {
        int ret;
@@ -435,26 +503,6 @@ static int run_remove_network(MManager *mm, struct menu_data *menu)
 
        if (strlen(network_idx))
                idx = (unsigned short)strtol(network_idx, NULL, 10);
-#if 0
-       if (g_hash_saved_net_list) {
-
-               char *_meshid = NULL;
-               int _channel;
-
-               GList *values = g_hash_table_get_values(g_hash_saved_net_list);
-               GList *iter_list = values;
-
-               while (iter_list != NULL) {
-                       mesh_network_h _net = iter_list->data;
-                       mesh_network_get_meshid(_net, &_meshid);
-                       mesh_network_get_channel(_net, &_channel);
-                       msgb("meshid=%s channel=%d", _meshid, _channel);
-                       iter_list = g_list_next(iter_list);
-               }
-
-               g_list_free(values);
-       }
-#endif
 
        if (g_hash_saved_net_list) {
                net = g_hash_table_find(g_hash_saved_net_list, _mesh_lookup_by_id, GINT_TO_POINTER(idx));
@@ -551,10 +599,10 @@ struct menu_data menu_mesh_network[] = {
        { "11", "enable softap", NULL, run_enable_softap, NULL },
        { "12", "disable softap", NULL, run_disable_softap, NULL },
        { "13", "Get Saved Mesh Network", NULL, run_get_saved_network, NULL },
-       { "14", "add network", menu_add_network, NULL, NULL },
+       { "14", "add network", menu_add_network, run_show_scanned_network, NULL },
        { "15", "add new network", menu_add_new_network, NULL, NULL },
-       { "16", "select network", menu_select_network, NULL, NULL },
-       { "17", "remove network", menu_remove_network, NULL, NULL },
+       { "16", "select network", menu_select_network, run_show_saved_network, NULL },
+       { "17", "remove network", menu_remove_network, run_show_saved_network, NULL },
        { "18", "get mesh station information", NULL, run_get_station_information, NULL },
        { "19", "get mesh path information", NULL, run_get_mpath_information, NULL },
        { NULL, NULL, },