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 OHOS_HRIL_SIM_H 17 #define OHOS_HRIL_SIM_H 18 19 #include "hril_base.h" 20 #include "hril_sim_parcel.h" 21 22 namespace OHOS { 23 namespace Telephony { 24 class HRilSim : public HRilBase { 25 public: 26 HRilSim(int32_t slotId); 27 virtual ~HRilSim() = default; 28 29 void ProcessSimRequest(int32_t code, struct HdfSBuf *data); 30 void ProcessSimResponse( 31 int32_t code, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 32 void ProcessSimNotify(const struct ReportInfo *reportInfo, const void *response, size_t responseLen); 33 bool IsSimRespOrNotify(uint32_t code); 34 void RegisterSimFuncs(const HRilSimReq *simFuncs); 35 int32_t GetSimIO(int32_t serialId, const OHOS::HDI::Ril::V1_1::SimIoRequestInfo &simIO); 36 int32_t GetSimStatus(int32_t serialId); 37 int32_t GetImsi(int32_t serialId); 38 int32_t GetSimLockStatus(int32_t serialId, const OHOS::HDI::Ril::V1_1::SimLockInfo &simLockInfo); 39 int32_t SetSimLock(int32_t serialId, const OHOS::HDI::Ril::V1_1::SimLockInfo &simLockInfo); 40 int32_t ChangeSimPassword(int32_t serialId, const OHOS::HDI::Ril::V1_1::SimPasswordInfo &simPassword); 41 int32_t UnlockPin(int32_t serialId, const std::string &pin); 42 int32_t UnlockPuk(int32_t serialId, const std::string &puk, const std::string &pin); 43 int32_t UnlockPin2(int32_t serialId, const std::string &pin2); 44 int32_t UnlockPuk2(int32_t serialId, const std::string &puk2, const std::string &pin2); 45 int32_t SetActiveSim(int32_t serialId, int32_t index, int32_t enable); 46 int32_t SimStkSendTerminalResponse(int32_t serialId, const std::string &strCmd); 47 int32_t SimStkSendEnvelope(int32_t serialId, const std::string &strCmd); 48 int32_t SimStkSendCallSetupRequestResult(int32_t serialId, int32_t accept); 49 int32_t SimStkIsReady(int32_t serialId); 50 int32_t GetRadioProtocol(int32_t serialId); 51 int32_t SetRadioProtocol(int32_t serialId, const HDI::Ril::V1_1::RadioProtocol &radioProtocol); 52 int32_t SimOpenLogicalChannel(int32_t serialId, const std::string &appID, int32_t p2); 53 int32_t SimCloseLogicalChannel(int32_t serialId, int32_t channelId); 54 int32_t SimTransmitApduLogicalChannel( 55 int32_t serialId, const OHOS::HDI::Ril::V1_1::ApduSimIORequestInfo &apduSimIO); 56 int32_t SimTransmitApduBasicChannel(int32_t serialId, const OHOS::HDI::Ril::V1_1::ApduSimIORequestInfo &apduSimIO); 57 int32_t SimAuthentication(int32_t serialId, const OHOS::HDI::Ril::V1_1::SimAuthenticationRequestInfo &simAuthInfo); 58 int32_t UnlockSimLock(int32_t serialId, int32_t lockType, const std::string &key); 59 int32_t SendSimMatchedOperatorInfo( 60 int32_t serialId, const OHOS::HDI::Ril::V1_2::NcfgOperatorInfo &ncfgOperatorInfo); 61 62 private: 63 void AddHandlerToMap(); 64 void AddNotificationHandlerToMap(); 65 int32_t GetSimIOResponse( 66 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 67 int32_t GetSimStatusResponse( 68 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 69 int32_t GetImsiResponse( 70 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 71 int32_t GetSimLockStatusResponse( 72 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 73 int32_t SetSimLockResponse( 74 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 75 int32_t ChangeSimPasswordResponse( 76 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 77 int32_t UnlockPinResponse( 78 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 79 int32_t UnlockPukResponse( 80 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 81 int32_t UnlockPin2Response( 82 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 83 int32_t UnlockPuk2Response( 84 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 85 int32_t SetActiveSimResponse( 86 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 87 int32_t SimStkSendTerminalResponseResponse( 88 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 89 int32_t SimStkSendEnvelopeResponse( 90 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 91 int32_t SimStkSendCallSetupRequestResultResponse( 92 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 93 int32_t SimStkIsReadyResponse( 94 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 95 int32_t GetRadioProtocolResponse( 96 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 97 int32_t SetRadioProtocolResponse( 98 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 99 int32_t SimOpenLogicalChannelResponse( 100 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 101 int32_t SimCloseLogicalChannelResponse( 102 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 103 int32_t SimTransmitApduLogicalChannelResponse( 104 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 105 int32_t SimTransmitApduBasicChannelResponse( 106 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 107 int32_t SimAuthenticationResponse( 108 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 109 int32_t UnlockSimLockResponse( 110 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 111 HDI::Ril::V1_1::IccIoResultInfo ProcessIccIoResponse( 112 HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 113 int32_t SendSimMatchedOperatorInfoResponse( 114 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 115 116 int32_t SimStateUpdated(int32_t notifyType, const HRilErrNumber error, const void *response, size_t responseLen); 117 int32_t SimStkSessionEndNotify( 118 int32_t notifyType, const HRilErrNumber error, const void *response, size_t responseLen); 119 int32_t SimStkProactiveNotify( 120 int32_t notifyType, const HRilErrNumber error, const void *response, size_t responseLen); 121 int32_t SimStkAlphaNotify(int32_t notifyType, const HRilErrNumber error, const void *response, size_t responseLen); 122 int32_t SimStkEventNotify(int32_t notifyType, const HRilErrNumber error, const void *response, size_t responseLen); 123 int32_t SimStkCallSetupNotify( 124 int32_t notifyType, const HRilErrNumber error, const void *response, size_t responseLen); 125 int32_t SimRefreshNotify(int32_t notifyType, const HRilErrNumber error, const void *response, size_t responseLen); 126 int32_t SimRadioProtocolUpdated( 127 int32_t notifyType, const HRilErrNumber error, const void *response, size_t responseLen); 128 129 private: 130 bool IsSimResponse(uint32_t code); 131 bool IsSimNotification(uint32_t code); 132 void CopyToHRilSimIO(std::unique_ptr<HRilSimIO> &rilSimIO, const OHOS::HDI::Ril::V1_1::SimIoRequestInfo &simIO); 133 void CopyToHRilSimLock( 134 std::unique_ptr<HRilSimClock> &rilSimLock, const OHOS::HDI::Ril::V1_1::SimLockInfo &simLockInfo); 135 void CopyToHRilSimPassword( 136 std::unique_ptr<HRilSimPassword> &rilSimPassword, const OHOS::HDI::Ril::V1_1::SimPasswordInfo &simPassword); 137 void CopyToHRilApduSimIO( 138 std::unique_ptr<HRilApduSimIO> &rilApduSimIO, const OHOS::HDI::Ril::V1_1::ApduSimIORequestInfo &apduSimIO); 139 void CopyToHRilSimAuthentication(std::unique_ptr<HRilSimAuthenticationRequestInfo> &rilSimAuthInfo, 140 const OHOS::HDI::Ril::V1_1::SimAuthenticationRequestInfo &simAuthInfo); 141 void CopyToHRilNcfgOperatorInfo(std::unique_ptr<HRilNcfgOperatorInfo> &rilNcfgOperatorInfo, 142 const OHOS::HDI::Ril::V1_2::NcfgOperatorInfo &ncfgOperatorInfo); 143 bool BuildLockStatusResp(const void *response, size_t responseLen, HDI::Ril::V1_1::LockStatusResp &lockStatus); 144 void ResponseLockStatus(HDI::Ril::V1_1::LockStatusResp &lockStatus, HRilRadioResponseInfo &responseInfo, 145 const void *response, size_t responseLen); 146 int32_t BuildSimIOResp(HDI::Ril::V1_1::IccIoResultInfo &result, HRilRadioResponseInfo &responseInfo, 147 const void *response, size_t responseLen); 148 int32_t CheckCharData(const void *response, size_t responseLen); 149 void BuildRadioProtocol(HDI::Ril::V1_1::RadioProtocol &radioProtocol, const void *response); 150 int32_t ConvertRadioProtocolTech(int32_t tech); 151 152 private: 153 const HRilSimReq *simFuncs_ = nullptr; 154 }; 155 } // namespace Telephony 156 } // namespace OHOS 157 #endif // OHOS_HRIL_SIM_H 158