diff options
author | Jaehyun Kim <jeik01.kim@samsung.com> | 2016-08-12 02:18:54 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@review.vlan103.tizen.org> | 2016-08-12 02:18:54 -0700 |
commit | dda8448367f07dd17e3e318d2362680e4db32e7d (patch) | |
tree | 9961eb0188d8105154025b3b512dad9e9eed96a0 | |
parent | 28649cb5bad75b5886accb587e855b81ee02838f (diff) | |
parent | 73cb61d002282e2708d798ddc94a2eb5bf9a6fc8 (diff) | |
download | connman-dda8448367f07dd17e3e318d2362680e4db32e7d.tar.gz connman-dda8448367f07dd17e3e318d2362680e4db32e7d.tar.bz2 connman-dda8448367f07dd17e3e318d2362680e4db32e7d.zip |
Merge "[connman] Added WPS-PBC connection support without ssid." into tizen_tv_devel
-rwxr-xr-x | src/connman.h | 3 | ||||
-rwxr-xr-x | src/network.c | 61 | ||||
-rwxr-xr-x | src/service.c | 45 |
3 files changed, 109 insertions, 0 deletions
diff --git a/src/connman.h b/src/connman.h index 56f9dd9d..6f6e3632 100755 --- a/src/connman.h +++ b/src/connman.h @@ -548,6 +548,9 @@ void __connman_technology_remove_interface(enum connman_service_type type, int index, const char *ident); void __connman_technology_notify_regdom_by_device(struct connman_device *device, int result, const char *alpha2); +#if defined TIZEN_TV_EXT +void __connman_network_get_network_parameters(struct connman_network *network); +#endif #include <connman/device.h> diff --git a/src/network.c b/src/network.c index d20385f2..91b4b359 100755 --- a/src/network.c +++ b/src/network.c @@ -2420,6 +2420,67 @@ void connman_network_update(struct connman_network *network) __connman_service_update_from_network(network); } +#if defined TIZEN_TV_EXT +void __connman_network_get_network_parameters(struct connman_network *network) +{ + struct connman_ipconfig *ipconfig_ipv4; + enum connman_ipconfig_method ipv4_method; + struct connman_service *service; + service = connman_service_lookup_from_network(network); + + DBG("WPS AP Security [%d]", __connman_service_get_security(service)); + + if (__connman_service_get_security(service) != + CONNMAN_SERVICE_SECURITY_NONE) + return; + + enum connman_service_state state = CONNMAN_SERVICE_STATE_UNKNOWN; + state = __connman_service_get_state(service); + DBG("WPS AP State [%d]", state); + if (state == CONNMAN_SERVICE_STATE_CONFIGURATION || + state == CONNMAN_SERVICE_STATE_READY || + state == CONNMAN_SERVICE_STATE_ONLINE) + return; + + network->connected = TRUE; + + ipconfig_ipv4 = __connman_service_get_ip4config(service); + ipv4_method = __connman_ipconfig_get_method(ipconfig_ipv4); + + DBG("service %p ipv4 %p method ipv4 %d ", service, ipconfig_ipv4, + ipv4_method); + + set_configuration(network, CONNMAN_IPCONFIG_TYPE_IPV4); + + switch (ipv4_method) { + case CONNMAN_IPCONFIG_METHOD_UNKNOWN: + case CONNMAN_IPCONFIG_METHOD_OFF: + case CONNMAN_IPCONFIG_METHOD_AUTO: + return; + case CONNMAN_IPCONFIG_METHOD_FIXED: + if (set_connected_manual(network) < 0) { + connman_network_set_error(network, + CONNMAN_NETWORK_ERROR_ASSOCIATE_FAIL); + return; + } + return; + case CONNMAN_IPCONFIG_METHOD_MANUAL: + set_connected_manual(network); + return; + case CONNMAN_IPCONFIG_METHOD_DHCP: + if (set_connected_dhcp(network) < 0) { + connman_network_set_error(network, + CONNMAN_NETWORK_ERROR_ASSOCIATE_FAIL); + return; + } + } + + network->connecting = FALSE; + + connman_network_set_associating(network, FALSE); +} +#endif + int __connman_network_init(void) { DBG(""); diff --git a/src/service.c b/src/service.c index f77f0339..2bf6f585 100755 --- a/src/service.c +++ b/src/service.c @@ -4062,12 +4062,54 @@ static DBusMessage *set_property(DBusConnection *conn, } service_save(service); +#if defined TIZEN_TV_EXT + } else if (g_str_equal(name, "WPSKey") == TRUE) { + char *key; + DBG("%s",name); + + if (type != DBUS_TYPE_STRING) + return __connman_error_invalid_arguments(msg); + + dbus_message_iter_get_basic(&value, &key); + + if (__connman_service_set_passphrase(service, key) < 0) + DBG("Failed to set passphrase"); +#endif + } else return __connman_error_invalid_property(msg); return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); } +/*Required to Start the DHCP after getting the "WPSCompleted" +event from supplicant when AP configure in no-security*/ +#if defined TIZEN_TV_EXT +static DBusMessage *get_network_parameters(DBusConnection *conn, + DBusMessage *msg, void *user_data) +{ + struct connman_service *service = user_data; + if (service->pending != NULL) + return __connman_error_in_progress(msg); + + if (NULL != service->network) { + if (service->passphrase != NULL) + connman_network_set_string(service->network, + "WiFi.Passphrase", service->passphrase); + + if (__connman_stats_service_register(service) == 0) { + __connman_stats_get(service, FALSE, + &service->stats.data); + __connman_stats_get(service, TRUE, + &service->stats_roaming.data); + } + + __connman_network_get_network_parameters(service->network); + } + return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); +} +#endif + static void set_error(struct connman_service *service, enum connman_service_error error) { @@ -5251,6 +5293,9 @@ static const GDBusMethodTable service_methods[] = { { GDBUS_METHOD("GetUserFavorite", NULL, GDBUS_ARGS({ "value", "v" }), get_user_favorite) }, +#if defined TIZEN_TV_EXT + { GDBUS_METHOD("GetNetwork", NULL, NULL, get_network_parameters) }, +#endif { }, }; |