X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fmanager.c;fp=src%2Fmanager.c;h=0000f784b71cef1dc590d3285c2ce9b05b78b956;hb=bf0e619ef451bde3568c1af509ccb12cbda2ff93;hp=3bf8f4e4da571c6ce679510644277365403ae949;hpb=f89b473dfd8e916314b534b3397442f8c869c783;p=platform%2Fupstream%2Fconnman.git diff --git a/src/manager.c b/src/manager.c old mode 100644 new mode 100755 index 3bf8f4e..0000f78 --- a/src/manager.c +++ b/src/manager.c @@ -41,6 +41,9 @@ static DBusMessage *get_properties(DBusConnection *conn, DBusMessageIter array, dict; dbus_bool_t offlinemode; const char *str; +#if defined TIZEN_EXT + dbus_bool_t autoconnectmode; +#endif DBG("conn %p", conn); @@ -63,6 +66,12 @@ static DBusMessage *get_properties(DBusConnection *conn, connman_dbus_dict_append_basic(&dict, "SessionMode", DBUS_TYPE_BOOLEAN, &sessionmode); +#if defined TIZEN_EXT + autoconnectmode = __connman_service_get_auto_connect_mode(); + connman_dbus_dict_append_basic(&dict, "AutoConnectMode", + DBUS_TYPE_BOOLEAN, + &autoconnectmode); +#endif connman_dbus_dict_close(&array, &dict); @@ -109,7 +118,17 @@ static DBusMessage *set_property(DBusConnection *conn, return __connman_error_invalid_arguments(msg); dbus_message_iter_get_basic(&value, &sessionmode); +#if defined TIZEN_EXT + } else if (g_str_equal(name, "AutoConnectMode") == TRUE) { + bool automode; + if (type != DBUS_TYPE_BOOLEAN) + return __connman_error_invalid_arguments(msg); + + dbus_message_iter_get_basic(&value, &automode); + + __connman_service_set_auto_connect_mode(automode); +#endif } else return __connman_error_invalid_property(msg); @@ -126,7 +145,9 @@ static DBusMessage *get_technologies(DBusConnection *conn, { DBusMessage *reply; +#if !defined TIZEN_EXT DBG(""); +#endif reply = dbus_message_new_method_return(msg); if (!reply) @@ -195,6 +216,80 @@ static DBusMessage *get_services(DBusConnection *conn, return reply; } +#if defined TIZEN_EXT +static DBusMessage *get_interfaces(DBusConnection *conn, DBusMessage *msg, void *data) +{ + DBusMessage *reply; + DBusMessageIter iter, array; + const char *default_interface = connman_setting_get_string("DefaultWifiInterface"); + + DBG("DefaultWifiInterface %s", default_interface); + + reply = dbus_message_new_method_return(msg); + if (!reply) + return NULL; + + dbus_message_iter_init_append(reply, &iter); + dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, + DBUS_TYPE_STRING_AS_STRING, &array); + + dbus_message_iter_append_basic(&array, + DBUS_TYPE_STRING, &default_interface); + + __connman_technology_append_interfaces(&array, + CONNMAN_SERVICE_TYPE_WIFI, default_interface); + + dbus_message_iter_close_container(&iter, &array); + return reply; +} + +static DBusMessage *get_default_service(DBusConnection *conn, + DBusMessage *msg, void *data) +{ + struct connman_service *service = connman_service_get_default_connection(); + DBG("service %p", service); + + return connman_service_create_dbus_service_reply(msg, service); +} + +static DBusMessage *get_connected_service(DBusConnection *conn, + DBusMessage *msg, void *data) +{ + const char *ifname; + struct connman_service *service; + + dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &ifname, + DBUS_TYPE_INVALID); + + service = connman_service_get_connected_service(ifname); + DBG("Interface Name %s, service %p", ifname, service); + + return connman_service_create_dbus_service_reply(msg, service); +} +#endif + +#if defined TIZEN_EXT_INS +static void append_ins_structs(DBusMessageIter *iter, void *user_data) +{ + __connman_ins_list_struct(iter); +} + +static DBusMessage *get_ins(DBusConnection *conn, + DBusMessage *msg, void *data) +{ + DBusMessage *reply; + + reply = dbus_message_new_method_return(msg); + if (!reply) + return NULL; + + __connman_dbus_append_objpath_dict_array(reply, + append_ins_structs, NULL); + + return reply; +} +#endif + static void append_peer_structs(DBusMessageIter *iter, void *user_data) { __connman_peer_list_struct(iter); @@ -521,6 +616,114 @@ error: } +#if defined TIZEN_EXT_WIFI_MESH +static void append_mesh_peer_structs(DBusMessageIter *iter, void *user_data) +{ + __connman_mesh_peer_list_struct(iter); +} + +static DBusMessage *get_mesh_peers(DBusConnection *conn, + DBusMessage *msg, void *data) +{ + DBusMessage *reply; + + reply = dbus_message_new_method_return(msg); + if (!reply) + return NULL; + + __connman_dbus_append_objpath_dict_array(reply, + append_mesh_peer_structs, NULL); + return reply; +} + +static DBusMessage *get_connected_mesh_peers(DBusConnection *conn, + DBusMessage *msg, void *data) +{ + DBusMessage *reply; + DBusMessageIter iter, array; + + reply = dbus_message_new_method_return(msg); + if (!reply) + return NULL; + + dbus_message_iter_init_append(reply, &iter); + dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, + DBUS_STRUCT_BEGIN_CHAR_AS_STRING + DBUS_TYPE_ARRAY_AS_STRING + DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING + DBUS_TYPE_STRING_AS_STRING + DBUS_TYPE_VARIANT_AS_STRING + DBUS_DICT_ENTRY_END_CHAR_AS_STRING + DBUS_STRUCT_END_CHAR_AS_STRING, &array); + + __connman_mesh_connected_peer_list_struct(&array); + dbus_message_iter_close_container(&iter, &array); + return reply; +} + +static DBusMessage *get_disconnected_mesh_peers(DBusConnection *conn, + DBusMessage *msg, void *data) +{ + DBusMessage *reply; + DBusMessageIter iter, array; + + reply = dbus_message_new_method_return(msg); + if (!reply) + return NULL; + + dbus_message_iter_init_append(reply, &iter); + dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, + DBUS_STRUCT_BEGIN_CHAR_AS_STRING + DBUS_TYPE_ARRAY_AS_STRING + DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING + DBUS_TYPE_STRING_AS_STRING + DBUS_TYPE_VARIANT_AS_STRING + DBUS_DICT_ENTRY_END_CHAR_AS_STRING + DBUS_STRUCT_END_CHAR_AS_STRING, &array); + + __connman_mesh_disconnected_peer_list_struct(&array); + dbus_message_iter_close_container(&iter, &array); + return reply; +} + +static DBusMessage *mesh_add_peer(DBusConnection *conn, + DBusMessage *msg, void *user_data) +{ + const char *addr; + int err; + + dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &addr, + DBUS_TYPE_INVALID); + + DBG("Address %s", addr); + + err = __connman_mesh_change_peer_status(msg, addr, CONNMAN_MESH_PEER_ADD); + if (err < 0) + return __connman_error_failed(msg, -err); + + return NULL; +} + +static DBusMessage *mesh_remove_peer(DBusConnection *conn, + DBusMessage *msg, void *user_data) +{ + const char *addr; + int err; + + dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &addr, + DBUS_TYPE_INVALID); + + DBG("Address %s", addr); + + err = __connman_mesh_change_peer_status(msg, addr, + CONNMAN_MESH_PEER_REMOVE); + if (err < 0) + return __connman_error_failed(msg, -err); + + return NULL; +} +#endif + static const GDBusMethodTable manager_methods[] = { { GDBUS_METHOD("GetProperties", NULL, GDBUS_ARGS({ "properties", "a{sv}" }), @@ -537,6 +740,23 @@ static const GDBusMethodTable manager_methods[] = { { GDBUS_METHOD("GetServices", NULL, GDBUS_ARGS({ "services", "a(oa{sv})" }), get_services) }, +#if defined TIZEN_EXT + { GDBUS_METHOD("GetInterfaces", + NULL, GDBUS_ARGS({ "interface_list", "as" }), + get_interfaces) }, + { GDBUS_METHOD("GetDefaultService", + NULL, GDBUS_ARGS({ "service", "oa{sv}" }), + get_default_service) }, + { GDBUS_METHOD("GetConnectedService", + GDBUS_ARGS({ "ifname", "s" }), + GDBUS_ARGS({ "service", "oa{sv}" }), + get_connected_service) }, +#endif +#if defined TIZEN_EXT_INS + { GDBUS_METHOD("GetINS", + NULL, GDBUS_ARGS({ "services", "a(oa{sv})" }), + get_ins) }, +#endif { GDBUS_METHOD("GetPeers", NULL, GDBUS_ARGS({ "peers", "a(oa{sv})" }), get_peers) }, @@ -583,6 +803,21 @@ static const GDBusMethodTable manager_methods[] = { { GDBUS_METHOD("UnregisterPeerService", GDBUS_ARGS({ "specification", "a{sv}" }), NULL, unregister_peer_service) }, +#if defined TIZEN_EXT_WIFI_MESH + { GDBUS_METHOD("GetMeshPeers", + NULL, GDBUS_ARGS({ "peers", "a(oa{sv})" }), + get_mesh_peers) }, + { GDBUS_METHOD("GetConnectedMeshPeers", + NULL, GDBUS_ARGS({ "peers", "a(a{sv})" }), + get_connected_mesh_peers) }, + { GDBUS_METHOD("GetDisconnectedMeshPeers", + NULL, GDBUS_ARGS({ "peers", "a(a{sv})" }), + get_disconnected_mesh_peers) }, + { GDBUS_ASYNC_METHOD("MeshAddPeer", GDBUS_ARGS({ "address", "s" }), NULL, + mesh_add_peer) }, + { GDBUS_ASYNC_METHOD("MeshRemovePeer", GDBUS_ARGS({ "address", "s" }), NULL, + mesh_remove_peer) }, +#endif { }, };