Support multiple interfaces in test app 09/298509/1
authorJaehyun Kim <jeik01.kim@samsung.com>
Tue, 25 Jul 2023 09:20:04 +0000 (18:20 +0900)
committerJaehyun Kim <jeik01.kim@samsung.com>
Fri, 8 Sep 2023 02:55:09 +0000 (11:55 +0900)
Change-Id: I666bbab6d8534b4318fd03a435231e002d115393
Signed-off-by: Jaehyun Kim <jeik01.kim@samsung.com>
tools/manager-test/wman_test_main.c

index 4fc185f..347057b 100644 (file)
@@ -168,9 +168,19 @@ static void __test_dhcp_changed_callback(wifi_manager_dhcp_state_e state, wifi_m
                                (char *)user_data, state, wman_test_strerror(error_code));
 }
 
-int wman_test_init(void)
+int wman_test_init(const char *ifname)
 {
-       int rv = wifi_manager_initialize(&wifi);
+       int rv;
+
+       if (wifi || wifi2) {
+               printf("Already initialized\n");
+               return -1;
+       }
+
+       if (!ifname)
+               rv = wifi_manager_initialize(&wifi);
+       else
+               rv = wifi_manager_initialize_with_interface_name(&wifi, ifname);
 
        if (rv == WIFI_MANAGER_ERROR_NONE) {
                wifi_manager_set_device_state_changed_cb(wifi, __test_device_state_callback, "1");
@@ -190,7 +200,10 @@ int wman_test_init(void)
                return -1;
        }
 
-       rv = wifi_manager_initialize(&wifi2);
+       if (!ifname)
+               rv = wifi_manager_initialize(&wifi2);
+       else
+               rv = wifi_manager_initialize_with_interface_name(&wifi2, ifname);
 
        if (rv == WIFI_MANAGER_ERROR_NONE) {
                wifi_manager_set_device_state_changed_cb(wifi2, __test_device_state_callback, "2");
@@ -203,6 +216,8 @@ int wman_test_init(void)
                wifi_manager_set_dhcp_state_changed_cb(wifi2, __test_dhcp_changed_callback, "2");
        } else {
                printf("[2] Wifi init failed [%s]\n", wman_test_strerror(rv));
+               wifi_manager_deinitialize(wifi);
+               wifi = NULL;
                return -1;
        }
 
@@ -219,6 +234,8 @@ int  wman_test_deinit(void)
                return -1;
        }
 
+       wifi = NULL;
+
        rv = wifi_manager_deinitialize(wifi2);
 
        if (rv != WIFI_MANAGER_ERROR_NONE) {
@@ -226,10 +243,27 @@ int  wman_test_deinit(void)
                return -1;
        }
 
+       wifi2 = NULL;
+
        printf("Wifi deinit succeeded\n");
        return 1;
 }
 
+int wman_test_init_with_ifname(void)
+{
+       int rv;
+       char ifname[33] = { 0, };
+
+       printf("Input interface name: ");
+       rv = scanf(" %32[^\n]s", ifname);
+       if (rv < 1)
+               return -1;
+
+       rv = wman_test_init(ifname);
+
+       return rv;
+}
+
 gboolean test_thread(GIOChannel *source, GIOCondition condition, gpointer data)
 {
        int rv;
@@ -254,6 +288,7 @@ gboolean test_thread(GIOChannel *source, GIOCondition condition, gpointer data)
                printf("Options..\n");
                printf(LOG_BLUE "[Public APIs]\n" LOG_END);
                printf(LOG_GREEN "1   - Wi-Fi init and set callbacks\n" LOG_END);
+               printf(":   - Wi-Fi init and set callbacks with interface name\n");
                printf("2   - Wi-Fi deinit(unset callbacks automatically)\n");
                printf(LOG_GREEN "3   - Activate Wi-Fi device\n" LOG_END);
                printf("4   - Deactivate Wi-Fi device\n");
@@ -338,7 +373,10 @@ gboolean test_thread(GIOChannel *source, GIOCondition condition, gpointer data)
        switch (a[0]) {
 /* Public API */
        case '1':
-               rv = wman_test_init();
+               rv = wman_test_init(NULL);
+               break;
+       case ':':
+               rv = wman_test_init_with_ifname();
                break;
        case '2':
                rv = wman_test_deinit();