WifiAp module is added.
authorKim Youngjin <yj21c.kim@samsung.com>
Tue, 14 Apr 2015 00:14:06 +0000 (09:14 +0900)
committerKim Youngjin <yj21c.kim@samsung.com>
Tue, 14 Apr 2015 00:14:56 +0000 (09:14 +0900)
Change-Id: I90ade7e2875582b9cf0b54850064568e757dfa62
Signed-off-by: Kim Youngjin <yj21c.kim@samsung.com>
src/settingviewmgr.cpp
src/view_sublist.cpp
ug/include/WifiMgr.h
ug/network/include/NetworkMainView.h
ug/network/include/WifiPasscodeView.h
ug/network/include/common.h
ug/network/src/IpSettingView.cpp
ug/network/src/NetworkMainView.cpp
ug/network/src/WifiPasscodeView.cpp
ug/proxy/src/ProxyMainView.cpp
ug/src/WifiMgr.cpp

index 674f3bf..eff41e7 100644 (file)
@@ -327,20 +327,19 @@ bool CSettingMgr::Initialize(Evas_Object *win)
        ASSERT(!instance);
        ASSERT(win);
 
-       struct settingmgr_data *data;
-       CTimeoutHandler *handler;
+       //struct settingmgr_data *data;
+       //CTimeoutHandler *handler;
 
        _CREATE_BEGIN{
                _CHECK(instance = new CSettingMgr);
                _CHECK(instance->m = new SSettingMgr);
-               _CHECK(data = viewmgr_data_init());
-               _CHECK(handler = new CTimeoutHandler);
-               _CHECK(handler->Create(TIMEOUT_SECS));
-
-
-               _CHECK_FAIL{ handler->Destroy(); }
-               _CHECK_FAIL{ delete handler; }
-               _CHECK_FAIL{ viewmgr_data_fini(data); }
+               _CHECK(instance->m->data = viewmgr_data_init());
+               _CHECK(instance->m->handler = new CTimeoutHandler);
+               _CHECK(instance->m->handler->Create(TIMEOUT_SECS));
+               
+               _CHECK_FAIL{ instance->m->handler->Destroy(); }
+               _CHECK_FAIL{ delete instance->m->handler; }
+               _CHECK_FAIL{ viewmgr_data_fini(instance->m->data); }
                _CHECK_FAIL{ delete instance->m; }
                _CHECK_FAIL{ delete instance; instance = NULL; }
        } _CREATE_END_AND_CATCH{ return false; }
@@ -362,8 +361,6 @@ bool CSettingMgr::Initialize(Evas_Object *win)
 
        instance->m->win = win;
        instance->m->depth = 0;
-       instance->m->data = data;
-       instance->m->handler   = handler;
        instance->m->is_freeze = EINA_FALSE;
        instance->m->view_list = NULL;
        instance->m->item_path = NULL;
index 1f5b6f2..25dfb3c 100644 (file)
@@ -410,9 +410,10 @@ bool CSublistView::m_DrawSublist(void)
 {
        _DBG();
        Eina_List *list;
-       double ratio, w;
-       int cnt, x, y, height, screen_h;
-       struct obj_geometry_data *param;
+       //double ratio, w;
+       int cnt;
+       //int x, y, height, screen_h;
+       //struct obj_geometry_data *param;
 
        if (!m->sublist_view || !m->geometry_data) {
                _ERR("Invalid argument\n");
index 3a1fa1d..ceaea96 100644 (file)
@@ -4,6 +4,57 @@
 #include "UgCommon.h"
 #include "wifi.h"
 
+
+class CWifiAp {
+       friend class CWifiMgr;
+private:
+       wifi_ap_h m_handle;
+
+private:
+       bool m_CheckErr(const char *func, int ret);
+
+protected:
+       void t_SetHandle(wifi_ap_h handle);
+
+public:
+       CWifiAp(wifi_ap_h handle);
+       virtual ~CWifiAp();
+
+       wifi_ap_h Handle(void);
+
+       bool AllocConnectedAp(void);
+       void Destroy(void);
+
+       bool GetEssid(char *essid, int size);
+       bool GetConnectionState(wifi_connection_state_e *state);
+       bool GetSecurityType(wifi_security_type_e *type);
+       bool SetPassPhrase(const char *passcode);
+
+       bool Connect(void(*wifi_connected_cb)(wifi_error_e err, void *data), void *data);
+       bool SetIpType(wifi_ip_config_type_e type);
+
+       bool GetIp(char *ip, int size);
+       bool GetSubnetMask(char *submask);
+       bool GetGateway(char *gateway);
+       bool GetDNS(char *dns);
+
+       bool SetIp(char *ip);
+       bool SetSubnetMask(char *submask);
+       bool SetGateway(char *gateway);
+       bool SetDNS(char *dns);
+
+       bool CloneAP(wifi_ap_h *cloned_ap, wifi_ap_h origin);
+
+       static bool ForgetAP(void);
+
+       bool SetProxyType(EProxyMethod pm);
+       bool GetProxyType(EProxyMethod *pm);
+
+       bool SetProxyAddr(const char *addr);
+       bool GetProxyAddr(char **addr);
+};
+
+
 class CWifiMgr {
 private:
        static CWifiMgr *instance;
@@ -18,40 +69,15 @@ public:
        static void Finalize(void);
        static CWifiMgr * GetInstance(void);
 
-       bool Activate(void(*ActivatedCb)(wifi_error_e err, void *data), void *data);
+       bool Activate(void(*cbActivated)(wifi_error_e err, void *data), void *data);
 
        bool IsActivated(bool *activated);
-       bool GetConnectedAP(wifi_ap_h *ap);
-
-       bool DestroyAP(wifi_ap_h ap);
-       bool CloneAP(wifi_ap_h *cloned_ap, wifi_ap_h origin);
 
-       bool RegisterScanCallback(void(*ScanFinishedCb)(wifi_error_e err, void *data), void *data);
-       bool RegisterFoundAPCallback(bool(*FoundCb)(wifi_ap_h ap, void *data), void *data);
+       bool Scan(void (*cbFinish)(wifi_error_e err, void *data), void *data);
+       bool FoundAps(bool(*FoundCb)(CWifiAp *ap, void *data), void *data);
 
-       bool SetProxyType(EProxyMethod pm);
-       bool GetProxyType(EProxyMethod *pm);
-       bool SetProxyAddr(const char *ip);
-       bool GetProxyAddr(char **ip);
-       bool GetESSID(wifi_ap_h ap, char *essid);
-       bool GetConnectionState(wifi_ap_h ap, wifi_connection_state_e *state);
-       bool GetSecurityType(wifi_ap_h ap, wifi_security_type_e *type);
-       bool ForgetAP(void);
-       bool SetPassPhrase(wifi_ap_h ap, const char *passcode);
-
-       bool Connect(wifi_ap_h ap, void(*wifi_connected_cb)(wifi_error_e err, void *data), void *data);
-       bool SetIpType(wifi_ap_h ap, wifi_ip_config_type_e type);
-
-       bool GetIp(wifi_ap_h ap, char *ip);
-       bool GetSubnetMask(wifi_ap_h ap, char *submask);
-       bool GetGateway(wifi_ap_h ap, char *gateway);
-       bool GetDNS(wifi_ap_h ap, char *dns);
-
-       bool SetIp(wifi_ap_h ap, char *ip);
-       bool SetSubnetMask(wifi_ap_h ap, char *submask);
-       bool SetGateway(wifi_ap_h ap, char *gateway);
-       bool SetDNS(wifi_ap_h ap, char *dns);
-       const char * GetErrorMsg(wifi_error_e err);
+       static const char * ErrorMsg(wifi_error_e err);
 };
 
+
 #endif /* __WIFIMGR_H__ */
index 6b3a01e..961c900 100644 (file)
@@ -17,6 +17,9 @@
 #ifndef __NETWORK_MAIN_VIEW_H__
 #define __NETWORK_MAIN_VIEW_H__
 
+
+#include "WifiMgr.h"
+
 class CNetworkMainView : public CBaseView {
 private :
        struct SNetworkMainView *m;
@@ -24,11 +27,11 @@ private :
        static void sm_CbGenlistItemSelected(void *data, Evas_Object *obj, void *ei);
        static Eina_Bool sm_CbSelectConnected(void *data);
 
-       static bool sm_CbWifiFoundAP(wifi_ap_h ap, void *data);
-       void m_OnWifiFoundAP(wifi_ap_h ap);
+       static bool sm_CbWifiFoundAP(CWifiAp *ap, void *data);
+       bool m_OnWifiFoundAP(CWifiAp *ap);
 
        static void sm_CbWifiScanRequest(wifi_error_e err, void *data);
-       void m_OnWifiScanRequest(wifi_error_e err, void *data);
+       void m_OnWifiScanRequest(wifi_error_e err);
 
        static void sm_CbConnectionOnlineAsync(bool state, void *data);
        void m_OnConnectionOnlineAync(bool state);
index b3746f2..9bc399b 100644 (file)
@@ -8,8 +8,8 @@ private :
        static void sm_CbWifiConnected(wifi_error_e err, void *data);
        void m_OnWifiConnected(wifi_error_e err);
 
-       static bool sm_CbWifiFoundAP(wifi_ap_h ap, void *data);
-       void m_OnWifiFoundAP(wifi_ap_h ap);
+       static bool sm_CbWifiFoundAP(CWifiAp *ap, void *data);
+       void m_OnWifiFoundAP(CWifiAp *ap);
 
        static void sm_CbWifiScanRequest(wifi_error_e err, void *data);
        void m_OnWifiScanRequest(wifi_error_e err, void *data);
index e640778..06b9c4c 100644 (file)
 #ifndef __NETWORK_COMMON_H__
 #define __NETWORK_COMMON_H__
 
+
 #include <wifi.h>
+#include "WifiMgr.h"
+
 
 #define IP_STRING_MAX_SIZE 20
 #define MAX_NAME_SIZE 256
@@ -87,7 +90,7 @@ struct wifi_ap_info {
        wifi_eap_type_e eap_type;
        wifi_eap_auth_type_e eap_auth_type;
 
-       wifi_ap_h ap;
+       CWifiAp *ap;
        void *user_data;
 };
 #endif /* __NETWORK_COMMON_H__ */
index da95996..8ad9fa0 100644 (file)
@@ -75,7 +75,7 @@ struct SIpSettingView {
        enum connection_setting_enum cur_type;
        enum network_type_enum network_type;
 
-       wifi_ap_h ap;
+       CWifiAp *ap;
 
        char profile_name[MAX_NAME_SIZE];
 
@@ -186,22 +186,22 @@ bool CIpSettingView::m_GetCurIpInfo(void)
                }
        } else if (m->network_type == TYPE_WIRELESS) {
                if (m->ip_mode == MODE_AUTO) {
-                       result = m->pWifiMgr->GetIp(m->ap, m->info.ip_addr);
+                       result = m->ap->GetIp(m->info.ip_addr, sizeof(m->info.ip_addr));
                        if(result != true) {
                                _ERR("wifi_mgr_get_ip_info() failed.");
                                return false;
                        }
-                       result = m->pWifiMgr->GetSubnetMask(m->ap, m->info.submask);
+                       result = m->ap->GetSubnetMask(m->info.submask);
                        if(result != true) {
                                _ERR("wifi_mgr_get_ip_info() failed.");
                                return false;
                        }
-                       result = m->pWifiMgr->GetGateway(m->ap, m->info.gateway);
+                       result = m->ap->GetGateway(m->info.gateway);
                        if(result != true) {
                                _ERR("wifi_mgr_get_ip_info() failed.");
                                return false;
                        }
-                       result = m->pWifiMgr->GetDNS(m->ap, m->info.dns);
+                       result = m->ap->GetDNS(m->info.dns);
                        if(result != true) {
                                _ERR("wifi_mgr_get_ip_info() failed.");
                                return false;
@@ -928,7 +928,7 @@ bool CIpSettingView::m_ConfigNetworkDynamic(void)
 
                break;
        case TYPE_WIRELESS:
-               result = m->pWifiMgr->SetIpType(m->ap, WIFI_IP_CONFIG_TYPE_DYNAMIC);
+               result = m->ap->SetIpType(WIFI_IP_CONFIG_TYPE_DYNAMIC);
                if(result != false) {
                        _ERR("connection_mgr_ip_dynamic_config() failed.");
                        return false;
@@ -980,22 +980,22 @@ bool CIpSettingView::m_ConfigNetworkManually(void)
                vconf_set_str(WIRED_DNS_KEY, m->info.dns);
                break;
        case TYPE_WIRELESS:
-               result = m->pWifiMgr->SetIp(m->ap, m->info.ip_addr);
+               result = m->ap->SetIp(m->info.ip_addr);
                if(result != true) {
                        _ERR("set wifi dns config failed.");
                        return false;
                }
-               result = m->pWifiMgr->SetSubnetMask(m->ap, m->info.submask);
+               result = m->ap->SetSubnetMask(m->info.submask);
                if(result != true) {
                        _ERR("set wifi dns config failed.");
                        return false;
                }
-               result = m->pWifiMgr->SetGateway(m->ap, m->info.gateway);
+               result = m->ap->SetGateway(m->info.gateway);
                if(result != true) {
                        _ERR("set wifi dns config failed.");
                        return false;
                }
-               result = m->pWifiMgr->SetDNS(m->ap, m->info.dns);
+               result = m->ap->SetDNS(m->info.dns);
                if(result != true) {
                        _ERR("set wifi dns config failed.");
                        return false;
index dcbb21d..49edad3 100644 (file)
@@ -52,7 +52,7 @@ struct SNetworkMainView {
 
        char profile_name[MAX_NAME_SIZE];
 
-       wifi_ap_h ap;
+       CWifiAp *ap;
        char *ap_name;
        char *ap_pwd;
 
@@ -427,11 +427,11 @@ void CNetworkMainView::sm_CbGenlistItemSelected(void *data, Evas_Object *obj, vo
        }
 
        if (priv->ap) {
-               priv->pWifiMgr->DestroyAP(priv->ap);
+               delete priv->ap;
                priv->ap = NULL;
        }
 
-       priv->pWifiMgr->CloneAP(&priv->ap, ap_info->ap);
+       priv->ap = new CWifiAp(ap_info->ap->Handle());
        if (!priv->ap) {
                _ERR("ap clone failed.");
                return;
@@ -468,25 +468,20 @@ Eina_Bool CNetworkMainView::sm_CbSelectConnected(void *data)
 }
 
 
-bool CNetworkMainView::sm_CbWifiFoundAP(wifi_ap_h ap, void *data)
+bool CNetworkMainView::sm_CbWifiFoundAP(CWifiAp *ap, void *data)
 {
-       _DBG();
-       CNetworkMainView *instance = NULL;
+       CNetworkMainView *root = (CNetworkMainView*)data;
+       bool ret = false;
 
-       if (!data) {
-               _ERR("data is NULL.");
-               return true;
-       }
+       if (root)
+               ret = root->m_OnWifiFoundAP(ap);
 
-       instance = (CNetworkMainView *) data;
-       instance->m_OnWifiFoundAP(ap);
-       return true;
+       return ret;
 }
 
 
-void CNetworkMainView::m_OnWifiFoundAP(wifi_ap_h ap)
+bool CNetworkMainView::m_OnWifiFoundAP(CWifiAp *ap)
 {
-       _DBG();
        bool ret;
        bool state;
        struct wifi_ap_info *ap_info;
@@ -495,34 +490,31 @@ void CNetworkMainView::m_OnWifiFoundAP(wifi_ap_h ap)
        ret = m->pWifiMgr->IsActivated(&state);
        if (ret != true || state == 0) {
                _ERR("failt to wifi_is_activated");
-               return ;
+               return false;
        }
 
-       ap_info = (struct wifi_ap_info *) calloc(1, sizeof(*ap_info));
+       ap_info = new wifi_ap_info;
        if (!ap_info) {
                _ERR("calloc failed");
-               return ;
+               return false;
        }
 
-       ret = m->pWifiMgr->GetESSID(ap, ap_info->essid);
-       if(ret != true) {
+       if (!ap->GetEssid(ap_info->essid, sizeof(ap_info->essid))) {
                _ERR("Fail to get info");
-               return ;
+               return false;
        }
 
-       ret = m->pWifiMgr->GetConnectionState(ap, &ap_info->state);
-       if(ret != true) {
+       if (!ap->GetConnectionState(&ap_info->state)) {
                _ERR("Fail to get info");
-               return ;
+               return false;
        }
 
-       ret = m->pWifiMgr->GetSecurityType(ap, &ap_info->secure_type);
-       if(ret != true) {
+       if (!ap->GetSecurityType(&ap_info->secure_type)) {
                _ERR("Fail to get info");
-               return ;
+               return false;
        }
 
-       ap_info->ap = ap;
+       ap_info->ap = new CWifiAp(ap->Handle());
        ap_info->user_data = m;
        m->ap_list = eina_list_append(m->ap_list, ap_info);
 
@@ -534,47 +526,45 @@ void CNetworkMainView::m_OnWifiFoundAP(wifi_ap_h ap)
                item = elm_genlist_item_append(m->genlist, m->lock_ic, ap_info, NULL, ELM_GENLIST_ITEM_NONE, sm_CbGenlistItemSelected, m);
        if (!item) {
                _ERR("genlist append item failed.");
-               return ;
+               return false;
        }
 
        if (ap_info->state == WIFI_CONNECTION_STATE_CONNECTED) {
                m->last_item = item;
                if (m->ap) {
-                       ret = m->pWifiMgr->DestroyAP(m->ap);
-                       if(ret != true) {
-                               _ERR("Fail to destroy AP");
-                       }
+                       delete m->ap;
                        m->ap = NULL;
                }
 
-               ret = m->pWifiMgr->CloneAP(&m->ap, ap);
-               if(ret != true) {
+               m->ap = new CWifiAp(ap->Handle());
+               if (!m->ap) {
                        _ERR("Fail to clone AP");
                }
 
                m->timer = ecore_timer_add(TIMER_INTERNAL, sm_CbSelectConnected, m);
                if (!m->timer) {
                        _ERR("add timer failed.");
-                       return ;
+                       return false;
                }
        }
+
+       return false;
 }
 
 
 void CNetworkMainView::sm_CbWifiScanRequest(wifi_error_e err, void *data)
 {
-       _DBG();
-       CNetworkMainView *instance = NULL;
-       instance = (CNetworkMainView *) data;
-       instance->m_OnWifiScanRequest(err, data);
+       CNetworkMainView *root = (CNetworkMainView*)data;
+       if (root)
+               root->m_OnWifiScanRequest(err);
 }
 
 
-void CNetworkMainView::m_OnWifiScanRequest(wifi_error_e err, void *data)
+void CNetworkMainView::m_OnWifiScanRequest(wifi_error_e err)
 {
        _DBG();
        bool ret = false;
-       ret = m->pWifiMgr->RegisterFoundAPCallback( sm_CbWifiFoundAP, data);
+       ret = m->pWifiMgr->FoundAps(sm_CbWifiFoundAP, this);
        if (ret != true) {
                _ERR("wifi_mgr_foreach_found_aps() failed.");
        }
@@ -645,11 +635,11 @@ void CNetworkMainView::m_OnWifiActivated(wifi_error_e err)
        bool ret;
 
        if (err != WIFI_ERROR_NONE) {
-               _ERR("Wi-Fi Activation Failed! error == %s", m->pWifiMgr->GetErrorMsg(err));
+               _ERR("Wi-Fi Activation Failed! error == %s", CWifiMgr::ErrorMsg(err));
                return;
        }
 
-       ret = m->pWifiMgr->RegisterScanCallback(sm_CbWifiScanRequest, this);
+       ret = m->pWifiMgr->Scan(sm_CbWifiScanRequest, this);
        if (ret != true) {
                _ERR("wifi_mgr_scan_request() failed.");
                m_FillContentPart(m->wireless_discon_ly);
@@ -921,14 +911,11 @@ bool CNetworkMainView::m_SetWireless()
 
        if (activated) {
                if (m->ap) {
-                       ret = m->pWifiMgr->DestroyAP(m->ap);
-                       if(ret != true) {
-                               _ERR("Fail to destroy AP");
-                       }
+                       delete m->ap;
                        m->ap = NULL;
                }
 
-               ret = m->pWifiMgr->RegisterScanCallback(sm_CbWifiScanRequest, this);
+               ret = m->pWifiMgr->Scan(sm_CbWifiScanRequest, this);
                if (ret != true) {
                        _ERR("wifi_mgr_scan_request() failed.");
                        goto _wireless_finish;
@@ -1230,16 +1217,9 @@ void CNetworkMainView::m_ClearGenlist(void)
 
 void CNetworkMainView::sm_CbWifiConnected(wifi_error_e err, void *data)
 {
-       _DBG();
-       CNetworkMainView *instance;
-
-       if (!data) {
-               _ERR("Parameter error!");
-               return;
-       }
-
-       instance = (CNetworkMainView *) data;
-       instance->m_OnWifiConnected(err);
+       CNetworkMainView *root = (CNetworkMainView*)data;
+       if (root)
+               root->m_OnWifiConnected(err);
 }
 
 
@@ -1332,21 +1312,21 @@ bool CNetworkMainView::m_WifiConnectAP(int index)
                return true;
        }
 
-       ret = m->pWifiMgr->ForgetAP();
+       ret = CWifiAp::ForgetAP();
        if (ret != true) {
                _ERR("forget last ap failed.");
                return false;
        }
 
        if (m->ap_pwd) {
-               ret = m->pWifiMgr->SetPassPhrase(m->ap, m->ap_pwd);
+               m->ap->SetPassPhrase(m->ap_pwd);
                if (ret != true) {
                        _ERR("wifi_mgr_set_passphrase() failed.");
                        return false;
                }
        }
 
-       ret = m->pWifiMgr->Connect(m->ap, sm_CbWifiConnected, this);
+       ret = m->ap->Connect(sm_CbWifiConnected, this);
        if (ret != true) {
                _ERR("Fail to connection request.");
                return false;
@@ -1676,8 +1656,8 @@ bool CNetworkMainView::Create(void *data)
                        }
                        if (m->timer)
                                ecore_timer_del(m->timer);
-                       if (m->ap)
-                               m->pWifiMgr->DestroyAP(m->ap);
+
+                       delete m->ap;
 
                        free(m->ap_name);
                        free(m->ap_pwd);
index bfeb80f..8a727a7 100644 (file)
@@ -47,15 +47,10 @@ struct SWifiPasscodeView {
 void CWifiPasscodeView::sm_CbWifiConnected(wifi_error_e err, void *data)
 {
        _DBG();
-       CWifiPasscodeView *instance;
-
-       if (!data) {
-               _ERR("Parameter error!");
-               return;
-       }
-
-       instance = (CWifiPasscodeView *) data;
-       instance->m_OnWifiConnected(err);
+       CWifiPasscodeView *root = (CWifiPasscodeView *)data;
+       
+       if (root)
+               root->m_OnWifiConnected(err);
 }
 
 
@@ -65,7 +60,7 @@ void CWifiPasscodeView::m_OnWifiConnected(wifi_error_e err)
                return;
 
        if (err!= WIFI_ERROR_NONE) {
-               _ERR("connect AP failed, ret: %s.", m->pWifiMgr->GetErrorMsg(err));
+               _ERR("connect AP failed, ret: %s.", CWifiMgr::ErrorMsg(err));
                m_ShowConfirmPopup();
                return;
        }
@@ -74,57 +69,48 @@ void CWifiPasscodeView::m_OnWifiConnected(wifi_error_e err)
 }
 
 
-bool CWifiPasscodeView::sm_CbWifiFoundAP(wifi_ap_h ap, void *data)
+bool CWifiPasscodeView::sm_CbWifiFoundAP(CWifiAp *ap, void *data)
 {
        _DBG();
-       CWifiPasscodeView *instance = NULL;
+       CWifiPasscodeView *root = (CWifiPasscodeView *)data;
 
-       if (!data) {
-               _ERR("data is NULL.");
-               return false;
-       }
+       if (root)
+               root->m_OnWifiFoundAP(ap);
 
-       instance = (CWifiPasscodeView *) data;
-       instance->m_OnWifiFoundAP(ap);
        return true;
 }
 
 
-void CWifiPasscodeView::m_OnWifiFoundAP(wifi_ap_h ap)
+void CWifiPasscodeView::m_OnWifiFoundAP(CWifiAp *ap)
 {
        bool ret;
        struct wifi_ap_info ap_info;
 
-       if (!ap) {
-               _ERR("Parameter error!");
-               return ;
-       }
-
-       ret = m->pWifiMgr->GetESSID(ap, ap_info.essid);
+       ret = ap->GetEssid(ap_info.essid, sizeof(ap_info.essid));
        if(ret != true) {
                _ERR("Fail to get info");
                return ;
        }
-       ret = m->pWifiMgr->GetConnectionState(ap, &ap_info.state);
+       ret = ap->GetConnectionState(&ap_info.state);
        if(ret != true) {
                _ERR("Fail to get info");
                return ;
        }
-       ret = m->pWifiMgr->GetSecurityType(ap, &ap_info.secure_type);
+       ret = ap->GetSecurityType(&ap_info.secure_type);
        if(ret != true) {
                _ERR("Fail to get info");
                return ;
        }
 
        if (!strncmp(m->ap_name, ap_info.essid, AP_NAME_LENTH)) {
-               ret = m->pWifiMgr->SetPassPhrase(ap, m->ap_pwd);
+               ret = ap->SetPassPhrase(m->ap_pwd);
                if (ret != true) {
                        _ERR("wifi_mgr_set_passphrase() failed.");
                        m_ShowConfirmPopup();
                        return ;
                }
 
-               ret = m->pWifiMgr->Connect(ap, sm_CbWifiConnected, this);
+               ret = ap->Connect(sm_CbWifiConnected, this);
                if (ret != true) {
                        _ERR("Fail to connection request.");
                        m_ShowConfirmPopup();
@@ -137,24 +123,19 @@ void CWifiPasscodeView::m_OnWifiFoundAP(wifi_ap_h ap)
 
 void CWifiPasscodeView::sm_CbWifiScanRequest(wifi_error_e err, void *data)
 {
-       CWifiPasscodeView *instance;
-
-       if (!data) {
-               _ERR("data is NULL.");
-               return;
-       }
+       CWifiPasscodeView *root = (CWifiPasscodeView *)data;
 
-       instance = (CWifiPasscodeView *) data;
-       instance->m_OnWifiScanRequest(err, data);
+       if (root)
+               root->m_OnWifiScanRequest(err, data);
 }
 
 
 void CWifiPasscodeView::m_OnWifiScanRequest(wifi_error_e err, void *data)
 {
        if(err != WIFI_ERROR_NONE)
-               _ERR("parameter error = %s", m->pWifiMgr->GetErrorMsg(err));
+               _ERR("parameter error = %s", CWifiMgr::ErrorMsg(err));
 
-       if(!m->pWifiMgr->RegisterFoundAPCallback(sm_CbWifiFoundAP, data)) {
+       if(!m->pWifiMgr->FoundAps(sm_CbWifiFoundAP, data)) {
                _ERR("wifi_mgr_foreach_found_aps() failed.");
                m_ShowConfirmPopup();
                return;
@@ -273,13 +254,13 @@ bool CWifiPasscodeView::m_WifiConnectAP(void)
 
        m_ShowProgressPopup();
 
-       ret = m->pWifiMgr->ForgetAP();
+       ret = CWifiAp::ForgetAP();
        if (ret != true) {
                _ERR("forget last ap failed.");
                return false;
        }
 
-       ret = m->pWifiMgr->RegisterScanCallback(sm_CbWifiScanRequest, this);
+       ret = m->pWifiMgr->Scan(sm_CbWifiScanRequest, this);
        if (ret != true) {
                _ERR("wifi_mgr_scan_request() failed.");
                return false;
index 365307a..7f7eb34 100644 (file)
@@ -188,7 +188,9 @@ bool CProxyMainView::m_SetWifiProxy(void)
                return false;
        }
 
-       ret = m->pWifiMgr->SetProxyType(m->eMethod);
+       CWifiAp ap(NULL);
+       ap.AllocConnectedAp();
+       ret = ap.SetProxyType(m->eMethod);
        if (ret != true) {
                _ERR("wifi_mgr_get_proxy_type() failed.");
                return ret;
@@ -196,15 +198,16 @@ bool CProxyMainView::m_SetWifiProxy(void)
 
        switch (m->eMethod) {
        case PROXY_METHOD_NONE:
-               m->pWifiMgr->SetProxyAddr(NULL);
+               ap.SetProxyAddr(NULL);
                break;
        case PROXY_METHOD_MANUAL:
                if (m->ip)
-                       m->pWifiMgr->SetProxyAddr(m->ip);
+                       ap.SetProxyAddr(m->ip);
                break;
        case PROXY_METHOD_AUTO:
                if (m->url)
-                       m->pWifiMgr->SetProxyAddr(m->url);
+                       ap.SetProxyAddr(m->url);
+                       //m->pWifiMgr->SetProxyAddr(m->url);
                break;
        default:
                return false;
index 3ae6ad6..28b63ef 100644 (file)
+#include <stdlib.h>
 #include <dbg.h>
 #include <wifi.h>
 #include "WifiMgr.h"
+#include <AppCommon.h>
+
 
 #define IP_STRING_MAX_SIZE 20
 #define MAX_NAME_SIZE 256
 #define CONTENT_TXT_SIZE 500
 #define ZERO_IP "0.0.0.0"
 
-CWifiMgr *CWifiMgr::instance = NULL;
-
-struct SWifiMgr {
-       wifi_ap_h ap;
-};
-
 
-bool CWifiMgr::Initialize(void)
+bool CWifiAp::m_CheckErr(const char *func, int ret)
 {
-       ASSERT(!instance);
-
-       instance = new CWifiMgr;
-       if(!instance)
-               return false;
-
-       int ret;
-
-       instance->m = new SWifiMgr;
-       if(instance->m == NULL) return false;
-
-       ret = wifi_initialize();
        if (ret != WIFI_ERROR_NONE) {
-               _ERR("Fail to wifi_initialize. error : %s", instance->GetErrorMsg((wifi_error_e) ret));
-               return false;
+               _ERR("Fail to wifi_get_connected_ap %s", CWifiMgr::ErrorMsg((wifi_error_e)ret));
        }
 
-       instance->m->ap = NULL;
-
-       return true;
+       return ret == WIFI_ERROR_NONE ? true : false;
 }
 
 
-void CWifiMgr::Finalize(void)
+void CWifiAp::t_SetHandle(wifi_ap_h handle)
 {
-       if(!instance)
-               return;
-       ASSERT(instance->m);
+       m_handle = handle;
+}
 
-       if (wifi_deinitialize() != WIFI_ERROR_NONE) {
-               _ERR("Fail to wifi_deinitialize.");
-       }
 
-       delete instance->m;
-       delete instance;
-       instance = NULL;
+CWifiAp::CWifiAp(wifi_ap_h handle)
+{
+       m_handle = handle;
+
+       int ret = wifi_ap_clone(&m_handle, handle);
+       m_CheckErr(__FUNCTION__, ret);
 }
 
 
-CWifiMgr *CWifiMgr::GetInstance(void)
+CWifiAp::~CWifiAp()
 {
-       return instance;
+       wifi_ap_destroy(m_handle);
+       m_handle = NULL;
 }
 
 
-bool CWifiMgr::Activate(void(*ActivatedCb)(wifi_error_e err, void *data), void *data)
+#define  WIFI_CHECK_RET(EXP) return m_CheckErr(__FUNCTION__, EXP);
+#define  WIFI_CHECK(EXP)     m_CheckErr(__FUNCTION__, EXP);
+
+
+wifi_ap_h CWifiAp::Handle(void)
 {
-       int ret;
+       return m_handle;
+}
 
-       if (!ActivatedCb) {
-               _ERR("Parameter is invalid");
-               return false;
-       }
 
-       ret = wifi_activate(ActivatedCb, data);
-       if (ret != WIFI_ERROR_NONE) {
-               _ERR("Fail to wifi_activate %s", GetErrorMsg((wifi_error_e) ret));
-               return false;
-       }
+bool CWifiAp::AllocConnectedAp(void)
+{
+       ASSERT(m_handle == NULL);
 
-       return true;
+       WIFI_CHECK_RET(wifi_get_connected_ap(&m_handle));
 }
 
 
-bool CWifiMgr::IsActivated(bool *activated)
+void CWifiAp::Destroy(void)
 {
-       int ret;
-
-       ret = wifi_is_activated(activated);
-       if (ret != WIFI_ERROR_NONE) {
-               _ERR("Fail to wifi_is_activated %s",GetErrorMsg((wifi_error_e) ret));
-               return false;
-       }
+       if (m_handle == NULL)
+               return;
 
-       return true;
+       WIFI_CHECK(wifi_ap_destroy(m_handle));
+       m_handle = NULL;
 }
 
 
-bool CWifiMgr::GetConnectedAP(wifi_ap_h *ap)
+bool CWifiAp::GetEssid(char *essid, int size)
 {
-       int ret;
+       ASSERT(m_handle);
 
-       if (!ap) {
-               _ERR("the param is invalid.");
-               return false;
+       char *str = NULL;
+       int ret = wifi_ap_get_essid(m_handle, &str);
+       if (ret == WIFI_ERROR_NONE) {
+               strncpy(essid, str, size);
+               _DBG("str : %s , ESSID : %s", str, essid);
+               free(str);
        }
-
-       ret = wifi_get_connected_ap(ap);
-       if (ret != WIFI_ERROR_NONE) {
-               _ERR("Fail to wifi_get_connected_ap %s",GetErrorMsg((wifi_error_e) ret));
-               return false;
+       else {
+               _ERR("Fail to get ESSID");
        }
 
-       return true;
+       return ret == WIFI_ERROR_NONE ? true : false;
 }
 
-bool CWifiMgr::DestroyAP(wifi_ap_h ap)
-{
-       int ret;
 
-       if (!ap) {
-               _ERR("the ap is already NULL.");
-               return true;
-       }
-
-       ret = wifi_ap_destroy(ap);
-       if (ret != WIFI_ERROR_NONE) {
-               _ERR("Fail to wifi_ap_destroy %s",GetErrorMsg((wifi_error_e) ret));
-               return false;
-       }
+bool CWifiAp::GetConnectionState(wifi_connection_state_e *state)
+{
+       ASSERT(m_handle);
 
-       return true;
+       WIFI_CHECK_RET(wifi_ap_get_connection_state(m_handle, state));
 }
 
 
-bool CWifiMgr::CloneAP(wifi_ap_h *cloned_ap, wifi_ap_h origin)
+bool CWifiAp::GetSecurityType(wifi_security_type_e *type)
 {
-       int ret;
+       ASSERT(m_handle);
 
-       if (!cloned_ap || !origin) {
-               _ERR("the param is invalid.");
-               return false;
-       }
+       WIFI_CHECK_RET(wifi_ap_get_security_type(m_handle, type));
+}
 
-       ret = wifi_ap_clone(cloned_ap, origin);
-       if (ret != WIFI_ERROR_NONE) {
-               _ERR("Fail to wifi_ap_clone %s",GetErrorMsg((wifi_error_e) ret));
-               return false;
-       }
 
-       return true;
+bool CWifiAp::SetPassPhrase(const char *passcode)
+{
+       ASSERT(m_handle);
+       ASSERT(passcode);
+
+       WIFI_CHECK_RET(wifi_ap_set_passphrase(m_handle, passcode));
 }
 
 
-bool CWifiMgr::RegisterScanCallback(void(*ScanFinishedCb)(wifi_error_e err, void* data), void *data)
+bool CWifiAp::Connect(void(*wifi_connected_cb)(wifi_error_e err, void *data), void *data)
 {
-       int ret;
+       ASSERT(m_handle);
+       ASSERT(wifi_connected_cb);
 
-       if (!ScanFinishedCb) {
-               _ERR("Parameter is invalid");
-               return false;
-       }
+       WIFI_CHECK_RET(wifi_connect(m_handle, wifi_connected_cb, data));
+}
 
-       ret = wifi_scan(ScanFinishedCb, data);
-       if (ret != WIFI_ERROR_NONE) {
-               _ERR("Scan request failed [%s]", GetErrorMsg((wifi_error_e) ret));
-               return false;
-       }
 
-       return true;
+bool CWifiAp::SetIpType(wifi_ip_config_type_e type)
+{
+       ASSERT(m_handle);
+
+       WIFI_CHECK_RET(wifi_ap_set_ip_config_type(m_handle, WIFI_ADDRESS_FAMILY_IPV4, type));
 }
 
 
-bool CWifiMgr::RegisterFoundAPCallback(bool(*FoundCb)(wifi_ap_h ap, void *data), void *data)
+bool CWifiAp::GetIp(char *ip, int size)
 {
-       int ret;
+       ASSERT(m_handle);
 
-       if (!FoundCb) {
-               _ERR("Parameter is invalid");
-               return false;
+       char *str_value = NULL;
+       int ret = wifi_ap_get_ip_address(m_handle, WIFI_ADDRESS_FAMILY_IPV4, &str_value);
+       if (ret == WIFI_ERROR_NONE) {
+               strncpy(ip, str_value, IP_STRING_MAX_SIZE < size);
+               free(str_value);
        }
-
-       ret = wifi_foreach_found_aps(FoundCb, data);
-       if (ret != WIFI_ERROR_NONE) {
-               _ERR("Fail to get AP list %s.", GetErrorMsg((wifi_error_e) ret));
-               return false;
+       else {
+               strncpy(ip, ZERO_IP, IP_STRING_MAX_SIZE);
+               _ERR("Fail to get Gateway");
        }
-
-       return true;
+       return ret == WIFI_ERROR_NONE ? true : false;
 }
 
 
-bool CWifiMgr::SetProxyType(EProxyMethod pm)
+bool CWifiAp::GetSubnetMask(char *submask)
 {
-       ASSERT(m);
-
-       wifi_proxy_type_e type;
-       wifi_ap_h ap;
-
-       if (wifi_get_connected_ap(&ap) != WIFI_ERROR_NONE) {
-               _ERR("wifi_get_connected_ap() failed.");
-               return false;
-       }
+       ASSERT(m_handle);
 
-       switch (pm) {
-       case PROXY_METHOD_NONE:
-               type = WIFI_PROXY_TYPE_DIRECT;
-               break;
-       case PROXY_METHOD_MANUAL:
-               type = WIFI_PROXY_TYPE_MANUAL;
-               break;
-       case PROXY_METHOD_AUTO:
-               type = WIFI_PROXY_TYPE_AUTO;
-               break;
-       default:
-               return false;
+       char *str_value = NULL;
+       int ret = wifi_ap_get_subnet_mask(m_handle, WIFI_ADDRESS_FAMILY_IPV4, &str_value);
+       if (ret == WIFI_ERROR_NONE) {
+               strncpy(submask, str_value, IP_STRING_MAX_SIZE);
+               free(str_value);
        }
-
-       if (wifi_ap_set_proxy_type(ap, type) != WIFI_ERROR_NONE) {
-               _ERR("wifi_ap_set_proxy_type() failed.");
-               return false;
+       else {
+               strncpy(submask, ZERO_IP, IP_STRING_MAX_SIZE);
+               _ERR("Fail to get Gateway");
        }
-
-       return true;
+       return ret == WIFI_ERROR_NONE ? true : false;
 }
 
 
-bool CWifiMgr::GetProxyType(EProxyMethod *pm)
+bool CWifiAp::GetGateway(char *gateway)
 {
-       ASSERT(m);
-
-       wifi_proxy_type_e type;
-       wifi_ap_h ap;
-
-       if (!pm) {
-               _ERR("parameter is invalid.");
-               return false;
-       }
+       ASSERT(m_handle);
 
-       if (wifi_get_connected_ap(&ap) != WIFI_ERROR_NONE) {
-               _ERR("wifi_get_connected_ap() failed.");
-               return false;
-       }
+       char *str_value;
 
-       if (wifi_ap_get_proxy_type(ap, &type) != WIFI_ERROR_NONE) {
-               _ERR("wifi_ap_get_proxy_type() failed.");
-               return false;
+       str_value = NULL;
+       if (wifi_ap_get_gateway_address(m_handle, WIFI_ADDRESS_FAMILY_IPV4, &str_value) == WIFI_ERROR_NONE) {
+               strncpy(gateway, str_value, IP_STRING_MAX_SIZE);
+               free(str_value);
+               return true;
        }
-
-       switch (type) {
-       case WIFI_PROXY_TYPE_DIRECT:
-               *pm = PROXY_METHOD_NONE;
-               break;
-       case WIFI_PROXY_TYPE_MANUAL:
-               *pm = PROXY_METHOD_MANUAL;
-               break;
-       case WIFI_PROXY_TYPE_AUTO:
-               *pm = PROXY_METHOD_AUTO;
-               break;
-       default:
+       else {
+               strncpy(gateway, ZERO_IP, IP_STRING_MAX_SIZE);
+               _ERR("Fail to get Gateway");
                return false;
        }
-
-       return true;
 }
 
 
-bool CWifiMgr::SetProxyAddr(const char *ip)
+bool CWifiAp::GetDNS(char *dns)
 {
-       ASSERT(m);
+       ASSERT(m_handle);
 
-       wifi_ap_h ap;
+       char *str_value;
 
-       if (wifi_get_connected_ap(&ap) != WIFI_ERROR_NONE) {
-               _ERR("wifi_get_connected_ap() failed.");
-               return false;
+       str_value = NULL;
+       if (wifi_ap_get_dns_address(m_handle, 1, WIFI_ADDRESS_FAMILY_IPV4, &str_value) == WIFI_ERROR_NONE) {
+               strncpy(dns, str_value, IP_STRING_MAX_SIZE);
+               free(str_value);
+               return true;
        }
-
-       if (wifi_ap_set_proxy_address(ap, WIFI_ADDRESS_FAMILY_IPV4, ip) != WIFI_ERROR_NONE) {
-               _ERR("wifi_ap_set_proxy_address() failed.");
+       else {
+               strncpy(dns, ZERO_IP, IP_STRING_MAX_SIZE);
+               _ERR("Fail to get DNS1");
                return false;
        }
-
-       return true;
 }
 
 
-bool CWifiMgr::GetProxyAddr(char **ip)
+bool CWifiAp::SetIp(char *ip)
 {
-       ASSERT(m);
-       wifi_ap_h ap;
+       ASSERT(m_handle);
 
-       if (!ip || !*ip) {
-               _ERR("parameter is invalid.");
-               return false;
-       }
+       WIFI_CHECK_RET(wifi_ap_set_ip_address(m_handle, WIFI_ADDRESS_FAMILY_IPV4, ip));
+}
 
-       if (wifi_get_connected_ap(&ap) != WIFI_ERROR_NONE) {
-               _ERR("wifi_get_connected_ap() failed.");
-               return false;
-       }
 
-       if (wifi_ap_get_proxy_address(ap, WIFI_ADDRESS_FAMILY_IPV4, ip) != WIFI_ERROR_NONE) {
-               _ERR("wifi_ap_get_proxy_address() failed.");
-               return false;
-       }
+bool CWifiAp::SetSubnetMask(char *submask)
+{
+       ASSERT(m_handle);
 
-       return true;
+       WIFI_CHECK_RET(wifi_ap_set_subnet_mask(m_handle, WIFI_ADDRESS_FAMILY_IPV4, submask));
 }
 
 
-bool CWifiMgr::GetESSID(wifi_ap_h ap, char *essid)
+bool CWifiAp::SetGateway(char *gateway)
 {
-       ASSERT(m);
-       ASSERT(ap);
-
-       char *str;
-       str = NULL;
-       if (wifi_ap_get_essid(ap, &str) == WIFI_ERROR_NONE) {
-               strncpy(essid, str, 255);
-               _DBG("str : %s , ESSID : %s", str, essid);
-               delete (str);
-               str = NULL;
-       } else {
-               _ERR("Fail to get ESSID");
-               return false;
-       }
+       ASSERT(m_handle);
 
-       return true;
+       WIFI_CHECK_RET(wifi_ap_set_gateway_address(m_handle, WIFI_ADDRESS_FAMILY_IPV4, gateway));
 }
 
 
-bool CWifiMgr::GetConnectionState(wifi_ap_h ap, wifi_connection_state_e *state)
+bool CWifiAp::SetDNS(char *dns)
 {
-       ASSERT(m);
-       ASSERT(ap);
+       ASSERT(m_handle);
 
-       if (wifi_ap_get_connection_state(ap, state) != WIFI_ERROR_NONE) {
-               _ERR("Fail to get Connection State");
-               return false;
-       }
-
-       return true;
+       WIFI_CHECK_RET(wifi_ap_set_dns_address(m_handle, 1, WIFI_ADDRESS_FAMILY_IPV4, dns));
 }
 
 
-bool CWifiMgr::GetSecurityType(wifi_ap_h ap, wifi_security_type_e *type)
+bool CWifiAp::CloneAP(wifi_ap_h *cloned_ap, wifi_ap_h origin)
 {
-       ASSERT(m);
-       ASSERT(ap);
+       int ret;
 
-       if (wifi_ap_get_security_type(ap, type) != WIFI_ERROR_NONE) {
-               _ERR("Fail to get Security type");
+       if (!cloned_ap || !origin) {
+               _ERR("the param is invalid.");
+               return false;
+       }
+
+       ret = wifi_ap_clone(cloned_ap, origin);
+       if (ret != WIFI_ERROR_NONE) {
+               _ERR("Fail to wifi_ap_clone %s", CWifiMgr::ErrorMsg((wifi_error_e)ret));
                return false;
        }
 
@@ -356,182 +259,170 @@ bool CWifiMgr::GetSecurityType(wifi_ap_h ap, wifi_security_type_e *type)
 }
 
 
-bool CWifiMgr::ForgetAP(void)
+bool CWifiAp::ForgetAP(void)
 {
        int ret;
-       wifi_ap_h ap;
+       wifi_ap_h handle;
        char *name;
 
-       ret = wifi_get_connected_ap(&ap);
+       ret = wifi_get_connected_ap(&handle);
        if (ret == WIFI_ERROR_NO_CONNECTION) {
                return true;
-       } else if (ret != WIFI_ERROR_NONE) {
-               _ERR("Fail to get connected AP [%s]",   GetErrorMsg((wifi_error_e) ret));
+       }
+       else if (ret != WIFI_ERROR_NONE) {
+               _ERR("Fail to get connected AP [%s]", CWifiMgr::ErrorMsg((wifi_error_e)ret));
                return false;
        }
 
-       ret = wifi_ap_get_essid(ap, &name);
+       ret = wifi_ap_get_essid(handle, &name);
        if (ret != WIFI_ERROR_NONE) {
-               _ERR("Fail to wifi_ap_get_essid AP [%s]", GetErrorMsg((wifi_error_e) ret));
-               wifi_ap_destroy(ap);
+               _ERR("Fail to wifi_ap_get_essid AP [%s]", CWifiMgr::ErrorMsg((wifi_error_e)ret));
+               wifi_ap_destroy(handle);
                return false;
        }
 
-       ret = wifi_forget_ap(ap);
+       ret = wifi_forget_ap(handle);
        if (ret != WIFI_ERROR_NONE) {
-               _ERR("Fail to forget [%s],[%s].", name, GetErrorMsg((wifi_error_e) ret));
-               wifi_ap_destroy(ap);
-               delete (name);
-               return false;
+               _ERR("Fail to forget [%s],[%s].", name, CWifiMgr::ErrorMsg((wifi_error_e)ret));
        }
 
-       delete (name);
+       wifi_ap_destroy(handle);
+       free(name);
 
-       return true;
+       return ret == WIFI_ERROR_NONE ? true : false;
 }
 
 
-bool CWifiMgr::SetPassPhrase(wifi_ap_h ap, const char *passcode)
+bool CWifiAp::SetProxyType(EProxyMethod pm)
 {
-       int ret;
+       ASSERT(m_handle);
 
-       if (!ap || !passcode) {
-               _ERR("the param is invalid.");
-               return false;
-       }
+       wifi_proxy_type_e type;
 
-       ret = wifi_ap_set_passphrase(ap, passcode);
-       if (ret != WIFI_ERROR_NONE) {
-               _ERR("failed to set passcode. ret: %s.", GetErrorMsg((wifi_error_e) ret));
+       switch (pm) {
+       case PROXY_METHOD_NONE:
+               type = WIFI_PROXY_TYPE_DIRECT;
+               break;
+
+       case PROXY_METHOD_MANUAL:
+               type = WIFI_PROXY_TYPE_MANUAL;
+               break;
+
+       case PROXY_METHOD_AUTO:
+               type = WIFI_PROXY_TYPE_AUTO;
+               break;
+
+       default:
                return false;
        }
 
-       return true;
+       int ret = wifi_ap_set_proxy_type(m_handle, type);
+       return ret = WIFI_ERROR_NONE ? true : false;
 }
 
 
-bool CWifiMgr::Connect(wifi_ap_h ap, void(*wifi_connected_cb)(wifi_error_e err, void *data), void *data)
+bool CWifiAp::GetProxyType(EProxyMethod *pm)
 {
-       int ret;
+       ASSERT(m_handle);
 
-       if (!wifi_connected_cb || !ap) {
-               _ERR("the param is invalid.");
-               return false;
-       }
-
-       ret = wifi_connect(ap, wifi_connected_cb, data);
+       wifi_proxy_type_e type;
+       
+       int ret = wifi_ap_get_proxy_type(m_handle, &type);
        if (ret != WIFI_ERROR_NONE) {
-               _ERR("failed to connect ap. ret: %s.", GetErrorMsg((wifi_error_e) ret));
+               _ERR("wifi_ap_get_proxy_type() failed.");
                return false;
        }
 
-       return true;
-}
-
+       switch (type) {
+       case WIFI_PROXY_TYPE_DIRECT:
+               *pm = PROXY_METHOD_NONE;
+               break;
 
-bool CWifiMgr::SetIpType(wifi_ap_h ap, wifi_ip_config_type_e type)
-{
-       int ret;
+       case WIFI_PROXY_TYPE_MANUAL:
+               *pm = PROXY_METHOD_MANUAL;
+               break;
 
-       if (!ap) {
-               _ERR("the param is invalid.");
-               return false;
-       }
+       case WIFI_PROXY_TYPE_AUTO:
+               *pm = PROXY_METHOD_AUTO;
+               break;
 
-       ret = wifi_ap_set_ip_config_type(ap, WIFI_ADDRESS_FAMILY_IPV4, type);
-       if (ret != WIFI_ERROR_NONE) {
-               _ERR("failed to connect ap. ret: %s.", GetErrorMsg((wifi_error_e) ret));
+       default:
                return false;
        }
 
-       return true;
+       return ret;
 }
 
 
-bool CWifiMgr::GetIp(wifi_ap_h ap, char *ip)
+bool CWifiAp::SetProxyAddr(const char *addr)
 {
-       ASSERT(ap);
+       ASSERT(m_handle);
 
-       char *str_value;
-
-       str_value = NULL;
-       if (wifi_ap_get_ip_address(ap, WIFI_ADDRESS_FAMILY_IPV4, &str_value) == WIFI_ERROR_NONE) {
-               strncpy(ip, str_value, IP_STRING_MAX_SIZE);
-               delete (str_value);
-               return true;
-       } else {
-               strncpy(ip, ZERO_IP, IP_STRING_MAX_SIZE);
-               _ERR("Fail to get Gateway");
-               return false;
-       }
+       WIFI_CHECK_RET(wifi_ap_set_proxy_address(m_handle, WIFI_ADDRESS_FAMILY_IPV4, addr));
 }
 
 
-bool CWifiMgr::GetSubnetMask(wifi_ap_h ap, char *submask)
+bool CWifiAp::GetProxyAddr(char **addr)
 {
-       ASSERT(ap);
+       ASSERT(m_handle);
+       ASSERT(addr);
 
-       char *str_value;
-
-       str_value = NULL;
-       if (wifi_ap_get_subnet_mask(ap, WIFI_ADDRESS_FAMILY_IPV4, &str_value) == WIFI_ERROR_NONE) {
-               strncpy(submask, str_value, IP_STRING_MAX_SIZE);
-               delete (str_value);
-               return true;
-       } else {
-               strncpy(submask, ZERO_IP, IP_STRING_MAX_SIZE);
-               _ERR("Fail to get Gateway");
-               return false;
-       }
+       WIFI_CHECK_RET(wifi_ap_get_proxy_address(m_handle, WIFI_ADDRESS_FAMILY_IPV4, addr));
 }
 
 
-bool CWifiMgr::GetGateway(wifi_ap_h ap, char *gateway)
+CWifiMgr *CWifiMgr::instance = NULL;
+
+
+struct SWifiMgr {
+       int a;
+};
+
+
+bool CWifiMgr::Initialize(void)
 {
-       ASSERT(ap);
+       ASSERT(!instance);
 
-       char *str_value;
+       _CREATE_BEGIN{
+               _CHECK(instance = new CWifiMgr);
+               _CHECK(instance->m = new SWifiMgr);
+               _CHECK(wifi_initialize() == WIFI_ERROR_NONE);
 
-       str_value = NULL;
-       if (wifi_ap_get_gateway_address(ap, WIFI_ADDRESS_FAMILY_IPV4, &str_value) == WIFI_ERROR_NONE) {
-               strncpy(gateway, str_value, IP_STRING_MAX_SIZE);
-               delete (str_value);
-               return true;
-       } else {
-               strncpy(gateway, ZERO_IP, IP_STRING_MAX_SIZE);
-               _ERR("Fail to get Gateway");
-               return false;
-       }
+               _CHECK_FAIL{ wifi_deinitialize(); }
+               _CHECK_FAIL{ delete instance->m; }
+               _CHECK_FAIL{ delete instance; instance = NULL; }
+       } _CREATE_END_AND_CATCH { return false; }
+
+       return true;
 }
 
 
-bool CWifiMgr::GetDNS(wifi_ap_h ap, char *dns)
+void CWifiMgr::Finalize(void)
 {
-       ASSERT(ap);
+       ASSERT(instance);
+       ASSERT(instance->m);
 
-       char *str_value;
+       wifi_deinitialize();
 
-       str_value = NULL;
-       if (wifi_ap_get_dns_address(ap, 1, WIFI_ADDRESS_FAMILY_IPV4, &str_value) == WIFI_ERROR_NONE) {
-               strncpy(dns, str_value, IP_STRING_MAX_SIZE);
-               delete (str_value);
-               return true;
-       } else {
-               strncpy(dns, ZERO_IP, IP_STRING_MAX_SIZE);
-               _ERR("Fail to get DNS1");
-               return false;
-       }
+       delete instance->m;
+       delete instance;
+       instance = NULL;
 }
 
-bool CWifiMgr::SetIp(wifi_ap_h ap, char *ip)
+
+CWifiMgr *CWifiMgr::GetInstance(void)
 {
-       ASSERT(ap);
+       return instance;
+}
 
-       int ret;
 
-       ret = wifi_ap_set_ip_address(ap, WIFI_ADDRESS_FAMILY_IPV4, ip);
+bool CWifiMgr::Activate(void (*cbActivated)(wifi_error_e err, void *data), void *data)
+{
+       ASSERT(cbActivated);
+
+       int ret = wifi_activate(cbActivated, data);
        if (ret != WIFI_ERROR_NONE) {
-               _ERR("Fail to set ip address[%s]", GetErrorMsg((wifi_error_e) ret));
+               _ERR("Fail to wifi_activate %s", CWifiMgr::ErrorMsg((wifi_error_e) ret));
                return false;
        }
 
@@ -539,15 +430,13 @@ bool CWifiMgr::SetIp(wifi_ap_h ap, char *ip)
 }
 
 
-bool CWifiMgr::SetSubnetMask(wifi_ap_h ap, char *submask)
+bool CWifiMgr::IsActivated(bool *activated)
 {
-       ASSERT(ap);
-
        int ret;
 
-       ret = wifi_ap_set_subnet_mask(ap, WIFI_ADDRESS_FAMILY_IPV4,     submask);
+       ret = wifi_is_activated(activated);
        if (ret != WIFI_ERROR_NONE) {
-               _ERR("Fail to set subnet mask[%s]", GetErrorMsg((wifi_error_e) ret));
+               _ERR("Fail to wifi_is_activated %s",CWifiMgr::ErrorMsg((wifi_error_e) ret));
                return false;
        }
 
@@ -555,15 +444,13 @@ bool CWifiMgr::SetSubnetMask(wifi_ap_h ap, char *submask)
 }
 
 
-bool CWifiMgr::SetGateway(wifi_ap_h ap, char *gateway)
+bool CWifiMgr::Scan(void(*cbFinish)(wifi_error_e err, void* data), void *data)
 {
-       ASSERT(ap);
+       ASSERT(cbFinish);
 
-       int ret;
-
-       ret = wifi_ap_set_gateway_address(ap, WIFI_ADDRESS_FAMILY_IPV4, gateway);
+       int ret = wifi_scan(cbFinish, data);
        if (ret != WIFI_ERROR_NONE) {
-               _ERR("Fail to set gateway address[%s]", GetErrorMsg((wifi_error_e) ret));
+               _ERR("Scan request failed [%s]", CWifiMgr::ErrorMsg((wifi_error_e) ret));
                return false;
        }
 
@@ -571,15 +458,36 @@ bool CWifiMgr::SetGateway(wifi_ap_h ap, char *gateway)
 }
 
 
-bool CWifiMgr::SetDNS(wifi_ap_h ap, char *dns)
+struct SUserData
 {
-       ASSERT(ap);
+       bool(*cb)(CWifiAp *ap, void *data);
+       void *data;
+       SUserData(bool(*c)(CWifiAp *ap, void *data), void *d) {
+               cb = c;
+               data = data;
+       }
+};
 
-       int ret;
 
-       ret = wifi_ap_set_dns_address(ap, 1, WIFI_ADDRESS_FAMILY_IPV4, dns);
+static bool g_CbFound(wifi_ap_h ap, void *data)
+{
+       SUserData *ud = (SUserData*)data;
+       CWifiAp ins(ap);
+       ud->cb(&ins, ud->data);
+       delete ud;
+
+       return false;
+}
+
+
+bool CWifiMgr::FoundAps(bool(*cbFound)(CWifiAp *ap, void *data), void *data)
+{
+       ASSERT(cbFound);
+
+       SUserData *ud = new SUserData(cbFound, data);
+       int ret = wifi_foreach_found_aps(g_CbFound, ud);
        if (ret != WIFI_ERROR_NONE) {
-               _ERR("Fail to set dns address[%s]", GetErrorMsg((wifi_error_e) ret));
+               _ERR("Fail to get AP list %s.", CWifiMgr::ErrorMsg((wifi_error_e) ret));
                return false;
        }
 
@@ -587,7 +495,7 @@ bool CWifiMgr::SetDNS(wifi_ap_h ap, char *dns)
 }
 
 
-const char * CWifiMgr::GetErrorMsg(wifi_error_e err_type)
+const char * CWifiMgr::ErrorMsg(wifi_error_e err_type)
 {
        switch (err_type) {
        case WIFI_ERROR_NONE: