• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021-2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef IMPL_CORE_MANAGER_INNER_H
17 #define IMPL_CORE_MANAGER_INNER_H
18 
19 #include <thread>
20 #include <unistd.h>
21 
22 #include "i_network_search.h"
23 #include "i_sim_manager.h"
24 #include "i_tel_ril_manager.h"
25 #include "sim_account_callback.h"
26 #include "telephony_errors.h"
27 #include "telephony_types.h"
28 
29 namespace OHOS {
30 namespace Telephony {
31 class CoreManagerInner final {
32 public:
33     ~CoreManagerInner() = default;
34     DISALLOW_COPY_AND_MOVE(CoreManagerInner);
35     static CoreManagerInner &GetInstance();
36     void OnInit(std::shared_ptr<INetworkSearch> networkSearchManager,
37         std::shared_ptr<Telephony::ISimManager> simManager, std::shared_ptr<ITelRilManager> telRilManager);
38     void SetTelRilMangerObj(std::shared_ptr<ITelRilManager> telRilManager);
39     int32_t RegisterCoreNotify(
40         int32_t slotId, const std::shared_ptr<AppExecFwk::EventHandler> &handler, int what, int32_t *obj);
41     int32_t UnRegisterCoreNotify(
42         int32_t slotId, const std::shared_ptr<AppExecFwk::EventHandler> &observerCallBack, int what);
43     void RegisterCellularDataObject(const sptr<NetworkSearchCallBackBase> &callback);
44     void UnRegisterCellularDataObject(const sptr<NetworkSearchCallBackBase> &callback);
45     void RegisterCellularCallObject(const sptr<NetworkSearchCallBackBase> &callback);
46     void UnRegisterCellularCallObject(const sptr<NetworkSearchCallBackBase> &callback);
47     bool IsInitFinished(void);
48     bool IsInitFinishedForTelRil(void);
49     int32_t GetDefaultSlotId(void);
50     int32_t GetMaxSimCount(void);
51     int32_t RegisterSimAccountCallback(const std::string &bundleName, const sptr<SimAccountCallback> &callback);
52     int32_t UnregisterSimAccountCallback(const std::string &bundleName);
53 
54     /******************** telRilManager start *******************/
55     int32_t SetRadioState(
56         int32_t slotId, int32_t eventId, int fun, int rst, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
57     int32_t GetRadioState(
58         int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
59     int32_t ShutDown(int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
60     int32_t Dial(int32_t slotId, int32_t eventId, std::string address, int clirMode,
61         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
62     int32_t Reject(int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
63     int32_t Hangup(
64         int32_t slotId, int32_t eventId, int32_t gsmIndex, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
65     int32_t Answer(int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
66     int32_t GetCallList(
67         int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
68     int32_t HoldCall(int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
69     int32_t UnHoldCall(int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
70     int32_t SwitchCall(int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
71     int32_t CombineConference(
72         int32_t slotId, int32_t eventId, int32_t callType, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
73     int32_t SeparateConference(int32_t slotId, int32_t eventId, int32_t callIndex, int32_t callType,
74         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
75     int32_t CallSupplement(
76         int32_t slotId, int32_t eventId, int32_t type, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
77     int32_t GetClip(int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
78     int32_t SetClip(
79         int32_t slotId, int32_t eventId, int32_t action, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
80     int32_t GetClir(int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
81     int32_t SetClir(
82         int32_t slotId, int32_t eventId, int32_t action, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
83     int32_t SetCallWaiting(
84         int32_t slotId, int32_t eventId, int32_t activate, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
85     int32_t SetCallTransferInfo(int32_t slotId, int32_t eventId, const CallTransferParam &callTransfer,
86         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
87     int32_t GetCallTransferInfo(int32_t slotId, int32_t eventId, const int32_t reason,
88         const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
89     int32_t GetCallWaiting(
90         int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
91     int32_t GetCallRestriction(int32_t slotId, int32_t eventId, std::string fac,
92         const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
93     int32_t SetCallRestriction(int32_t slotId, int32_t eventId, const CallRestrictionParam &callRestriction,
94         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
95     /* PDP start */
96     int32_t SetDataPermitted(int32_t slotId, int32_t eventId, int32_t dataPermitted,
97         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
98     int32_t SetInitApnInfo(int32_t slotId, int32_t eventId, const DataProfile &dataProfile,
99         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
100     int32_t ActivatePdpContext(int32_t slotId, int32_t eventId, const ActivateDataParam &activateData,
101         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
102     int32_t DeactivatePdpContext(int32_t slotId, int32_t eventId, const DeactivateDataParam &deactivateData,
103         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
104     int32_t GetPdpContextList(
105         int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
106     int32_t GetLinkBandwidthInfo(
107         int32_t slotId, int32_t eventId, const int32_t cid, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
108     int32_t SetLinkBandwidthReportingRule(int32_t slotId, int32_t eventId, LinkBandwidthRule linkBandwidth,
109         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
110     /* PDP end */
111     int32_t StopDTMF(
112         int32_t slotId, int32_t eventId, int32_t index, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
113     int32_t StartDTMF(int32_t slotId, int32_t eventId, char cDTMFCode, int32_t index,
114         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
115     int32_t SendDTMF(int32_t slotId, int32_t eventId, char cDTMFCode, int32_t index,
116         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
117     int32_t SendDTMF(int32_t slotId, int32_t eventId, const DtmfParam &dtmfParam,
118         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
119 
120     int32_t GetSignalStrength(
121         int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
122     int32_t GetCsRegStatus(
123         int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
124     int32_t GetPsRegStatus(
125         int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
126     int32_t SetCallPreferenceMode(
127         int32_t slotId, int32_t eventId, int32_t mode, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
128     int32_t GetCallPreferenceMode(
129         int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
130     int32_t SetUssd(int32_t slotId, int32_t eventId, const std::string str,
131         const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
132     int32_t GetUssd(int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
133     int32_t GetMute(int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
134     int32_t SetMute(
135         int32_t slotId, int32_t eventId, int32_t mute, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
136     int32_t GetEmergencyCallList(
137         int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
138     int32_t SetEmergencyCallList(int32_t slotId, int32_t eventId, std::vector<EmergencyCall> &eccVec,
139         const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
140     int32_t GetCallFailReason(
141         int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
142     int32_t GetOperatorInfo(
143         int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
144     int32_t GetCellInfoList(int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
145     int32_t GetCurrentCellInfo(
146         int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
147 
148     int32_t SendGsmSms(int32_t slotId, int32_t eventId, GsmSimMessageParam &gsmMessage,
149         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
150     int32_t SendCdmaSms(int32_t slotId, int32_t eventId, std::string pdu, int64_t refId,
151         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
152     int32_t AddSimMessage(int32_t slotId, int32_t eventId, const SimMessageParam &simMessage,
153         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
154     int32_t GetSmscAddr(
155         int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
156     int32_t GetCdmaCBConfig(int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
157     int32_t SetSmscAddr(int32_t slotId, int32_t eventId, int32_t tosca, std::string address,
158         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
159     int32_t DelSimMessage(
160         int32_t slotId, int32_t eventId, int32_t gsmIndex, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
161     int32_t SendSmsMoreMode(int32_t slotId, int32_t eventId, GsmSimMessageParam &gsmMessage,
162         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
163     int32_t SendSmsAck(int32_t slotId, int32_t eventId, bool success, int32_t cause,
164         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
165     int32_t GetCBConfig(int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
166     int32_t SetCBConfig(int32_t slotId, int32_t eventId, const CBConfigParam &cbConfig,
167         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
168     int32_t SetCdmaCBConfig(int32_t slotId, int32_t eventId, CdmaCBConfigInfoList &cdmaCBConfigInfoList,
169         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
170     int32_t GetNetworkSearchInformation(
171         int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
172     int32_t GetNetworkSelectionMode(
173         int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler) const;
174     int32_t SetNetworkSelectionMode(int32_t slotId, int32_t eventId, int32_t automaticFlag, std::string oper,
175         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
176     int32_t AddCdmaSimMessage(int32_t slotId, int32_t eventId, int32_t status, std::string pdu,
177         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
178     int32_t DelCdmaSimMessage(
179         int32_t slotId, int32_t eventId, int32_t cdmaIndex, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
180     int32_t UpdateCdmaSimMessage(int32_t slotId, int32_t eventId, const CdmaSimMessageParam &cdmaSimMsg,
181         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
182     int32_t SetPreferredNetworkPara(int32_t slotId, int32_t eventId, int32_t preferredNetworkType,
183         const std::shared_ptr<AppExecFwk::EventHandler> &handler);
184     int32_t GetPreferredNetworkPara(
185         int32_t slotId, int32_t eventId, const std::shared_ptr<AppExecFwk::EventHandler> &handler);
186 
187     /******************** telRilManager end *******************/
188     /******************** networkSearchManager start *******************/
189     int32_t GetPsRadioTech(int32_t slotId, int32_t &psRadioTech);
190     int32_t GetCsRadioTech(int32_t slotId, int32_t &csRadioTech);
191     int32_t GetPsRegState(int32_t slotId);
192     int32_t GetCsRegState(int32_t slotId);
193     int32_t GetPsRoamingState(int32_t slotId);
194     bool SetNetworkSelectionMode(int32_t slotId, int32_t selectMode, const sptr<NetworkInformation> &networkInformation,
195         bool resumeSelection, const sptr<INetworkSearchCallback> &callback);
196     int32_t GetSignalInfoList(int32_t slotId, std::vector<sptr<SignalInformation>> &signals);
197     std::u16string GetOperatorNumeric(int32_t slotId);
198     int32_t GetOperatorName(int32_t slotId, std::u16string &operatorName);
199     int32_t GetNetworkStatus(int32_t slotId, sptr<NetworkState> &networkState);
200     int32_t SetRadioState(int32_t slotId, bool isOn, int32_t rst, const sptr<INetworkSearchCallback> &callback);
201     int32_t GetRadioState(int32_t slotId);
202     int32_t GetRadioState(int32_t slotId, const sptr<INetworkSearchCallback> &callback);
203     int32_t GetIsoCountryCodeForNetwork(int32_t slotId, std::u16string &countryCode);
204     int32_t GetImei(int32_t slotId, std::u16string &imei);
205     int32_t GetMeid(int32_t slotId, std::u16string &meid);
206     int32_t GetUniqueDeviceId(int32_t slotId, std::u16string &deviceId);
207     PhoneType GetPhoneType(int32_t slotId);
208     sptr<CellLocation> GetCellLocation(int32_t slotId);
209     int32_t GetNetworkSearchInformation(int32_t slotId, const sptr<INetworkSearchCallback> &callback);
210     int32_t GetNetworkSelectionMode(int32_t slotId, const sptr<INetworkSearchCallback> &callback);
211     int32_t GetImsRegStatus(int32_t slotId, ImsServiceType imsSrvType, ImsRegInfo &info) const;
212     int32_t GetCellInfoList(int32_t slotId, std::vector<sptr<CellInformation>> &cellInfo);
213     int32_t SendUpdateCellLocationRequest(int32_t slotId);
214 
215     int32_t GetPreferredNetwork(int32_t slotId, const sptr<INetworkSearchCallback> &callback);
216     int32_t SetPreferredNetwork(int32_t slotId, int32_t networkMode, const sptr<INetworkSearchCallback> &callback);
217 
218     bool IsNrSupported(int32_t slotId);
219     int32_t GetNrOptionMode(int32_t slotId, NrMode &mode);
220     FrequencyType GetFrequencyType(int32_t slotId) const;
221     NrState GetNrState(int32_t slotId) const;
222     void DcPhysicalLinkActiveUpdate(int32_t slotId, bool isActive);
223     /******************** networkSearchManager end *******************/
224     /******************** simManager start ***************************/
225     int32_t ObtainSpnCondition(int32_t slotId, bool roaming, std::string operatorNum);
226     int32_t GetSimSpn(int32_t slotId, std::u16string &spn);
227     int32_t SetVoiceMailInfo(int32_t slotId, const std::u16string &mailName, const std::u16string &mailNumber);
228     int32_t HasOperatorPrivileges(const int32_t slotId, bool &hasOperatorPrivileges);
229     int32_t SendEnvelopeCmd(int32_t slotId, const std::string &cmd);
230     int32_t SendTerminalResponseCmd(int32_t slotId, const std::string &cmd);
231     int32_t SendCallSetupRequestResult(int32_t slotId, bool accept);
232     int32_t UnlockSimLock(int32_t slotId, const PersoLockInfo &lockInfo, LockStatusResponse &response);
233     int32_t HasSimCard(int32_t slotId, bool &hasSimCard);
234     int32_t GetSimState(int32_t slotId, SimState &simState);
235     int32_t GetCardType(int32_t slotId, CardType &cardType);
236     int32_t UnlockPin(int32_t slotId, const std::string &pin, LockStatusResponse &response);
237     int32_t UnlockPuk(int32_t slotId, const std::string &newPin, const std::string &puk, LockStatusResponse &response);
238     int32_t AlterPin(
239         int32_t slotId, const std::string &newPin, const std::string &oldPin, LockStatusResponse &response);
240     int32_t SetLockState(int32_t slotId, const LockInfo &options, LockStatusResponse &response);
241     int32_t GetLockState(int32_t slotId, LockType lockType, LockState &lockState);
242     int32_t RefreshSimState(int32_t slotId);
243     int32_t UnlockPin2(int32_t slotId, const std::string &pin2, LockStatusResponse &response);
244     int32_t UnlockPuk2(
245         int32_t slotId, const std::string &newPin2, const std::string &puk2, LockStatusResponse &response);
246     int32_t AlterPin2(
247         int32_t slotId, const std::string &newPin2, const std::string &oldPin2, LockStatusResponse &response);
248     int32_t GetShowNumber(int32_t slotId, std::u16string &showNumber);
249     int32_t GetShowName(int32_t slotId, std::u16string &showName);
250     int32_t GetActiveSimAccountInfoList(std::vector<IccAccountInfo> &iccAccountInfoList);
251     int32_t GetOperatorConfigs(int32_t slotId, OperatorConfig &poc);
252     int32_t GetSimOperatorNumeric(int32_t slotId, std::u16string &operatorNumeric);
253     int32_t GetISOCountryCodeForSim(int32_t slotId, std::u16string &countryCode);
254     int32_t GetSimIccId(int32_t slotId, std::u16string &iccId);
255     int32_t GetIMSI(int32_t slotId, std::u16string &imsi);
256     std::u16string GetLocaleFromDefaultSim(int32_t slotId);
257     int32_t GetSlotId(int32_t simId);
258     int32_t GetSimId(int32_t slotId);
259     int32_t GetSimGid1(int32_t slotId, std::u16string &gid1);
260     std::u16string GetSimGid2(int32_t slotId);
261     int32_t GetOpName(int32_t slotId, std::u16string &opname);
262     int32_t GetOpKeyExt(int32_t slotId, std::u16string &opkeyExt);
263     int32_t GetOpKey(std::u16string &opkey);
264     int32_t GetOpKey(int32_t slotId, std::u16string &opkey);
265     int32_t GetSimTelephoneNumber(int32_t slotId, std::u16string &telephoneNumber);
266     std::u16string GetSimTeleNumberIdentifier(const int32_t slotId);
267     int32_t GetVoiceMailIdentifier(int32_t slotId, std::u16string &voiceMailIdentifier);
268     int32_t GetVoiceMailNumber(int32_t slotId, std::u16string &voiceMailNumber);
269     std::u16string GetSimIst(int32_t slotId);
270     int32_t QueryIccDiallingNumbers(int slotId, int type, std::vector<std::shared_ptr<DiallingNumbersInfo>> &result);
271     int32_t AddIccDiallingNumbers(int slotId, int type, const std::shared_ptr<DiallingNumbersInfo> &diallingNumber);
272     int32_t DelIccDiallingNumbers(int slotId, int type, const std::shared_ptr<DiallingNumbersInfo> &diallingNumber);
273     int32_t UpdateIccDiallingNumbers(int slotId, int type, const std::shared_ptr<DiallingNumbersInfo> &diallingNumber);
274     int32_t AddSmsToIcc(int slotId, int status, std::string &pdu, std::string &smsc);
275     int32_t UpdateSmsIcc(int slotId, int index, int status, std::string &pduData, std::string &smsc);
276     int32_t DelSmsIcc(int slotId, int index);
277     std::vector<std::string> ObtainAllSmsOfIcc(int slotId);
278     bool IsSimActive(int32_t slotId);
279     int32_t SetActiveSim(int32_t slotId, int32_t enable);
280     int32_t GetSimAccountInfo(int32_t slotId, IccAccountInfo &info);
281     int32_t SetDefaultVoiceSlotId(int32_t slotId);
282     int32_t SetDefaultSmsSlotId(int32_t slotId);
283     int32_t SetDefaultCellularDataSlotId(int32_t slotId);
284     int32_t SetPrimarySlotId(int32_t slotId);
285     int32_t SetShowNumber(int32_t slotId, const std::u16string &number);
286     int32_t SetShowName(int32_t slotId, const std::u16string &name);
287     int32_t GetDefaultVoiceSlotId();
288     int32_t GetDefaultSmsSlotId();
289     int32_t GetDefaultCellularDataSlotId();
290     int32_t GetPrimarySlotId(int32_t &slotId);
291     int32_t SaveImsSwitch(int32_t slotId, int32_t imsSwitchValue);
292     int32_t QueryImsSwitch(int32_t slotId, int32_t &imsSwitchValue);
293     /******************** simManager end *****************************/
294 private:
295     CoreManagerInner();
296 
297 private:
298     bool isInitAllObj_ = false;
299     std::shared_ptr<INetworkSearch> networkSearchManager_ = nullptr;
300     std::shared_ptr<ISimManager> simManager_ = nullptr;
301     std::shared_ptr<ITelRilManager> telRilManager_ = nullptr;
302 };
303 } // namespace Telephony
304 } // namespace OHOS
305 #endif
306