1 /* 2 * Copyright (C) 2022-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 TEL_RIL_CALLBACK_H 17 #define TEL_RIL_CALLBACK_H 18 19 #include <v1_3/iril.h> 20 21 #include "tel_ril_manager.h" 22 23 namespace OHOS { 24 namespace Telephony { 25 class TelRilCallback : public HDI::Ril::V1_3::IRilCallback { 26 public: 27 explicit TelRilCallback(std::shared_ptr<TelRilManager> telRilManager); 28 ~TelRilCallback() = default; 29 30 // Call 31 int32_t CallEmergencyNotice(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 32 const HDI::Ril::V1_1::EmergencyInfoList &emergencyInfoList) override; 33 int32_t CallStateUpdated(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 34 int32_t CallRingbackVoiceNotice(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 35 const HDI::Ril::V1_1::RingbackVoice &ringbackVoice) override; 36 int32_t CallSrvccStatusNotice(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 37 const HDI::Ril::V1_1::SrvccStatus &srvccStatus) override; 38 int32_t CallUssdNotice(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 39 const HDI::Ril::V1_1::UssdNoticeInfo &ussdNoticeInfo) override; 40 int32_t CallSsNotice(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 41 const HDI::Ril::V1_1::SsNoticeInfo &ssNoticeInfo) override; 42 int32_t CallRsrvccStatusNotify(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 43 44 int32_t SetEmergencyCallListResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 45 int32_t GetEmergencyCallListResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 46 const HDI::Ril::V1_1::EmergencyInfoList &emergencyInfoList) override; 47 int32_t GetCallListResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 48 const HDI::Ril::V1_1::CallInfoList &callList) override; 49 int32_t DialResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 50 int32_t HangupResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 51 int32_t RejectResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 52 int32_t AnswerResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 53 int32_t HoldCallResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 54 int32_t UnHoldCallResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 55 int32_t SwitchCallResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 56 int32_t GetClipResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 57 const HDI::Ril::V1_1::GetClipResult &getClipResult) override; 58 int32_t SetClipResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 59 int32_t CombineConferenceResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 60 int32_t SeparateConferenceResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 61 int32_t CallSupplementResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 62 int32_t GetCallWaitingResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 63 const HDI::Ril::V1_1::CallWaitResult &callWaitResult) override; 64 int32_t SetCallWaitingResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 65 int32_t GetCallTransferInfoResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 66 const HDI::Ril::V1_1::CallForwardQueryInfoList &cFQueryList) override; 67 int32_t SetCallTransferInfoResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 68 int32_t GetCallRestrictionResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 69 const HDI::Ril::V1_1::CallRestrictionResult &result) override; 70 int32_t SetCallRestrictionResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 71 int32_t GetClirResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 72 const HDI::Ril::V1_1::GetClirResult &getClirResult) override; 73 int32_t SetClirResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 74 int32_t StartDtmfResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 75 int32_t SendDtmfResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 76 int32_t StopDtmfResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 77 int32_t GetCallPreferenceModeResponse( 78 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, int32_t mode) override; 79 int32_t SetCallPreferenceModeResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 80 int32_t SetUssdResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 81 int32_t GetUssdResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, int32_t cusd) override; 82 int32_t SetMuteResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 83 int32_t GetMuteResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, int32_t mute) override; 84 int32_t GetCallFailReasonResponse( 85 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, int32_t callFail) override; 86 int32_t SetBarringPasswordResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 87 int32_t CloseUnFinishedUssdResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 88 int32_t SetVonrSwitchResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 89 90 // Data 91 int32_t PdpContextListUpdated(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 92 const HDI::Ril::V1_1::DataCallResultList &dataCallResultList) override; 93 int32_t DataLinkCapabilityUpdated(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 94 const HDI::Ril::V1_1::DataLinkCapability &dataLinkCapability) override; 95 int32_t ActivatePdpContextResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 96 const HDI::Ril::V1_1::SetupDataCallResultInfo &setupDataCallResultInfo) override; 97 int32_t DeactivatePdpContextResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 98 int32_t GetPdpContextListResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 99 const HDI::Ril::V1_1::DataCallResultList &dataCallResultList) override; 100 int32_t SetInitApnInfoResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 101 int32_t SetLinkBandwidthReportingRuleResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 102 int32_t GetLinkBandwidthInfoResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 103 const HDI::Ril::V1_1::DataLinkBandwidthInfo &dataLinkBandwidthInfo) override; 104 int32_t SetDataPermittedResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 105 int32_t GetLinkCapabilityResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 106 const HDI::Ril::V1_1::DataLinkCapability &dataLinkCapability) override; 107 int32_t CleanAllConnectionsResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 108 109 // Modem 110 int32_t RadioStateUpdated(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, int32_t state) override; 111 int32_t VoiceRadioTechUpdated(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 112 const HDI::Ril::V1_1::VoiceRadioTechnology &voiceRadioTechnology) override; 113 int32_t DsdsModeUpdated(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, int32_t mode) override; 114 int32_t ShutDownResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 115 int32_t SetRadioStateResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 116 int32_t GetRadioStateResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, int32_t state) override; 117 int32_t GetImeiResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const std::string &imei) override; 118 int32_t GetImeiSvResponse( 119 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const std::string &imeiSv) override; 120 int32_t GetMeidResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const std::string &meid) override; 121 int32_t GetVoiceRadioTechnologyResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 122 const HDI::Ril::V1_1::VoiceRadioTechnology &voiceRadioTechnology) override; 123 int32_t GetBasebandVersionResponse( 124 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const std::string &basebandVersion) override; 125 126 // sim notice 127 int32_t SimStateUpdated(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 128 int32_t SimStkSessionEndNotify(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 129 int32_t SimStkProactiveNotify( 130 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const std::string &response) override; 131 int32_t SimStkAlphaNotify( 132 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const std::string &response) override; 133 int32_t SimStkEventNotify( 134 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const std::string &response) override; 135 int32_t SimStkCallSetupNotify(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 136 int32_t SimRefreshNotify(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 137 int32_t SimRadioProtocolUpdated(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 138 const HDI::Ril::V1_1::RadioProtocol &radioProtocol) override; 139 140 // sim response 141 int32_t GetSimIOResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 142 const HDI::Ril::V1_1::IccIoResultInfo &result) override; 143 int32_t GetSimStatusResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 144 const HDI::Ril::V1_1::CardStatusInfo &result) override; 145 int32_t GetSimCardStatusResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 146 const HDI::Ril::V1_3::SimCardStatusInfo &result) override; 147 int32_t GetImsiResponse( 148 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const std::string &response) override; 149 int32_t GetSimLockStatusResponse( 150 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, int32_t simLockStatus) override; 151 int32_t SetSimLockResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 152 const HDI::Ril::V1_1::LockStatusResp &lockStatus) override; 153 int32_t ChangeSimPasswordResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 154 const HDI::Ril::V1_1::LockStatusResp &lockStatus) override; 155 int32_t UnlockPinResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 156 const HDI::Ril::V1_1::LockStatusResp &lockStatus) override; 157 int32_t UnlockPukResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 158 const HDI::Ril::V1_1::LockStatusResp &lockStatus) override; 159 int32_t UnlockPin2Response(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 160 const HDI::Ril::V1_1::LockStatusResp &lockStatus) override; 161 int32_t UnlockPuk2Response(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 162 const HDI::Ril::V1_1::LockStatusResp &lockStatus) override; 163 int32_t SetActiveSimResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 164 int32_t SimStkSendTerminalResponseResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 165 int32_t SimStkSendEnvelopeResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 166 int32_t SimStkSendCallSetupRequestResultResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 167 int32_t SimStkIsReadyResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 168 int32_t GetRadioProtocolResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 169 const HDI::Ril::V1_1::RadioProtocol &radioProtocol) override; 170 int32_t SetRadioProtocolResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 171 const HDI::Ril::V1_1::RadioProtocol &radioProtocol) override; 172 int32_t SimOpenLogicalChannelResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 173 const HDI::Ril::V1_1::OpenLogicalChannelResponse &pOpenLogicalChannelResponse) override; 174 int32_t SimCloseLogicalChannelResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 175 int32_t SimTransmitApduLogicalChannelResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 176 const HDI::Ril::V1_1::IccIoResultInfo &result) override; 177 int32_t SimTransmitApduBasicChannelResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 178 const HDI::Ril::V1_1::IccIoResultInfo &result) override; 179 int32_t SimAuthenticationResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 180 const HDI::Ril::V1_1::IccIoResultInfo &result) override; 181 int32_t UnlockSimLockResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 182 const HDI::Ril::V1_1::LockStatusResp &lockStatus) override; 183 int32_t SendSimMatchedOperatorInfoResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 184 185 // Network 186 int32_t NetworkCsRegStatusUpdated(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 187 const HDI::Ril::V1_1::CsRegStatusInfo &csRegStatusInfo) override; 188 int32_t NetworkPsRegStatusUpdated(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 189 const HDI::Ril::V1_1::PsRegStatusInfo &psRegStatusInfo) override; 190 int32_t SignalStrengthUpdated( 191 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::Rssi &rssi) override; 192 int32_t NetworkTimeZoneUpdated( 193 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const std::string &timeZoneStr) override; 194 int32_t NetworkTimeUpdated( 195 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const std::string &timeStr) override; 196 int32_t NetworkPhyChnlCfgUpdated(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 197 const HDI::Ril::V1_1::ChannelConfigInfoList &channelConfigInfoList) override; 198 int32_t NetworkCurrentCellUpdated(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 199 const HDI::Ril::V1_1::CellListCurrentInfo &cellListCurrentInfo) override; 200 int32_t NetworkCurrentCellUpdated_1_1(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 201 const HDI::Ril::V1_1::CellListCurrentInfo_1_1 &cellListCurrentInfo) override; 202 int32_t NetworkCurrentCellUpdated_1_2(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 203 const HDI::Ril::V1_2::CellListCurrentInfo_1_2 &cellListCurrentInfo) override; 204 int32_t ResidentNetworkUpdated(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 205 const std::string &plmn) override; 206 int32_t GetSignalStrengthResponse( 207 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::Rssi &rssi) override; 208 int32_t GetCsRegStatusResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 209 const HDI::Ril::V1_1::CsRegStatusInfo &csRegStatusInfo) override; 210 int32_t GetPsRegStatusResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 211 const HDI::Ril::V1_1::PsRegStatusInfo &psRegStatusInfo) override; 212 int32_t GetOperatorInfoResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 213 const HDI::Ril::V1_1::OperatorInfo &operatorInfo) override; 214 int32_t GetNetworkSearchInformationResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 215 const HDI::Ril::V1_1::AvailableNetworkList &availableNetworkList) override; 216 int32_t GetNetworkSelectionModeResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 217 const HDI::Ril::V1_1::SetNetworkModeInfo &setNetworkModeInfo) override; 218 int32_t SetNetworkSelectionModeResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 219 int32_t GetNeighboringCellInfoListResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 220 const HDI::Ril::V1_1::CellListNearbyInfo &cellInfoList) override; 221 int32_t GetNeighboringCellInfoListResponse_1_2(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 222 const HDI::Ril::V1_2::CellListNearbyInfo_1_2 &cellInfoList) override; 223 int32_t GetCurrentCellInfoResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 224 const HDI::Ril::V1_1::CellListCurrentInfo &cellInfoList) override; 225 int32_t GetCurrentCellInfoResponse_1_1(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 226 const HDI::Ril::V1_1::CellListCurrentInfo_1_1 &cellListCurrentInfo) override; 227 int32_t GetCurrentCellInfoResponse_1_2(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 228 const HDI::Ril::V1_2::CellListCurrentInfo_1_2 &cellListCurrentInfo) override; 229 int32_t SetPreferredNetworkResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 230 int32_t GetPreferredNetworkResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 231 const HDI::Ril::V1_1::PreferredNetworkTypeInfo &preferredNetworkTypeInfo) override; 232 int32_t GetPhysicalChannelConfigResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 233 const HDI::Ril::V1_1::ChannelConfigInfoList &channelConfigInfoList) override; 234 int32_t SetLocateUpdatesResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 235 int32_t SetNotificationFilterResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 236 int32_t SetDeviceStateResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 237 int32_t SetNrOptionModeResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 238 int32_t GetNrOptionModeResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, int32_t mode) override; 239 int32_t GetRrcConnectionStateResponse( 240 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, int32_t rrcConnectionState) override; 241 int32_t GetRrcConnectionStateUpdated( 242 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, int32_t state) override; 243 int32_t GetNrSsbIdResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 244 const HDI::Ril::V1_2::NrCellSsbIds &nrCellSsbIds) override; 245 246 // Sms 247 int32_t NewSmsNotify(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 248 const HDI::Ril::V1_1::SmsMessageInfo &smsMessageInfo) override; 249 int32_t NewCdmaSmsNotify(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 250 const HDI::Ril::V1_1::SmsMessageInfo &smsMessageInfo) override; 251 int32_t SmsStatusReportNotify(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 252 const HDI::Ril::V1_1::SmsMessageInfo &smsMessageInfo) override; 253 int32_t NewSmsStoredOnSimNotify(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, int32_t recordNumber, 254 int32_t indicationType) override; 255 int32_t CBConfigNotify(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 256 const HDI::Ril::V1_1::CBConfigReportInfo &cellBroadConfigReportInfo) override; 257 int32_t SendGsmSmsResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 258 const HDI::Ril::V1_1::SendSmsResultInfo &sendSmsResultInfo) override; 259 int32_t SendCdmaSmsResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 260 const HDI::Ril::V1_1::SendSmsResultInfo &sendSmsResultInfo) override; 261 int32_t AddSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 262 int32_t DelSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 263 int32_t UpdateSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 264 int32_t AddCdmaSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 265 int32_t DelCdmaSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 266 int32_t UpdateCdmaSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 267 int32_t SetSmscAddrResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 268 int32_t GetSmscAddrResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 269 const HDI::Ril::V1_1::ServiceCenterAddress &serviceCenterAddress) override; 270 int32_t SetCBConfigResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 271 int32_t GetCBConfigResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 272 const HDI::Ril::V1_1::CBConfigInfo &cellBroadcastInfo) override; 273 int32_t SetCdmaCBConfigResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 274 int32_t GetCdmaCBConfigResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 275 const HDI::Ril::V1_1::CdmaCBConfigInfo &cdmaCBConfigInfo) override; 276 int32_t SendSmsMoreModeResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 277 const HDI::Ril::V1_1::SendSmsResultInfo &sendSmsResultInfo) override; 278 int32_t SendSmsAckResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 279 280 int32_t CommonErrorResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo) override; 281 282 private: 283 template<typename FuncType, typename ModuleFuncType, typename... ParamTypes> Response(const HDI::Ril::V1_1::RilRadioResponseInfo responseInfo,FuncType && _func,ModuleFuncType _moduleFunc,ParamTypes &&..._args)284 inline int32_t Response(const HDI::Ril::V1_1::RilRadioResponseInfo responseInfo, FuncType &&_func, 285 ModuleFuncType _moduleFunc, ParamTypes &&... _args) const 286 { 287 if (telRilManager_ == nullptr) { 288 TELEPHONY_LOGE("telRilManager_ is nullptr"); 289 return TELEPHONY_ERR_LOCAL_PTR_NULL; 290 } 291 if (responseInfo.type == HDI::Ril::V1_1::RilResponseTypes::RIL_RESPONSE_REQUEST_MUST_ACK) { 292 telRilManager_->SendAckAndLock(); 293 } 294 return TaskSchedule(responseInfo.slotId, _func, _moduleFunc, responseInfo, std::forward<ParamTypes>(_args)...); 295 } 296 297 template<typename FuncType, typename ModuleFuncType, typename... ParamTypes> Notify(const HDI::Ril::V1_1::RilRadioResponseInfo responseInfo,FuncType && _func,ModuleFuncType _moduleFunc,ParamTypes &&..._args)298 inline int32_t Notify(const HDI::Ril::V1_1::RilRadioResponseInfo responseInfo, FuncType &&_func, 299 ModuleFuncType _moduleFunc, ParamTypes &&... _args) const 300 { 301 if (telRilManager_ == nullptr) { 302 TELEPHONY_LOGE("telRilManager_ is nullptr"); 303 return TELEPHONY_ERR_LOCAL_PTR_NULL; 304 } 305 if (responseInfo.type == HDI::Ril::V1_1::RilResponseTypes::RIL_RESPONSE_NOTICE_MUST_ACK) { 306 telRilManager_->SendAckAndLock(); 307 } 308 return TaskSchedule(responseInfo.slotId, _func, _moduleFunc, std::forward<ParamTypes>(_args)...); 309 } 310 GetMaxSimSlot()311 inline int32_t GetMaxSimSlot() const 312 { 313 auto maxSimCount = SIM_SLOT_COUNT; 314 #ifdef OHOS_BUILD_ENABLE_TELEPHONY_VSIM 315 if (SIM_SLOT_COUNT == DUAL_SLOT_COUNT) { 316 maxSimCount = MAX_SLOT_COUNT; 317 } 318 #endif 319 return maxSimCount; 320 } 321 322 template<typename FuncType, typename ModuleFuncType, typename... ParamTypes> TaskSchedule(int32_t slotId,FuncType && _func,ModuleFuncType _moduleFunc,ParamTypes &&..._args)323 inline int32_t TaskSchedule( 324 int32_t slotId, FuncType &&_func, ModuleFuncType _moduleFunc, ParamTypes &&... _args) const 325 { 326 auto maxSimCount = GetMaxSimSlot(); 327 if (slotId < SIM_SLOT_0 || slotId >= maxSimCount) { 328 TELEPHONY_LOGE("slotId:%{public}d is inValid ", slotId); 329 return TELEPHONY_ERR_ARGUMENT_INVALID; 330 } 331 if (telRilManager_ == nullptr || _func == nullptr || _moduleFunc == nullptr) { 332 TELEPHONY_LOGE("telRilManager_ or _func or _moduleFunc is nullptr"); 333 return TELEPHONY_ERR_LOCAL_PTR_NULL; 334 } 335 return Execute(slotId, _func, _moduleFunc, std::forward<ParamTypes>(_args)...); 336 } 337 338 template<typename FuncType, typename ModuleFuncType, typename... ParamTypes> Execute(int32_t slotId,FuncType && _func,ModuleFuncType _moduleFunc,ParamTypes &&..._args)339 inline int32_t Execute(int32_t slotId, FuncType &&_func, ModuleFuncType _moduleFunc, ParamTypes &&... _args) const 340 { 341 auto modulePtr = (telRilManager_.get()->*(_func))(slotId); 342 if (modulePtr == nullptr) { 343 TELEPHONY_LOGE("modulePtr is nullptr"); 344 return TELEPHONY_ERR_LOCAL_PTR_NULL; 345 } 346 return (modulePtr.get()->*(_moduleFunc))(std::forward<ParamTypes>(_args)...); 347 } 348 349 private: 350 std::shared_ptr<TelRilManager> telRilManager_; 351 }; 352 } // namespace Telephony 353 } // namespace OHOS 354 #endif // TEL_RIL_CALLBACK_H 355