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, IHRilReporter &hrilReporter); 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 60 private: 61 void AddHandlerToMap(); 62 void AddNotificationHandlerToMap(); 63 int32_t GetSimIOResponse( 64 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 65 int32_t GetSimStatusResponse( 66 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 67 int32_t GetImsiResponse( 68 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 69 int32_t GetSimLockStatusResponse( 70 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 71 int32_t SetSimLockResponse( 72 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 73 int32_t ChangeSimPasswordResponse( 74 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 75 int32_t UnlockPinResponse( 76 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 77 int32_t UnlockPukResponse( 78 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 79 int32_t UnlockPin2Response( 80 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 81 int32_t UnlockPuk2Response( 82 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 83 int32_t SetActiveSimResponse( 84 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 85 int32_t SimStkSendTerminalResponseResponse( 86 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 87 int32_t SimStkSendEnvelopeResponse( 88 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 89 int32_t SimStkSendCallSetupRequestResultResponse( 90 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 91 int32_t SimStkIsReadyResponse( 92 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 93 int32_t GetRadioProtocolResponse( 94 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 95 int32_t SetRadioProtocolResponse( 96 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 97 int32_t SimOpenLogicalChannelResponse( 98 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 99 int32_t SimCloseLogicalChannelResponse( 100 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 101 int32_t SimTransmitApduLogicalChannelResponse( 102 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 103 int32_t SimTransmitApduBasicChannelResponse( 104 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 105 int32_t SimAuthenticationResponse( 106 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 107 int32_t UnlockSimLockResponse( 108 int32_t requestNum, HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 109 HDI::Ril::V1_1::IccIoResultInfo ProcessIccIoResponse( 110 HRilRadioResponseInfo &responseInfo, const void *response, size_t responseLen); 111 112 int32_t SimStateUpdated(int32_t notifyType, const HRilErrNumber error, const void *response, size_t responseLen); 113 int32_t SimStkSessionEndNotify( 114 int32_t notifyType, const HRilErrNumber error, const void *response, size_t responseLen); 115 int32_t SimStkProactiveNotify( 116 int32_t notifyType, const HRilErrNumber error, const void *response, size_t responseLen); 117 int32_t SimStkAlphaNotify(int32_t notifyType, const HRilErrNumber error, const void *response, size_t responseLen); 118 int32_t SimStkEventNotify(int32_t notifyType, const HRilErrNumber error, const void *response, size_t responseLen); 119 int32_t SimStkCallSetupNotify( 120 int32_t notifyType, const HRilErrNumber error, const void *response, size_t responseLen); 121 int32_t SimRefreshNotify(int32_t notifyType, const HRilErrNumber error, const void *response, size_t responseLen); 122 int32_t SimRadioProtocolUpdated( 123 int32_t notifyType, const HRilErrNumber error, const void *response, size_t responseLen); 124 125 private: 126 bool IsSimResponse(uint32_t code); 127 bool IsSimNotification(uint32_t code); 128 void CopyToHRilSimIO(std::unique_ptr<HRilSimIO> &rilSimIO, const OHOS::HDI::Ril::V1_1::SimIoRequestInfo &simIO); 129 void CopyToHRilSimLock( 130 std::unique_ptr<HRilSimClock> &rilSimLock, const OHOS::HDI::Ril::V1_1::SimLockInfo &simLockInfo); 131 void CopyToHRilSimPassword( 132 std::unique_ptr<HRilSimPassword> &rilSimPassword, const OHOS::HDI::Ril::V1_1::SimPasswordInfo &simPassword); 133 void CopyToHRilApduSimIO( 134 std::unique_ptr<HRilApduSimIO> &rilApduSimIO, const OHOS::HDI::Ril::V1_1::ApduSimIORequestInfo &apduSimIO); 135 void CopyToHRilSimAuthentication(std::unique_ptr<HRilSimAuthenticationRequestInfo> &rilSimAuthInfo, 136 const OHOS::HDI::Ril::V1_1::SimAuthenticationRequestInfo &simAuthInfo); 137 bool BuildLockStatusResp(const void *response, size_t responseLen, HDI::Ril::V1_1::LockStatusResp &lockStatus); 138 void ResponseLockStatus(HDI::Ril::V1_1::LockStatusResp &lockStatus, HRilRadioResponseInfo &responseInfo, 139 const void *response, size_t responseLen); 140 int32_t BuildSimIOResp(HDI::Ril::V1_1::IccIoResultInfo &result, HRilRadioResponseInfo &responseInfo, 141 const void *response, size_t responseLen); 142 int32_t CheckCharData(const void *response, size_t responseLen); 143 void BuildRadioProtocol(HDI::Ril::V1_1::RadioProtocol &radioProtocol, const void *response); 144 int32_t ConvertRadioProtocolTech(int32_t tech); 145 146 private: 147 const HRilSimReq *simFuncs_ = nullptr; 148 }; 149 } // namespace Telephony 150 } // namespace OHOS 151 #endif // OHOS_HRIL_SIM_H 152