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