1e5d0e473Sopenharmony_ci/* 2e5d0e473Sopenharmony_ci * Copyright (C) 2021 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_H 17e5d0e473Sopenharmony_ci#define SMS_SERVICE_H 18e5d0e473Sopenharmony_ci 19e5d0e473Sopenharmony_ci#include <memory> 20e5d0e473Sopenharmony_ci 21e5d0e473Sopenharmony_ci#include "sms_interface_stub.h" 22e5d0e473Sopenharmony_ci#include "sms_state_handler.h" 23e5d0e473Sopenharmony_ci#include "system_ability.h" 24e5d0e473Sopenharmony_ci#include "system_ability_definition.h" 25e5d0e473Sopenharmony_ci 26e5d0e473Sopenharmony_cinamespace OHOS { 27e5d0e473Sopenharmony_cinamespace Telephony { 28e5d0e473Sopenharmony_cienum ServiceRunningState { STATE_NOT_START, STATE_RUNNING }; 29e5d0e473Sopenharmony_ci 30e5d0e473Sopenharmony_ciclass SmsService : public SystemAbility, public SmsInterfaceStub, public std::enable_shared_from_this<SmsService> { 31e5d0e473Sopenharmony_ci DECLARE_DELAYED_SINGLETON(SmsService) 32e5d0e473Sopenharmony_ci DECLARE_SYSTEM_ABILITY(SmsService) // necessary 33e5d0e473Sopenharmony_cipublic: 34e5d0e473Sopenharmony_ci void OnStart() override; 35e5d0e473Sopenharmony_ci void OnStop() override; 36e5d0e473Sopenharmony_ci int32_t Dump(std::int32_t fd, const std::vector<std::u16string> &args) override; 37e5d0e473Sopenharmony_ci std::string GetBindTime(); 38e5d0e473Sopenharmony_ci void InsertSessionAndDetail(int32_t slotId, const std::string &telephone, const std::string &text, 39e5d0e473Sopenharmony_ci uint16_t &dataBaseId); 40e5d0e473Sopenharmony_ci 41e5d0e473Sopenharmony_ci /** 42e5d0e473Sopenharmony_ci * Sends a text Type SMS message. 43e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 44e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by 45e5d0e473Sopenharmony_ci * the device 46e5d0e473Sopenharmony_ci * @param desAddr Indicates the destination address 47e5d0e473Sopenharmony_ci * @param scAddr Indicates the sms center address 48e5d0e473Sopenharmony_ci * @param text Indicates sms content 49e5d0e473Sopenharmony_ci * @param sendCallback Indicates callback for send out 50e5d0e473Sopenharmony_ci * @param deliverCallback Indicates callback for delivery to destination user 51e5d0e473Sopenharmony_ci * @return Returns {@code 0} if send message success. 52e5d0e473Sopenharmony_ci */ 53e5d0e473Sopenharmony_ci int32_t SendMessage(int32_t slotId, const std::u16string desAddr, const std::u16string scAddr, 54e5d0e473Sopenharmony_ci const std::u16string text, const sptr<ISendShortMessageCallback> &sendCallback, 55e5d0e473Sopenharmony_ci const sptr<IDeliveryShortMessageCallback> &deliveryCallback, bool isMmsApp = true) override; 56e5d0e473Sopenharmony_ci 57e5d0e473Sopenharmony_ci /** 58e5d0e473Sopenharmony_ci * Sends a text Type SMS message withot save to database. 59e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 60e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by 61e5d0e473Sopenharmony_ci * the device 62e5d0e473Sopenharmony_ci * @param desAddr Indicates the destination address 63e5d0e473Sopenharmony_ci * @param scAddr Indicates the sms center address 64e5d0e473Sopenharmony_ci * @param text Indicates sms content 65e5d0e473Sopenharmony_ci * @param sendCallback Indicates callback for send out 66e5d0e473Sopenharmony_ci * @param deliverCallback Indicates callback for delivery to destination user 67e5d0e473Sopenharmony_ci * @return Returns {@code 0} if send message success. 68e5d0e473Sopenharmony_ci */ 69e5d0e473Sopenharmony_ci int32_t SendMessageWithoutSave(int32_t slotId, const std::u16string desAddr, const std::u16string scAddr, 70e5d0e473Sopenharmony_ci const std::u16string text, const sptr<ISendShortMessageCallback> &sendCallback, 71e5d0e473Sopenharmony_ci const sptr<IDeliveryShortMessageCallback> &deliveryCallback) override; 72e5d0e473Sopenharmony_ci 73e5d0e473Sopenharmony_ci /** 74e5d0e473Sopenharmony_ci * Sends a data Type SMS message. 75e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 76e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by 77e5d0e473Sopenharmony_ci * the device 78e5d0e473Sopenharmony_ci * @param desAddr Indicates the destination address 79e5d0e473Sopenharmony_ci * @param scAddr Indicates the sms center address 80e5d0e473Sopenharmony_ci * @param port Indicates the port of data sms 81e5d0e473Sopenharmony_ci * @param data Indicates the array of data sms 82e5d0e473Sopenharmony_ci * @param dataLen Indicates the array length of data sms 83e5d0e473Sopenharmony_ci * @param sendCallback Indicates callback for send out 84e5d0e473Sopenharmony_ci * @param deliverCallback Indicates callback for delivery to destination user 85e5d0e473Sopenharmony_ci * @return Returns {@code 0} if send message success. 86e5d0e473Sopenharmony_ci */ 87e5d0e473Sopenharmony_ci int32_t SendMessage(int32_t slotId, const std::u16string desAddr, const std::u16string scAddr, uint16_t port, 88e5d0e473Sopenharmony_ci const uint8_t *data, uint16_t dataLen, const sptr<ISendShortMessageCallback> &sendCallback, 89e5d0e473Sopenharmony_ci const sptr<IDeliveryShortMessageCallback> &deliveryCallback) override; 90e5d0e473Sopenharmony_ci 91e5d0e473Sopenharmony_ci /** 92e5d0e473Sopenharmony_ci * Sets the address for the Short Message Service Center (SMSC) based on a 93e5d0e473Sopenharmony_ci * specified slot ID 94e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 95e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by 96e5d0e473Sopenharmony_ci * the device 97e5d0e473Sopenharmony_ci * @param scAddr Indicates the sms center address 98e5d0e473Sopenharmony_ci * @return Returns {@code 0} if set smsc success 99e5d0e473Sopenharmony_ci */ 100e5d0e473Sopenharmony_ci int32_t SetSmscAddr(int32_t slotId, const std::u16string &scAddr) override; 101e5d0e473Sopenharmony_ci 102e5d0e473Sopenharmony_ci /** 103e5d0e473Sopenharmony_ci * Obtains the SMSC address based on a specified slot ID. 104e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 105e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by 106e5d0e473Sopenharmony_ci * the device 107e5d0e473Sopenharmony_ci * @param smscAddress [out] 108e5d0e473Sopenharmony_ci * @return Returns {@code 0} if get smsc success. 109e5d0e473Sopenharmony_ci */ 110e5d0e473Sopenharmony_ci int32_t GetSmscAddr(int32_t slotId, std::u16string &smscAddress) override; 111e5d0e473Sopenharmony_ci 112e5d0e473Sopenharmony_ci /** 113e5d0e473Sopenharmony_ci * Add a sms to sim card. 114e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 115e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by 116e5d0e473Sopenharmony_ci * the device 117e5d0e473Sopenharmony_ci * @param smsc Indicates the sms center address 118e5d0e473Sopenharmony_ci * @param pdu Indicates the sms pdu data 119e5d0e473Sopenharmony_ci * @param status Indicates the sms status, read or not 120e5d0e473Sopenharmony_ci * @return Returns {@code true} if add sim success; returns {@code false} 121e5d0e473Sopenharmony_ci */ 122e5d0e473Sopenharmony_ci int32_t AddSimMessage( 123e5d0e473Sopenharmony_ci int32_t slotId, const std::u16string &smsc, const std::u16string &pdu, SimMessageStatus status) override; 124e5d0e473Sopenharmony_ci 125e5d0e473Sopenharmony_ci /** 126e5d0e473Sopenharmony_ci * Delete a sms in the sim card. 127e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 128e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by 129e5d0e473Sopenharmony_ci * the device 130e5d0e473Sopenharmony_ci * @param msgIndex Indicates the sim sms index in sim card 131e5d0e473Sopenharmony_ci * @return Returns {@code true} if delete sim success; returns {@code false} 132e5d0e473Sopenharmony_ci */ 133e5d0e473Sopenharmony_ci int32_t DelSimMessage(int32_t slotId, uint32_t msgIndex) override; 134e5d0e473Sopenharmony_ci 135e5d0e473Sopenharmony_ci /** 136e5d0e473Sopenharmony_ci * Update a sms in the sim card. 137e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 138e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by 139e5d0e473Sopenharmony_ci * the device 140e5d0e473Sopenharmony_ci * @param msgIndex Indicates the sim sms index in sim card 141e5d0e473Sopenharmony_ci * @param newStatusIndicates the sms status, read or not 142e5d0e473Sopenharmony_ci * @param pdu Indicates the sms pdu data 143e5d0e473Sopenharmony_ci * @param smsc Indicates the sms center address 144e5d0e473Sopenharmony_ci * @return Returns {@code 0} if update sim success 145e5d0e473Sopenharmony_ci */ 146e5d0e473Sopenharmony_ci int32_t UpdateSimMessage(int32_t slotId, uint32_t msgIndex, SimMessageStatus newStatus, const std::u16string &pdu, 147e5d0e473Sopenharmony_ci const std::u16string &smsc) override; 148e5d0e473Sopenharmony_ci 149e5d0e473Sopenharmony_ci /** 150e5d0e473Sopenharmony_ci * Get sim card all the sms. 151e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 152e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by 153e5d0e473Sopenharmony_ci * the device 154e5d0e473Sopenharmony_ci * @param message Indicates all SMS messages of sim card 155e5d0e473Sopenharmony_ci * @return Returns {@code 0} if get all sim messages success 156e5d0e473Sopenharmony_ci */ 157e5d0e473Sopenharmony_ci int32_t GetAllSimMessages(int32_t slotId, std::vector<ShortMessage> &message) override; 158e5d0e473Sopenharmony_ci 159e5d0e473Sopenharmony_ci /** 160e5d0e473Sopenharmony_ci * Configure a cell broadcast in a certain band range. 161e5d0e473Sopenharmony_ci * @param slotId [in] 162e5d0e473Sopenharmony_ci * @param enable [in] 163e5d0e473Sopenharmony_ci * @param fromMsgId [in] 164e5d0e473Sopenharmony_ci * @param toMsgId [in] 165e5d0e473Sopenharmony_ci * @param netType [in] 166e5d0e473Sopenharmony_ci * @return Returns {@code 0} if set CB config success 167e5d0e473Sopenharmony_ci */ 168e5d0e473Sopenharmony_ci int32_t SetCBConfig(int32_t slotId, bool enable, uint32_t fromMsgId, uint32_t toMsgId, uint8_t netType) override; 169e5d0e473Sopenharmony_ci 170e5d0e473Sopenharmony_ci /** 171e5d0e473Sopenharmony_ci * enable or disable IMS SMS. 172e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 173e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by 174e5d0e473Sopenharmony_ci * the device 175e5d0e473Sopenharmony_ci * @param enable Indicates enable or disable Ims sms 176e5d0e473Sopenharmony_ci * ranging {@code 0} disable Ims sms {@code 1} enable Ims sms 177e5d0e473Sopenharmony_ci * @return Returns {@code true} if enable or disable Ims Sms success; returns 178e5d0e473Sopenharmony_ci * {@code false} otherwise 179e5d0e473Sopenharmony_ci */ 180e5d0e473Sopenharmony_ci bool SetImsSmsConfig(int32_t slotId, int32_t enable) override; 181e5d0e473Sopenharmony_ci 182e5d0e473Sopenharmony_ci /** 183e5d0e473Sopenharmony_ci * Set the Default Sms Slot Id To SmsService 184e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 185e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by 186e5d0e473Sopenharmony_ci * the device 187e5d0e473Sopenharmony_ci * @return Returns {@code 0} if set default sms slot id success 188e5d0e473Sopenharmony_ci */ 189e5d0e473Sopenharmony_ci int32_t SetDefaultSmsSlotId(int32_t slotId) override; 190e5d0e473Sopenharmony_ci 191e5d0e473Sopenharmony_ci /** 192e5d0e473Sopenharmony_ci * Get the Default Sms Slot Id From SmsService 193e5d0e473Sopenharmony_ci * @return Returns default sms slot id 194e5d0e473Sopenharmony_ci */ 195e5d0e473Sopenharmony_ci int32_t GetDefaultSmsSlotId() override; 196e5d0e473Sopenharmony_ci 197e5d0e473Sopenharmony_ci /** 198e5d0e473Sopenharmony_ci * @brief GetDefaultSmsSlotId 199e5d0e473Sopenharmony_ci * Get the Default Sms Sim Id From SmsService 200e5d0e473Sopenharmony_ci * @return int32_t 201e5d0e473Sopenharmony_ci */ 202e5d0e473Sopenharmony_ci int32_t GetDefaultSmsSimId(int32_t &simId) override; 203e5d0e473Sopenharmony_ci 204e5d0e473Sopenharmony_ci /** 205e5d0e473Sopenharmony_ci * @brief SplitMessage 206e5d0e473Sopenharmony_ci * calculate Sms Message Split Segment count 207e5d0e473Sopenharmony_ci * @param Indicates input message 208e5d0e473Sopenharmony_ci * @param splitMessage Indicates the split information 209e5d0e473Sopenharmony_ci * @return Returns {@code 0} if split message success 210e5d0e473Sopenharmony_ci */ 211e5d0e473Sopenharmony_ci int32_t SplitMessage(const std::u16string &message, std::vector<std::u16string> &splitMessage) override; 212e5d0e473Sopenharmony_ci 213e5d0e473Sopenharmony_ci /** 214e5d0e473Sopenharmony_ci * calculate the Sms Message Segments Info 215e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 216e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by 217e5d0e473Sopenharmony_ci * the device 218e5d0e473Sopenharmony_ci * @param message Indicates input message 219e5d0e473Sopenharmony_ci * @param force7BitCode Indicates sms encode type, 7bit or not 220e5d0e473Sopenharmony_ci * @param info Indicates output sms segment 221e5d0e473Sopenharmony_ci * @return Returns {@code 0} if get sms segments info 222e5d0e473Sopenharmony_ci */ 223e5d0e473Sopenharmony_ci int32_t GetSmsSegmentsInfo(int32_t slotId, const std::u16string &message, bool force7BitCode, 224e5d0e473Sopenharmony_ci ISmsServiceInterface::SmsSegmentsInfo &info) override; 225e5d0e473Sopenharmony_ci 226e5d0e473Sopenharmony_ci /** 227e5d0e473Sopenharmony_ci * Check Sms Is supported Ims newtwork 228e5d0e473Sopenharmony_ci * Hide this for inner system use 229e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 230e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by 231e5d0e473Sopenharmony_ci * the device 232e5d0e473Sopenharmony_ci * @param isSupported Whether ims SMS is supported 233e5d0e473Sopenharmony_ci * @return Returns {@code 0} if successful 234e5d0e473Sopenharmony_ci */ 235e5d0e473Sopenharmony_ci int32_t IsImsSmsSupported(int32_t slotId, bool &isSupported) override; 236e5d0e473Sopenharmony_ci 237e5d0e473Sopenharmony_ci /** 238e5d0e473Sopenharmony_ci * Get the Ims Short Message Format 3gpp/3gpp2 239e5d0e473Sopenharmony_ci * Hide this for inner system use 240e5d0e473Sopenharmony_ci * @return int32_t 241e5d0e473Sopenharmony_ci */ 242e5d0e473Sopenharmony_ci int32_t GetImsShortMessageFormat(std::u16string &format) override; 243e5d0e473Sopenharmony_ci 244e5d0e473Sopenharmony_ci /** 245e5d0e473Sopenharmony_ci * Check whether it is supported Sms Capability 246e5d0e473Sopenharmony_ci * @return Returns {@code true} if support sms; returns {@code false} 247e5d0e473Sopenharmony_ci */ 248e5d0e473Sopenharmony_ci bool HasSmsCapability() override; 249e5d0e473Sopenharmony_ci 250e5d0e473Sopenharmony_ci /** 251e5d0e473Sopenharmony_ci * @brief GetServiceRunningState 252e5d0e473Sopenharmony_ci * Get service running state 253e5d0e473Sopenharmony_ci * @return ServiceRunningState 254e5d0e473Sopenharmony_ci */ 255e5d0e473Sopenharmony_ci int32_t GetServiceRunningState(); 256e5d0e473Sopenharmony_ci 257e5d0e473Sopenharmony_ci /** 258e5d0e473Sopenharmony_ci * @brief GetSpendTime 259e5d0e473Sopenharmony_ci * Get service start spend time 260e5d0e473Sopenharmony_ci * @return Spend time 261e5d0e473Sopenharmony_ci */ 262e5d0e473Sopenharmony_ci int64_t GetSpendTime(); 263e5d0e473Sopenharmony_ci 264e5d0e473Sopenharmony_ci /** 265e5d0e473Sopenharmony_ci * @brief GetEndTime 266e5d0e473Sopenharmony_ci * Get service start finish time 267e5d0e473Sopenharmony_ci * @return Spend time 268e5d0e473Sopenharmony_ci */ 269e5d0e473Sopenharmony_ci int64_t GetEndTime(); 270e5d0e473Sopenharmony_ci 271e5d0e473Sopenharmony_ci /** 272e5d0e473Sopenharmony_ci * create a short message 273e5d0e473Sopenharmony_ci * @param pdu Indicates pdu code, 274e5d0e473Sopenharmony_ci * @param specification Indicates 3gpp or 3gpp2 275e5d0e473Sopenharmony_ci * @param ShortMessage Indicates a short message object 276e5d0e473Sopenharmony_ci * @return Returns {@code 0} if CreateMessage success 277e5d0e473Sopenharmony_ci */ 278e5d0e473Sopenharmony_ci int32_t CreateMessage(std::string pdu, std::string specification, ShortMessage &message) override; 279e5d0e473Sopenharmony_ci 280e5d0e473Sopenharmony_ci /** 281e5d0e473Sopenharmony_ci * mms base64 encode 282e5d0e473Sopenharmony_ci * @param src Indicates source string, 283e5d0e473Sopenharmony_ci * @param dest Indicates destination string 284e5d0e473Sopenharmony_ci * @return Returns {@code true} if encode success; returns {@code false} otherwise 285e5d0e473Sopenharmony_ci */ 286e5d0e473Sopenharmony_ci bool GetBase64Encode(std::string src, std::string &dest) override; 287e5d0e473Sopenharmony_ci 288e5d0e473Sopenharmony_ci /** 289e5d0e473Sopenharmony_ci * mms base64 decode 290e5d0e473Sopenharmony_ci * @param src Indicates source string, 291e5d0e473Sopenharmony_ci * @param dest Indicates destination string 292e5d0e473Sopenharmony_ci * @return Returns {@code true} if decode success; returns {@code false} otherwise 293e5d0e473Sopenharmony_ci */ 294e5d0e473Sopenharmony_ci bool GetBase64Decode(std::string src, std::string &dest) override; 295e5d0e473Sopenharmony_ci 296e5d0e473Sopenharmony_ci /** 297e5d0e473Sopenharmony_ci * Get Encode String 298e5d0e473Sopenharmony_ci * @param encodeString Indicates output string, 299e5d0e473Sopenharmony_ci * @param charset Indicates character set, 300e5d0e473Sopenharmony_ci * @param valLength Indicates input string length, 301e5d0e473Sopenharmony_ci * @param strEncodeString Indicates input string 302e5d0e473Sopenharmony_ci * @return Returns {@code true} if decode success; returns {@code false} otherwise 303e5d0e473Sopenharmony_ci */ 304e5d0e473Sopenharmony_ci bool GetEncodeStringFunc( 305e5d0e473Sopenharmony_ci std::string &encodeString, uint32_t charset, uint32_t valLength, std::string strEncodeString) override; 306e5d0e473Sopenharmony_ci 307e5d0e473Sopenharmony_ci /** 308e5d0e473Sopenharmony_ci * Send a Mms. 309e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 310e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by 311e5d0e473Sopenharmony_ci * the device 312e5d0e473Sopenharmony_ci * @param mmsc Indicates service center of mms 313e5d0e473Sopenharmony_ci * @param data Indicates mms pdu byte array 314e5d0e473Sopenharmony_ci * @param ua Indicates mms user agent 315e5d0e473Sopenharmony_ci * @param uaprof Indicates mms user agent profile 316e5d0e473Sopenharmony_ci * @return Returns {@code 0} if send mms success; returns {@code false} otherwise 317e5d0e473Sopenharmony_ci */ 318e5d0e473Sopenharmony_ci int32_t SendMms(int32_t slotId, const std::u16string &mmsc, const std::u16string &data, const std::u16string &ua, 319e5d0e473Sopenharmony_ci const std::u16string &uaprof, int64_t &time, bool isMmsApp = false) override; 320e5d0e473Sopenharmony_ci 321e5d0e473Sopenharmony_ci /** 322e5d0e473Sopenharmony_ci * Service after Send Mms. 323e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 324e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by 325e5d0e473Sopenharmony_ci * the device 326e5d0e473Sopenharmony_ci * @param time Indicates tiemstamp of hap call NAPI function 327e5d0e473Sopenharmony_ci * @param dataBaseId id of mms in sqlite 328e5d0e473Sopenharmony_ci * @param sessionBucket object of DataShareValuesBucket to upate sqlite 329e5d0e473Sopenharmony_ci * @param sendStatus status of mms sent 330e5d0e473Sopenharmony_ci * @return Returns {@code 0} if send mms success; returns {@code false} otherwise 331e5d0e473Sopenharmony_ci */ 332e5d0e473Sopenharmony_ci void ServiceAfterSendMmsComplete(int32_t slotId, int64_t &time, uint16_t &dataBaseId, 333e5d0e473Sopenharmony_ci DataShare::DataShareValuesBucket &sessionBucket, std::string &sendStatus); 334e5d0e473Sopenharmony_ci 335e5d0e473Sopenharmony_ci /** 336e5d0e473Sopenharmony_ci * Download a Mms. 337e5d0e473Sopenharmony_ci * @param slotId Indicates the card slot index number, 338e5d0e473Sopenharmony_ci * ranging from {@code 0} to the maximum card slot index number supported by 339e5d0e473Sopenharmony_ci * the device 340e5d0e473Sopenharmony_ci * @param mmsc Indicates service center of mms 341e5d0e473Sopenharmony_ci * @param data Indicates mms pdu byte array 342e5d0e473Sopenharmony_ci * @param ua Indicates mms user agent 343e5d0e473Sopenharmony_ci * @param uaprof Indicates mms user agent profile 344e5d0e473Sopenharmony_ci * @return Returns {@code 0} if download mms success; returns {@code false} otherwise 345e5d0e473Sopenharmony_ci */ 346e5d0e473Sopenharmony_ci int32_t DownloadMms(int32_t slotId, const std::u16string &mmsc, std::u16string &data, 347e5d0e473Sopenharmony_ci const std::u16string &ua, const std::u16string &uaprof) override; 348e5d0e473Sopenharmony_ci int32_t OnRilAdapterHostDied(int32_t slotId); 349e5d0e473Sopenharmony_ci 350e5d0e473Sopenharmony_ciprivate: 351e5d0e473Sopenharmony_ci bool Init(); 352e5d0e473Sopenharmony_ci void WaitCoreServiceToInit(); 353e5d0e473Sopenharmony_ci bool CheckSmsPermission(const sptr<ISendShortMessageCallback> &sendCallback); 354e5d0e473Sopenharmony_ci bool ValidDestinationAddress(std::string desAddr); 355e5d0e473Sopenharmony_ci void TrimSmscAddr(std::string &sca); 356e5d0e473Sopenharmony_ci bool CheckSimMessageIndexValid(int32_t slotId, uint32_t msgIndex); 357e5d0e473Sopenharmony_ci void InsertSmsMmsInfo(int32_t slotId, uint16_t sessionId, const std::string &number, 358e5d0e473Sopenharmony_ci const std::string &text, uint16_t &dataBaseId); 359e5d0e473Sopenharmony_ci bool InsertSession(bool isNewSession, uint16_t messageCount, const std::string &number, const std::string &text); 360e5d0e473Sopenharmony_ci bool QuerySessionByTelephone(const std::string &telephone, uint16_t &sessionId, uint16_t &messageCount); 361e5d0e473Sopenharmony_ci void UpdateSmsContact(const std::string &address); 362e5d0e473Sopenharmony_ci 363e5d0e473Sopenharmony_ciprivate: 364e5d0e473Sopenharmony_ci int64_t bindTime_ = 0; 365e5d0e473Sopenharmony_ci int64_t endTime_ = 0; 366e5d0e473Sopenharmony_ci int64_t spendTime_ = 0; 367e5d0e473Sopenharmony_ci bool registerToService_ = false; 368e5d0e473Sopenharmony_ci static constexpr const char *SMS_MMS_INFO_MSG_STATE_SENDING = "1"; 369e5d0e473Sopenharmony_ci ServiceRunningState state_ = ServiceRunningState::STATE_NOT_START; 370e5d0e473Sopenharmony_ci std::shared_ptr<SmsStateHandler> smsStateHandler_; 371e5d0e473Sopenharmony_ci const std::string SMS_MMS_INFO = "datashare:///com.ohos.smsmmsability/sms_mms/sms_mms_info"; 372e5d0e473Sopenharmony_ci const std::string SMS_SESSION = "datashare:///com.ohos.smsmmsability/sms_mms/session"; 373e5d0e473Sopenharmony_ci}; 374e5d0e473Sopenharmony_ci} // namespace Telephony 375e5d0e473Sopenharmony_ci} // namespace OHOS 376e5d0e473Sopenharmony_ci#endif