revise wifi(management of handle)
authorYoungjae Shin <yj99.shin@samsung.com>
Thu, 31 Oct 2019 04:05:04 +0000 (13:05 +0900)
committerYoungjae Shin <yj99.shin@samsung.com>
Thu, 19 Mar 2020 04:30:37 +0000 (13:30 +0900)
wifi/WifiAction.cpp
wifi/WifiAction.h
wifi/WifiActionPower.cpp
wifi/WifiActionPower.h
wifi/WifiFactory.cpp
wifi/WifiFactory.h

index 8d9aba8fda8746803c0a9ea89f6a5433b717fdd6..b81dc0c3ce6ff2ccab845e8b6158cd700325df34 100644 (file)
@@ -22,7 +22,7 @@
 MODES_NAMESPACE_USE;
 
 WifiAction::WifiAction(const std::string &name)
-       : PluginAction(name)
+       : PluginAction(name), handle(NULL)
 {
 }
 
index 509ace789005241ff2de6925c04789d2bc031915..ed27dacf52596336fe6e773750c5904ec7a1db2c 100644 (file)
@@ -31,6 +31,7 @@ public:
 protected:
        const std::string& strErr(int err);
        WifiErrorMessage wifiErrorMessage;
+       wifi_manager_h handle;
 };
 
 MODES_NAMESPACE_END
index 60be1c980d711cb999266f988b185e555a70418c..4b4b2e8942834cc732a0270399cfcbd840d0610a 100644 (file)
@@ -23,38 +23,32 @@ MODES_NAMESPACE_USE;
 
 const std::string WifiActionPower::NAME = "power";
 
-WifiActionPower::WifiActionPower()
+WifiActionPower::WifiActionPower(wifi_manager_h wifiHandle)
        : WifiAction(NAME), oldVal(false)
 {
+       handle = wifiHandle;
 }
 
-void WifiActionPower::activate_cb(wifi_manager_error_e result, void *user_data)
+void WifiActionPower::activateCB(wifi_manager_error_e result, void *user_data)
 {
        INFO("wifi Activated");
        if (WIFI_MANAGER_ERROR_NONE != result) {
                const std::string &errStr = ((WifiActionPower*)user_data)->strErr(result);
-               ERR("activate_cb() Fail(%d, %s)", result, errStr.c_str());
+               ERR("activateCB() Fail(%d, %s)", result, errStr.c_str());
        }
 }
 
-void WifiActionPower::deactivate_cb(wifi_manager_error_e result, void *user_data)
+void WifiActionPower::deactivateCB(wifi_manager_error_e result, void *user_data)
 {
        INFO("wifi Deactivated");
        if (WIFI_MANAGER_ERROR_NONE != result) {
                const std::string &errStr = ((WifiActionPower*)user_data)->strErr(result);
-               ERR("deactivate_cb() Fail(%d, %s)", result, errStr.c_str());
+               ERR("deactivateCB() Fail(%d, %s)", result, errStr.c_str());
        }
 }
 
 int WifiActionPower::set(bool val)
 {
-       wifi_manager_h handle;
-       int ret = wifi_manager_initialize(&handle);
-       if (ret != WIFI_MANAGER_ERROR_NONE) {
-               ERR("wifi_manager_initialize() Fail(%s)", wifiErrorMessage.get(ret).c_str());
-               return MODES_ERROR_SYSTEM;
-       }
-
        wifi_manager_is_activated(handle, &oldVal);
        if (oldVal == val) {
                INFO("Already wifi is [%s]", val ? "On" : "Off");
@@ -62,22 +56,19 @@ int WifiActionPower::set(bool val)
        }
 
        if (val) {
-               int wifiRet = wifi_manager_activate(handle, activate_cb, this);
-               if (WIFI_MANAGER_ERROR_NONE != wifiRet) {
-                       ERR("wifi_manager_activate() Fail(%d, %s)", wifiRet, strErr(wifiRet).c_str());
-                       wifi_manager_deinitialize(handle);
+               int ret = wifi_manager_activate(handle, activateCB, this);
+               if (WIFI_MANAGER_ERROR_NONE != ret) {
+                       ERR("wifi_manager_activate() Fail(%d, %s)", ret, strErr(ret).c_str());
                        return MODES_ERROR_SYSTEM;
                }
        } else {
-               int wifiRet = wifi_manager_deactivate(handle, deactivate_cb, this);
-               if (WIFI_MANAGER_ERROR_NONE != wifiRet) {
-                       ERR("wifi_manager_deactivate() Fail(%d, %s)", wifiRet, strErr(wifiRet).c_str());
-                       wifi_manager_deinitialize(handle);
+               int ret = wifi_manager_deactivate(handle, deactivateCB, this);
+               if (WIFI_MANAGER_ERROR_NONE != ret) {
+                       ERR("wifi_manager_deactivate() Fail(%d, %s)", ret, strErr(ret).c_str());
                        return MODES_ERROR_SYSTEM;
                }
        }
 
-       wifi_manager_deinitialize(handle);
        INFO("Wifi power [%s]", val ? "On" : "Off");
        return MODES_ERROR_NONE;
 }
index 02f01a6f407f5c3fefb6581724e53d07adb7e52b..63fb3ffabbd2ee704191d071bdb2e08e13b028ff 100644 (file)
@@ -23,15 +23,15 @@ MODES_NAMESPACE_BEGIN
 class WifiActionPower : public WifiAction {
 public:
        static const std::string NAME;
-       WifiActionPower();
+       WifiActionPower(wifi_manager_h handle);
 
        int set(bool val) override;
        int undo() override;
        std::string serialize() override;
        int parse(const std::string &archive) override;
 private:
-       static void activate_cb(wifi_manager_error_e result, void *user_data);
-       static void deactivate_cb(wifi_manager_error_e result, void *user_data);
+       static void activateCB(wifi_manager_error_e result, void *user_data);
+       static void deactivateCB(wifi_manager_error_e result, void *user_data);
        bool oldVal;
 };
 
index cf637e597974cb335d5d5449aa6b0d069d0d0ae9..53b0234b6e70e9789d3a58e87e6ab6997d683fed 100644 (file)
 MODES_NAMESPACE_USE;
 
 WifiFactory::WifiFactory()
+       : handle(NULL)
 {
        actionMap[WifiActionPower::NAME] = POWER;
+
+       int ret = wifi_manager_initialize(&handle);
+       if (ret != WIFI_MANAGER_ERROR_NONE)
+               ERR("wifi_manager_initialize() Fail(%d)", ret);
 }
 
+WifiFactory::~WifiFactory()
+{
+       wifi_manager_deinitialize(handle);
+}
+
+
 WifiAction* WifiFactory::createAction(const std::string &key)
 {
        auto search = actionMap.find(key);
@@ -36,7 +47,7 @@ WifiAction* WifiFactory::createAction(const std::string &key)
 
        switch (search->second) {
        case POWER:
-               WifiActionPower *wifiActionPower = new WifiActionPower();
+               WifiActionPower *wifiActionPower = new WifiActionPower(handle);
                return wifiActionPower;
                break;
        }
index 259305f55cd8800347eab2feb4ba3f24c7a32e25..11acb47b600e587918ee1f09af6dfe537e815952 100644 (file)
@@ -24,7 +24,7 @@ MODES_NAMESPACE_BEGIN
 class WifiFactory {
 public:
        WifiFactory();
-       ~WifiFactory() = default;
+       ~WifiFactory();
 
        WifiAction *createAction(const std::string &key);
        void destroyAction(WifiAction *action);
@@ -34,6 +34,7 @@ private:
        };
 
        std::map<std::string, actionKey> actionMap;
+       wifi_manager_h handle;
 };
 
 MODES_NAMESPACE_END