summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaehyun Kim <jeik01.kim@samsung.com>2016-08-12 02:18:54 -0700
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>2016-08-12 02:18:54 -0700
commitdda8448367f07dd17e3e318d2362680e4db32e7d (patch)
tree9961eb0188d8105154025b3b512dad9e9eed96a0
parent28649cb5bad75b5886accb587e855b81ee02838f (diff)
parent73cb61d002282e2708d798ddc94a2eb5bf9a6fc8 (diff)
downloadconnman-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-xsrc/connman.h3
-rwxr-xr-xsrc/network.c61
-rwxr-xr-xsrc/service.c45
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
{ },
};