1e5d0e473Sopenharmony_ci/* 2e5d0e473Sopenharmony_ci * Copyright (C) 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 TEXT_CODER_H 17e5d0e473Sopenharmony_ci#define TEXT_CODER_H 18e5d0e473Sopenharmony_ci 19e5d0e473Sopenharmony_ci#include <map> 20e5d0e473Sopenharmony_ci 21e5d0e473Sopenharmony_ci#include "gsm_pdu_code_type.h" 22e5d0e473Sopenharmony_ci#include "msg_text_convert_common.h" 23e5d0e473Sopenharmony_ci 24e5d0e473Sopenharmony_cinamespace OHOS { 25e5d0e473Sopenharmony_cinamespace Telephony { 26e5d0e473Sopenharmony_ci 27e5d0e473Sopenharmony_ciclass TextCoder { 28e5d0e473Sopenharmony_cipublic: 29e5d0e473Sopenharmony_ci static TextCoder &Instance(); 30e5d0e473Sopenharmony_ci void Base64Encode(const std::string &src, std::string &dest); 31e5d0e473Sopenharmony_ci void Base64Decode(const std::string &src, std::string &dest); 32e5d0e473Sopenharmony_ci bool GetEncodeString( 33e5d0e473Sopenharmony_ci std::string &encodeString, uint32_t charset, uint32_t valLength, const std::string &strEncodeString); 34e5d0e473Sopenharmony_ci int Utf8ToGsm7bit(uint8_t *dest, int maxLength, const uint8_t *src, int srcLength, MSG_LANGUAGE_ID_T &langId); 35e5d0e473Sopenharmony_ci int Utf8ToUcs2(uint8_t *dest, int maxLength, const uint8_t *src, int srcLength); 36e5d0e473Sopenharmony_ci int CdmaUtf8ToAuto(uint8_t *dest, int maxLength, const uint8_t *src, int srcLength, DataCodingScheme &scheme); 37e5d0e473Sopenharmony_ci int GsmUtf8ToAuto(uint8_t *dest, int maxLength, const uint8_t *src, int srcLength, DataCodingScheme &scheme, 38e5d0e473Sopenharmony_ci SmsCodingNationalType codingNationalType, MSG_LANGUAGE_ID_T &langId); 39e5d0e473Sopenharmony_ci int Gsm7bitToUtf8(uint8_t *dest, int maxLength, const uint8_t *src, int srcLength, const MsgLangInfo &langInfo); 40e5d0e473Sopenharmony_ci int Ucs2ToUtf8(uint8_t *dest, int maxLength, const uint8_t *src, int srcLength); 41e5d0e473Sopenharmony_ci int EuckrToUtf8(uint8_t *dest, int maxLength, const uint8_t *src, int srcLength); 42e5d0e473Sopenharmony_ci int ShiftjisToUtf8(uint8_t *dest, int maxLength, const uint8_t *src, int srcLength) const; 43e5d0e473Sopenharmony_ci WCHAR GetUCS2Value(uint32_t charset); 44e5d0e473Sopenharmony_ci 45e5d0e473Sopenharmony_ciprivate: 46e5d0e473Sopenharmony_ci TextCoder(); 47e5d0e473Sopenharmony_ci virtual ~TextCoder(); 48e5d0e473Sopenharmony_ci int Ucs2ToGsm7bit(uint8_t *dest, int maxLength, const uint8_t *src, int srcLength, MSG_LANGUAGE_ID_T &langId); 49e5d0e473Sopenharmony_ci int Ucs2ToGsm7bitAuto(uint8_t *dest, int maxLength, const uint8_t *src, int srcLength, bool &unknown, 50e5d0e473Sopenharmony_ci SmsCodingNationalType codingNationalType); 51e5d0e473Sopenharmony_ci int Ucs2ToAscii(uint8_t *dest, int maxLength, const uint8_t *src, int srcLength, bool &unknown); 52e5d0e473Sopenharmony_ci uint8_t GetLangType(const uint8_t *src, int srcLength); 53e5d0e473Sopenharmony_ci int FindGsm7bitExt(uint8_t *dest, int maxLength, const uint16_t inText); 54e5d0e473Sopenharmony_ci int FindTurkish(uint8_t *dest, int maxLength, const uint16_t inText); 55e5d0e473Sopenharmony_ci int FindSpanish(uint8_t *dest, int maxLength, const uint16_t inText); 56e5d0e473Sopenharmony_ci int FindPortu(uint8_t *dest, int maxLength, const uint16_t inText); 57e5d0e473Sopenharmony_ci uint8_t FindReplaceChar(const uint16_t inText); 58e5d0e473Sopenharmony_ci std::map<uint16_t, uint8_t> Get7BitCodingExtMap(SmsCodingNationalType codingNationalType) const; 59e5d0e473Sopenharmony_ci 60e5d0e473Sopenharmony_ci int Gsm7bitToUcs2(uint8_t *dest, int maxLength, const uint8_t *src, int srcLength, const MsgLangInfo &langInfo); 61e5d0e473Sopenharmony_ci int EscapeTurkishLockingToUcs2(const uint8_t *src, int srcLen, const MsgLangInfo &langInfo, uint16_t &result); 62e5d0e473Sopenharmony_ci int EscapePortuLockingToUcs2(const uint8_t *src, int srcLen, const MsgLangInfo &langInfo, uint16_t &result); 63e5d0e473Sopenharmony_ci int EscapeGsm7bitToUcs2(const uint8_t *src, int srcLen, const MsgLangInfo &langInfo, uint16_t &result); 64e5d0e473Sopenharmony_ci uint16_t EscapeToUcs2(const uint8_t srcText, const MsgLangInfo &langInfo); 65e5d0e473Sopenharmony_ci 66e5d0e473Sopenharmony_ci void GetTurkishSingleToUcs2(const uint8_t &srcText, uint16_t &result); 67e5d0e473Sopenharmony_ci void GetSpanishSingleToUcs2(const uint8_t &srcText, uint16_t &result); 68e5d0e473Sopenharmony_ci void GetGsm7BitExtToUcs2(const uint8_t &srcText, uint16_t &result); 69e5d0e473Sopenharmony_ci void GetPortuSingleToUcs2(const uint8_t &srcText, uint16_t &result); 70e5d0e473Sopenharmony_ci 71e5d0e473Sopenharmony_ci void InitExtCharMap(); 72e5d0e473Sopenharmony_ci void InitGsm7bitDefMap(); 73e5d0e473Sopenharmony_ci void InitGsm7bitExtMap(); 74e5d0e473Sopenharmony_ci void InitTurkishMap(); 75e5d0e473Sopenharmony_ci void InitSpanishMap(); 76e5d0e473Sopenharmony_ci void InitPortuMap(); 77e5d0e473Sopenharmony_ci void InitReplaceCharMap(); 78e5d0e473Sopenharmony_ci 79e5d0e473Sopenharmony_ciprivate: 80e5d0e473Sopenharmony_ci std::map<uint16_t, uint8_t> extCharMap_; 81e5d0e473Sopenharmony_ci std::map<uint16_t, uint8_t> gsm7bitDefMap_; 82e5d0e473Sopenharmony_ci std::map<uint16_t, uint8_t> gsm7bitExtMap_; 83e5d0e473Sopenharmony_ci std::map<uint16_t, uint8_t> turkishMap_; 84e5d0e473Sopenharmony_ci std::map<uint16_t, uint8_t> spanishMap_; 85e5d0e473Sopenharmony_ci std::map<uint16_t, uint8_t> portuMap_; 86e5d0e473Sopenharmony_ci std::map<uint16_t, uint8_t> replaceCharMap_; 87e5d0e473Sopenharmony_ci}; 88e5d0e473Sopenharmony_ci} // namespace Telephony 89e5d0e473Sopenharmony_ci} // namespace OHOS 90e5d0e473Sopenharmony_ci#endif 91