1e5d0e473Sopenharmony_ci/* 2e5d0e473Sopenharmony_ci * Copyright (C) 2021-2023 Huawei Device Co., Ltd. 3e5d0e473Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4e5d0e473Sopenharmony_ci * you may not use this file except in compliance with the License. 5e5d0e473Sopenharmony_ci * You may obtain a copy of the License at 6e5d0e473Sopenharmony_ci * 7e5d0e473Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8e5d0e473Sopenharmony_ci * 9e5d0e473Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10e5d0e473Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11e5d0e473Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e5d0e473Sopenharmony_ci * See the License for the specific language governing permissions and 13e5d0e473Sopenharmony_ci * limitations under the License. 14e5d0e473Sopenharmony_ci */ 15e5d0e473Sopenharmony_ci 16e5d0e473Sopenharmony_ci#ifndef SMS_SERVICE_INTERFACE_H 17e5d0e473Sopenharmony_ci#define SMS_SERVICE_INTERFACE_H 18e5d0e473Sopenharmony_ci 19e5d0e473Sopenharmony_ci#include "i_delivery_short_message_callback.h" 20e5d0e473Sopenharmony_ci#include "i_send_short_message_callback.h" 21e5d0e473Sopenharmony_ci#include "iremote_broker.h" 22e5d0e473Sopenharmony_ci#include "short_message.h" 23e5d0e473Sopenharmony_ci 24e5d0e473Sopenharmony_cinamespace OHOS { 25e5d0e473Sopenharmony_cinamespace Telephony { 26e5d0e473Sopenharmony_ciclass ISmsServiceInterface : public IRemoteBroker { 27e5d0e473Sopenharmony_cipublic: 28e5d0e473Sopenharmony_ci /** 29e5d0e473Sopenharmony_ci * @brief SimMessageStatus 30e5d0e473Sopenharmony_ci * from 3GPP TS 27.005 V4.1.0 (2001-09) section 3 Parameter Definitions 31e5d0e473Sopenharmony_ci */ 32e5d0e473Sopenharmony_ci using SimMessageStatus = enum { 33e5d0e473Sopenharmony_ci /** 34e5d0e473Sopenharmony_ci * REC UNREAD received unread message. 35e5d0e473Sopenharmony_ci */ 36e5d0e473Sopenharmony_ci SIM_MESSAGE_STATUS_UNREAD = 0, 37e5d0e473Sopenharmony_ci 38e5d0e473Sopenharmony_ci /** 39e5d0e473Sopenharmony_ci * REC READ received read message. 40e5d0e473Sopenharmony_ci */ 41e5d0e473Sopenharmony_ci SIM_MESSAGE_STATUS_READ = 1, 42e5d0e473Sopenharmony_ci 43e5d0e473Sopenharmony_ci /** 44e5d0e473Sopenharmony_ci * "STO UNSENT" stored unsent message (only applicable to SMs). 45e5d0e473Sopenharmony_ci */ 46e5d0e473Sopenharmony_ci SIM_MESSAGE_STATUS_UNSENT = 2, 47e5d0e473Sopenharmony_ci 48e5d0e473Sopenharmony_ci /** 49e5d0e473Sopenharmony_ci * "STO SENT" stored sent message (only applicable to SMs). 50e5d0e473Sopenharmony_ci */ 51e5d0e473Sopenharmony_ci SIM_MESSAGE_STATUS_SENT = 3, 52e5d0e473Sopenharmony_ci }; 53e5d0e473Sopenharmony_ci 54e5d0e473Sopenharmony_ci /** 55e5d0e473Sopenharmony_ci * @brief Indicates the encoding scheme of Sms. 56e5d0e473Sopenharmony_ci * from 3GPP TS 23.038 [9] DCS 57e5d0e473Sopenharmony_ci */ 58e5d0e473Sopenharmony_ci enum class SmsEncodingScheme { 59e5d0e473Sopenharmony_ci /** 60e5d0e473Sopenharmony_ci * Indicates an unknown encoding scheme. 61e5d0e473Sopenharmony_ci */ 62e5d0e473Sopenharmony_ci SMS_ENCODING_UNKNOWN = 0, 63e5d0e473Sopenharmony_ci 64e5d0e473Sopenharmony_ci /** 65e5d0e473Sopenharmony_ci * Indicates that the encoding scheme is 7-digit. 66e5d0e473Sopenharmony_ci */ 67e5d0e473Sopenharmony_ci SMS_ENCODING_7BIT, 68e5d0e473Sopenharmony_ci 69e5d0e473Sopenharmony_ci /** 70e5d0e473Sopenharmony_ci * Indicates that the encoding scheme is 8-digit. 71e5d0e473Sopenharmony_ci */ 72e5d0e473Sopenharmony_ci SMS_ENCODING_8BIT, 73e5d0e473Sopenharmony_ci 74e5d0e473Sopenharmony_ci /** 75e5d0e473Sopenharmony_ci * Indicates that the encoding schemes is 16-digit. 76e5d0e473Sopenharmony_ci */ 77e5d0e473Sopenharmony_ci SMS_ENCODING_16BIT, 78e5d0e473Sopenharmony_ci }; 79e5d0e473Sopenharmony_ci 80e5d0e473Sopenharmony_ci /** 81e5d0e473Sopenharmony_ci * @brief Indicates the SMS message segment information. 82e5d0e473Sopenharmony_ci */ 83e5d0e473Sopenharmony_ci struct SmsSegmentsInfo { 84e5d0e473Sopenharmony_ci /** 85e5d0e473Sopenharmony_ci * Indicates the split count for the SMS message segment information. 86e5d0e473Sopenharmony_ci */ 87e5d0e473Sopenharmony_ci int32_t msgSegCount = 0; 88e5d0e473Sopenharmony_ci /** 89e5d0e473Sopenharmony_ci * Indicates the encoding count for the SMS message segment information. 90e5d0e473Sopenharmony_ci */ 91e5d0e473Sopenharmony_ci int32_t msgEncodingCount = 0; 92e5d0e473Sopenharmony_ci /** 93e5d0e473Sopenharmony_ci * Indicates the remaining encoding count for the SMS message segment information. 94e5d0e473Sopenharmony_ci */ 95e5d0e473Sopenharmony_ci int32_t msgRemainCount = 0; 96e5d0e473Sopenharmony_ci 97e5d0e473Sopenharmony_ci /** 98e5d0e473Sopenharmony_ci * Defines the encoding scheme of sms segment. 99e5d0e473Sopenharmony_ci */ 100e5d0e473Sopenharmony_ci enum class SmsSegmentCodeScheme { 101e5d0e473Sopenharmony_ci /** 102e5d0e473Sopenharmony_ci * Indicates an unknown encoding scheme. 103e5d0e473Sopenharmony_ci */ 104e5d0e473Sopenharmony_ci SMS_ENCODING_UNKNOWN = 0, 105e5d0e473Sopenharmony_ci /** 106e5d0e473Sopenharmony_ci * Indicates that the encoding scheme is 7-digit. 107e5d0e473Sopenharmony_ci */ 108e5d0e473Sopenharmony_ci SMS_ENCODING_7BIT, 109e5d0e473Sopenharmony_ci /** 110e5d0e473Sopenharmony_ci * Indicates that the encoding scheme is 8-digit. 111e5d0e473Sopenharmony_ci */ 112e5d0e473Sopenharmony_ci SMS_ENCODING_8BIT, 113e5d0e473Sopenharmony_ci /** 114e5d0e473Sopenharmony_ci * Indicates that the encoding scheme is 16-digit. 115e5d0e473Sopenharmony_ci */ 116e5d0e473Sopenharmony_ci SMS_ENCODING_16BIT, 117e5d0e473Sopenharmony_ci } msgCodeScheme = SmsSegmentCodeScheme::SMS_ENCODING_UNKNOWN; 118e5d0e473Sopenharmony_ci }; 119e5d0e473Sopenharmony_ci 120e5d0e473Sopenharmony_ci virtual ~ISmsServiceInterface() = default; 121e5d0e473Sopenharmony_ci 122e5d0e473Sopenharmony_ci /** 123e5d0e473Sopenharmony_ci * @brief Sends a text type SMS message. 124e5d0e473Sopenharmony_ci * 125e5d0e473Sopenharmony_ci * @param slotId [in], indicates the card slot index number, 126e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by the device. 127e5d0e473Sopenharmony_ci * @param desAddr [in], indicates the destination address. 128e5d0e473Sopenharmony_ci * @param scAddr [in], indicates the sms center address. 129e5d0e473Sopenharmony_ci * @param text [in], indicates sms content. 130e5d0e473Sopenharmony_ci * @param sendCallback [in], indicates callback for send out. 131e5d0e473Sopenharmony_ci * @param deliverCallback [in], indicates callback for delivery to destination user. 132e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if success. 133e5d0e473Sopenharmony_ci */ 134e5d0e473Sopenharmony_ci virtual int32_t SendMessage(int32_t slotId, const std::u16string desAddr, const std::u16string scAddr, 135e5d0e473Sopenharmony_ci const std::u16string text, const sptr<ISendShortMessageCallback> &sendCallback, 136e5d0e473Sopenharmony_ci const sptr<IDeliveryShortMessageCallback> &deliverCallback, bool isMmsApp = true) = 0; 137e5d0e473Sopenharmony_ci 138e5d0e473Sopenharmony_ci /** 139e5d0e473Sopenharmony_ci * @brief Sends a text type SMS message without saving to database. 140e5d0e473Sopenharmony_ci * 141e5d0e473Sopenharmony_ci * @param slotId [in], indicates the card slot index number, 142e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by the device. 143e5d0e473Sopenharmony_ci * @param desAddr [in], indicates the destination address. 144e5d0e473Sopenharmony_ci * @param scAddr [in], indicates the sms center address. 145e5d0e473Sopenharmony_ci * @param text [in], indicates sms content. 146e5d0e473Sopenharmony_ci * @param sendCallback [in], indicates callback for send out. 147e5d0e473Sopenharmony_ci * @param deliverCallback [in], indicates callback for delivery to destination user. 148e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if success. 149e5d0e473Sopenharmony_ci */ 150e5d0e473Sopenharmony_ci virtual int32_t SendMessageWithoutSave(int32_t slotId, const std::u16string desAddr, const std::u16string scAddr, 151e5d0e473Sopenharmony_ci const std::u16string text, const sptr<ISendShortMessageCallback> &sendCallback, 152e5d0e473Sopenharmony_ci const sptr<IDeliveryShortMessageCallback> &deliverCallback) = 0; 153e5d0e473Sopenharmony_ci 154e5d0e473Sopenharmony_ci /** 155e5d0e473Sopenharmony_ci * @brief Sends a data type SMS message. 156e5d0e473Sopenharmony_ci * 157e5d0e473Sopenharmony_ci * @param slotId [in], indicates the card slot index number, 158e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by the device. 159e5d0e473Sopenharmony_ci * @param desAddr [in], indicates the destination address. 160e5d0e473Sopenharmony_ci * @param scAddr [in], indicates the sms center address. 161e5d0e473Sopenharmony_ci * @param port [in], indicates the port of data sms. 162e5d0e473Sopenharmony_ci * @param data [in], indicates the array of data sms. 163e5d0e473Sopenharmony_ci * @param dataLen [in], indicates the array length of data sms. 164e5d0e473Sopenharmony_ci * @param sendCallback [in], indicates callback for send out. 165e5d0e473Sopenharmony_ci * @param deliverCallback [in], indicates callback for delivery to destination user. 166e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if success. 167e5d0e473Sopenharmony_ci */ 168e5d0e473Sopenharmony_ci virtual int32_t SendMessage(int32_t slotId, const std::u16string desAddr, const std::u16string scAddr, 169e5d0e473Sopenharmony_ci uint16_t port, const uint8_t *data, uint16_t dataLen, const sptr<ISendShortMessageCallback> &sendCallback, 170e5d0e473Sopenharmony_ci const sptr<IDeliveryShortMessageCallback> &deliverCallback) = 0; 171e5d0e473Sopenharmony_ci 172e5d0e473Sopenharmony_ci /** 173e5d0e473Sopenharmony_ci * @brief Sets the address for the Short Message Service Center (SMSC) based on a specified slot ID. 174e5d0e473Sopenharmony_ci * 175e5d0e473Sopenharmony_ci * @param slotId [in], indicates the card slot index number, 176e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by the device. 177e5d0e473Sopenharmony_ci * @param scAddr [in], indicates the sms center address. 178e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if success. 179e5d0e473Sopenharmony_ci */ 180e5d0e473Sopenharmony_ci virtual int32_t SetSmscAddr(int32_t slotId, const std::u16string &scAddr) = 0; 181e5d0e473Sopenharmony_ci 182e5d0e473Sopenharmony_ci /** 183e5d0e473Sopenharmony_ci * @brief Obtains the SMSC address based on a specified slot ID. 184e5d0e473Sopenharmony_ci * 185e5d0e473Sopenharmony_ci * @param slotId [in], indicates the card slot index number, 186e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by the device. 187e5d0e473Sopenharmony_ci * @param smscAddress [out] 188e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if success. 189e5d0e473Sopenharmony_ci */ 190e5d0e473Sopenharmony_ci virtual int32_t GetSmscAddr(int32_t slotId, std::u16string &smscAddress) = 0; 191e5d0e473Sopenharmony_ci 192e5d0e473Sopenharmony_ci /** 193e5d0e473Sopenharmony_ci * @brief Add a sms to sim card. 194e5d0e473Sopenharmony_ci * 195e5d0e473Sopenharmony_ci * @param slotId [in], indicates the card slot index number, 196e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by the device. 197e5d0e473Sopenharmony_ci * @param smsc [in], indicates the short message service center. 198e5d0e473Sopenharmony_ci * @param pdu [in], indicates the protocol data unit of message. 199e5d0e473Sopenharmony_ci * @param status [in], indicates the status of sim message. 200e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if success. 201e5d0e473Sopenharmony_ci */ 202e5d0e473Sopenharmony_ci virtual int32_t AddSimMessage( 203e5d0e473Sopenharmony_ci int32_t slotId, const std::u16string &smsc, const std::u16string &pdu, SimMessageStatus status) = 0; 204e5d0e473Sopenharmony_ci 205e5d0e473Sopenharmony_ci /** 206e5d0e473Sopenharmony_ci * @brief Delete a sms in the sim card. 207e5d0e473Sopenharmony_ci * 208e5d0e473Sopenharmony_ci * @param slotId [in], indicates the card slot index number, 209e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by the device. 210e5d0e473Sopenharmony_ci * @param msgIndex [in], indicates the message index. 211e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if success. 212e5d0e473Sopenharmony_ci */ 213e5d0e473Sopenharmony_ci virtual int32_t DelSimMessage(int32_t slotId, uint32_t msgIndex) = 0; 214e5d0e473Sopenharmony_ci 215e5d0e473Sopenharmony_ci /** 216e5d0e473Sopenharmony_ci * @brief Update a sms in the sim card. 217e5d0e473Sopenharmony_ci * 218e5d0e473Sopenharmony_ci * @param slotId [in], indicates the card slot index number, 219e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by the device. 220e5d0e473Sopenharmony_ci * @param msgIndex [in], indicates the message index. 221e5d0e473Sopenharmony_ci * @param newStatus [in], indicates the new status of the sim message. 222e5d0e473Sopenharmony_ci * @param pdu [in], indicates the protocol data unit of message. 223e5d0e473Sopenharmony_ci * @param smsc [in], indicates the short message service center. 224e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if success. 225e5d0e473Sopenharmony_ci */ 226e5d0e473Sopenharmony_ci virtual int32_t UpdateSimMessage(int32_t slotId, uint32_t msgIndex, SimMessageStatus newStatus, 227e5d0e473Sopenharmony_ci const std::u16string &pdu, const std::u16string &smsc) = 0; 228e5d0e473Sopenharmony_ci 229e5d0e473Sopenharmony_ci /** 230e5d0e473Sopenharmony_ci * @brief Get sim card all the sms. 231e5d0e473Sopenharmony_ci * 232e5d0e473Sopenharmony_ci * @param slotId [in], indicates the card slot index number, 233e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by the device. 234e5d0e473Sopenharmony_ci * @param message [out], indicates all SMS messages of sim card. 235e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if success. 236e5d0e473Sopenharmony_ci */ 237e5d0e473Sopenharmony_ci virtual int32_t GetAllSimMessages(int32_t slotId, std::vector<ShortMessage> &message) = 0; 238e5d0e473Sopenharmony_ci 239e5d0e473Sopenharmony_ci /** 240e5d0e473Sopenharmony_ci * @brief Configure a cell broadcast in a certain band range. 241e5d0e473Sopenharmony_ci * 242e5d0e473Sopenharmony_ci * @param slotId [in], indicates the card slot index number, 243e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by the device. 244e5d0e473Sopenharmony_ci * @param enable [in], indicates whether to enable cell broadcast. 245e5d0e473Sopenharmony_ci * @param fromMsgId [in], indicates the start message ID. 246e5d0e473Sopenharmony_ci * @param toMsgId [in], indicates the end message ID. 247e5d0e473Sopenharmony_ci * @param netType [in], indicates the network type. 248e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if success. 249e5d0e473Sopenharmony_ci */ 250e5d0e473Sopenharmony_ci virtual int32_t SetCBConfig(int32_t slotId, bool enable, uint32_t fromMsgId, uint32_t toMsgId, uint8_t netType) = 0; 251e5d0e473Sopenharmony_ci 252e5d0e473Sopenharmony_ci /** 253e5d0e473Sopenharmony_ci * @brief Enable or disable IMS SMS. 254e5d0e473Sopenharmony_ci * 255e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 256e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by the device. 257e5d0e473Sopenharmony_ci * @param enable Indicates enable or disable Ims sms 258e5d0e473Sopenharmony_ci * ranging {@code 0} disable Ims sms {@code 1} enable Ims sms 259e5d0e473Sopenharmony_ci * @return Returns {@code true} if enable or disable Ims Sms success; returns {@code false} otherwise. 260e5d0e473Sopenharmony_ci */ 261e5d0e473Sopenharmony_ci virtual bool SetImsSmsConfig(int32_t slotId, int32_t enable) = 0; 262e5d0e473Sopenharmony_ci 263e5d0e473Sopenharmony_ci /** 264e5d0e473Sopenharmony_ci * @brief Set the Default Sms Slot Id To SmsService 265e5d0e473Sopenharmony_ci * 266e5d0e473Sopenharmony_ci * @param slotId [in], indicates the card slot index number, 267e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by the device. 268e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if success. 269e5d0e473Sopenharmony_ci */ 270e5d0e473Sopenharmony_ci virtual int32_t SetDefaultSmsSlotId(int32_t slotId) = 0; 271e5d0e473Sopenharmony_ci 272e5d0e473Sopenharmony_ci /** 273e5d0e473Sopenharmony_ci * @brief Get the Default Sms Slot Id From SmsService 274e5d0e473Sopenharmony_ci * 275e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if success. 276e5d0e473Sopenharmony_ci */ 277e5d0e473Sopenharmony_ci virtual int32_t GetDefaultSmsSlotId() = 0; 278e5d0e473Sopenharmony_ci 279e5d0e473Sopenharmony_ci /** 280e5d0e473Sopenharmony_ci * @brief Get the Default Sms Sim Id From SmsService 281e5d0e473Sopenharmony_ci * 282e5d0e473Sopenharmony_ci * @param simId [out], indicates the sms sim index number. 283e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if success. 284e5d0e473Sopenharmony_ci */ 285e5d0e473Sopenharmony_ci virtual int32_t GetDefaultSmsSimId(int32_t &simId) = 0; 286e5d0e473Sopenharmony_ci 287e5d0e473Sopenharmony_ci /** 288e5d0e473Sopenharmony_ci * @brief Calculate Sms Message Split Segment count 289e5d0e473Sopenharmony_ci * 290e5d0e473Sopenharmony_ci * @param message [in], indicates input message. 291e5d0e473Sopenharmony_ci * @param splitMessage [out], indicates the split information. 292e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if success. 293e5d0e473Sopenharmony_ci */ 294e5d0e473Sopenharmony_ci virtual int32_t SplitMessage(const std::u16string &message, std::vector<std::u16string> &splitMessage) = 0; 295e5d0e473Sopenharmony_ci 296e5d0e473Sopenharmony_ci /** 297e5d0e473Sopenharmony_ci * @brief Calculate the Sms Message Segments Info 298e5d0e473Sopenharmony_ci * 299e5d0e473Sopenharmony_ci * @param slotId [in], indicates the card slot index number, 300e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by the device. 301e5d0e473Sopenharmony_ci * @param message [in], indicates input message. 302e5d0e473Sopenharmony_ci * @param force7BitCode [in], indicates sms encode type, 7bit or not. 303e5d0e473Sopenharmony_ci * @param info [out], indicates output sms segment. 304e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if get sms segments info. 305e5d0e473Sopenharmony_ci */ 306e5d0e473Sopenharmony_ci virtual int32_t GetSmsSegmentsInfo( 307e5d0e473Sopenharmony_ci int32_t slotId, const std::u16string &message, bool force7BitCode, SmsSegmentsInfo &info) = 0; 308e5d0e473Sopenharmony_ci 309e5d0e473Sopenharmony_ci /** 310e5d0e473Sopenharmony_ci * @brief Check Sms Is supported Ims newtwork 311e5d0e473Sopenharmony_ci * 312e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, ranging from {@code 0} to the maximum card slot index number 313e5d0e473Sopenharmony_ci * supported by the device. 314e5d0e473Sopenharmony_ci * @param isSupported Whether ims SMS is supported. 315e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if success. 316e5d0e473Sopenharmony_ci */ 317e5d0e473Sopenharmony_ci virtual int32_t IsImsSmsSupported(int32_t slotId, bool &isSupported) = 0; 318e5d0e473Sopenharmony_ci 319e5d0e473Sopenharmony_ci /** 320e5d0e473Sopenharmony_ci * @brief Get the Ims Short Message Format 3gpp/3gpp2 321e5d0e473Sopenharmony_ci * 322e5d0e473Sopenharmony_ci * @param format Ims short message format 323e5d0e473Sopenharmony_ci * @return int32_t, returns {@code 0} if success. 324e5d0e473Sopenharmony_ci */ 325e5d0e473Sopenharmony_ci virtual int32_t GetImsShortMessageFormat(std::u16string &format) = 0; 326e5d0e473Sopenharmony_ci 327e5d0e473Sopenharmony_ci /** 328e5d0e473Sopenharmony_ci * @brief Check whether it is supported Sms Capability 329e5d0e473Sopenharmony_ci * 330e5d0e473Sopenharmony_ci * @return true 331e5d0e473Sopenharmony_ci * @return false 332e5d0e473Sopenharmony_ci */ 333e5d0e473Sopenharmony_ci virtual bool HasSmsCapability() = 0; 334e5d0e473Sopenharmony_ci 335e5d0e473Sopenharmony_ci /** 336e5d0e473Sopenharmony_ci * @brief Create a short message 337e5d0e473Sopenharmony_ci * 338e5d0e473Sopenharmony_ci * @param pdu Indicates pdu code, 339e5d0e473Sopenharmony_ci * @param specification Indicates 3gpp or 3gpp2 340e5d0e473Sopenharmony_ci * @param message Indicates a short message object 341e5d0e473Sopenharmony_ci * @return Returns {@code 0} if CreateMessage success 342e5d0e473Sopenharmony_ci */ 343e5d0e473Sopenharmony_ci virtual int32_t CreateMessage(std::string pdu, std::string specification, ShortMessage &message) = 0; 344e5d0e473Sopenharmony_ci 345e5d0e473Sopenharmony_ci /** 346e5d0e473Sopenharmony_ci * @brief Mms base64 encode 347e5d0e473Sopenharmony_ci * 348e5d0e473Sopenharmony_ci * @param src Indicates source string, 349e5d0e473Sopenharmony_ci * @param dest Indicates destination string 350e5d0e473Sopenharmony_ci * @return Returns {@code true} if encode success; returns {@code false} otherwise 351e5d0e473Sopenharmony_ci */ 352e5d0e473Sopenharmony_ci virtual bool GetBase64Encode(std::string src, std::string &dest) = 0; 353e5d0e473Sopenharmony_ci 354e5d0e473Sopenharmony_ci /** 355e5d0e473Sopenharmony_ci * @brief Mms base64 decode 356e5d0e473Sopenharmony_ci * 357e5d0e473Sopenharmony_ci * @param src Indicates source string, 358e5d0e473Sopenharmony_ci * @param dest Indicates destination string 359e5d0e473Sopenharmony_ci * @return Returns {@code true} if decode success; returns {@code false} otherwise 360e5d0e473Sopenharmony_ci */ 361e5d0e473Sopenharmony_ci virtual bool GetBase64Decode(std::string src, std::string &dest) = 0; 362e5d0e473Sopenharmony_ci 363e5d0e473Sopenharmony_ci /** 364e5d0e473Sopenharmony_ci * @brief Get Encode String 365e5d0e473Sopenharmony_ci * 366e5d0e473Sopenharmony_ci * @param encodeString Indicates output string, 367e5d0e473Sopenharmony_ci * @param charset Indicates character set, 368e5d0e473Sopenharmony_ci * @param valLength Indicates input string length, 369e5d0e473Sopenharmony_ci * @param strEncodeString Indicates input string 370e5d0e473Sopenharmony_ci * @return Returns {@code true} if decode success; returns {@code false} otherwise 371e5d0e473Sopenharmony_ci */ 372e5d0e473Sopenharmony_ci virtual bool GetEncodeStringFunc( 373e5d0e473Sopenharmony_ci std::string &encodeString, uint32_t charset, uint32_t valLength, std::string strEncodeString) = 0; 374e5d0e473Sopenharmony_ci 375e5d0e473Sopenharmony_ci /** 376e5d0e473Sopenharmony_ci * Send a mms 377e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 378e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by the device 379e5d0e473Sopenharmony_ci * @param mmsc Indicates service center of mms 380e5d0e473Sopenharmony_ci * @param data Indicates file path of mms pdu 381e5d0e473Sopenharmony_ci * @param ua Indicates mms user agent 382e5d0e473Sopenharmony_ci * @param uaprof Indicates mms user agent profile 383e5d0e473Sopenharmony_ci * @return Returns {@code 0} if send mms success 384e5d0e473Sopenharmony_ci */ 385e5d0e473Sopenharmony_ci virtual int32_t SendMms(int32_t slotId, const std::u16string &mmsc, const std::u16string &data, 386e5d0e473Sopenharmony_ci const std::u16string &ua, const std::u16string &uaprof, int64_t &time, bool isMmsApp = false) = 0; 387e5d0e473Sopenharmony_ci 388e5d0e473Sopenharmony_ci /** 389e5d0e473Sopenharmony_ci * Download a mms 390e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 391e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by the device 392e5d0e473Sopenharmony_ci * @param mmsc Indicates service center of mms 393e5d0e473Sopenharmony_ci * @param data Indicates file path of mms pdu 394e5d0e473Sopenharmony_ci * @param ua Indicates mms user agent 395e5d0e473Sopenharmony_ci * @param uaprof Indicates mms user agent profile 396e5d0e473Sopenharmony_ci * @return Returns {@code 0} if download mms success 397e5d0e473Sopenharmony_ci */ 398e5d0e473Sopenharmony_ci virtual int32_t DownloadMms(int32_t slotId, const std::u16string &mmsc, std::u16string &data, 399e5d0e473Sopenharmony_ci const std::u16string &ua, const std::u16string &uaprof) = 0; 400e5d0e473Sopenharmony_ci 401e5d0e473Sopenharmony_cipublic: 402e5d0e473Sopenharmony_ci DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.Telephony.ISmsServiceInterface"); 403e5d0e473Sopenharmony_ci}; 404e5d0e473Sopenharmony_ci} // namespace Telephony 405e5d0e473Sopenharmony_ci} // namespace OHOS 406e5d0e473Sopenharmony_ci#endif 407