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#ifndef CELLULAR_DATA_CONTROLLER_H 172d43be4eSopenharmony_ci#define CELLULAR_DATA_CONTROLLER_H 182d43be4eSopenharmony_ci 192d43be4eSopenharmony_ci#include <memory> 202d43be4eSopenharmony_ci 212d43be4eSopenharmony_ci#include "cellular_data_constant.h" 222d43be4eSopenharmony_ci#include "cellular_data_handler.h" 232d43be4eSopenharmony_ci#include "system_ability_status_change_stub.h" 242d43be4eSopenharmony_ci#include "tel_event_handler.h" 252d43be4eSopenharmony_ci 262d43be4eSopenharmony_cinamespace OHOS { 272d43be4eSopenharmony_cinamespace Telephony { 282d43be4eSopenharmony_ciclass CellularDataController : public TelEventHandler { 292d43be4eSopenharmony_cipublic: 302d43be4eSopenharmony_ci explicit CellularDataController(int32_t slotId); 312d43be4eSopenharmony_ci ~CellularDataController(); 322d43be4eSopenharmony_ci void Init(); 332d43be4eSopenharmony_ci bool ReleaseNet(const NetRequest &request); 342d43be4eSopenharmony_ci bool RequestNet(const NetRequest &request); 352d43be4eSopenharmony_ci int32_t SetCellularDataEnable(bool userDataEnabled); 362d43be4eSopenharmony_ci int32_t SetIntelligenceSwitchEnable(bool userDataEnabled); 372d43be4eSopenharmony_ci int32_t IsCellularDataEnabled(bool &dataEnabled) const; 382d43be4eSopenharmony_ci int32_t SetCellularDataRoamingEnabled(bool dataRoamingEnabled); 392d43be4eSopenharmony_ci ApnProfileState GetCellularDataState() const; 402d43be4eSopenharmony_ci ApnProfileState GetCellularDataState(const std::string &apnType) const; 412d43be4eSopenharmony_ci int32_t IsCellularDataRoamingEnabled(bool &dataRoamingEnabled) const; 422d43be4eSopenharmony_ci void AsynchronousRegister(); 432d43be4eSopenharmony_ci bool HandleApnChanged(); 442d43be4eSopenharmony_ci int32_t GetCellularDataFlowType(); 452d43be4eSopenharmony_ci void ProcessEvent(const AppExecFwk::InnerEvent::Pointer &event); 462d43be4eSopenharmony_ci int32_t SetPolicyDataOn(bool enable); 472d43be4eSopenharmony_ci bool IsRestrictedMode() const; 482d43be4eSopenharmony_ci DisConnectionReason GetDisConnectionReason(); 492d43be4eSopenharmony_ci bool HasInternetCapability(const int32_t cid) const; 502d43be4eSopenharmony_ci bool ClearAllConnections(DisConnectionReason reason) const; 512d43be4eSopenharmony_ci void GetDataConnApnAttr(ApnItem::Attribute &apnAttr) const; 522d43be4eSopenharmony_ci std::string GetDataConnIpType() const; 532d43be4eSopenharmony_ci int32_t GetDataRecoveryState(); 542d43be4eSopenharmony_ci void IsNeedDoRecovery(bool needDoRecovery) const; 552d43be4eSopenharmony_ci bool ChangeConnectionForDsds(bool enable) const; 562d43be4eSopenharmony_ci int32_t GetIntelligenceSwitchState(bool &switchState); 572d43be4eSopenharmony_ci bool EstablishAllApnsIfConnectable() const; 582d43be4eSopenharmony_ci bool AddUid(const NetRequest &request); 592d43be4eSopenharmony_ci bool RemoveUid(const NetRequest &request); 602d43be4eSopenharmony_ci bool ReleaseCellularDataConnection() const; 612d43be4eSopenharmony_ci bool UpdateNetworkInfo(); 622d43be4eSopenharmony_ci 632d43be4eSopenharmony_ciprivate: 642d43be4eSopenharmony_ci void RegisterEvents(); 652d43be4eSopenharmony_ci void UnRegisterEvents(); 662d43be4eSopenharmony_ci 672d43be4eSopenharmony_ciprivate: 682d43be4eSopenharmony_ci std::shared_ptr<CellularDataHandler> cellularDataHandler_; 692d43be4eSopenharmony_ci sptr<ISystemAbilityStatusChange> systemAbilityListener_ = nullptr; 702d43be4eSopenharmony_ci const int32_t slotId_; 712d43be4eSopenharmony_ci 722d43be4eSopenharmony_ciprivate: 732d43be4eSopenharmony_ci class SystemAbilityStatusChangeListener : public OHOS::SystemAbilityStatusChangeStub { 742d43be4eSopenharmony_ci public: 752d43be4eSopenharmony_ci explicit SystemAbilityStatusChangeListener(int32_t slotId, std::shared_ptr<CellularDataHandler> handler); 762d43be4eSopenharmony_ci ~SystemAbilityStatusChangeListener() = default; 772d43be4eSopenharmony_ci void OnAddSystemAbility(int32_t systemAbilityId, const std::string &deviceId) override; 782d43be4eSopenharmony_ci void OnRemoveSystemAbility(int32_t systemAbilityId, const std::string &deviceId) override; 792d43be4eSopenharmony_ci 802d43be4eSopenharmony_ci private: 812d43be4eSopenharmony_ci const int32_t slotId_; 822d43be4eSopenharmony_ci std::shared_ptr<CellularDataHandler> handler_; 832d43be4eSopenharmony_ci }; 842d43be4eSopenharmony_ci}; 852d43be4eSopenharmony_ci} // namespace Telephony 862d43be4eSopenharmony_ci} // namespace OHOS 872d43be4eSopenharmony_ci#endif // CELLULAR_DATA_CONTROLLER_H 88