Fix to get encryption type 96/29596/2
authorChengyi Zhao <chengyi1.zhao@archermind.com>
Thu, 30 Oct 2014 03:19:55 +0000 (11:19 +0800)
committerChengyi Zhao <chengyi1.zhao@archermind.com>
Wed, 5 Nov 2014 02:43:13 +0000 (10:43 +0800)
EncryptionMode property is readonly, so we can't implement
wifi_ap_set_encryption_type now.

Change-Id: I90636c6f57a5cd1b9dad8675b060a4cc0f52fded
Signed-off-by: Chengyi Zhao <chengyi1.zhao@archermind.com>
src/include/common.h
src/include/wifi-internal.h
src/wifi-ap.c
src/wifi-internal.c

index 579c450604984bdb804f24ee70e6ec408c6a9b1f..0068b6ada393075a3ce20bbf07710b7d3b3e3d69 100644 (file)
@@ -257,8 +257,10 @@ typedef enum
  */
 typedef enum
 {
+       /** Not defined */
+       WLAN_ENC_MODE_UNKNOWN = 0x00,
        /** Encryption disabled */
-       WLAN_ENC_MODE_NONE = 0x01,
+       WLAN_ENC_MODE_NONE,
        /** WEP */
        WLAN_ENC_MODE_WEP,
        /** TKIP */
index df315ef5e14c12c51dd17ad2059d15b9b91d570a..49e3dd0b572ebe0f89add8358ef0ded02504e797 100644 (file)
@@ -113,6 +113,8 @@ net_wifi_connection_info_t *_wifi_get_conn_info(void);
 char *_wifi_get_ip_config_str(net_ip_config_type_t ip_config_type);
 net_ip_config_type_t _wifi_get_ip_config_type(const char *config);
 net_proxy_type_t _wifi_get_proxy_type(const char *proxy);
+wlan_encryption_mode_type_t _wifi_get_encryption_type
+                                       (const char *encryption_mode);
 struct connman_service *_wifi_get_service_h(wifi_ap_h ap_h);
 wifi_error_e _wifi_connman_lib_error2wifi_error(enum connman_lib_err err_type);
 
index ea3b059535c5d77f512cb30035c9c5e659e6b000..523ae619b7351d6516e02199c7e4f2db80860cee 100755 (executable)
@@ -929,6 +929,35 @@ EXPORT_API int wifi_ap_get_encryption_type(wifi_ap_h ap,
                return WIFI_ERROR_INVALID_PARAMETER;
        }
 
+       const char *encryption_mode;
+       struct connman_service *service = _wifi_get_service_h(ap);
+       if (!service)
+               return WIFI_ERROR_INVALID_PARAMETER;
+
+       encryption_mode = connman_service_get_encryption_mode(service);
+       if (encryption_mode == NULL)
+               return WIFI_ERROR_INVALID_OPERATION;
+
+       switch (_wifi_get_encryption_type(encryption_mode)) {
+       case WLAN_ENC_MODE_NONE:
+               *type = WIFI_ENCRYPTION_TYPE_NONE;
+               break;
+       case WLAN_ENC_MODE_WEP:
+               *type = WIFI_ENCRYPTION_TYPE_WEP;
+               break;
+       case WLAN_ENC_MODE_TKIP:
+               *type = WIFI_ENCRYPTION_TYPE_TKIP;
+               break;
+       case WLAN_ENC_MODE_AES:
+               *type = WIFI_ENCRYPTION_TYPE_AES;
+               break;
+       case WLAN_ENC_MODE_TKIP_AES_MIXED:
+               *type = WIFI_ENCRYPTION_TYPE_TKIP_AES_MIXED;
+               break;
+       default:
+               return WIFI_ERROR_OPERATION_FAILED;
+       }
+
        return WIFI_ERROR_NONE;
 }
 
@@ -940,7 +969,7 @@ EXPORT_API int wifi_ap_set_encryption_type(wifi_ap_h ap,
                return WIFI_ERROR_INVALID_PARAMETER;
        }
 
-       return WIFI_ERROR_NONE;
+       return WIFI_ERROR_INVALID_OPERATION;
 }
 
 EXPORT_API int wifi_ap_is_passphrase_required(wifi_ap_h ap, bool* required)
index 87d26f43f59b7788620ab761192d183b5fc0f714..009e97ff57d59351900109b77686578112064856 100755 (executable)
@@ -164,6 +164,27 @@ net_proxy_type_t _wifi_get_proxy_type(const char *proxy)
        return proxy_type;
 }
 
+wlan_encryption_mode_type_t _wifi_get_encryption_type(
+                                               const char *encryption_mode)
+{
+       wlan_encryption_mode_type_t encryption_mode_type;
+
+       if (!g_strcmp0(encryption_mode, "none"))
+               encryption_mode_type = WLAN_ENC_MODE_NONE;
+       else if (!g_strcmp0(encryption_mode, "wep"))
+               encryption_mode_type = WLAN_ENC_MODE_WEP;
+       else if (!g_strcmp0(encryption_mode, "tkip"))
+               encryption_mode_type = WLAN_ENC_MODE_TKIP;
+       else if (!g_strcmp0(encryption_mode, "aes"))
+               encryption_mode_type = WLAN_ENC_MODE_AES;
+       else if (!g_strcmp0(encryption_mode, "mixed"))
+               encryption_mode_type = WLAN_ENC_MODE_TKIP_AES_MIXED;
+       else
+               encryption_mode_type = WLAN_ENC_MODE_UNKNOWN;
+
+       return encryption_mode_type;
+}
+
 wifi_error_e _wifi_connman_lib_error2wifi_error(enum connman_lib_err err_type)
 {
        switch (err_type) {