12d43be4eSopenharmony_ci/* 22d43be4eSopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd. 32d43be4eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 42d43be4eSopenharmony_ci * you may not use this file except in compliance with the License. 52d43be4eSopenharmony_ci * You may obtain a copy of the License at 62d43be4eSopenharmony_ci * 72d43be4eSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 82d43be4eSopenharmony_ci * 92d43be4eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 102d43be4eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 112d43be4eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 122d43be4eSopenharmony_ci * See the License for the specific language governing permissions and 132d43be4eSopenharmony_ci * limitations under the License. 142d43be4eSopenharmony_ci */ 152d43be4eSopenharmony_ci 162d43be4eSopenharmony_ci#include "cellular_data_roaming_observer.h" 172d43be4eSopenharmony_ci 182d43be4eSopenharmony_ci#include "cellular_data_constant.h" 192d43be4eSopenharmony_ci#include "cellular_data_event_code.h" 202d43be4eSopenharmony_ci#include "cellular_data_settings_rdb_helper.h" 212d43be4eSopenharmony_ci#include "core_manager_inner.h" 222d43be4eSopenharmony_ci#include "telephony_log_wrapper.h" 232d43be4eSopenharmony_ci 242d43be4eSopenharmony_cinamespace OHOS { 252d43be4eSopenharmony_cinamespace Telephony { 262d43be4eSopenharmony_ciCellularDataRoamingObserver::CellularDataRoamingObserver( 272d43be4eSopenharmony_ci std::weak_ptr<TelEventHandler> &&cellularDataHandler, int32_t slotId) 282d43be4eSopenharmony_ci : cellularDataHandler_(std::move(cellularDataHandler)), slotId_(slotId) 292d43be4eSopenharmony_ci{} 302d43be4eSopenharmony_ci 312d43be4eSopenharmony_ciCellularDataRoamingObserver::~CellularDataRoamingObserver() = default; 322d43be4eSopenharmony_ci 332d43be4eSopenharmony_civoid CellularDataRoamingObserver::OnChange() 342d43be4eSopenharmony_ci{ 352d43be4eSopenharmony_ci std::shared_ptr<CellularDataSettingsRdbHelper> settingHelper = CellularDataSettingsRdbHelper::GetInstance(); 362d43be4eSopenharmony_ci if (settingHelper == nullptr) { 372d43be4eSopenharmony_ci return; 382d43be4eSopenharmony_ci } 392d43be4eSopenharmony_ci int32_t simId = CoreManagerInner::GetInstance().GetSimId(slotId_); 402d43be4eSopenharmony_ci if (simId <= INVALID_SIM_ID) { 412d43be4eSopenharmony_ci TELEPHONY_LOGE("Slot%{public}d: failed due to invalid sim id %{public}d", slotId_, simId); 422d43be4eSopenharmony_ci return; 432d43be4eSopenharmony_ci } 442d43be4eSopenharmony_ci Uri uri(std::string(CELLULAR_DATA_SETTING_DATA_ROAMING_URI) + std::to_string(simId)); 452d43be4eSopenharmony_ci int value = static_cast<int32_t>(RoamingSwitchCode::CELLULAR_DATA_ROAMING_DISABLED); 462d43be4eSopenharmony_ci if (settingHelper->GetValue(uri, std::string(CELLULAR_DATA_COLUMN_ROAMING) + std::to_string(simId), value) != 472d43be4eSopenharmony_ci TELEPHONY_ERR_SUCCESS) { 482d43be4eSopenharmony_ci TELEPHONY_LOGE("GetValue failed!"); 492d43be4eSopenharmony_ci return; 502d43be4eSopenharmony_ci } 512d43be4eSopenharmony_ci TELEPHONY_LOGI("cellular data roaming switch is %{public}d", value); 522d43be4eSopenharmony_ci auto cellularDataHandler = cellularDataHandler_.lock(); 532d43be4eSopenharmony_ci if (cellularDataHandler != nullptr) { 542d43be4eSopenharmony_ci cellularDataHandler->SendEvent(CellularDataEventCode::MSG_DB_SETTING_ROAMING_CHANGED, value, 0); 552d43be4eSopenharmony_ci } 562d43be4eSopenharmony_ci} 572d43be4eSopenharmony_ci} // namespace Telephony 582d43be4eSopenharmony_ci} // namespace OHOS