* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "device_param_mgr.h"
#include "os_account_manager.h"
#include <parameter.h>
#include <parameters.h>
#include "distributed_hardware_log.h"
namespace OHOS {
namespace DistributedHardware {
namespace {
constexpr int32_t BUF_LENTH = 128;
const char *SYNC_TYPE_E2E = "1";
const char *DATA_SYNC_PARAM = "persist.distributed_scene.sys_settings_data_sync";
constexpr const char *ENTERPRISE_SPACE_ENABLE_PARAM = "persist.space_mgr_service.enterprise_space_enable";
}
FWK_IMPLEMENT_SINGLE_INSTANCE(DeviceParamMgr);
void DeviceParamMgr::QueryDeviceDataSyncMode()
{
char paramBuf[BUF_LENTH] = {0};
int32_t ret = GetParameter(DATA_SYNC_PARAM, "", paramBuf, BUF_LENTH);
DHLOGI("The device paramBuf: %{public}s", paramBuf);
if (ret > 0 && strncmp(paramBuf, SYNC_TYPE_E2E, strlen(SYNC_TYPE_E2E)) == 0) {
DHLOGI("Determining the e2e device succeeded.");
isDeviceE2ESync_.store(true);
return;
}
DHLOGW("Determining is not e2e device");
}
bool DeviceParamMgr::QueryUserBelongToSpace()
{
auto ret = AccountSA::OsAccountManager::GetForegroundOsAccountLocalId(userId_);
DHLOGI("Current userId= %{public}d", userId_);
if (ret == ERR_OK) {
DHLOGI("Get userId Success.");
AccountSA::DomainAccountInfo info;
ret = AccountSA::OsAccountManager::GetOsAccountDomainInfo(userId_, info);
if (ret == ERR_OK && !info.accountName_.empty()) {
DHLOGI("User is an enterprise user.");
return true;
}
}
DHLOGI("User is not an enterprise user.");
return false;
}
bool DeviceParamMgr::QueryDeviceSpaceMode()
{
bool isEnterpriseSpaceEnable = system::GetBoolParameter(ENTERPRISE_SPACE_ENABLE_PARAM, false);
if (isEnterpriseSpaceEnable) {
DHLOGI("Enterprise space enablement");
return true;
}
DHLOGI("Enterprise space close");
return false;
}
bool DeviceParamMgr::GetDeviceSyncDataMode()
{
if (!isDeviceE2ESync_.load()) {
return false;
}
if (QueryDeviceSpaceMode() && !QueryUserBelongToSpace()) {
return false;
}
return true;
}
}
}