1 /*
2  * Copyright (c) 2023-2024 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 TELEPHONY_EXT_WRAPPER_H
17 #define TELEPHONY_EXT_WRAPPER_H
18 
19 #include "nocopyable.h"
20 #include "singleton.h"
21 #include "network_state.h"
22 #include "network_search_types.h"
23 #include "network_search_result.h"
24 #include "signal_information.h"
25 #include "network_state.h"
26 #include "cell_information.h"
27 #include "want.h"
28 #include "i_icc_file.h"
29 #include "tel_ril_types.h"
30 
31 namespace OHOS {
32 namespace Telephony {
33 
34 enum class SimSlotType {
35     INVALID_SLOT_ID = -1,
36     VSIM_SLOT_ID = 2,
37 };
38 
39 class TelephonyExtWrapper final {
40 DECLARE_DELAYED_REF_SINGLETON(TelephonyExtWrapper);
41 
42 public:
43     DISALLOW_COPY_AND_MOVE(TelephonyExtWrapper);
44     void InitTelephonyExtWrapper();
45 
46     typedef bool (*CHECK_OPC_VERSION_IS_UPDATE)(void);
47     typedef void (*UPDATE_OPC_VERSION)(void);
48     typedef void (*GET_VOICE_MAIL_ICCID_PARAMETER)(int32_t slotId, const char* iccid, std::string &number);
49     typedef void (*SET_VOICE_MAIL_ICCID_PARAMETER)(int32_t, const char*, const char*);
50     typedef void (*INIT_VOICE_MAIL_MANAGER_EXT)(int32_t);
51     typedef void (*DEINIT_VOICE_MAIL_MANAGER_EXT)(int32_t);
52     typedef void (*RESET_VOICE_MAIL_LOADED_FLAG_EXT)(int32_t);
53     typedef void (*SET_VOICE_MAIL_ON_SIM_EXT)(int32_t, const char*, const char*);
54     typedef bool (*GET_VOICE_MAIL_FIXED_EXT)(int32_t, const char*);
55     typedef void (*GET_VOICE_MAIL_NUMBER_EXT)(int32_t slotId, const char* carrier, std::string &number);
56     typedef void (*GET_VOICE_MAIL_TAG_EXT)(int32_t slotId, const char* carrier, std::string &tag);
57     typedef void (*RESET_VOICE_MAIL_MANAGER_EXT)(int32_t);
58     typedef void (*GET_NETWORK_STATUS_EXT)(int32_t slotId, sptr<OHOS::Telephony::NetworkState> &networkState);
59 
60     typedef int32_t (*GET_CELL_INFO_LIST)(int32_t slotId, std::vector<sptr<OHOS::Telephony::CellInformation>> &cells);
61     typedef void (*GET_RADIO_TECH_EXT)(int32_t slotId, int32_t &domainRadioTech);
62     typedef void (*GET_NR_OPTION_MODE_EXT)(int32_t slotId, int32_t &mode);
63     typedef void (*GET_NR_OPTION_MODE_EXTEND)(int32_t slotId, OHOS::Telephony::NrMode &mode);
64     typedef void (*GET_PREFERRED_NETWORK_EXT)(int32_t &preferredNetworkType);
65     typedef bool (*IS_NR_SUPPORTED_NATIVE)(int32_t modemRaf);
66     typedef void (*GET_SIGNAL_INFO_LIST_EXT)(int32_t slotId,
67 	    std::vector<sptr<OHOS::Telephony::SignalInformation>> &signals);
68     typedef void (*GET_NETWORK_CAPABILITY_EXT)(int32_t slotId, int32_t networkCapabilityType,
69 	    int32_t &networkCapabilityState);
70     typedef void (*ON_GET_NETWORK_SEARCH_INFORMATION_EXT)(int32_t &availableSize,
71         std::vector<OHOS::Telephony::NetworkInformation> &networkInformations);
72     typedef void (*CREATE_ICC_FILE_EXT)(int32_t slotId, std::shared_ptr<OHOS::Telephony::IIccFileExt> iccFileExt);
73 
74     typedef void (*UPDATE_COUNTRY_CODE_EXT)(int32_t, const char *);
75     typedef void (*UPDATE_TIME_ZONE_OFFSET_EXT)(int32_t, int32_t);
76     typedef void (*UPDATE_NETWORK_STATE_EXT)(int32_t slotId, std::unique_ptr<NetworkState> &networkState);
77     typedef int32_t (*UPDATE_NSA_STATE_EXT)(
78         int32_t slotId, int32_t cellId, bool endcAvailable, bool dcNrRestricted, int32_t nsaState);
79     typedef void (*PUBLISH_SPN_INFO_CHANGED_EXT)(OHOS::AAFwk::Want &want);
80     typedef void (*GET_ROAMINGBROKER_NUMERIC)(int32_t slotId, std::string &numeric);
81     typedef void (*GET_ROAMINGBROKER_IMSI)(int32_t slotId, std::string &imsi);
82     /* add for vsim begin */
83     typedef void (*IS_VSIM_IN_STATUS)(int32_t slotId, int32_t type, bool &status);
84     typedef void (*GET_VSIM_SLOT_ID)(int32_t &slotId);
85     typedef void (*ON_ALL_FILES_FETCHED_EXT)(int32_t slotId);
86     typedef void (*PUT_VSIM_EXTRA_INFO)(OHOS::AAFwk::Want &want, int32_t slotId, int32_t value);
87     typedef void (*CHANGE_SPN_AND_RULE_EXT)(std::string &spn, int32_t &rule, bool &showSpn);
88     typedef void (*GET_VSIM_CARD_STATE)(int32_t &cardType);
89     typedef bool (*GET_SIM_ID_EXT)(int32_t slotId, int32_t &simId);
90     typedef bool (*GET_SLOT_ID_EXT)(int32_t simId, int32_t &slotId);
91     typedef bool (*IS_HANDLE_VSIM)(void);
92     typedef bool (*SEND_EVENT)(std::shared_ptr<std::string> cmdData, int32_t slotId);
93     typedef bool (*INIT_BIP)(int32_t slotId);
94     /* add for vsim end */
95     typedef bool (*IS_ALLOWED_INSERT_APN)(std::string &value);
96     typedef void (*GET_TARGET_OPKEY)(int32_t slotId, std::u16string &opkey);
97     typedef void (*SORT_SIGNAL_INFO_LIST_EXT)(
98         int32_t slotId, std::vector<sptr<OHOS::Telephony::SignalInformation>> &signals);
99     typedef void (*GET_OPKEY_VERSION)(std::string &versionInfo);
100 
101     typedef bool (*PROCESS_SIGNAL_INFOS)(int32_t slotId, Rssi &signalIntensity);
102     typedef bool (*PROCESS_STATE_CHANGE_EXT)(int32_t slotId, sptr<NetworkState> &ns);
103 
104     CHECK_OPC_VERSION_IS_UPDATE checkOpcVersionIsUpdate_ = nullptr;
105     UPDATE_OPC_VERSION updateOpcVersion_ = nullptr;
106     GET_VOICE_MAIL_ICCID_PARAMETER getVoiceMailIccidParameter_ = nullptr;
107     SET_VOICE_MAIL_ICCID_PARAMETER setVoiceMailIccidParameter_ = nullptr;
108     INIT_VOICE_MAIL_MANAGER_EXT initVoiceMailManagerExt_ = nullptr;
109     DEINIT_VOICE_MAIL_MANAGER_EXT deinitVoiceMailManagerExt_ = nullptr;
110     RESET_VOICE_MAIL_LOADED_FLAG_EXT resetVoiceMailLoadedFlagExt_ = nullptr;
111     SET_VOICE_MAIL_ON_SIM_EXT setVoiceMailOnSimExt_ = nullptr;
112     GET_VOICE_MAIL_FIXED_EXT getVoiceMailFixedExt_ = nullptr;
113     GET_VOICE_MAIL_NUMBER_EXT getVoiceMailNumberExt_ = nullptr;
114     GET_VOICE_MAIL_TAG_EXT getVoiceMailTagExt_ = nullptr;
115     RESET_VOICE_MAIL_MANAGER_EXT resetVoiceMailManagerExt_ = nullptr;
116     GET_NETWORK_STATUS_EXT getNetworkStatusExt_ = nullptr;
117 
118     GET_CELL_INFO_LIST getCellInfoList_ = nullptr;
119     GET_RADIO_TECH_EXT getRadioTechExt_ = nullptr;
120     GET_NR_OPTION_MODE_EXT getNrOptionModeExt_ = nullptr;
121     GET_NR_OPTION_MODE_EXTEND getNrOptionModeExtend_ = nullptr;
122     GET_PREFERRED_NETWORK_EXT getPreferredNetworkExt_ = nullptr;
123     IS_NR_SUPPORTED_NATIVE isNrSupportedNative_ = nullptr;
124     GET_SIGNAL_INFO_LIST_EXT getSignalInfoListExt_ = nullptr;
125     GET_NETWORK_CAPABILITY_EXT getNetworkCapabilityExt_ = nullptr;
126     ON_GET_NETWORK_SEARCH_INFORMATION_EXT onGetNetworkSearchInformationExt_ = nullptr;
127     CREATE_ICC_FILE_EXT createIccFileExt_ = nullptr;
128     UPDATE_NETWORK_STATE_EXT updateNetworkStateExt_ = nullptr;
129     UPDATE_NSA_STATE_EXT updateNsaStateExt_ = nullptr;
130     PUBLISH_SPN_INFO_CHANGED_EXT publishSpnInfoChangedExt_ = nullptr;
131 
132     UPDATE_COUNTRY_CODE_EXT updateCountryCodeExt_ = nullptr;
133     UPDATE_TIME_ZONE_OFFSET_EXT updateTimeZoneOffsetExt_ = nullptr;
134 
135     /* add for vsim begin */
136     IS_VSIM_IN_STATUS isVSimInStatus_ = nullptr;
137     GET_VSIM_SLOT_ID getVSimSlotId_ = nullptr;
138     ON_ALL_FILES_FETCHED_EXT onAllFilesFetchedExt_ = nullptr;
139     PUT_VSIM_EXTRA_INFO putVSimExtraInfo_ = nullptr;
140     CHANGE_SPN_AND_RULE_EXT changeSpnAndRuleExt_ = nullptr;
141     GET_VSIM_CARD_STATE getVSimCardState_ = nullptr;
142     GET_SIM_ID_EXT getSimIdExt_ = nullptr;
143     GET_SLOT_ID_EXT getSlotIdExt_ = nullptr;
144     IS_HANDLE_VSIM isHandleVSim_ = nullptr;
145     SEND_EVENT sendEvent_ = nullptr;
146     INIT_BIP initBip_ = nullptr;
147     /* add for vsim end */
148     IS_ALLOWED_INSERT_APN isAllowedInsertApn_ = nullptr;
149     GET_TARGET_OPKEY getTargetOpkey_ = nullptr;
150     SORT_SIGNAL_INFO_LIST_EXT sortSignalInfoListExt_ = nullptr;
151     GET_OPKEY_VERSION getOpkeyVersion_ = nullptr;
152     GET_ROAMINGBROKER_NUMERIC getRoamingBrokerNumeric_ = nullptr;
153     GET_ROAMINGBROKER_IMSI getRoamingBrokerImsi_ = nullptr;
154     PROCESS_SIGNAL_INFOS processSignalInfos_ = nullptr;
155     PROCESS_STATE_CHANGE_EXT processStateChangeExt_ = nullptr;
156 
157 private:
158     void* telephonyExtWrapperHandle_ = nullptr;
159     void* telephonyVSimWrapperHandle_ = nullptr;
160     void InitTelephonyExtWrapperForNetWork();
161     void InitTelephonyExtWrapperForVoiceMail();
162     void InitTelephonyExtWrapperForCust();
163     void InitTelephonyExtWrapperForVSim();
164     void InitTelephonyExtWrapperForApnCust();
165     void InitTelephonyExtWrapperForSim();
166     void InitTelephonyExtWrapperForOpkeyVersion();
167 };
168 
169 #define TELEPHONY_EXT_WRAPPER ::OHOS::DelayedRefSingleton<TelephonyExtWrapper>::GetInstance()
170 } // namespace Telephony
171 } // namespace OHOS
172 #endif // TELEPHONY_EXT_WRAPPER_H
173