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 TEL_RIL_SMS_H
17 #define TEL_RIL_SMS_H
18 
19 #include "tel_ril_sms_parcel.h"
20 #include "tel_ril_base.h"
21 
22 namespace OHOS {
23 namespace Telephony {
24 class TelRilSms : public TelRilBase {
25 public:
26     TelRilSms(int32_t slotId, sptr<HDI::Ril::V1_3::IRil> rilInterface, std::shared_ptr<ObserverHandler> observerHandler,
27         std::shared_ptr<TelRilHandler> handler);
28     ~TelRilSms() = default;
29 
30     uint8_t *ConvertHexStringToBytes(const uint8_t *hexString, size_t length);
31     uint8_t ConvertHexCharToInt(uint8_t ch);
32 
33     int32_t SendGsmSms(std::string &smsPdu, std::string &pdu, const AppExecFwk::InnerEvent::Pointer &response);
34     int32_t SendCdmaSms(std::string pdu, const AppExecFwk::InnerEvent::Pointer &response);
35     int32_t AddSimMessage(
36         int32_t status, std::string smscPdu, std::string pdu, const AppExecFwk::InnerEvent::Pointer &response);
37     int32_t DelSimMessage(int32_t gsmIndex, const AppExecFwk::InnerEvent::Pointer &response);
38     int32_t UpdateSimMessage(int32_t gsmIndex, int32_t state, std::string smscPdu, std::string pdu,
39         const AppExecFwk::InnerEvent::Pointer &response);
40     int32_t SetSmscAddr(int32_t tosca, std::string address, const AppExecFwk::InnerEvent::Pointer &response);
41     int32_t GetSmscAddr(const AppExecFwk::InnerEvent::Pointer &response);
42     int32_t SetCdmaCBConfig(
43         const CdmaCBConfigInfoList &cdmaCBConfigInfoList, const AppExecFwk::InnerEvent::Pointer &response);
44     int32_t GetCdmaCBConfig(const AppExecFwk::InnerEvent::Pointer &response);
45     int32_t SetCBConfig(
46         int32_t mode, std::string idList, std::string dcsList, const AppExecFwk::InnerEvent::Pointer &response);
47     int32_t GetCBConfig(const AppExecFwk::InnerEvent::Pointer &response);
48     int32_t SendSmsMoreMode(std::string &smsPdu, std::string &pdu, const AppExecFwk::InnerEvent::Pointer &response);
49     int32_t SendSmsAck(bool success, int32_t cause, const AppExecFwk::InnerEvent::Pointer &response);
50     int32_t AddCdmaSimMessage(int32_t status, std::string &pdu, const AppExecFwk::InnerEvent::Pointer &response);
51     int32_t DelCdmaSimMessage(int32_t cdmaIndex, const AppExecFwk::InnerEvent::Pointer &response);
52     int32_t UpdateCdmaSimMessage(
53         int32_t cdmaIndex, int32_t state, std::string pdu, const AppExecFwk::InnerEvent::Pointer &response);
54 
55     int32_t SendGsmSmsResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
56         const HDI::Ril::V1_1::SendSmsResultInfo &iSendSmsResultInfo);
57     int32_t SendCdmaSmsResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
58         const HDI::Ril::V1_1::SendSmsResultInfo &iSendSmsResultInfo);
59     int32_t AddSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo);
60     int32_t DelSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo);
61     int32_t UpdateSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo);
62     int32_t SetSmscAddrResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo);
63     int32_t GetSmscAddrResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
64         const HDI::Ril::V1_1::ServiceCenterAddress &iServiceCenterAddress);
65     int32_t SetCBConfigResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo);
66     int32_t GetCBConfigResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
67         const HDI::Ril::V1_1::CBConfigInfo &iCellBroadcastInfo);
68     int32_t SetCdmaCBConfigResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo);
69     int32_t GetCdmaCBConfigResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
70         const HDI::Ril::V1_1::CdmaCBConfigInfo &iCdmaCBConfigInfo);
71     int32_t SendSmsMoreModeResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo,
72         const HDI::Ril::V1_1::SendSmsResultInfo &iSendSmsResultInfo);
73     int32_t SendSmsAckResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo);
74     int32_t AddCdmaSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo);
75     int32_t DelCdmaSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo);
76     int32_t UpdateCdmaSimMessageResponse(const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo);
77 
78     int32_t NewSmsNotify(const HDI::Ril::V1_1::SmsMessageInfo &smsMessageInfo);
79     int32_t NewCdmaSmsNotify(const HDI::Ril::V1_1::SmsMessageInfo &smsMessageInfo);
80     int32_t SmsStatusReportNotify(const HDI::Ril::V1_1::SmsMessageInfo &smsMessageInfo);
81     int32_t NewSmsStoredOnSimNotify(int32_t recordNumber, int32_t indicationType);
82     int32_t CBConfigNotify(const HDI::Ril::V1_1::CBConfigReportInfo &cellBroadConfigReportInfo);
83 
84 private:
85     HDI::Ril::V1_1::GsmSmsMessageInfo ConstructGsmSendSmsRequestLinkList(std::string &smsPdu, std::string &pdu);
86     OHOS::HDI::Ril::V1_1::SmsMessageIOInfo ConstructSmsMessageIOInfoRequestLinkList(
87         std::string &smsPdu, std::string &pdu);
88     void BuildSendSmsResultInfo(std::shared_ptr<SendSmsResultInfo> sendSmsResultInfo,
89         const HDI::Ril::V1_1::SendSmsResultInfo &iSendSmsResultInfo);
90     void BuildCBConfigInfo(
91         std::shared_ptr<CBConfigInfo> cellBroadcastInfo, const HDI::Ril::V1_1::CBConfigInfo &iCellBroadcastInfo);
92     void BuildServiceCenterAddress(std::shared_ptr<ServiceCenterAddress> serCenterAddress,
93         const HDI::Ril::V1_1::ServiceCenterAddress &iServiceCenterAddress);
94     void BuildCdmaCBConfigInfo(
95         std::shared_ptr<CdmaCBConfigInfo> cdmaCBConfigInfo, const HDI::Ril::V1_1::CdmaCBConfigInfo &iCdmaCBConfigInfo);
96     void BuildSmsMessageInfo(
97         std::shared_ptr<SmsMessageInfo> smsMessageInfo, const HDI::Ril::V1_1::SmsMessageInfo &iSmsMessageInfo);
98     void BuildCBConfigReportInfo(std::shared_ptr<CBConfigReportInfo> cellBroadConfigReportInfo,
99         const HDI::Ril::V1_1::CBConfigReportInfo &iCellBroadConfigReportInfo);
100     int32_t ResponseSendSms(
101         const HDI::Ril::V1_1::RilRadioResponseInfo &responseInfo, const HDI::Ril::V1_1::SendSmsResultInfo &result);
102 };
103 } // namespace Telephony
104 } // namespace OHOS
105 #endif // TEL_RIL_SMS_H
106