2 * Copyright (c) 2011-2013 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
24 #include "net_connection.h"
26 #include <tizen_error.h>
28 #define LOG_RED "\033[0;31m"
29 #define LOG_GREEN "\033[0;32m"
30 #define LOG_BROWN "\033[0;33m"
31 #define LOG_BLUE "\033[0;34m"
32 #define LOG_END "\033[0;m"
34 #define RETURN_FAIL_DESTROY(x) {connection_profile_destroy(x); return -1; }
36 gboolean test_thread(GIOChannel *source, GIOCondition condition, gpointer data);
38 connection_h connection = NULL;
39 static GSList *state_cb_list = NULL;
42 static bool test_get_user_string(const char *msg, char *buf, int buf_size)
44 if (msg == NULL || buf == NULL || buf_size < 2)
49 memset(buf, 0, buf_size);
50 rv = read(0, buf, buf_size - 1);
52 if (rv < 0 || buf[0] == '\0' || buf[0] == '\n' || buf[0] == '\r') {
61 static bool test_get_user_int(const char *msg, int *num)
63 if (msg == NULL || num == NULL)
69 rv = read(0, buf, 32);
71 if (rv < 0 || *buf == 0 || *buf == '\n' || *buf == '\r')
78 static const char *test_print_state(connection_profile_state_e state)
81 case CONNECTION_PROFILE_STATE_DISCONNECTED:
82 return "Disconnected";
83 case CONNECTION_PROFILE_STATE_ASSOCIATION:
85 case CONNECTION_PROFILE_STATE_CONFIGURATION:
86 return "Configuration";
87 case CONNECTION_PROFILE_STATE_CONNECTED:
94 static const char *test_print_connection_type(connection_type_e type)
97 case CONNECTION_TYPE_DISCONNECTED:
98 return "Disconnected";
99 case CONNECTION_TYPE_WIFI:
101 case CONNECTION_TYPE_CELLULAR:
103 case CONNECTION_TYPE_ETHERNET:
105 case CONNECTION_TYPE_BT:
107 case CONNECTION_TYPE_NET_PROXY:
114 static const char *test_print_cellular_state(connection_cellular_state_e state)
117 case CONNECTION_CELLULAR_STATE_OUT_OF_SERVICE:
118 return "Out of service";
119 case CONNECTION_CELLULAR_STATE_FLIGHT_MODE:
120 return "Flight mode";
121 case CONNECTION_CELLULAR_STATE_ROAMING_OFF:
122 return "Roaming off";
123 case CONNECTION_CELLULAR_STATE_CALL_ONLY_AVAILABLE:
124 return "Call only available";
125 case CONNECTION_CELLULAR_STATE_AVAILABLE:
127 case CONNECTION_CELLULAR_STATE_CONNECTED:
134 static const char *test_print_wifi_state(connection_wifi_state_e state)
137 case CONNECTION_WIFI_STATE_DEACTIVATED:
138 return "Deactivated";
139 case CONNECTION_WIFI_STATE_DISCONNECTED:
140 return "Disconnected";
141 case CONNECTION_WIFI_STATE_CONNECTED:
148 static const char *test_print_cellular_service_type(connection_cellular_service_type_e type)
151 case CONNECTION_CELLULAR_SERVICE_TYPE_UNKNOWN:
153 case CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET:
155 case CONNECTION_CELLULAR_SERVICE_TYPE_MMS:
157 case CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_INTERNET:
158 return "Prepaid internet";
159 case CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_MMS:
160 return "Prepaid MMS";
161 case CONNECTION_CELLULAR_SERVICE_TYPE_TETHERING:
163 case CONNECTION_CELLULAR_SERVICE_TYPE_APPLICATION:
164 return "Application";
170 static const char* test_print_cellular_auth_type(connection_cellular_auth_type_e type)
173 case CONNECTION_CELLULAR_AUTH_TYPE_PAP:
175 case CONNECTION_CELLULAR_AUTH_TYPE_CHAP:
177 case CONNECTION_CELLULAR_AUTH_TYPE_NONE:
183 static const char* test_print_cellular_pdn_type(connection_cellular_pdn_type_e type)
186 case CONNECTION_CELLULAR_PDN_TYPE_IPV4:
188 case CONNECTION_CELLULAR_PDN_TYPE_IPV6:
190 case CONNECTION_CELLULAR_PDN_TYPE_IPV4_IPv6:
192 case CONNECTION_CELLULAR_PDN_TYPE_UNKNOWN:
198 static const char *test_print_error(connection_error_e error)
201 case CONNECTION_ERROR_NONE:
202 return "CONNECTION_ERROR_NONE";
203 case CONNECTION_ERROR_INVALID_PARAMETER:
204 return "CONNECTION_ERROR_INVALID_PARAMETER";
205 case CONNECTION_ERROR_OUT_OF_MEMORY:
206 return "CONNECTION_ERROR_OUT_OF_MEMORY";
207 case CONNECTION_ERROR_INVALID_OPERATION:
208 return "CONNECTION_ERROR_INVALID_OPERATION";
209 case CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED:
210 return "CONNECTION_ERROR_ADDRESS_FAMILY_NOT_SUPPORTED";
211 case CONNECTION_ERROR_OPERATION_FAILED:
212 return "CONNECTION_ERROR_OPERATION_FAILED";
213 case CONNECTION_ERROR_ITERATOR_END:
214 return "CONNECTION_ERROR_ITERATOR_END";
215 case CONNECTION_ERROR_NO_CONNECTION:
216 return "CONNECTION_ERROR_NO_CONNECTION";
217 case CONNECTION_ERROR_NOW_IN_PROGRESS:
218 return "CONNECTION_ERROR_NOW_IN_PROGRESS";
219 case CONNECTION_ERROR_ALREADY_EXISTS:
220 return "CONNECTION_ERROR_ALREADY_EXISTS";
221 case CONNECTION_ERROR_OPERATION_ABORTED:
222 return "CONNECTION_ERROR_OPERATION_ABORTED";
223 case CONNECTION_ERROR_DHCP_FAILED:
224 return "CONNECTION_ERROR_DHCP_FAILED";
225 case CONNECTION_ERROR_INVALID_KEY:
226 return "CONNECTION_ERROR_INVALID_KEY";
227 case CONNECTION_ERROR_NO_REPLY:
228 return "CONNECTION_ERROR_NO_REPLY";
229 case CONNECTION_ERROR_PERMISSION_DENIED:
230 return "CONNECTION_ERROR_PERMISSION_DENIED";
231 case CONNECTION_ERROR_NOT_SUPPORTED:
232 return "CONNECTION_ERROR_NOT_SUPPORTED";
234 return "CONNECTION_ERROR_UNKNOWN";
238 static void test_type_changed_callback(connection_type_e type, void* user_data)
240 printf("Type changed callback, connection type : %d\n", type);
243 static void test_ip_changed_callback(const char* ipv4_address, const char* ipv6_address, void* user_data)
245 printf("IP changed callback, IPv4 address : %s, IPv6 address : %s\n",
246 ipv4_address, (ipv6_address ? ipv6_address : "NULL"));
249 static void test_proxy_changed_callback(const char* ipv4_address, const char* ipv6_address, void* user_data)
251 printf("Proxy changed callback, IPv4 address : %s, IPv6 address : %s\n",
252 ipv4_address, (ipv6_address ? ipv6_address : "NULL"));
255 static void test_profile_state_callback(connection_profile_state_e state, void* user_data)
258 connection_profile_h profile = user_data;
263 if (connection_profile_get_name(profile, &profile_name) != CONNECTION_ERROR_NONE)
266 printf("[%s] : %s\n", test_print_state(state), profile_name);
267 g_free(profile_name);
270 static void test_connection_opened_callback(connection_error_e result, void* user_data)
272 if (result == CONNECTION_ERROR_NONE)
273 printf("Connection open Succeeded\n");
275 printf("Connection open Failed, err : [%s]\n", test_print_error(result));
278 static void test_connection_closed_callback(connection_error_e result, void* user_data)
280 if (result == CONNECTION_ERROR_NONE)
281 printf("Connection close Succeeded\n");
283 printf("Connection close Failed, err : [%s]\n", test_print_error(result));
286 static void test_connection_reset_profile_callback(connection_error_e result, void* user_data)
288 if (result == CONNECTION_ERROR_NONE)
289 printf("Reset profile Succeeded\n");
291 printf("Reset profile Failed, err : [%s]\n", test_print_error(result));
294 static void test_connection_set_default_callback(connection_error_e result, void* user_data)
296 if (result == CONNECTION_ERROR_NONE)
297 printf("Default profile setting Succeeded\n");
299 printf("Default profile setting Failed, err : [%s]\n", test_print_error(result));
302 void test_get_ethernet_cable_state_callback(connection_ethernet_cable_state_e state,
305 if (state == CONNECTION_ETHERNET_CABLE_ATTACHED)
306 printf("Ethernet Cable Connected\n");
307 else if (state == CONNECTION_ETHERNET_CABLE_DETACHED)
308 printf("Ethernet Cable Disconnected\n");
311 static bool test_get_user_selected_profile(connection_profile_h *profile, bool select)
316 connection_profile_type_e profile_type;
317 connection_profile_state_e profile_state;
318 connection_profile_iterator_h profile_iter;
319 connection_profile_h profile_h;
321 connection_profile_h profile_list[100] = {0,};
322 int profile_count = 0;
324 rv = connection_get_profile_iterator(connection, CONNECTION_ITERATOR_TYPE_REGISTERED, &profile_iter);
325 if (rv != CONNECTION_ERROR_NONE) {
326 printf("Fail to get profile iterator [%s]\n", test_print_error(rv));
330 while (connection_profile_iterator_has_next(profile_iter)) {
331 if (connection_profile_iterator_next(profile_iter, &profile_h) != CONNECTION_ERROR_NONE) {
332 printf("Fail to get profile handle\n");
336 if (connection_profile_get_name(profile_h, &profile_name) != CONNECTION_ERROR_NONE) {
337 printf("Fail to get profile name\n");
341 if (connection_profile_get_type(profile_h, &profile_type) != CONNECTION_ERROR_NONE) {
342 printf("Fail to get profile type\n");
343 g_free(profile_name);
347 if (connection_profile_get_state(profile_h, &profile_state) != CONNECTION_ERROR_NONE) {
348 printf("Fail to get profile state\n");
349 g_free(profile_name);
353 printf("%d. state:[%s], profile name:%s", profile_count,
354 test_print_state(profile_state), profile_name);
355 if (profile_type == CONNECTION_PROFILE_TYPE_CELLULAR) {
356 connection_cellular_service_type_e service_type;
357 if (connection_profile_get_cellular_service_type(
358 profile_h, &service_type) !=
359 CONNECTION_ERROR_NONE)
360 printf("Fail to get cellular service type!\n");
363 test_print_cellular_service_type(service_type));
367 profile_list[profile_count] = profile_h;
370 g_free(profile_name);
371 if (profile_count >= 100)
378 if (test_get_user_int("Input profile number(Enter for cancel) :", &input) == false ||
379 input >= profile_count ||
381 printf("Wrong number!!\n");
386 *profile = profile_list[input];
391 static int test_update_cellular_info(connection_profile_h profile)
394 char input_str1[100] = {0,};
395 char input_str2[100] = {0,};
399 if (test_get_user_int("Input Network Type (internet:1, MMS:2, Prepaid internet:3, "
400 "Prepaid MMS:4, Tethering:5, Application:6)"
401 " - (Enter for skip) :", &input_int)) {
404 rv = connection_profile_set_cellular_service_type(profile,
405 CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET);
408 rv = connection_profile_set_cellular_service_type(profile,
409 CONNECTION_CELLULAR_SERVICE_TYPE_MMS);
412 rv = connection_profile_set_cellular_service_type(profile,
413 CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_INTERNET);
416 rv = connection_profile_set_cellular_service_type(profile,
417 CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_MMS);
420 rv = connection_profile_set_cellular_service_type(profile,
421 CONNECTION_CELLULAR_SERVICE_TYPE_TETHERING);
424 rv = connection_profile_set_cellular_service_type(profile,
425 CONNECTION_CELLULAR_SERVICE_TYPE_APPLICATION);
431 if (rv != CONNECTION_ERROR_NONE)
436 if (test_get_user_string("Input Apn - (Enter for skip) :", input_str1, 100)) {
437 g_strstrip(input_str1);
438 rv = connection_profile_set_cellular_apn(profile, input_str1);
439 if (rv != CONNECTION_ERROR_NONE)
443 if (test_get_user_string("Input Proxy - (Enter for skip) :", input_str1, 100)) {
444 g_strstrip(input_str1);
445 rv = connection_profile_set_proxy_address(profile, CONNECTION_ADDRESS_FAMILY_IPV4, input_str1);
446 if (rv != CONNECTION_ERROR_NONE)
450 if (test_get_user_string("Input HomeURL - (Enter for skip) :", input_str1, 100)) {
451 g_strstrip(input_str1);
452 rv = connection_profile_set_cellular_home_url(profile, input_str1);
453 if (rv != CONNECTION_ERROR_NONE)
457 if (test_get_user_int("Input AuthType(0:NONE 1:PAP 2:CHAP) - (Enter for skip) :", &input_int)) {
460 rv = connection_profile_set_cellular_auth_info(profile,
461 CONNECTION_CELLULAR_AUTH_TYPE_NONE, "", "");
462 if (rv != CONNECTION_ERROR_NONE)
467 type_val = CONNECTION_CELLULAR_AUTH_TYPE_PAP;
470 if (input_int == 2) type_val = CONNECTION_CELLULAR_AUTH_TYPE_CHAP;
472 if (test_get_user_string("Input AuthId(Enter for skip) :", input_str1, 100) == false)
474 if (test_get_user_string("Input AuthPwd(Enter for skip) :", input_str2, 100) == false)
477 g_strstrip(input_str1);
478 g_strstrip(input_str2);
479 rv = connection_profile_set_cellular_auth_info(profile, type_val, input_str1, input_str2);
480 if (rv != CONNECTION_ERROR_NONE)
485 if (test_get_user_int("Input PdnType(1:IPv4 2:IPv6 3:IPv4v6) - (Enter for skip) :", &input_int)) {
488 rv = connection_profile_set_cellular_pdn_type(profile, CONNECTION_CELLULAR_PDN_TYPE_IPV4);
491 rv = connection_profile_set_cellular_pdn_type(profile, CONNECTION_CELLULAR_PDN_TYPE_IPV6);
494 rv = connection_profile_set_cellular_pdn_type(profile, CONNECTION_CELLULAR_PDN_TYPE_IPV4_IPv6);
498 if (rv != CONNECTION_ERROR_NONE)
502 if (test_get_user_int("Input RoamPdnType(1:IPv4 2:IPv6 3:IPv4v6) - (Enter for skip) :", &input_int)) {
505 rv = connection_profile_set_cellular_roam_pdn_type(profile, CONNECTION_CELLULAR_PDN_TYPE_IPV4);
508 rv = connection_profile_set_cellular_roam_pdn_type(profile, CONNECTION_CELLULAR_PDN_TYPE_IPV6);
511 rv = connection_profile_set_cellular_roam_pdn_type(profile, CONNECTION_CELLULAR_PDN_TYPE_IPV4_IPv6);
515 if (rv != CONNECTION_ERROR_NONE)
522 static int test_update_wifi_info(connection_profile_h profile)
525 char input_str[100] = {0,};
527 if (test_get_user_string("Input Passphrase - (Enter for skip) :", input_str, 100)) {
528 rv = connection_profile_set_wifi_passphrase(profile, input_str);
529 if (rv != CONNECTION_ERROR_NONE)
536 static int test_update_dns_info(connection_profile_h profile,
537 connection_address_family_e address_family)
540 char input_str[100] = {0,};
541 if (test_get_user_string("Input DNS 1 Address - (Enter for skip) :", input_str, 100)) {
542 rv = connection_profile_set_dns_address(profile,
546 if (rv != CONNECTION_ERROR_NONE)
549 if (test_get_user_string("Input DNS 2 Address - (Enter for skip) :", input_str, 100)) {
550 rv = connection_profile_set_dns_address(profile,
554 if (rv != CONNECTION_ERROR_NONE)
561 static int test_update_ip_info(connection_profile_h profile, connection_address_family_e address_family)
565 char input_str[100] = {0,};
567 if (test_get_user_string("Input IP Address - (Enter for skip) :", input_str, 100)) {
568 rv = connection_profile_set_ip_address(profile,
571 if (rv != CONNECTION_ERROR_NONE)
575 if (test_get_user_string("Input Netmask - (Enter for skip) :", input_str, 100)) {
576 rv = connection_profile_set_subnet_mask(profile,
579 if (rv != CONNECTION_ERROR_NONE)
583 if (test_get_user_int("Input Prefix Length - (Enter for skip) :", &input_int)) {
584 rv = connection_profile_set_prefix_length(profile,
587 if (rv != CONNECTION_ERROR_NONE)
591 if (test_get_user_string("Input Gateway - (Enter for skip) :", input_str, 100)) {
592 rv = connection_profile_set_gateway_address(profile,
595 if (rv != CONNECTION_ERROR_NONE)
599 if (test_update_dns_info(profile, address_family) < 0)
605 static int test_update_proxy_info(connection_profile_h profile, connection_address_family_e address_family)
609 char input_str[100] = {0,};
611 if (test_get_user_int("Input Proxy Type (1:direct, 2:auto, 3:manual)"
612 " - (Enter for skip) :", &input_int)) {
615 rv = connection_profile_set_proxy_type(profile,
616 CONNECTION_PROXY_TYPE_DIRECT);
618 if (rv != CONNECTION_ERROR_NONE)
623 rv = connection_profile_set_proxy_type(profile,
624 CONNECTION_PROXY_TYPE_AUTO);
627 rv = connection_profile_set_proxy_type(profile,
628 CONNECTION_PROXY_TYPE_MANUAL);
634 if (rv != CONNECTION_ERROR_NONE)
637 if (test_get_user_string("Input auto Proxy URL or Proxy address"
638 " - (Enter for skip) :", input_str, 100)) {
639 rv = connection_profile_set_proxy_address(profile,
642 if (rv != CONNECTION_ERROR_NONE)
654 static int test_update_network_info(connection_profile_h profile)
659 int address_family = 0;
661 test_get_user_int("Input Address Family (0:IPv4 1:IPv6) :", &address_family);
663 if (test_get_user_int("Input IPv4/IPv6 Address Type (DHCP:1, Static:2, Auto:3)"
664 " - (Enter for skip) :", &input_int)) {
667 rv = connection_profile_set_ip_config_type(profile,
669 CONNECTION_IP_CONFIG_TYPE_DYNAMIC);
670 if (test_get_user_int("Input DNS Address Type (Static:1, DHCP:2)"
671 " - (Enter for skip) :", &dns_input)) {
673 case CONNECTION_DNS_CONFIG_TYPE_STATIC:
674 rv = connection_profile_set_dns_config_type(
677 CONNECTION_DNS_CONFIG_TYPE_STATIC);
678 if (rv != CONNECTION_ERROR_NONE)
680 if (test_update_dns_info(profile,
681 address_family) == -1)
684 case CONNECTION_DNS_CONFIG_TYPE_DYNAMIC:
685 rv = connection_profile_set_dns_config_type(
688 CONNECTION_DNS_CONFIG_TYPE_DYNAMIC);
689 if (rv != CONNECTION_ERROR_NONE)
696 rv = connection_profile_set_ip_config_type(profile,
698 CONNECTION_IP_CONFIG_TYPE_STATIC);
699 if (rv != CONNECTION_ERROR_NONE)
702 if (test_update_ip_info(profile, address_family) == -1)
705 if (test_update_proxy_info(profile, address_family) == -1)
709 rv = connection_profile_set_ip_config_type(profile,
711 CONNECTION_IP_CONFIG_TYPE_AUTO);
717 if (rv != CONNECTION_ERROR_NONE)
725 static void test_print_cellular_info(connection_profile_h profile)
727 connection_cellular_service_type_e service_type;
728 connection_cellular_pdn_type_e pdn_type;
729 connection_cellular_pdn_type_e roam_pdn_type;
731 connection_cellular_auth_type_e auth_type;
732 char *user_name = NULL;
733 char *password = NULL;
734 char *home_url = NULL;
735 bool roaming = false;
737 bool editable = false;
739 if (connection_profile_get_cellular_service_type(profile, &service_type) != CONNECTION_ERROR_NONE)
740 printf("Fail to get cellular service type!\n");
742 printf("Cellular service type : %s\n", test_print_cellular_service_type(service_type));
744 if (connection_profile_get_cellular_pdn_type(profile, &pdn_type) != CONNECTION_ERROR_NONE)
745 printf("Fail to get cellular pdn type!\n");
747 printf("Cellular pdn type : %s\n", test_print_cellular_pdn_type(pdn_type));
749 if (connection_profile_get_cellular_roam_pdn_type(profile, &roam_pdn_type) != CONNECTION_ERROR_NONE)
750 printf("Fail to get cellular roam pdn type!\n");
752 printf("Cellular roam pdn type : %s\n", test_print_cellular_pdn_type(roam_pdn_type));
754 if (connection_profile_get_cellular_apn(profile, &apn) != CONNECTION_ERROR_NONE)
755 printf("Fail to get cellular APN!\n");
757 printf("Cellular APN : %s\n", apn);
761 if (connection_profile_get_cellular_auth_info(profile, &auth_type, &user_name, &password) != CONNECTION_ERROR_NONE)
762 printf("Fail to get auth info!\n");
764 printf("Cellular auth type : %s\n", test_print_cellular_auth_type(auth_type));
765 printf("Cellular user_name : %s\n", user_name);
766 printf("Cellular password : %s\n", password);
771 if (connection_profile_get_cellular_home_url(profile, &home_url) != CONNECTION_ERROR_NONE)
772 printf("Fail to get cellular home url!\n");
774 printf("Cellular home url : %s\n", home_url);
778 if (connection_profile_is_cellular_roaming(profile, &roaming) != CONNECTION_ERROR_NONE)
779 printf("Fail to get cellular roaming state!\n");
781 printf("Cellular roaming : %s\n", roaming ? "true" : "false");
783 if (connection_profile_is_cellular_hidden(profile, &hidden) != CONNECTION_ERROR_NONE)
784 printf("Fail to get cellular hidden state!\n");
786 printf("Cellular hidden : %s\n", hidden ? "true" : "false");
788 if (connection_profile_is_cellular_editable(profile, &editable) != CONNECTION_ERROR_NONE)
789 printf("Fail to get cellular editing state!\n");
791 printf("Cellular editable : %s\n", editable ? "true" : "false");
794 static void test_print_wifi_info(connection_profile_h profile)
801 connection_wifi_security_type_e security_type;
802 connection_wifi_encryption_type_e encryption_type;
803 bool pass_required = false;
804 bool wps_supported = false;
806 if (connection_profile_get_wifi_essid(profile, &essid) != CONNECTION_ERROR_NONE)
807 printf("Fail to get Wi-Fi essid!\n");
809 printf("Wi-Fi essid : %s\n", essid);
813 if (connection_profile_get_wifi_bssid(profile, &bssid) != CONNECTION_ERROR_NONE)
814 printf("Fail to get Wi-Fi bssid!\n");
816 printf("Wi-Fi bssid : %s\n", bssid);
820 if (connection_profile_get_wifi_rssi(profile, &rssi) != CONNECTION_ERROR_NONE)
821 printf("Fail to get Wi-Fi rssi!\n");
823 printf("Wi-Fi rssi : %d\n", rssi);
825 if (connection_profile_get_wifi_frequency(profile, &frequency) != CONNECTION_ERROR_NONE)
826 printf("Fail to get Wi-Fi frequency!\n");
828 printf("Wi-Fi frequency : %d\n", frequency);
830 if (connection_profile_get_wifi_max_speed(profile, &max_speed) != CONNECTION_ERROR_NONE)
831 printf("Fail to get Wi-Fi max speed!\n");
833 printf("Wi-Fi max speed : %d\n", max_speed);
835 if (connection_profile_get_wifi_security_type(profile, &security_type) != CONNECTION_ERROR_NONE)
836 printf("Fail to get Wi-Fi security type!\n");
838 printf("Wi-Fi security type : %d\n", security_type);
840 if (connection_profile_get_wifi_encryption_type(profile, &encryption_type) != CONNECTION_ERROR_NONE)
841 printf("Fail to get Wi-Fi encryption type!\n");
843 printf("Wi-Fi encryption type : %d\n", encryption_type);
845 if (connection_profile_is_wifi_passphrase_required(profile, &pass_required) != CONNECTION_ERROR_NONE)
846 printf("Fail to get Wi-Fi passphrase required!\n");
848 printf("Wi-Fi passphrase required : %s\n", pass_required ? "true" : "false");
850 if (connection_profile_is_wifi_wps_supported(profile, &wps_supported) != CONNECTION_ERROR_NONE)
851 printf("Fail to get Wi-Fi wps info\n");
853 printf("Wi-Fi wps supported : %s\n", wps_supported ? "true" : "false");
856 static void test_print_network_info(connection_profile_h profile, connection_address_family_e address_family)
858 char *interface_name = NULL;
861 char *gateway = NULL;
862 char *dhcp_server = NULL;
863 int dhcp_lease_duration = 0;
868 connection_ip_config_type_e ip_type;
869 connection_proxy_type_e proxy_type;
870 connection_dns_config_type_e dns_type;
872 if (connection_profile_get_network_interface_name(profile, &interface_name) != CONNECTION_ERROR_NONE)
873 printf("Fail to get interface name!\n");
875 printf("Interface name : %s\n", interface_name);
876 g_free(interface_name);
879 if (connection_profile_get_ip_config_type(profile, address_family, &ip_type) != CONNECTION_ERROR_NONE)
880 printf("Fail to get ipconfig type!\n");
882 printf("Ipconfig type : %d\n", ip_type);
884 if (connection_profile_get_ip_address(profile, address_family, &ip) != CONNECTION_ERROR_NONE)
885 printf("Fail to get IP address!\n");
887 printf("IP address : %s\n", ip);
891 if (connection_profile_get_gateway_address(profile, address_family, &gateway) != CONNECTION_ERROR_NONE)
892 printf("Fail to get gateway!\n");
894 printf("Gateway : %s\n", gateway);
898 if (connection_profile_get_dhcp_server_address(profile, address_family, &dhcp_server) != CONNECTION_ERROR_NONE)
899 printf("Fail to get DHCP Server address!\n");
901 printf("DHCP Server : %s\n", dhcp_server);
905 if (connection_profile_get_dhcp_lease_duration(profile, address_family, &dhcp_lease_duration) != CONNECTION_ERROR_NONE)
906 printf("Fail to get DHCP lease duration!\n");
908 printf("DHCP lease duration : %d\n", dhcp_lease_duration);
911 if (connection_profile_get_subnet_mask(profile, address_family, &subnet) != CONNECTION_ERROR_NONE)
912 printf("Fail to get subnet mask!\n");
914 printf("Subnet mask : %s\n", subnet);
918 if (connection_profile_get_prefix_length(profile, address_family, &prefix_len) != CONNECTION_ERROR_NONE)
919 printf("Fail to get prefix length!\n");
921 printf("Prefix length : %d\n", prefix_len);
923 if (connection_profile_get_dns_config_type(profile, address_family, &dns_type) != CONNECTION_ERROR_NONE)
924 printf("Fail to get DNS configuration type!\n");
926 printf("DNS configuration type : %d\n", dns_type);
928 if (connection_profile_get_dns_address(profile, 1, address_family, &dns1) != CONNECTION_ERROR_NONE)
929 printf("Fail to get DNS1!\n");
931 printf("DNS1 : %s\n", dns1);
935 if (connection_profile_get_dns_address(profile, 2, address_family, &dns2) != CONNECTION_ERROR_NONE)
936 printf("Fail to get DNS2!\n");
938 printf("DNS2 : %s\n", dns2);
942 if (connection_profile_get_proxy_type(profile, &proxy_type) != CONNECTION_ERROR_NONE)
943 printf("Fail to get proxy type!\n");
945 printf("Proxy type : %d\n", proxy_type);
947 if (connection_profile_get_proxy_address(profile, address_family, &proxy) != CONNECTION_ERROR_NONE)
948 printf("Fail to get proxy!\n");
950 printf("Proxy : %s\n", proxy);
955 int test_register_client(void)
958 int err = connection_create(&connection);
960 if (CONNECTION_ERROR_NONE == err) {
961 connection_set_type_changed_cb(connection, test_type_changed_callback, NULL);
962 connection_set_ip_address_changed_cb(connection, test_ip_changed_callback, NULL);
963 connection_set_proxy_address_changed_cb(connection, test_proxy_changed_callback, NULL);
964 connection_set_ethernet_cable_state_chaged_cb(connection,
965 test_get_ethernet_cable_state_callback, NULL);
967 printf("Client registration failed [%s]\n", test_print_error(err));
971 printf("Client registration success\n");
975 int test_deregister_client(void)
979 connection_profile_h profile;
981 if (connection != NULL)
982 rv = connection_destroy(connection);
984 printf("Cannot deregister : Handle is NULL\n");
985 rv = CONNECTION_ERROR_INVALID_OPERATION;
988 if (rv != CONNECTION_ERROR_NONE) {
989 printf("Client deregistration fail [%s]\n", test_print_error(rv));
994 for (list = state_cb_list; list; list = list->next) {
995 profile = list->data;
996 connection_profile_destroy(profile);
999 g_slist_free(state_cb_list);
1000 state_cb_list = NULL;
1004 printf("Client deregistration success\n");
1009 int test_get_network_state(void)
1012 connection_type_e net_state;
1014 rv = connection_get_type(connection, &net_state);
1016 if (rv != CONNECTION_ERROR_NONE) {
1017 printf("Fail to get network state [%s]\n", test_print_error(rv));
1021 printf("Retval = [%s] network connection state [%s]\n",
1022 test_print_error(rv), test_print_connection_type(net_state));
1027 int test_get_cellular_state(void)
1030 connection_cellular_state_e cellular_state;
1032 rv = connection_get_cellular_state(connection, &cellular_state);
1034 if (rv != CONNECTION_ERROR_NONE) {
1035 printf("Fail to get Cellular state [%s]\n", test_print_error(rv));
1039 printf("Retval = [%s] Cellular state [%s]\n",
1040 test_print_error(rv), test_print_cellular_state(cellular_state));
1045 int test_get_wifi_state(void)
1048 connection_wifi_state_e wifi_state;
1050 rv = connection_get_wifi_state(connection, &wifi_state);
1052 if (rv != CONNECTION_ERROR_NONE) {
1053 printf("Fail to get WiFi state [%s]\n", test_print_error(rv));
1057 printf("Retval = [%s] WiFi state [%s]\n",
1058 test_print_error(rv), test_print_wifi_state(wifi_state));
1063 int test_get_current_proxy(void)
1065 char *proxy_addr = NULL;
1067 connection_get_proxy(connection, CONNECTION_ADDRESS_FAMILY_IPV4, &proxy_addr);
1069 if (proxy_addr == NULL) {
1070 printf("Proxy address does not exist\n");
1074 printf("Current Proxy [%s]\n", proxy_addr);
1080 int test_get_current_ip(void)
1082 char *ip_addr = NULL;
1086 rv = test_get_user_int("Input Address type to get"
1087 "(1:IPV4, 2:IPV6):", &input);
1090 printf("Invalid input!!\n");
1096 connection_get_ip_address(connection, CONNECTION_ADDRESS_FAMILY_IPV4, &ip_addr);
1097 if (ip_addr == NULL) {
1098 printf("IPv4 address does not exist\n");
1101 printf("IPv4 address : %s\n", ip_addr);
1105 connection_get_ip_address(connection, CONNECTION_ADDRESS_FAMILY_IPV6, &ip_addr);
1106 if (ip_addr == NULL) {
1107 printf("IPv6 address does not exist\n");
1110 printf("IPv6 address : %s\n", ip_addr);
1113 printf("Wrong IP address family!!\n");
1121 int test_get_call_statistics_info(void)
1125 connection_get_statistics(connection, CONNECTION_TYPE_CELLULAR, CONNECTION_STATISTICS_TYPE_LAST_RECEIVED_DATA, &rv);
1126 printf("last recv data size [%lld]\n", rv);
1127 connection_get_statistics(connection, CONNECTION_TYPE_CELLULAR, CONNECTION_STATISTICS_TYPE_LAST_SENT_DATA, &rv);
1128 printf("last sent data size [%lld]\n", rv);
1129 connection_get_statistics(connection, CONNECTION_TYPE_CELLULAR, CONNECTION_STATISTICS_TYPE_TOTAL_RECEIVED_DATA, &rv);
1130 printf("total received data size [%lld]\n", rv);
1131 connection_get_statistics(connection, CONNECTION_TYPE_CELLULAR, CONNECTION_STATISTICS_TYPE_TOTAL_SENT_DATA, &rv);
1132 printf("total sent data size [%lld]\n", rv);
1137 int test_get_wifi_call_statistics_info(void)
1141 connection_get_statistics(connection, CONNECTION_TYPE_WIFI, CONNECTION_STATISTICS_TYPE_LAST_RECEIVED_DATA, &rv);
1142 printf("WiFi last recv data size [%lld]\n", rv);
1143 connection_get_statistics(connection, CONNECTION_TYPE_WIFI, CONNECTION_STATISTICS_TYPE_LAST_SENT_DATA, &rv);
1144 printf("WiFi last sent data size [%lld]\n", rv);
1145 connection_get_statistics(connection, CONNECTION_TYPE_WIFI, CONNECTION_STATISTICS_TYPE_TOTAL_RECEIVED_DATA, &rv);
1146 printf("WiFi total received data size [%lld]\n", rv);
1147 connection_get_statistics(connection, CONNECTION_TYPE_WIFI, CONNECTION_STATISTICS_TYPE_TOTAL_SENT_DATA, &rv);
1148 printf("WiFi total sent data size [%lld]\n", rv);
1153 int test_get_profile_list(void)
1155 if (test_get_user_selected_profile(NULL, false) == false)
1161 int test_get_default_profile_list(void)
1164 char *profile_name = NULL;
1165 connection_profile_iterator_h profile_iter;
1166 connection_profile_h profile_h;
1167 connection_cellular_service_type_e service_type;
1168 bool is_default = false;
1170 rv = connection_get_profile_iterator(connection, CONNECTION_ITERATOR_TYPE_DEFAULT, &profile_iter);
1171 if (rv != CONNECTION_ERROR_NONE) {
1172 printf("Fail to get profile iterator [%s]\n", test_print_error(rv));
1176 while (connection_profile_iterator_has_next(profile_iter)) {
1177 if (connection_profile_iterator_next(profile_iter, &profile_h) != CONNECTION_ERROR_NONE) {
1178 printf("Fail to get profile handle\n");
1182 if (connection_profile_get_name(profile_h, &profile_name) != CONNECTION_ERROR_NONE) {
1183 printf("Fail to get profile name\n");
1186 printf("profile name : %s\n", profile_name);
1187 g_free(profile_name);
1189 if (connection_profile_get_cellular_service_type(profile_h, &service_type) != CONNECTION_ERROR_NONE) {
1190 printf("Fail to get profile service type\n");
1193 printf("service type : %d\n", service_type);
1195 if (connection_profile_is_cellular_default(profile_h, &is_default) != CONNECTION_ERROR_NONE) {
1196 printf("Fail to get profile subscriber id\n");
1199 printf("Default : %d\n", is_default);
1205 int test_get_connected_profile_list(void)
1208 char *profile_name = NULL;
1209 connection_profile_iterator_h profile_iter;
1210 connection_profile_h profile_h;
1211 bool is_default = false;
1212 connection_profile_type_e type;
1214 rv = connection_get_profile_iterator(connection, CONNECTION_ITERATOR_TYPE_CONNECTED, &profile_iter);
1215 if (rv != CONNECTION_ERROR_NONE) {
1216 printf("Fail to get profile iterator [%s]\n", test_print_error(rv));
1220 while (connection_profile_iterator_has_next(profile_iter)) {
1221 if (connection_profile_iterator_next(profile_iter, &profile_h) != CONNECTION_ERROR_NONE) {
1222 printf("Fail to get profile handle\n");
1226 if (connection_profile_get_name(profile_h, &profile_name) != CONNECTION_ERROR_NONE) {
1227 printf("Fail to get profile name\n");
1230 printf("profile name is %s\n", profile_name);
1231 g_free(profile_name);
1233 if (connection_profile_get_type(profile_h, &type) != CONNECTION_ERROR_NONE) {
1234 printf("Fail to get profile type\n");
1237 printf("profile type is %d\n", type);
1239 if (type == CONNECTION_PROFILE_TYPE_CELLULAR) {
1240 if (connection_profile_is_cellular_default(profile_h, &is_default) != CONNECTION_ERROR_NONE) {
1241 printf("Fail to get profile is default\n");
1244 printf("[%s]\n", is_default ? "default" : "not default");
1251 int test_get_current_profile(void)
1254 char *profile_name = NULL;
1255 connection_profile_h profile_h;
1257 rv = connection_get_current_profile(connection, &profile_h);
1258 if (rv != CONNECTION_ERROR_NONE) {
1259 printf("Fail to get profile iterator [%s]\n", test_print_error(rv));
1263 if (connection_profile_get_name(profile_h, &profile_name) != CONNECTION_ERROR_NONE) {
1264 printf("Fail to get profile name\n");
1267 printf("profile name : %s\n", profile_name);
1268 g_free(profile_name);
1270 connection_profile_destroy(profile_h);
1275 int test_open_profile(void)
1277 connection_profile_h profile;
1279 printf("\n** Choose a profile to open. **\n");
1281 if (test_get_user_selected_profile(&profile, true) == false)
1284 if (connection_open_profile(connection, profile, test_connection_opened_callback, NULL) != CONNECTION_ERROR_NONE) {
1285 printf("Connection open Failed!!\n");
1292 int test_get_default_cellular_service_type(void)
1297 connection_profile_h profile;
1298 char *profile_name = NULL;
1300 rv = test_get_user_int("Input profile type to get"
1301 "(1:Internet, 2:MMS, 3:Prepaid internet, 4:Prepaid MMS, 5:Tethering, 6:Application):", &input);
1304 printf("Invalid input!!\n");
1310 service_type = CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET;
1313 service_type = CONNECTION_CELLULAR_SERVICE_TYPE_MMS;
1316 service_type = CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_INTERNET;
1319 service_type = CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_MMS;
1322 service_type = CONNECTION_CELLULAR_SERVICE_TYPE_TETHERING;
1325 service_type = CONNECTION_CELLULAR_SERVICE_TYPE_APPLICATION;
1328 printf("Wrong number!!\n");
1332 if (connection_get_default_cellular_service_profile(connection, service_type, &profile) != CONNECTION_ERROR_NONE)
1335 if (connection_profile_get_name(profile, &profile_name) != CONNECTION_ERROR_NONE) {
1336 printf("Fail to get profile name\n");
1337 connection_profile_destroy(profile);
1340 printf("Default profile name : %s\n", profile_name);
1341 g_free(profile_name);
1343 connection_profile_destroy(profile);
1348 int test_set_default_cellular_service_type(void)
1350 connection_profile_h profile;
1351 connection_cellular_service_type_e type;
1354 rv = test_get_user_int("Input API type (1:sync, 2:async)", &input);
1356 if (rv == false || (input != 1 && input != 2)) {
1357 printf("Invalid input!!\n");
1361 printf("\n** Choose a profile to set default service(internet or prepaid internet type only). **\n");
1363 if (test_get_user_selected_profile(&profile, true) == false)
1366 if (connection_profile_get_cellular_service_type(profile, &type) != CONNECTION_ERROR_NONE) {
1367 printf("Fail to get cellular service type\n");
1372 if (connection_set_default_cellular_service_profile(connection, type, profile) != CONNECTION_ERROR_NONE)
1375 if (connection_set_default_cellular_service_profile_async(connection,
1376 type, profile, test_connection_set_default_callback, NULL) != CONNECTION_ERROR_NONE)
1383 int test_close_profile(void)
1385 connection_profile_h profile;
1387 printf("\n** Choose a profile to close. **\n");
1389 if (test_get_user_selected_profile(&profile, true) == false)
1392 if (connection_close_profile(connection, profile, test_connection_closed_callback, NULL) != CONNECTION_ERROR_NONE) {
1393 printf("Connection close Failed!!\n");
1400 int test_add_profile(void)
1403 connection_profile_h profile;
1404 char input_str[100] = {0,};
1406 if (test_get_user_string("Input Keyword - (Enter for skip) :", input_str, 100) == false)
1409 g_strstrip(input_str);
1410 rv = connection_profile_create(CONNECTION_PROFILE_TYPE_CELLULAR, input_str, &profile);
1411 if (rv != CONNECTION_ERROR_NONE)
1412 RETURN_FAIL_DESTROY(profile);
1414 if (test_update_cellular_info(profile) == -1)
1415 RETURN_FAIL_DESTROY(profile);
1417 rv = connection_add_profile(connection, profile);
1418 if (rv != CONNECTION_ERROR_NONE)
1419 RETURN_FAIL_DESTROY(profile);
1421 connection_profile_destroy(profile);
1425 int test_remove_profile(void)
1427 connection_profile_h profile;
1429 printf("\n** Choose a profile to remove. **\n");
1430 if (test_get_user_selected_profile(&profile, true) == false)
1433 if (connection_remove_profile(connection, profile) != CONNECTION_ERROR_NONE) {
1434 printf("Remove profile Failed!!\n");
1441 int test_update_profile(void)
1445 connection_profile_type_e prof_type;
1446 connection_profile_h profile;
1448 printf("\n** Choose a profile to update. **\n");
1449 if (test_get_user_selected_profile(&profile, true) == false)
1452 if (connection_profile_get_type(profile, &prof_type) != CONNECTION_ERROR_NONE)
1455 switch (prof_type) {
1456 case CONNECTION_PROFILE_TYPE_CELLULAR:
1457 if (test_update_cellular_info(profile) == -1)
1461 case CONNECTION_PROFILE_TYPE_WIFI:
1462 if (test_update_wifi_info(profile) == -1)
1465 if (test_update_network_info(profile) == -1)
1469 case CONNECTION_PROFILE_TYPE_ETHERNET:
1470 if (test_update_network_info(profile) == -1)
1474 case CONNECTION_PROFILE_TYPE_BT:
1475 printf("Not supported!\n");
1481 rv = connection_update_profile(connection, profile);
1482 if (rv != CONNECTION_ERROR_NONE)
1488 int test_get_profile_info(void)
1490 connection_profile_type_e prof_type;
1491 connection_profile_state_e profile_state;
1492 connection_profile_state_e profile_ipv6_state;
1493 connection_profile_h profile;
1494 char *profile_name = NULL;
1495 int address_family = 0;
1497 printf("\n** Choose a profile to print. **\n");
1498 if (test_get_user_selected_profile(&profile, true) == false)
1501 if (connection_profile_get_name(profile, &profile_name) != CONNECTION_ERROR_NONE) {
1502 printf("Fail to get profile name\n");
1505 printf("Profile Name : %s\n", profile_name);
1506 g_free(profile_name);
1509 if (connection_profile_get_state(profile, &profile_state) != CONNECTION_ERROR_NONE) {
1510 printf("Fail to get profile IPv4 state\n");
1513 printf("Profile State : %s\n", test_print_state(profile_state));
1515 if (connection_profile_get_ipv6_state(profile, &profile_ipv6_state) != CONNECTION_ERROR_NONE) {
1516 printf("Fail to get profile IPv6 state\n");
1519 printf("Profile IPv6 State : %s\n", test_print_state(profile_ipv6_state));
1522 if (connection_profile_get_type(profile, &prof_type) != CONNECTION_ERROR_NONE)
1525 test_get_user_int("Input Address Family (0:IPv4 1:IPv6) :", &address_family);
1527 switch (prof_type) {
1528 case CONNECTION_PROFILE_TYPE_CELLULAR:
1529 printf("Profile Type : Cellular\n");
1530 test_print_cellular_info(profile);
1532 case CONNECTION_PROFILE_TYPE_WIFI:
1533 printf("Profile Type : Wi-Fi\n");
1534 test_print_wifi_info(profile);
1536 case CONNECTION_PROFILE_TYPE_ETHERNET:
1537 printf("Profile Type : Ethernet\n");
1539 case CONNECTION_PROFILE_TYPE_BT:
1540 printf("Profile Type : Bluetooth\n");
1546 test_print_network_info(profile, address_family);
1551 int test_refresh_profile_info(void)
1553 connection_profile_type_e prof_type;
1554 connection_profile_state_e profile_state;
1555 connection_profile_h profile;
1556 char *profile_name = NULL;
1557 int address_family = 0;
1559 printf("\n** Choose a profile to refresh. **\n");
1560 if (test_get_user_selected_profile(&profile, true) == false)
1563 if (connection_profile_refresh(profile) != CONNECTION_ERROR_NONE)
1566 if (connection_profile_get_name(profile, &profile_name) != CONNECTION_ERROR_NONE) {
1567 printf("Fail to get profile name\n");
1570 printf("Profile Name : %s\n", profile_name);
1571 g_free(profile_name);
1574 if (connection_profile_get_state(profile, &profile_state) != CONNECTION_ERROR_NONE) {
1575 printf("Fail to get profile state\n");
1578 printf("Profile State : %s\n", test_print_state(profile_state));
1581 if (connection_profile_get_type(profile, &prof_type) != CONNECTION_ERROR_NONE)
1584 test_get_user_int("Input Address Family (0:IPv4 1:IPv6) :", &address_family);
1586 switch (prof_type) {
1587 case CONNECTION_PROFILE_TYPE_CELLULAR:
1588 printf("Profile Type : Cellular\n");
1589 test_print_cellular_info(profile);
1591 case CONNECTION_PROFILE_TYPE_WIFI:
1592 printf("Profile Type : Wi-Fi\n");
1593 test_print_wifi_info(profile);
1595 case CONNECTION_PROFILE_TYPE_ETHERNET:
1596 printf("Profile Type : Ethernet\n");
1598 case CONNECTION_PROFILE_TYPE_BT:
1599 printf("Profile Type : Bluetooth\n");
1605 test_print_network_info(profile, address_family);
1610 int test_set_state_changed_callback()
1612 connection_profile_h profile;
1613 connection_profile_h profile_clone;
1615 printf("\n** Choose a profile to set callback. **\n");
1616 if (test_get_user_selected_profile(&profile, true) == false)
1619 if (connection_profile_clone(&profile_clone, profile) != CONNECTION_ERROR_NONE)
1622 if (connection_profile_set_state_changed_cb(profile,
1623 test_profile_state_callback, profile_clone) != CONNECTION_ERROR_NONE) {
1624 connection_profile_destroy(profile_clone);
1628 state_cb_list = g_slist_append(state_cb_list, profile_clone);
1633 int test_unset_state_changed_callback()
1635 connection_profile_h profile;
1637 char *profile_name = NULL;
1641 printf("\n** Choose a profile to unset callback. **\n");
1642 for (list = state_cb_list; list; list = list->next) {
1643 profile = list->data;
1644 if (connection_profile_get_name(profile, &profile_name) != CONNECTION_ERROR_NONE) {
1645 printf("Fail to get profile name!\n");
1648 printf("%d. %s\n", count, profile_name);
1649 g_free(profile_name);
1655 if (test_get_user_int("Input profile number(Enter for cancel) :", &input) == false ||
1658 printf("Wrong number!!\n");
1663 for (list = state_cb_list; list; list = list->next) {
1664 if (count == input) {
1665 profile = list->data;
1675 if (connection_profile_unset_state_changed_cb(profile) != CONNECTION_ERROR_NONE)
1678 state_cb_list = g_slist_remove(state_cb_list, profile);
1679 connection_profile_destroy(profile);
1684 int test_reset_call_statistics_info(void)
1686 int ret = CONNECTION_ERROR_NONE;
1688 ret = connection_reset_statistics(connection, CONNECTION_TYPE_CELLULAR, CONNECTION_STATISTICS_TYPE_LAST_RECEIVED_DATA);
1689 printf("reset last recv data size [%d]\n", ret);
1690 ret = connection_reset_statistics(connection, CONNECTION_TYPE_CELLULAR, CONNECTION_STATISTICS_TYPE_LAST_SENT_DATA);
1691 printf("last sent data size [%d]\n", ret);
1692 ret = connection_reset_statistics(connection, CONNECTION_TYPE_CELLULAR, CONNECTION_STATISTICS_TYPE_TOTAL_RECEIVED_DATA);
1693 printf("total received data size [%d]\n", ret);
1694 ret = connection_reset_statistics(connection, CONNECTION_TYPE_CELLULAR, CONNECTION_STATISTICS_TYPE_TOTAL_SENT_DATA);
1695 printf("total sent data size [%d]\n", ret);
1700 int test_reset_wifi_call_statistics_info(void)
1702 int ret = CONNECTION_ERROR_NONE;
1704 ret = connection_reset_statistics(connection, CONNECTION_TYPE_WIFI, CONNECTION_STATISTICS_TYPE_LAST_SENT_DATA);
1705 printf("WiFi last sent data size [%d]\n", ret);
1706 ret = connection_reset_statistics(connection, CONNECTION_TYPE_WIFI, CONNECTION_STATISTICS_TYPE_LAST_RECEIVED_DATA);
1707 printf("WiFi last recv data size [%d]\n", ret);
1708 ret = connection_reset_statistics(connection, CONNECTION_TYPE_WIFI, CONNECTION_STATISTICS_TYPE_TOTAL_SENT_DATA);
1709 printf("WiFi total sent data size [%d]\n", ret);
1710 ret = connection_reset_statistics(connection, CONNECTION_TYPE_WIFI, CONNECTION_STATISTICS_TYPE_TOTAL_RECEIVED_DATA);
1711 printf("WiFi total received data size [%d]\n", ret);
1716 int test_add_route(void)
1719 char ip_addr[100] = {0};
1720 char if_name[40] = {0};
1722 if (test_get_user_string("Input IP - (Enter for skip) :", ip_addr, 100) == false)
1725 if (test_get_user_string("Input Interface name - (Enter for skip) :", if_name, 40) == false)
1728 g_strstrip(ip_addr);
1729 g_strstrip(if_name);
1730 rv = connection_add_route(connection, if_name, ip_addr);
1731 if (rv != CONNECTION_ERROR_NONE) {
1732 printf("Fail to get add new route [%d]\n", rv);
1735 printf("Add Route successfully\n");
1740 int test_remove_route(void)
1743 char ip_addr[100] = {0};
1744 char if_name[40] = {0};
1746 if (test_get_user_string("Input IP - (Enter for skip) :", ip_addr, 100) == false)
1749 if (test_get_user_string("Input Interface name - (Enter for skip) :", if_name, 40) == false)
1752 g_strstrip(ip_addr);
1753 g_strstrip(if_name);
1754 rv = connection_remove_route(connection, if_name, ip_addr);
1755 if (rv != CONNECTION_ERROR_NONE) {
1756 printf("Fail to remove the route [%s]\n", test_print_error(rv));
1759 printf("Remove Route successfully\n");
1764 int test_add_route_ipv6(void)
1767 char ip_addr[100] = {0};
1768 char gateway[100] = {0};
1769 char if_name[40] = {0};
1771 if (test_get_user_string("Input IPv6 - (Enter for skip) :", ip_addr, 100) == false)
1774 if (test_get_user_string("Input Gateway - (Enter for skip) :", gateway, 100) == false)
1777 if (test_get_user_string("Input Interface name - (Enter for skip) :", if_name, 40) == false)
1780 g_strstrip(ip_addr);
1781 g_strstrip(gateway);
1782 g_strstrip(if_name);
1783 rv = connection_add_route_ipv6(connection, if_name, ip_addr, gateway);
1784 if (rv != CONNECTION_ERROR_NONE) {
1785 printf("Fail to get add new route [%d]\n", rv);
1788 printf("Add Route successfully\n");
1793 int test_remove_route_ipv6(void)
1796 char ip_addr[100] = {0};
1797 char gateway[100] = {0};
1798 char if_name[40] = {0};
1800 if (test_get_user_string("Input IPv6 - (Enter for skip) :", ip_addr, 100) == false)
1803 if (test_get_user_string("Input Gateway - (Enter for skip) :", gateway, 100) == false)
1806 if (test_get_user_string("Input Interface name - (Enter for skip) :", if_name, 40) == false)
1809 g_strstrip(ip_addr);
1810 g_strstrip(gateway);
1811 g_strstrip(if_name);
1812 rv = connection_remove_route_ipv6(connection, if_name, ip_addr, gateway);
1813 if (rv != CONNECTION_ERROR_NONE) {
1814 printf("Fail to remove the route [%d]\n", rv);
1817 printf("Remove Route successfully\n");
1822 int test_add_route_entry(void)
1824 char ip_addr[100] = {0};
1825 char gateway[100] = {0};
1826 char if_name[40] = {0};
1831 input_rv = test_get_user_int("Input Address type to get"
1832 "(1:IPV4, 2:IPV6):", &input);
1834 if (input_rv == false) {
1835 printf("Invalid input!!\n");
1841 if (test_get_user_string("Input Interface name - (Enter for skip) :", if_name, 40) == false)
1844 if (test_get_user_string("Input IP - (Enter for skip) :", ip_addr, 100) == false)
1847 if (test_get_user_string("Input Gateway - (Enter for skip) :", gateway, 100) == false)
1850 g_strstrip(ip_addr);
1851 g_strstrip(gateway);
1852 g_strstrip(if_name);
1853 rv = connection_add_route_entry(connection, CONNECTION_ADDRESS_FAMILY_IPV4, if_name, ip_addr, gateway);
1854 if (rv != CONNECTION_ERROR_NONE) {
1855 printf("Fail to get add new route [%d]\n", rv);
1858 printf("Add Route successfully\n");
1862 if (test_get_user_string("Input Interface name - (Enter for skip) :", if_name, 40) == false)
1865 if (test_get_user_string("Input IP - (Enter for skip) :", ip_addr, 100) == false)
1868 if (test_get_user_string("Input Gateway - (Enter for skip) :", gateway, 100) == false)
1871 g_strstrip(ip_addr);
1872 g_strstrip(gateway);
1873 g_strstrip(if_name);
1874 rv = connection_add_route_entry(connection, CONNECTION_ADDRESS_FAMILY_IPV6, if_name, ip_addr, gateway);
1875 if (rv != CONNECTION_ERROR_NONE) {
1876 printf("Fail to get add new route [%d]\n", rv);
1879 printf("Add Route successfully\n");
1883 printf("Wrong IP address family!!\n");
1892 int test_remove_route_entry(void)
1894 char ip_addr[100] = {0};
1895 char gateway[100] = {0};
1896 char if_name[40] = {0};
1901 input_rv = test_get_user_int("Input Address type to get"
1902 "(1:IPV4, 2:IPV6):", &input);
1904 if (input_rv == false) {
1905 printf("Invalid input!!\n");
1911 if (test_get_user_string("Input Interface name - (Enter for skip) :", if_name, 40) == false)
1914 if (test_get_user_string("Input IP - (Enter for skip) :", ip_addr, 100) == false)
1917 if (test_get_user_string("Input Gateway - (Enter for skip) :", gateway, 100) == false)
1920 g_strstrip(ip_addr);
1921 g_strstrip(gateway);
1922 g_strstrip(if_name);
1923 rv = connection_remove_route_entry(connection, CONNECTION_ADDRESS_FAMILY_IPV4, if_name, ip_addr, gateway);
1924 if (rv != CONNECTION_ERROR_NONE) {
1925 printf("Fail to remove the route [%s]\n", test_print_error(rv));
1928 printf("Remove Route successfully\n");
1933 if (test_get_user_string("Input Interface name - (Enter for skip) :", if_name, 40) == false)
1936 if (test_get_user_string("Input IP - (Enter for skip) :", ip_addr, 100) == false)
1939 if (test_get_user_string("Input Gateway - (Enter for skip) :", gateway, 100) == false)
1942 g_strstrip(ip_addr);
1943 g_strstrip(gateway);
1944 g_strstrip(if_name);
1945 rv = connection_remove_route_entry(connection, CONNECTION_ADDRESS_FAMILY_IPV6, if_name, ip_addr, gateway);
1946 if (rv != CONNECTION_ERROR_NONE) {
1947 printf("Fail to remove the route [%d]\n", rv);
1950 printf("Remove Route successfully\n");
1954 printf("Wrong IP address family!!\n");
1963 int test_get_bt_state(void)
1966 connection_bt_state_e bt_state;
1968 rv = connection_get_bt_state(connection, &bt_state);
1970 if (rv != CONNECTION_ERROR_NONE) {
1971 printf("Fail to get Bluetooth state [%s]\n", test_print_error(rv));
1975 printf("Retval = [%s], Bluetooth state [%d]\n", test_print_error(rv), bt_state);
1980 int test_get_profile_id(void)
1982 connection_profile_h profile;
1985 printf("\n** Choose a profile to see profile id. **\n");
1986 if (test_get_user_selected_profile(&profile, true) == false)
1989 if (connection_profile_get_id(profile, &profile_id) != CONNECTION_ERROR_NONE) {
1990 printf("Fail to get profile name\n");
1993 printf("Profile id : %s\n", profile_id);
2000 int test_get_mac_address(void)
2002 int rv = 0, type = 0;
2003 connection_type_e conn_type;
2004 char *mac_addr = NULL;
2006 test_get_user_int("Input connection type (1:wifi, 2:ethernet)", &type);
2010 conn_type = CONNECTION_TYPE_WIFI;
2013 conn_type = CONNECTION_TYPE_ETHERNET;
2016 printf("Wrong number!!\n");
2020 rv = connection_get_mac_address(connection, conn_type, &mac_addr);
2022 if (rv != CONNECTION_ERROR_NONE) {
2023 printf("Fail to get MAC address [%s]\n", test_print_error(rv));
2027 printf("mac address is %s\n", mac_addr);
2034 int test_get_ethernet_cable_state(void)
2037 connection_ethernet_cable_state_e cable_state;
2039 rv = connection_get_ethernet_cable_state(connection, &cable_state);
2041 if (rv != CONNECTION_ERROR_NONE) {
2042 printf("Fail to get ethernet cable state [%s]\n", test_print_error(rv));
2046 printf("Retval = [%s], Ethernet cable state [%d]\n", test_print_error(rv), cable_state);
2051 int test_reset_profile(void)
2053 int type, sim_id, rv;
2055 rv = test_get_user_int("Input reset type (0:default profile reset, 1:delete profile reset)", &type);
2057 if (rv == false || (type != 0 && type != 1)) {
2058 printf("Invalid input!!\n");
2062 rv = test_get_user_int("Input SIM id to reset (0:SIM1, 1:SIM2)", &sim_id);
2064 if (rv == false || (sim_id != 0 && sim_id != 1)) {
2065 printf("Invalid input!!\n");
2069 if (connection_reset_profile(connection, type, sim_id, test_connection_reset_profile_callback, NULL) != CONNECTION_ERROR_NONE)
2075 static bool test_get_ipv6_address_callback(char *ipv6_address, void* user_data)
2077 printf("IPv6 Address : %s\n", ipv6_address);
2081 int test_foreach_ipv6_address(void)
2085 connection_type_e conn_type;
2087 test_get_user_int("Input Connection Type(1: WiFi 2: Ethernet) :", &type);
2091 conn_type = CONNECTION_TYPE_WIFI;
2094 conn_type = CONNECTION_TYPE_ETHERNET;
2097 printf("Wrong number!!\n");
2101 rv = connection_foreach_ipv6_address(connection, conn_type, test_get_ipv6_address_callback, NULL);
2102 if (rv != CONNECTION_ERROR_NONE) {
2103 printf("Fail to get IPv6 address\n");
2110 int test_is_metered_network(void)
2115 rv = connection_is_metered_network(connection, &metered_state);
2117 if (rv != CONNECTION_ERROR_NONE) {
2118 printf("Fail to get metered state [%s]\n", test_print_error(rv));
2122 printf("Retval = [%s] metered state [%s]\n",
2123 test_print_error(rv), metered_state ? "TRUE" : "FALSE");
2128 int main(int argc, char **argv)
2130 GMainLoop *mainloop;
2131 mainloop = g_main_loop_new(NULL, FALSE);
2133 GIOChannel *channel = g_io_channel_unix_new(0);
2134 g_io_add_watch(channel, (G_IO_IN|G_IO_ERR|G_IO_HUP|G_IO_NVAL), test_thread, NULL);
2136 printf("Test Thread created...\n");
2138 g_main_loop_run(mainloop);
2143 gboolean test_thread(GIOChannel *source, GIOCondition condition, gpointer data)
2148 memset(a, '\0', 100);
2149 printf("Event received from stdin\n");
2151 rv = read(0, a, 100);
2153 if (rv < 0 || a[0] == '0') {
2154 if (connection != NULL)
2155 test_deregister_client();
2160 if (*a == '\n' || *a == '\r') {
2161 printf("\n\n Network Connection API Test App\n\n");
2162 printf("Options..\n");
2163 printf(LOG_GREEN "1 - Create Handle and set callbacks\n" LOG_END);
2164 printf("2 - Destroy Handle(unset callbacks automatically)\n");
2165 printf(LOG_GREEN "3 - Get network state\n" LOG_END);
2166 printf(LOG_GREEN "4 - Get cellular state (please insert SIM Card)\n" LOG_END);
2167 printf(LOG_GREEN "5 - Get wifi state (please turn on WiFi)\n" LOG_END);
2168 printf("6 - Get current proxy address \n");
2169 printf("7 - Get current Ip address\n");
2170 printf("8 - Get cellular data call statistics\n");
2171 printf("9 - Get WiFi data call statistics\n");
2172 printf(LOG_GREEN "a - Get Profile list\n" LOG_END);
2173 printf(LOG_GREEN "b - Get Connected Profile list\n" LOG_END);
2174 printf(LOG_GREEN "c - Get Current profile\n" LOG_END);
2175 printf("d - Open connection with profile\n");
2176 printf("e - Get default cellular service by type\n");
2177 printf("f - Set default cellular service by type\n");
2178 printf("g - Close connection with profile\n");
2179 printf("h - Add profile(Cellular and Wifi only)\n");
2180 printf("i - Remove profile(Cellular:delete, WiFi:forgot)\n");
2181 printf("j - Update profile\n");
2182 printf("k - Get profile info\n");
2183 printf("l - Refresh profile info\n");
2184 printf("m - Set state changed callback\n");
2185 printf("n - Unset state changed callback\n");
2186 printf("o - Reset cellular data call statistics\n");
2187 printf("p - Reset WiFi data call statistics\n");
2188 printf("q - Add new route\n");
2189 printf("r - Remove a route\n");
2190 printf("s - Get Bluetooth state\n");
2191 printf("t - Get profile id\n");
2192 printf("u - Reset profile\n");
2193 printf("v - Get all cellular default profiles\n");
2194 printf("w - Get mac address\n");
2195 printf("x - Get ethernet cable state\n");
2196 printf("B - Add IPv6 new route\n");
2197 printf("C - Remove IPv6 route\n");
2198 printf("D - Add new route entry\n");
2199 printf("E - Remove route entry\n");
2200 printf("F - Get all IPv6 address\n");
2201 printf("G - Get metered state\n");
2202 printf(LOG_RED "0 - Exit \n" LOG_END);
2203 printf("ENTER - Show options menu.......\n");
2208 rv = test_register_client();
2211 rv = test_deregister_client();
2214 rv = test_get_network_state();
2217 rv = test_get_cellular_state();
2220 rv = test_get_wifi_state();
2223 rv = test_get_current_proxy();
2226 rv = test_get_current_ip();
2229 rv = test_get_call_statistics_info();
2232 rv = test_get_wifi_call_statistics_info();
2235 rv = test_get_profile_list();
2238 rv = test_get_connected_profile_list();
2241 rv = test_get_current_profile();
2244 rv = test_open_profile();
2247 rv = test_get_default_cellular_service_type();
2250 rv = test_set_default_cellular_service_type();
2253 rv = test_close_profile();
2256 rv = test_add_profile();
2259 rv = test_remove_profile();
2262 rv = test_update_profile();
2265 rv = test_get_profile_info();
2268 rv = test_refresh_profile_info();
2271 rv = test_set_state_changed_callback();
2274 rv = test_unset_state_changed_callback();
2277 rv = test_reset_call_statistics_info();
2280 rv = test_reset_wifi_call_statistics_info();
2283 rv = test_add_route();
2286 rv = test_remove_route();
2289 rv = test_get_bt_state();
2292 rv = test_get_profile_id();
2295 rv = test_reset_profile();
2298 rv = test_get_default_profile_list();
2301 rv = test_get_mac_address();
2304 rv = test_get_ethernet_cable_state();
2307 rv = test_add_route_ipv6();
2310 rv = test_remove_route_ipv6();
2313 rv = test_add_route_entry();
2316 rv = test_remove_route_entry();
2319 rv = test_foreach_ipv6_address();
2322 rv = test_is_metered_network();
2327 printf("Operation succeeded!\n");
2329 printf("Operation failed!\n");