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 APN_MANAGER_H 172d43be4eSopenharmony_ci#define APN_MANAGER_H 182d43be4eSopenharmony_ci 192d43be4eSopenharmony_ci#include <mutex> 202d43be4eSopenharmony_ci#include <string> 212d43be4eSopenharmony_ci#include <vector> 222d43be4eSopenharmony_ci 232d43be4eSopenharmony_ci#include "apn_holder.h" 242d43be4eSopenharmony_ci#include "apn_item.h" 252d43be4eSopenharmony_ci#include "cellular_data_rdb_helper.h" 262d43be4eSopenharmony_ci#include "net_all_capabilities.h" 272d43be4eSopenharmony_ci 282d43be4eSopenharmony_cinamespace OHOS { 292d43be4eSopenharmony_cinamespace Telephony { 302d43be4eSopenharmony_ciclass ApnManager : public RefBase { 312d43be4eSopenharmony_cipublic: 322d43be4eSopenharmony_ci ApnManager(); 332d43be4eSopenharmony_ci ~ApnManager(); 342d43be4eSopenharmony_ci sptr<ApnHolder> GetApnHolder(const std::string &apnType) const; 352d43be4eSopenharmony_ci std::vector<sptr<ApnHolder>> GetAllApnHolder() const; 362d43be4eSopenharmony_ci std::vector<sptr<ApnHolder>> GetSortApnHolder() const; 372d43be4eSopenharmony_ci std::vector<sptr<ApnItem>> FilterMatchedApns(const std::string &requestApnType, const int32_t slotId); 382d43be4eSopenharmony_ci void InitApnHolders(); 392d43be4eSopenharmony_ci sptr<ApnHolder> FindApnHolderById(const int32_t id) const; 402d43be4eSopenharmony_ci static int32_t FindApnIdByApnName(const std::string &type); 412d43be4eSopenharmony_ci static std::string FindApnNameByApnId(const int32_t id); 422d43be4eSopenharmony_ci static int32_t FindApnIdByCapability(const uint64_t capabilities); 432d43be4eSopenharmony_ci static NetManagerStandard::NetCap FindBestCapability(const uint64_t capabilities); 442d43be4eSopenharmony_ci bool IsDataConnectionNotUsed(const std::shared_ptr<CellularDataStateMachine> &stateMachine) const; 452d43be4eSopenharmony_ci int32_t CreateAllApnItemByDatabase(int32_t slotId); 462d43be4eSopenharmony_ci bool HasAnyConnectedState() const; 472d43be4eSopenharmony_ci ApnProfileState GetOverallApnState() const; 482d43be4eSopenharmony_ci ApnProfileState GetOverallDefaultApnState() const; 492d43be4eSopenharmony_ci sptr<ApnItem> GetRilAttachApn(); 502d43be4eSopenharmony_ci bool ResetApns(int32_t slotId); 512d43be4eSopenharmony_ci void FetchDunApns(std::vector<sptr<ApnItem>> &matchApnItemList, const int32_t slotId); 522d43be4eSopenharmony_ci bool IsPreferredApnUserEdited(); 532d43be4eSopenharmony_ci static int32_t FindApnTypeByApnName(const std::string &apnName); 542d43be4eSopenharmony_ci void ClearAllApnBad(); 552d43be4eSopenharmony_ci 562d43be4eSopenharmony_ciprivate: 572d43be4eSopenharmony_ci void AddApnHolder(const std::string &apnType, const int32_t priority); 582d43be4eSopenharmony_ci int32_t CreateMvnoApnItems(int32_t slotId, const std::string &mcc, const std::string &mnc); 592d43be4eSopenharmony_ci int32_t MakeSpecificApnItem(std::vector<PdpProfile> &apnVec); 602d43be4eSopenharmony_ci void GetCTOperator(int32_t slotId, std::string &numeric); 612d43be4eSopenharmony_ci 622d43be4eSopenharmony_ciprivate: 632d43be4eSopenharmony_ci static const std::map<std::string, int32_t> apnIdApnNameMap_; 642d43be4eSopenharmony_ci static const std::map<std::string, ApnTypes> apnNameApnTypeMap_; 652d43be4eSopenharmony_ci std::vector<sptr<ApnItem>> allApnItem_; 662d43be4eSopenharmony_ci std::vector<sptr<ApnHolder>> apnHolders_; 672d43be4eSopenharmony_ci std::map<int32_t, sptr<ApnHolder>> apnIdApnHolderMap_; 682d43be4eSopenharmony_ci std::vector<sptr<ApnHolder>> sortedApnHolders_; 692d43be4eSopenharmony_ci std::mutex mutex_; 702d43be4eSopenharmony_ci int32_t preferId_ = INVALID_PROFILE_ID; 712d43be4eSopenharmony_ci}; 722d43be4eSopenharmony_ci} // namespace Telephony 732d43be4eSopenharmony_ci} // namespace OHOS 742d43be4eSopenharmony_ci#endif // APN_MANAGER_H