Modify profile struct
authorChengyi Zhao <chengyi1.zhao@archermind.com>
Tue, 17 Jun 2014 04:21:38 +0000 (12:21 +0800)
committerZhang zhengguang <zhengguang.zhang@intel.com>
Thu, 26 Jun 2014 06:01:40 +0000 (14:01 +0800)
include/net_wifi_private.h
src/libnetwork.c
src/net_wifi_ap.c

index a4d52f777141b4fda4578902838bb52b701a9615..6a2adc2a550dbd250209c47d2a72e1ee1d826226 100644 (file)
@@ -79,6 +79,16 @@ typedef struct {
        wlan_security_info_t security_info;
 } net_wifi_connection_info_t;
 
+/**
+ * This is the profile structure exposed to applications.
+ */
+typedef struct
+{
+       /** Profile name */
+       char *essid;
+} net_profile_info_t;
+
+
 bool _wifi_libnet_init(void);
 bool _wifi_libnet_deinit(void);
 int _wifi_activate(wifi_activated_cb callback, void *user_data);
index cf926aa0ce92546b1f10f877c27fae704c854783..5b2c2ca805fe107d38a6ddb9eb9df18047fe3311 100755 (executable)
@@ -488,7 +488,11 @@ static int __net_dbus_connect_service(wifi_ap_h ap_h,
                const net_wifi_connect_service_info_t *wifi_connection_info)
 {
        net_err_t Error = NET_ERR_NONE;
-       struct connman_service *service = ap_h;
+
+       struct connman_service *service =
+               connman_get_service(((net_profile_info_t *) ap_h)->essid);
+       if (!service)
+               return NET_ERR_INVALID_PARAM;
 
        if (g_strcmp0(wifi_connection_info->security, "ieee8021x") == 0) {
                /* Create the EAP config file
@@ -1032,7 +1036,11 @@ int _wifi_deactivate(wifi_deactivated_cb callback, void *user_data)
 
 bool _wifi_libnet_check_ap_validity(wifi_ap_h ap_h)
 {
-       struct connman_service *service = ap_h;
+       struct connman_service *service =
+               connman_get_service(((net_profile_info_t *) ap_h)->essid);
+       if (!service)
+               return NET_ERR_INVALID_PARAM;
+
        const char *name = connman_service_get_name(service);
 
        if (!name)
@@ -1048,7 +1056,9 @@ void _wifi_libnet_add_to_ap_list(wifi_ap_h ap_h)
 
 void _wifi_libnet_remove_from_ap_list(wifi_ap_h ap_h)
 {
-       ap_handle_list = g_slist_remove(ap_handle_list, ap_h);
+       net_profile_info_t *ap_info = ap_h;
+       ap_handle_list = g_slist_remove(ap_handle_list, ap_info);
+       g_free(ap_info->essid);
        g_free(ap_h);
 }
 
@@ -1212,7 +1222,14 @@ int _wifi_libnet_get_connected_profile(wifi_ap_h *ap)
                return WIFI_ERROR_NO_CONNECTION;
        }
 
-       *ap = ap_h;
+       *ap = g_try_malloc0(sizeof(net_profile_info_t));
+       if (*ap == NULL)
+               return WIFI_ERROR_OUT_OF_MEMORY;
+
+       ((net_profile_info_t *) (*ap))->essid =
+                               g_strdup(connman_service_get_path(ap_h));
+
+       _wifi_libnet_add_to_ap_list(*ap);
 
        return WIFI_ERROR_NONE;
 }
@@ -1317,7 +1334,11 @@ int _wifi_libnet_close_profile(wifi_ap_h ap_h, wifi_disconnected_cb callback, vo
 
        __libnet_set_disconnected_cb(callback, user_data);*/
 
-       struct connman_service* service = ap_h;
+       struct connman_service *service =
+               connman_get_service(((net_profile_info_t *) ap_h)->essid);
+       if (!service)
+               return NET_ERR_INVALID_PARAM;
+
        __libnet_set_disconnected_cb(callback, user_data);
        connman_service_disconnect(service, connman_service_disconnect_cb, NULL);
 
@@ -1343,7 +1364,10 @@ int _wifi_libnet_connect_with_wps(wifi_ap_h ap_h, wifi_connected_cb callback, vo
        __libnet_set_connected_cb(callback, user_data);*/
 
        int rv = NET_ERR_NONE;
-       struct connman_service* service = ap_h;
+       struct connman_service *service =
+               connman_get_service(((net_profile_info_t *) ap_h)->essid);
+       if (!service)
+               return NET_ERR_INVALID_PARAM;
 
        __libnet_set_connected_cb(callback, user_data);
 
@@ -1372,7 +1396,10 @@ int _wifi_libnet_forget_ap(wifi_ap_h ap)
                return WIFI_ERROR_OPERATION_FAILED;*/
 
        int rv = NET_ERR_NONE;
-       struct connman_service* service = ap;
+       struct connman_service *service =
+               connman_get_service(((net_profile_info_t *) ap)->essid);
+       if (!service)
+               return NET_ERR_INVALID_PARAM;
 
        connman_service_remove(service);
 
index 33340d8ff101fbd96f552b1c9d7e731f1e780c3b..c9676cd3b6b70104035678690e6df48164120b63 100755 (executable)
        return ipstr;
 }*/
 
-/*static void __wifi_init_ap(net_profile_info_t *profile_info, const char *essid)
+static void __wifi_init_ap(net_profile_info_t *profile_info, const char *essid)
 {
-       profile_info->profile_type = NET_DEVICE_WIFI;
+/*     profile_info->profile_type = NET_DEVICE_WIFI;
        profile_info->ProfileState = NET_STATE_TYPE_IDLE;
        profile_info->ProfileInfo.Wlan.net_info.IpConfigType = NET_IP_CONFIG_TYPE_OFF;
        profile_info->ProfileInfo.Wlan.net_info.ProxyMethod = NET_PROXY_TYPE_DIRECT;
        profile_info->ProfileInfo.Wlan.wlan_mode = NETPM_WLAN_CONNMODE_AUTO;
        profile_info->ProfileInfo.Wlan.security_info.sec_mode = WLAN_SEC_MODE_NONE;
-       profile_info->ProfileInfo.Wlan.security_info.enc_mode = WLAN_ENC_MODE_NONE;
-       g_strlcpy(profile_info->ProfileInfo.Wlan.essid, essid, NET_WLAN_ESSID_LEN+1);
-}*/
+       profile_info->ProfileInfo.Wlan.security_info.enc_mode = WLAN_ENC_MODE_NONE;*/
+       profile_info->essid = g_strdup(essid);
+}
 
 wifi_connection_state_e _wifi_convert_to_ap_state(
                                net_state_type_t state)
@@ -82,14 +82,14 @@ EXPORT_API int wifi_ap_create(const char* essid, wifi_ap_h* ap)
                return WIFI_ERROR_INVALID_PARAMETER;
        }
 
-/*     net_profile_info_t *ap_info = g_try_malloc0(sizeof(net_profile_info_t));
+       net_profile_info_t *ap_info = g_try_malloc0(sizeof(net_profile_info_t));
        if (ap_info == NULL)
                return WIFI_ERROR_OUT_OF_MEMORY;
 
        __wifi_init_ap(ap_info, essid);
 
        _wifi_libnet_add_to_ap_list((wifi_ap_h)ap_info);
-       *ap = (wifi_ap_h)ap_info;*/
+       *ap = (wifi_ap_h)ap_info;
 
        return WIFI_ERROR_NONE;
 }
@@ -113,14 +113,14 @@ EXPORT_API int wifi_ap_clone(wifi_ap_h* cloned_ap, wifi_ap_h origin)
                return WIFI_ERROR_INVALID_PARAMETER;
        }
 
-       /*net_profile_info_t *ap_info = g_try_malloc0(sizeof(net_profile_info_t));
+       net_profile_info_t *ap_info = g_try_malloc0(sizeof(net_profile_info_t));
        if (ap_info == NULL)
                return WIFI_ERROR_OUT_OF_MEMORY;
 
        memcpy(ap_info, origin, sizeof(net_profile_info_t));
 
        _wifi_libnet_add_to_ap_list((wifi_ap_h)ap_info);
-       *cloned_ap = (wifi_ap_h)ap_info;*/
+       *cloned_ap = (wifi_ap_h)ap_info;
 
        return WIFI_ERROR_NONE;
 }