1 /* 2 * Copyright (C) 2021 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_SIM_H 17 #define TEL_RIL_SIM_H 18 19 #include "tel_ril_sim_parcel.h" 20 #include "tel_ril_base.h" 21 #include "telephony_types.h" 22 23 namespace OHOS { 24 namespace Telephony { 25 class TelRilSim : public TelRilBase { 26 public: 27 TelRilSim(int32_t slotId, sptr<HDI::Ril::V1_3::IRil> rilInterface, std::shared_ptr<ObserverHandler> observerHandler, 28 std::shared_ptr<TelRilHandler> handler); 29 ~TelRilSim() = default; 30 31 int32_t SimStateUpdated(); 32 int32_t SimStkSessionEndNotify(); 33 int32_t SimStkProactiveNotify(const std::string &response); 34 int32_t SimStkAlphaNotify(const std::string &response); 35 int32_t SimStkEventNotify(const std::string &response); 36 int32_t SimStkCallSetupNotify(); 37 int32_t SimRefreshNotify(); 38 int32_t SimRadioProtocolUpdated(const HDI::Ril::V1_1::RadioProtocol &radioProtocol); 39 40 int32_t GetSimStatus(const AppExecFwk::InnerEvent::Pointer &result); 41 int32_t GetImsi(const AppExecFwk::InnerEvent::Pointer &result); 42 int32_t GetSimIO(SimIoRequestInfo simIoInfo, const AppExecFwk::InnerEvent::Pointer &response); 43 int32_t GetSimLockStatus(std::string fac, const AppExecFwk::InnerEvent::Pointer &response); 44 int32_t SetSimLock( 45 std::string fac, int32_t mode, std::string passwd, const AppExecFwk::InnerEvent::Pointer &response); 46 int32_t ChangeSimPassword(std::string fac, std::string oldPassword, std::string newPassword, 47 int32_t passwordLength, const AppExecFwk::InnerEvent::Pointer &response); 48 int32_t UnlockPin(std::string pin, const AppExecFwk::InnerEvent::Pointer &response); 49 int32_t UnlockPuk(std::string puk, std::string pin, const AppExecFwk::InnerEvent::Pointer &response); 50 int32_t UnlockPin2(std::string pin2, const AppExecFwk::InnerEvent::Pointer &response); 51 int32_t UnlockPuk2(std::string puk2, std::string pin2, const AppExecFwk::InnerEvent::Pointer &response); 52 int32_t SetActiveSim(int32_t index, int32_t enable, const AppExecFwk::InnerEvent::Pointer &response); 53 int32_t SimStkSendTerminalResponse(const std::string &strCmd, const AppExecFwk::InnerEvent::Pointer &response); 54 int32_t SimStkSendEnvelope(const std::string &strCmd, const AppExecFwk::InnerEvent::Pointer &response); 55 int32_t SimStkSendCallSetupRequestResult(bool accept, const AppExecFwk::InnerEvent::Pointer &response); 56 int32_t SimStkIsReady(const AppExecFwk::InnerEvent::Pointer &response); 57 int32_t GetRadioProtocol(const AppExecFwk::InnerEvent::Pointer &response); 58 int32_t SetRadioProtocol(RadioProtocol radioProtocol, const AppExecFwk::InnerEvent::Pointer &response); 59 int32_t SimOpenLogicalChannel(std::string appID, int32_t p2, const AppExecFwk::InnerEvent::Pointer &response); 60 int32_t SimCloseLogicalChannel(int32_t channelId, const AppExecFwk::InnerEvent::Pointer &response); 61 int32_t SimTransmitApduLogicalChannel( 62 const ApduSimIORequestInfo &reqInfo, const AppExecFwk::InnerEvent::Pointer &response); 63 int32_t SimTransmitApduBasicChannel( 64 const ApduSimIORequestInfo &reqInfo, const AppExecFwk::InnerEvent::Pointer &response); 65 int32_t SimAuthentication( 66 const SimAuthenticationRequestInfo &reqInfo, const AppExecFwk::InnerEvent::Pointer &response); 67 int32_t UnlockSimLock(int32_t lockType, std::string password, const AppExecFwk::InnerEvent::Pointer &response); 68 int32_t SendSimMatchedOperatorInfo( 69 const NcfgOperatorInfo &reqInfo, const AppExecFwk::InnerEvent::Pointer &response); 70 71 int32_t GetSimStatusResponse( 72 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::CardStatusInfo &result); 73 int32_t GetSimCardStatusResponse( 74 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_3::SimCardStatusInfo &result); 75 int32_t GetImsiResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const std::string &result); 76 int32_t GetSimIOResponse( 77 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::IccIoResultInfo &result); 78 int32_t GetSimLockStatusResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, int32_t simLockStatus); 79 int32_t SetSimLockResponse( 80 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::LockStatusResp &lockStatus); 81 int32_t ChangeSimPasswordResponse( 82 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::LockStatusResp &lockStatus); 83 int32_t UnlockPinResponse( 84 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::LockStatusResp &lockStatus); 85 int32_t UnlockPukResponse( 86 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::LockStatusResp &lockStatus); 87 int32_t UnlockPin2Response( 88 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::LockStatusResp &lockStatus); 89 int32_t UnlockPuk2Response( 90 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::LockStatusResp &lockStatus); 91 int32_t SetActiveSimResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo); 92 int32_t SimStkSendTerminalResponseResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo); 93 int32_t SimStkSendEnvelopeResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo); 94 int32_t SimStkSendCallSetupRequestResultResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo); 95 int32_t SimStkIsReadyResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo); 96 int32_t GetRadioProtocolResponse( 97 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::RadioProtocol &radioProtocol); 98 int32_t SetRadioProtocolResponse( 99 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::RadioProtocol &radioProtocol); 100 int32_t SimOpenLogicalChannelResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, 101 const HDI::Ril::V1_1::OpenLogicalChannelResponse &pOpenLogicalChannelResponse); 102 int32_t SimCloseLogicalChannelResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo); 103 int32_t SimTransmitApduLogicalChannelResponse( 104 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::IccIoResultInfo &result); 105 int32_t SimTransmitApduBasicChannelResponse( 106 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::IccIoResultInfo &result); 107 int32_t SimAuthenticationResponse( 108 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::IccIoResultInfo &result); 109 int32_t UnlockSimLockResponse( 110 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::LockStatusResp &lockStatus); 111 int32_t SendSimMatchedOperatorInfoResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo); 112 113 private: 114 int32_t ProcessIccIoInfo( 115 std::shared_ptr<TelRilRequest> telRilRequest, std::shared_ptr<IccIoResultInfo> iccIoResult); 116 int32_t ErrorIccIoResponse( 117 std::shared_ptr<TelRilRequest> telRilRequest, const RadioResponseInfo &responseInfo); 118 void BuildIccIoResult(std::shared_ptr<IccIoResultInfo> iccIoResult, const HDI::Ril::V1_1::IccIoResultInfo &result); 119 void BuildCardStatusInfo( 120 std::shared_ptr<CardStatusInfo> cardStatusInfo, const HDI::Ril::V1_1::CardStatusInfo &result); 121 void BuildSimCardStatusInfo( 122 std::shared_ptr<SimCardStatusInfo> simCardStatusInfo, const HDI::Ril::V1_3::SimCardStatusInfo &result); 123 void BuildLockStatusResp( 124 std::shared_ptr<LockStatusResp> lockStatusResp, const HDI::Ril::V1_1::LockStatusResp &lockStatus); 125 void BuildRadioProtocol( 126 std::shared_ptr<RadioProtocol> protocol, const HDI::Ril::V1_1::RadioProtocol &radioProtocol); 127 void BuildOpenLogicalChannelResp(std::shared_ptr<OpenLogicalChannelResponse> openLogicalChannelResp, 128 const HDI::Ril::V1_1::OpenLogicalChannelResponse &pOpenLogicalChannelResponse); 129 void BuildApduRequestInfo( 130 OHOS::HDI::Ril::V1_1::ApduSimIORequestInfo &ApduRequestInfo, const ApduSimIORequestInfo &reqInfo); 131 int32_t ResponseIccIo( 132 const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::IccIoResultInfo &result); 133 }; 134 } // namespace Telephony 135 } // namespace OHOS 136 #endif // TEL_RIL_SIM_H 137