diff --git a/bundle.json b/bundle.json index 2bcebbe95f985fdffd27ec12299ff3a031e5bb5e..034171dfaf324dcfa28583e8baa154a732801969 100644 --- a/bundle.json +++ b/bundle.json @@ -50,7 +50,8 @@ "graphic_2d", "graphic_surface", "media_foundation", - "bounds_checking_function" + "bounds_checking_function", + "power_manager" ], "third_party": [ "json", diff --git a/services/distributedhardwarefwkservice/BUILD.gn b/services/distributedhardwarefwkservice/BUILD.gn index 117a506a57afd60866852820a7c2552769a8ab49..8074d244922ca6117578262ee2309c64a3ab0de6 100644 --- a/services/distributedhardwarefwkservice/BUILD.gn +++ b/services/distributedhardwarefwkservice/BUILD.gn @@ -130,6 +130,7 @@ ohos_shared_library("distributedhardwarefwksvr") { "init:libbegetutil", "ipc:ipc_core", "kv_store:distributeddata_inner", + "power_manager:powermgr_client", "resource_schedule_service:ressched_client", "safwk:system_ability_fwk", "samgr:samgr_proxy", diff --git a/services/distributedhardwarefwkservice/include/utils/dh_context.h b/services/distributedhardwarefwkservice/include/utils/dh_context.h index a62afa03990b58a761b319cc76b877b8e76cd46b..c7869ea0336af7c8e37e3a8a5e16776e52481465 100644 --- a/services/distributedhardwarefwkservice/include/utils/dh_context.h +++ b/services/distributedhardwarefwkservice/include/utils/dh_context.h @@ -16,11 +16,15 @@ #ifndef OHOS_DISTRIBUTED_HARDWARE_DHCONTEXT_H #define OHOS_DISTRIBUTED_HARDWARE_DHCONTEXT_H +#include #include #include #include #include +#include "power_mgr_client.h" +#include "power_state_callback_stub.h" + #include "device_type.h" #include "event_handler.h" #include "single_instance.h" @@ -55,18 +59,30 @@ public: }; std::shared_ptr GetEventHandler(); + bool IsSleeping(); + void SetIsSleeping(bool isSleeping); + +private: + class DHFWKPowerStateCallback : public OHOS::PowerMgr::PowerStateCallbackStub { + public: + void OnPowerStateChanged(OHOS::PowerMgr::PowerState state) override; + }; + void RegisterPowerStateLinstener(); + private: DeviceInfo devInfo_ { "", "", "", 0 }; std::mutex devMutex_; /* Save online device uuid and networkId */ - std::unordered_map onlineDeviceMap_; + std::unordered_map onlineDeviceMap_ = {}; /* Save online device hashed uuid and uuid */ - std::unordered_map deviceIdUUIDMap_; + std::unordered_map deviceIdUUIDMap_ = {}; std::shared_mutex onlineDevMutex_; std::shared_ptr eventHandler_; + /* true for system in sleeping, false for NOT in sleeping */ + std::atomic isSleeping_ = false; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/distributedhardwarefwkservice/src/localhardwaremanager/plugin_listener_impl.cpp b/services/distributedhardwarefwkservice/src/localhardwaremanager/plugin_listener_impl.cpp index fe50486f7dbde9b41d9b0f90aa0e206fc8a905cf..5424af283ac7eaa98ac35ece5e74a91628b24ea5 100644 --- a/services/distributedhardwarefwkservice/src/localhardwaremanager/plugin_listener_impl.cpp +++ b/services/distributedhardwarefwkservice/src/localhardwaremanager/plugin_listener_impl.cpp @@ -36,6 +36,10 @@ void PluginListenerImpl::PluginHardware(const std::string &dhId, const std::stri return; } DHLOGI("plugin start, dhId: %s", GetAnonyString(dhId).c_str()); + if (DHContext::GetInstance().IsSleeping()) { + DHLOGI("System is in sleeping, drop it"); + return; + } std::vector> capabilityInfos; std::string deviceId = DHContext::GetInstance().GetDeviceInfo().deviceId; std::string devName = DHContext::GetInstance().GetDeviceInfo().deviceName; @@ -56,6 +60,10 @@ void PluginListenerImpl::UnPluginHardware(const std::string &dhId) return; } DHLOGI("unplugin start, dhId: %s", GetAnonyString(dhId).c_str()); + if (DHContext::GetInstance().IsSleeping()) { + DHLOGI("System is in sleeping, drop it"); + return; + } std::string deviceId = DHContext::GetInstance().GetDeviceInfo().deviceId; std::shared_ptr capability = nullptr; auto ret = CapabilityInfoManager::GetInstance()->GetCapability(deviceId, dhId, capability); diff --git a/services/distributedhardwarefwkservice/src/utils/dh_context.cpp b/services/distributedhardwarefwkservice/src/utils/dh_context.cpp index 57c066c91ca7466550ccdf4801004a3ce09133e1..0deec491e58fc1f2b46d5033aba4f57245ef065c 100644 --- a/services/distributedhardwarefwkservice/src/utils/dh_context.cpp +++ b/services/distributedhardwarefwkservice/src/utils/dh_context.cpp @@ -30,6 +30,7 @@ DHContext::DHContext() DHLOGI("Ctor DHContext"); std::shared_ptr runner = AppExecFwk::EventRunner::Create(true); eventHandler_ = std::make_shared(runner); + RegisterPowerStateLinstener(); } DHContext::~DHContext() @@ -37,6 +38,46 @@ DHContext::~DHContext() DHLOGI("Dtor DHContext"); } +void DHContext::RegisterPowerStateLinstener() +{ + sptr powerStateCallback_(new DHFWKPowerStateCallback()); + if (powerStateCallback_ == nullptr) { + DHLOGE("DHFWK subscribe create power state callback Create Error"); + return; + } + + bool ret = PowerMgr::PowerMgrClient::GetInstance().RegisterPowerStateCallback(powerStateCallback_); + if (!ret) { + DHLOGE("DHFWK register power state callback failed"); + } else { + DHLOGE("DHFWK register power state callback success"); + } +} + +void DHContext::DHFWKPowerStateCallback::OnPowerStateChanged(PowerMgr::PowerState state) +{ + DHLOGI("DHFWK OnPowerStateChanged state: %u", static_cast(state)); + if (state == PowerMgr::PowerState::SLEEP || state == PowerMgr::PowerState::HIBERNATE || + state == PowerMgr::PowerState::SHUTDOWN) { + DHLOGI("DHFWK set in sleeping"); + DHContext::GetInstance().SetIsSleeping(true); + return; + } + + DHLOGI("DHFWK set NOT in sleeping"); + DHContext::GetInstance().SetIsSleeping(false); +} + +bool DHContext::IsSleeping() +{ + return isSleeping_; +} + +void DHContext::SetIsSleeping(bool isSleeping) +{ + isSleeping_ = isSleeping; +} + DHContext::CommonEventHandler::CommonEventHandler(const std::shared_ptr &runner) : AppExecFwk::EventHandler(runner) { diff --git a/services/distributedhardwarefwkservice/test/fuzztest/resourcemanager_fuzzer/BUILD.gn b/services/distributedhardwarefwkservice/test/fuzztest/resourcemanager_fuzzer/BUILD.gn index 9acd72e55eae95a1029daac90288a5dbe4c30d52..1032e67212f6cca7b88de11de518ba3fd1974efd 100644 --- a/services/distributedhardwarefwkservice/test/fuzztest/resourcemanager_fuzzer/BUILD.gn +++ b/services/distributedhardwarefwkservice/test/fuzztest/resourcemanager_fuzzer/BUILD.gn @@ -56,6 +56,7 @@ ohos_fuzztest("ResourcemanagerFuzzTest") { "eventhandler:libeventhandler", "ipc:ipc_single", "kv_store:distributeddata_inner", + "power_manager:powermgr_client", ] } diff --git a/services/distributedhardwarefwkservice/test/unittest/common/accessmanager/BUILD.gn b/services/distributedhardwarefwkservice/test/unittest/common/accessmanager/BUILD.gn index 490c99d5ed3a309a65c0f0fcc669120856cc74b0..dcbc89f51c542572f8ebb0cc8ed5ae663d8437f7 100644 --- a/services/distributedhardwarefwkservice/test/unittest/common/accessmanager/BUILD.gn +++ b/services/distributedhardwarefwkservice/test/unittest/common/accessmanager/BUILD.gn @@ -61,6 +61,7 @@ ohos_unittest("AccessManagerTest") { "hisysevent:libhisysevent", "hitrace:hitrace_meter", "init:libbegetutil", + "power_manager:powermgr_client", "safwk:system_ability_fwk", "samgr:samgr_proxy", ] diff --git a/services/distributedhardwarefwkservice/test/unittest/common/componentloader/BUILD.gn b/services/distributedhardwarefwkservice/test/unittest/common/componentloader/BUILD.gn index 35a03a685bccf5d775128c9faf6ae3320f43f282..193efc0564c1c6c49a4f3b21d390ee9a18f62f11 100644 --- a/services/distributedhardwarefwkservice/test/unittest/common/componentloader/BUILD.gn +++ b/services/distributedhardwarefwkservice/test/unittest/common/componentloader/BUILD.gn @@ -54,6 +54,7 @@ ohos_unittest("ComponentLoaderTest") { "config_policy:configpolicy_util", "hitrace:hitrace_meter", "kv_store:distributeddata_inner", + "power_manager:powermgr_client", ] defines = [ diff --git a/services/distributedhardwarefwkservice/test/unittest/common/componentmanager/component_manager/BUILD.gn b/services/distributedhardwarefwkservice/test/unittest/common/componentmanager/component_manager/BUILD.gn index afc1fb71e12344cbc573d0bcb548bd2c0ed27b80..5c83232ce23e9fa2f4def2cf9d05b2aea9029939 100644 --- a/services/distributedhardwarefwkservice/test/unittest/common/componentmanager/component_manager/BUILD.gn +++ b/services/distributedhardwarefwkservice/test/unittest/common/componentmanager/component_manager/BUILD.gn @@ -68,6 +68,7 @@ ohos_unittest("ComponentManagerTest") { "eventhandler:libeventhandler", "ipc:ipc_single", "kv_store:distributeddata_inner", + "power_manager:powermgr_client", ] defines = [ diff --git a/services/distributedhardwarefwkservice/test/unittest/common/dbadapter/BUILD.gn b/services/distributedhardwarefwkservice/test/unittest/common/dbadapter/BUILD.gn index 2e404e1621426c909bd7494c164896d264206df6..370032e45e1d19d459678aa2af231ae873ab6741 100644 --- a/services/distributedhardwarefwkservice/test/unittest/common/dbadapter/BUILD.gn +++ b/services/distributedhardwarefwkservice/test/unittest/common/dbadapter/BUILD.gn @@ -61,6 +61,7 @@ ohos_unittest("DbAdapterTest") { "c_utils:utils", "eventhandler:libeventhandler", "kv_store:distributeddata_inner", + "power_manager:powermgr_client", "safwk:system_ability_fwk", ] } diff --git a/services/distributedhardwarefwkservice/test/unittest/common/distributedhardwaremanager/BUILD.gn b/services/distributedhardwarefwkservice/test/unittest/common/distributedhardwaremanager/BUILD.gn index caa0a7b9d0353e68dbecd5a163881e193d78f0bc..9017a5150508265e78fc2ea95eb8f5970fdba5c9 100644 --- a/services/distributedhardwarefwkservice/test/unittest/common/distributedhardwaremanager/BUILD.gn +++ b/services/distributedhardwarefwkservice/test/unittest/common/distributedhardwaremanager/BUILD.gn @@ -49,6 +49,7 @@ ohos_unittest("DistributedHardwareManagerTest") { external_deps = [ "c_utils:utils", "eventhandler:libeventhandler", + "power_manager:powermgr_client", ] defines = [ diff --git a/services/distributedhardwarefwkservice/test/unittest/common/distributedhardwareservice/BUILD.gn b/services/distributedhardwarefwkservice/test/unittest/common/distributedhardwareservice/BUILD.gn index 432b09052f7af018abe8f68313faf0c0ca9efa83..b1ffab8bc24bcc936368c87f90324088ff9837a5 100644 --- a/services/distributedhardwarefwkservice/test/unittest/common/distributedhardwareservice/BUILD.gn +++ b/services/distributedhardwarefwkservice/test/unittest/common/distributedhardwareservice/BUILD.gn @@ -58,6 +58,7 @@ ohos_unittest("DistributedHardwareServiceTest") { "c_utils:utils", "eventhandler:libeventhandler", "ipc:ipc_core", + "power_manager:powermgr_client", "safwk:system_ability_fwk", ] } diff --git a/services/distributedhardwarefwkservice/test/unittest/common/localhardwaremanager/localhardwaremanager/BUILD.gn b/services/distributedhardwarefwkservice/test/unittest/common/localhardwaremanager/localhardwaremanager/BUILD.gn index aa5f97731d6b021475f3c72a4888b0c227f9bbcc..7905c5e84cef39b8e804fb5eb2d5f2a57281a45a 100644 --- a/services/distributedhardwarefwkservice/test/unittest/common/localhardwaremanager/localhardwaremanager/BUILD.gn +++ b/services/distributedhardwarefwkservice/test/unittest/common/localhardwaremanager/localhardwaremanager/BUILD.gn @@ -57,6 +57,7 @@ ohos_unittest("LocalHardwareManagerTest") { "eventhandler:libeventhandler", "hisysevent:libhisysevent", "kv_store:distributeddata_inner", + "power_manager:powermgr_client", ] defines = [ diff --git a/services/distributedhardwarefwkservice/test/unittest/common/resourcemanager/BUILD.gn b/services/distributedhardwarefwkservice/test/unittest/common/resourcemanager/BUILD.gn index 18d2e28067f1c65f25b37d41881ca67cd225c92b..15157c635abe9ebe3f05df39a943b1536646d6c2 100644 --- a/services/distributedhardwarefwkservice/test/unittest/common/resourcemanager/BUILD.gn +++ b/services/distributedhardwarefwkservice/test/unittest/common/resourcemanager/BUILD.gn @@ -51,6 +51,7 @@ ohos_unittest("ResourceManagerTest") { "c_utils:utils", "eventhandler:libeventhandler", "kv_store:distributeddata_inner", + "power_manager:powermgr_client", "safwk:system_ability_fwk", ] } diff --git a/services/distributedhardwarefwkservice/test/unittest/common/versioninfomanager/versioninfo/BUILD.gn b/services/distributedhardwarefwkservice/test/unittest/common/versioninfomanager/versioninfo/BUILD.gn index e4b51703302b2e8411bbe7d2b6046a9721504cb9..ac50f7da1c54e4365be8b4134fa2158aaa70d485 100644 --- a/services/distributedhardwarefwkservice/test/unittest/common/versioninfomanager/versioninfo/BUILD.gn +++ b/services/distributedhardwarefwkservice/test/unittest/common/versioninfomanager/versioninfo/BUILD.gn @@ -51,6 +51,7 @@ ohos_unittest("VersionInfoTest") { "c_utils:utils", "eventhandler:libeventhandler", "kv_store:distributeddata_inner", + "power_manager:powermgr_client", "safwk:system_ability_fwk", ] } diff --git a/services/distributedhardwarefwkservice/test/unittest/common/versioninfomanager/versioninfomanager/BUILD.gn b/services/distributedhardwarefwkservice/test/unittest/common/versioninfomanager/versioninfomanager/BUILD.gn index 38a9c45ddb66316900742bd285cc6018ec219fe4..d9cfa77b9048e86aa1aa717efb1e6a01933bc670 100644 --- a/services/distributedhardwarefwkservice/test/unittest/common/versioninfomanager/versioninfomanager/BUILD.gn +++ b/services/distributedhardwarefwkservice/test/unittest/common/versioninfomanager/versioninfomanager/BUILD.gn @@ -52,6 +52,7 @@ ohos_unittest("VersioninfoManagerTest") { "c_utils:utils", "eventhandler:libeventhandler", "kv_store:distributeddata_inner", + "power_manager:powermgr_client", "safwk:system_ability_fwk", ] } diff --git a/utils/test/unittest/common/eventbus/event_bus_test.cpp b/utils/test/unittest/common/eventbus/event_bus_test.cpp index 400eafeff7ad0ee9ad6f2f3bc5407b062c16c15a..78b2b81cdc5bcd79eed527bb2fa77b24a47fe737 100644 --- a/utils/test/unittest/common/eventbus/event_bus_test.cpp +++ b/utils/test/unittest/common/eventbus/event_bus_test.cpp @@ -15,7 +15,6 @@ #include "event_bus_test.h" -#include #include #include #include diff --git a/utils/test/unittest/common/eventbus/event_bus_test.h b/utils/test/unittest/common/eventbus/event_bus_test.h index 3d953e75d55a6f156a8b29e3561b841dbf46391f..e3be69e1d811f6a5432784cac77b7fa2e23d09e0 100644 --- a/utils/test/unittest/common/eventbus/event_bus_test.h +++ b/utils/test/unittest/common/eventbus/event_bus_test.h @@ -17,6 +17,7 @@ #define OHOS_DISTRIBUTED_HARDWARE_EVENT_BUS_TEST_H #include +#include #include #include diff --git a/utils/test/unittest/common/eventtrance/BUILD.gn b/utils/test/unittest/common/eventtrance/BUILD.gn index 4ff0134bd108eb43d2e2dd427d61694ad3357594..e240e684246b313e8e3754a81e9e65a98ff4a8bc 100644 --- a/utils/test/unittest/common/eventtrance/BUILD.gn +++ b/utils/test/unittest/common/eventtrance/BUILD.gn @@ -51,6 +51,7 @@ ohos_unittest("EventTranceTest") { "c_utils:utils", "hisysevent:libhisysevent", "hitrace:hitrace_meter", + "power_manager:powermgr_client", "safwk:system_ability_fwk", ] }