diff --git a/hal/abstract/IHalCpp.cpp b/hal/abstract/IHalCpp.cpp index 134200d..766bcdc 100644 --- a/hal/abstract/IHalCpp.cpp +++ b/hal/abstract/IHalCpp.cpp @@ -40,6 +40,16 @@ void VKeyHal::SetKeyMonitor(std::shared_ptr &monitor) // { // return "undefined"; // } +StatusCode VWifiHal::PowerOn(void) +{ + LogWarning("STATUS_CODE_VIRTUAL_FUNCTION.\n"); + return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); +} +StatusCode VWifiHal::PowerOff(void) +{ + LogWarning("STATUS_CODE_VIRTUAL_FUNCTION.\n"); + return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); +} StatusCode VWifiHal::OpenApMode(void) { LogWarning("STATUS_CODE_VIRTUAL_FUNCTION.\n"); diff --git a/hal/include/IHalCpp.h b/hal/include/IHalCpp.h index 79349dd..fab89b6 100644 --- a/hal/include/IHalCpp.h +++ b/hal/include/IHalCpp.h @@ -83,6 +83,8 @@ class VWifiHal public: VWifiHal() = default; virtual ~VWifiHal() = default; + virtual StatusCode PowerOn(void); + virtual StatusCode PowerOff(void); virtual StatusCode OpenApMode(void); virtual StatusCode CloseApMode(void); }; diff --git a/hal/src/HalCpp.cpp b/hal/src/HalCpp.cpp index 63f1007..088387f 100644 --- a/hal/src/HalCpp.cpp +++ b/hal/src/HalCpp.cpp @@ -16,10 +16,15 @@ #include "HalMakePtr.h" #include "ILog.h" #include "SdCardHal.h" +#include "WifiHal.h" StatusCode HalCpp::Init(void) { LogInfo("HalCpp::Init\n"); HalMakePtr::GetInstance()->CreateWifiHal(mWifiHal); + std::shared_ptr wifiImpl = std::dynamic_pointer_cast(mWifiHal); + if (nullptr != wifiImpl) { + wifiImpl->Init(); + } HalMakePtr::GetInstance()->CreateSdCardHal(mSdCardHal); std::shared_ptr sdCardImpl = std::dynamic_pointer_cast(mSdCardHal); if (nullptr != sdCardImpl) { diff --git a/hal/src/WifiHal.cpp b/hal/src/WifiHal.cpp index d2ab691..8e68435 100644 --- a/hal/src/WifiHal.cpp +++ b/hal/src/WifiHal.cpp @@ -56,6 +56,7 @@ StatusCode WifiHal::CloseApMode(void) } void WifiHal::Init(void) { + PowerOff(); } void WifiHal::UnInit(void) { diff --git a/hal/src/WifiHal.h b/hal/src/WifiHal.h index d4f0a51..0089e5a 100644 --- a/hal/src/WifiHal.h +++ b/hal/src/WifiHal.h @@ -22,10 +22,10 @@ public: virtual ~WifiHal() = default; StatusCode OpenApMode(void) override; StatusCode CloseApMode(void) override; - void Init(void); - void UnInit(void); + virtual void Init(void); + virtual void UnInit(void); -private: +protected: bool CheckWlan0IfExist(void); protected: diff --git a/middleware/AppManager/src/AppManager.cpp b/middleware/AppManager/src/AppManager.cpp index ccc64d7..ad0d9b0 100644 --- a/middleware/AppManager/src/AppManager.cpp +++ b/middleware/AppManager/src/AppManager.cpp @@ -183,6 +183,11 @@ void AppManager::WifiApModeInit(const AppParam ¶m) LogError("Get wifi hal failed.\n"); return; } + StatusCode codePower = wifi->PowerOn(); + if (!IsCodeOK(codePower)) { + LogError("Wifi power on failed.\n"); + return; + } /** * @brief This interface depends on hardware and may block. It is necessary to ensure that hardware interface * blocking does not cause the main thread to block.