• 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, 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