• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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