[Feature][Modem]Update MTK MODEM V1.6 baseline version: MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6

MTK modem version: MT2735_IVT_MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6.tar.gz
RF  modem version: NA

Change-Id: I45a4c2752fa9d1a618beacd5d40737fb39ab64fb
diff --git a/mcu/custom/middleware/common/Conversions.h b/mcu/custom/middleware/common/Conversions.h
new file mode 100644
index 0000000..8041c15
--- /dev/null
+++ b/mcu/custom/middleware/common/Conversions.h
@@ -0,0 +1,932 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2005
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ * Filename:
+ * ---------
+ * Conversions.h
+ *
+ * Project:
+ * --------
+ * MAUI
+ *
+ * Description:
+ * ------------
+ * This file defines constant, enum value, and structures for converting 
+ *    realted utilities.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *==============================================================================
+ *******************************************************************************/
+#ifndef _MMI_CONVERSIONS_H
+#define _MMI_CONVERSIONS_H
+#include "kal_public_api.h" //MSBB change #include "kal_release.h"
+
+#if !defined(NEPTUNE_MMI)
+#include "kal_general_types.h"
+#endif
+
+#ifndef FALSE
+  #define FALSE           0
+#endif
+#define TRUE            1
+#define UNKOWN_UCS2_CHAR   0xFFEB
+
+typedef enum
+{
+    BIG_5_ENCODING_TYPE,
+    GB2312_ENCODING_TYPE,
+    HKSCS_ENCODING_TYPE,
+    NO_OF_TEXT_ENCODING
+} TextEncodingEnum;
+
+typedef struct
+{
+    short start;
+    short end;
+} key_index_t;
+
+/*-- function prototypes --*/
+
+extern kal_uint16 mmi_chset_wchar_to_ucs2(kal_uint16 encode_char, TextEncodingEnum encoding);
+extern kal_uint16 mmi_chset_ucs2_to_wchar(kal_uint16 ucs2_char, TextEncodingEnum encoding);
+
+extern kal_uint16 mmi_chset_text_to_ucs2_str(
+                    kal_uint8 *dest,
+                    kal_int32 dest_size,
+                    kal_uint8 *src,
+                    TextEncodingEnum encoding);
+extern kal_uint16 mmi_chset_text_to_ucs2_str_ex(
+                    kal_uint8 *dest,
+                    kal_int32 dest_size,
+                    kal_uint8 *src,
+                    TextEncodingEnum encoding,
+                    kal_uint32 *src_end_pos);
+
+extern kal_uint16 mmi_chset_ucs2_to_text_str(
+                    kal_uint8 *dest,
+                    kal_int32 dest_size,
+                    kal_uint8 *src,
+                    TextEncodingEnum encoding);
+extern kal_uint16 mmi_chset_ucs2_to_text_str_ex(
+                    kal_uint8 *dest,
+                    kal_int32 dest_size,
+                    kal_uint8 *src,
+                    TextEncodingEnum encoding,
+                    kal_uint32 *src_end_pos);
+
+extern kal_uint8 mmi_chset_is_text_in_str(kal_uint8 *src);
+
+/*-- exposed global data --*/
+
+extern const kal_uint8 *g_ucs2_to_encode_key_MSB[NO_OF_TEXT_ENCODING];
+extern const kal_uint8 *g_encode_to_ucs2_key_MSB[NO_OF_TEXT_ENCODING];
+extern const kal_uint16 *g_ucs2_to_encode_table[NO_OF_TEXT_ENCODING];
+extern const kal_uint16 *g_encode_to_ucs2_table[NO_OF_TEXT_ENCODING];
+extern const kal_uint16 g_unknown_encode_char[NO_OF_TEXT_ENCODING];
+extern const kal_uint16 *g_text_encoding_name[NO_OF_TEXT_ENCODING];
+
+#define CHSET_MAX_COUNT             25
+#define CHSET_BIT_WORD_16           16
+#define CHSET_BIT_WORD_8            8
+#define CHSET_TMP_BUFF_SIZE         2048        /* the size of the temp buffer in mmi_chset_convert() */
+
+/* Supported Guess Charsets */
+#define CHSET_GUESS_ALL				0x00000000
+#define CHSET_GUESS_UTF8			0x00000001
+#define CHSET_GUESS_UTF16LE			0x00000002
+#define CHSET_GUESS_UTF16BE			0x00000004
+#define CHSET_GUESS_UCS2			0x00000008
+#define CHSET_GUESS_GB2312			0x00000010
+#define CHSET_GUESS_BIG5			0x00000020
+#define CHSET_GUESS_WESTERN_ISO		0x00000040
+#define CHSET_GUESS_HKSCS                0x00000080
+
+#define CHSET_LANG_MAP_SIZE   5
+
+/* Enum of all supported charsets*/
+typedef enum
+{
+    CHSET_BASE,
+    MMI_CHSET_BASE = CHSET_BASE,
+    CHSET_ASCII,
+    MMI_CHSET_ASCII = CHSET_ASCII, // ASCII
+    CHSET_ARABIC_ISO, 
+    MMI_CHSET_ARABIC_ISO = CHSET_ARABIC_ISO, // ISO 8859-6 (Arabic)
+    CHSET_ARABIC_WIN,
+    MMI_CHSET_ARABIC_WIN = CHSET_ARABIC_WIN, // Windows-1256 (Arabic)
+    CHSET_PERSIAN_CP1097,
+    MMI_CHSET_PERSIAN_CP1097 = CHSET_PERSIAN_CP1097, // CP1097  (Persian) 
+    CHSET_PERSIAN_CP1098,
+    MMI_CHSET_PERSIAN_CP1098 = CHSET_PERSIAN_CP1098, // CP1098  (Persian)
+    CHSET_BALTIC_ISO,
+    MMI_CHSET_BALTIC_ISO = CHSET_BALTIC_ISO, // ISO-8859-4 (Baltic language group)
+    CHSET_BALTIC_WIN,
+    MMI_CHSET_BALTIC_WIN = CHSET_BALTIC_WIN, // Windows-1257 (Baltic language group)
+    CHSET_CEURO_ISO,
+    MMI_CHSET_CEURO_ISO = CHSET_CEURO_ISO, // ISO-8859-2 (Central european language group)
+    CHSET_CEURO_WIN,
+    MMI_CHSET_CEURO_WIN = CHSET_CEURO_WIN, // Windows-1250 (Central european language group)
+    CHSET_CYRILLIC_ISO,
+    MMI_CHSET_CYRILLIC_ISO = CHSET_CYRILLIC_ISO, // ISO-8859-5 (Cyrillic script based languages)
+    CHSET_CYRILLIC_WIN,
+    MMI_CHSET_CYRILLIC_WIN = CHSET_CYRILLIC_WIN, // Windows-1251 (Cyrillic script)
+    CHSET_GREEK_ISO,
+    MMI_CHSET_GREEK_ISO = CHSET_GREEK_ISO, // ISO-8859-7 (Greek)
+    CHSET_GREEK_WIN,
+    MMI_CHSET_GREEK_WIN = CHSET_GREEK_WIN, // Windows-1253 (Greek)
+    CHSET_HEBREW_ISO,
+    MMI_CHSET_HEBREW_ISO = CHSET_HEBREW_ISO, // ISO-8859-8 (Hebrew)
+    CHSET_HEBREW_WIN,
+    MMI_CHSET_HEBREW_WIN = CHSET_HEBREW_WIN, // Windows-1255 (Hebrew)
+    CHSET_LATIN_ISO,
+    MMI_CHSET_LATIN_ISO = CHSET_LATIN_ISO, // ISO-8859-4 (North european language group)
+    CHSET_NORDIC_ISO,
+    MMI_CHSET_NORDIC_ISO = CHSET_NORDIC_ISO, // ISO-8859-10 (Nordic language group)
+    CHSET_SEURO_ISO,
+    MMI_CHSET_SEURO_ISO = CHSET_SEURO_ISO,  // ISO-8859-3 (South european language group)
+    CHSET_TURKISH_ISO,
+    MMI_CHSET_TURKISH_ISO = CHSET_TURKISH_ISO, // ISO-8859-9 (Turkish)
+    CHSET_TURKISH_WIN,
+    MMI_CHSET_TURKISH_WIN = CHSET_TURKISH_WIN, // Windows-1254 (Turkish)
+    CHSET_WESTERN_ISO,
+    MMI_CHSET_WESTERN_ISO = CHSET_WESTERN_ISO, // ISO-8859-1 (Latin script based languages)
+    CHSET_ARMENIAN_ISO,
+    MMI_CHSET_ARMENIAN_ISO  = CHSET_ARMENIAN_ISO, // ISO-10585 ARMSCII (Armenian)
+	CHSET_THAI_WIN,
+    MMI_CHSET_THAI_WIN = CHSET_THAI_WIN, // Windows-874 (Thai)
+    CHSET_VIETNAMESE_WIN,
+    MMI_CHSET_VIETNAMESE_WIN = CHSET_VIETNAMESE_WIN,  // Windows-1258 (Vietnamese)
+    CHSET_KOI8_R,
+    MMI_CHSET_KOI8_R = CHSET_KOI8_R,  // KOI8-russian 
+    CHSET_TIS_620,
+    MMI_CHSET_TIS_620 = CHSET_TIS_620,  // Thai Industrial Standard 620
+    CHSET_WESTERN_WIN,
+    MMI_CHSET_WESTERN_WIN = CHSET_WESTERN_WIN, // Windows-1252 (Latin script based languages)
+    
+    /* Add new (8-bit) encodings above this line */
+    
+    CHSET_BIG5,
+    MMI_CHSET_BIG5 = CHSET_BIG5,  // Big5 (Traditional chinese)
+    CHSET_GB2312,
+    MMI_CHSET_GB2312 = CHSET_GB2312, // GB2312 (Simplified chinese)
+    CHSET_HKSCS,
+    MMI_CHSET_HKSCS = CHSET_HKSCS,  // HKSCS 2004 (Hong Kong chinese)
+    CHSET_SJIS,
+    MMI_CHSET_SJIS = CHSET_SJIS,  // SJIS (Japanese)
+    CHSET_GB18030,
+    MMI_CHSET_GB18030 = CHSET_GB18030, // GB18030 (Simplified chinese-extended)
+    CHSET_UTF7,
+    MMI_CHSET_UTF7 = CHSET_UTF7,  // UTF-7 
+    CHSET_EUCKR,
+    MMI_CHSET_EUCKR = CHSET_EUCKR, // Extended Unix Code - korean
+
+    /* Place all CJK encodings above this one */
+
+    CHSET_UTF16LE,
+    MMI_CHSET_UTF16LE = CHSET_UTF16LE, // UTF-16LE
+    CHSET_UTF16BE,
+    MMI_CHSET_UTF16BE = CHSET_UTF16BE, // UTF-16BE
+    CHSET_UTF8,
+    MMI_CHSET_UTF8 = CHSET_UTF8,  // UTF-8
+    CHSET_UCS2,
+    MMI_CHSET_UCS2 = CHSET_UCS2,  // UCS2
+    CHSET_TOTAL,
+    MMI_CHSET_TOTAL = CHSET_TOTAL 
+} mmi_chset_enum, chset_enum;
+
+/* do not change the order */
+
+/* Enum of all supporte charset pairs */
+
+typedef enum _ENCODING_SCHEMES_ENUM
+{
+    BASE_ENCODING_SCHEME,
+
+    ASCII_TO_UCS2,
+    UCS2_TO_ASCII,   
+
+    ARABIC_ISO_TO_UCS2,
+    UCS2_TO_ARABIC_ISO,
+
+    ARABIC_WINDOWS_TO_UCS2,
+    UCS2_TO_ARABIC_WINDOWS,
+    
+    PERSIAN_CP1097_TO_UCS2,
+    UCS2_TO_PERSIAN_CP1097,
+
+    PERSIAN_CP1098_TO_UCS2,
+    UCS2_TO_PERSIAN_CP1098,
+    
+    BALTIC_ISO_TO_UCS2,
+    UCS2_TO_BALTIC_ISO,
+
+    BALTIC_WINDOWS_TO_UCS2,
+    UCS2_TO_BALTIC_WINDOWS,
+
+    CENTRAL_EUROPEAN_ISO_TO_UCS2,
+    UCS2_TO_CENTRAL_EUROPEAN_ISO,
+
+    CENTRAL_EUROPEAN_WINDOWS_TO_UCS2,
+    UCS2_TO_CENTRAL_EUROPEAN_WINDOWS,
+
+    CYRILLIC_ISO_TO_UCS2,
+    UCS2_TO_CYRILLIC_ISO,
+
+    CYRILLIC_WINDOWS_TO_UCS2,
+    UCS2_TO_CYRILLIC_WINDOWS,
+    
+    GREEK_ISO_TO_UCS2,
+    UCS2_TO_GREEK_ISO,
+
+    GREEK_WINDOWS_TO_UCS2,
+    UCS2_TO_GREEK_WINDOWS,
+
+    HEBREW_ISO_TO_UCS2,
+    UCS2_TO_HEBREW_ISO,
+
+    HEBREW_WINDOWS_TO_UCS2,
+    UCS2_TO_HEBREW_WINDOWS,
+
+    LATIN_ISO_TO_UCS2,
+    UCS2_TO_LATIN_ISO,
+
+    NORDIC_ISO_TO_UCS2,
+    UCS2_TO_NORDIC_ISO,
+
+    SOUTH_EUROPEAN_ISO_TO_UCS2,
+    UCS2_TO_SOUTH_EUROPEAN_ISO,
+
+    TURKISH_ISO_TO_UCS2,
+    UCS2_TO_TURKISH_ISO,
+
+    TURKISH_WINDOWS_TO_UCS2,
+    UCS2_TO_TURKISH_WINDOWS,
+
+    WESTERN_ISO_TO_UCS2,
+    UCS2_TO_WESTERN_ISO,
+
+    ARMENIAN_ISO_TO_UCS2,
+    UCS2_TO_ARMENIAN_ISO,
+    
+    THAI_WINDOWS_TO_UCS2,
+    UCS2_TO_THAI_WINDOWS,
+
+    VIETNAMESE_WINDOWS_TO_UCS2,
+    UCS2_TO_VIETNAMESE_WINDOWS,
+
+    KOI8_R_TO_UCS2,
+    UCS2_TO_KOI8_R,
+
+    TIS_620_TO_UCS2,
+    UCS2_TO_TIS_620,
+    
+    WESTERN_WINDOWS_TO_UCS2,
+    UCS2_TO_WESTERN_WINDOWS,
+
+    /* Add new (8-bit) encodings above this line */
+    BIG5_TO_UCS2,
+    UCS2_TO_BIG5,
+
+    GB2312_TO_UCS2,
+    UCS2_TO_GB2312,
+
+    HKSCS_TO_UCS2,
+    UCS2_TO_HKSCS,
+
+    SJIS_TO_UCS2,
+    UCS2_TO_SJIS,
+
+    GB18030_TO_UCS2,
+    UCS2_TO_GB18030,
+
+    UTF7_TO_UCS2,
+    UCS2_TO_UTF7,
+
+    EUCKR_WINDOWS_TO_UCS2,
+    UCS2_TO_EUCKR_WINDOWS,
+
+    /* Place all CJK encodings above this one */
+    UTF16LE_TO_UCS2,
+    UCS2_TO_UTF16LE,
+    
+    UTF16BE_TO_UCS2,
+    UCS2_TO_UTF16BE,
+    
+    UTF8_TO_UCS2,
+    UCS2_TO_UTF8,
+
+    CHSET_PAIR_TOTAL
+} mmi_chset_pair_enum;
+
+/* Global variable to hold curent default encoding in phone 
+   This value will be updated by MMI phone setup module */
+extern mmi_chset_enum g_chset_text_encoding;    
+
+extern kal_uint16 EncodingDecoding(
+                    mmi_chset_pair_enum Scheme,
+                    char *pOutBuffer,
+                    char *pInBuffer,
+                    kal_int32 dest_size,
+                    kal_uint32 *src_end_pos);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_init
+ * DESCRIPTION
+ *  Routine for initializing the related data structures of the various encoding types
+ * PARAMETERS
+ *  void
+ * RETURNS
+ *  void
+ *****************************************************************************/
+extern void mmi_chset_init(void);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_convert
+ * DESCRIPTION
+ *  Convert string between 2 character sets. (will add the terminate character)
+ * PARAMETERS
+ *  src_type        :   [IN]        Charset type of source
+ *  dest_type       :   [IN]        Charset type of destination
+ *  src_buff        :   [IN]        Buffer stores source string
+ *  dest_buff       :   [OUT]       Buffer stores destination string
+ *  dest_size       :   [IN]        Size of destination buffer (bytes)
+ * RETURNS
+ *  Length of destination string, including null terminator. (bytes)
+ *****************************************************************************/
+extern kal_int32 mmi_chset_convert(
+                    mmi_chset_enum src_type,
+                    mmi_chset_enum dest_type,
+                    char *src_buff,
+                    char *dest_buff,
+                    kal_int32 dest_size);
+
+extern kal_int32 mmi_chset_convert_ex(
+                    mmi_chset_enum src_type,
+                    mmi_chset_enum dest_type,
+                    char *src_buff,
+                    char *dest_buff,
+                    kal_int32 dest_size,
+                    kal_uint32 *src_end_pos);
+
+extern kal_int32 chset_convert(
+                    chset_enum src_type,
+                    chset_enum dest_type,
+                    char *src_buff,
+                    char *dest_buff,
+                    kal_int32 dest_size);
+
+extern kal_int32 chset_convert_ex(
+                    chset_enum src_type,
+                    chset_enum dest_type,
+                    char *src_buff,
+                    char *dest_buff,
+                    kal_int32 dest_size,
+                    kal_uint32 *src_end_pos);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_use_space_for_unknown_character
+ * DESCRIPTION
+ *  It's a property of charset conversion module. Setting it up would cause invalid character values behave as 'space' character.
+ *  It is applicable only with ideographic charsets.
+ * PARAMETERS
+ *  void
+ * RETURNS
+ *  void
+ *****************************************************************************/
+extern void mmi_chset_use_space_for_unknown_character(void);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_use_space_for_unknown_character
+ * DESCRIPTION
+ *  It's a property of charset conversion module. Setting it up would cause invalid character values behave as 0xFFFF.
+ *  It is applicable only with ideographic charsets.
+ * PARAMETERS
+ *  void
+ * RETURNS
+ *  void
+ *****************************************************************************/
+extern void mmi_chset_do_not_use_space_for_unknown_character(void);
+
+extern kal_int32 mmi_chset_convert_with_src_length(
+        mmi_chset_enum src_type,
+        mmi_chset_enum dest_type,
+        char *src_buff,
+        kal_int32 src_size,
+        char *dest_buff,
+        kal_int32 dest_size);
+extern kal_uint16 UCS2_TO_WCHAR(kal_uint16 src_char);
+
+extern void mmi_chset_mixed_text_to_ucs2_str(
+                kal_uint8 *dest,
+                kal_int16 dest_size,
+                kal_uint8 *src,
+                mmi_chset_enum encoding);
+extern void mmi_chset_mixed_text_to_ucs2_str_ex(
+                kal_uint8 *dest,
+                kal_int16 dest_size,
+                kal_uint8 *src,
+                mmi_chset_enum encoding,
+                kal_uint32 *src_end_pos);
+
+extern kal_int32 mmi_chset_text_to_ucs2(kal_uint8 *dest, kal_int32 dest_size, kal_uint8 *src);
+extern kal_int32 mmi_chset_text_to_ucs2_ex(
+                    kal_uint8 *dest,
+                    kal_int32 dest_size,
+                    kal_uint8 *src,
+                    kal_uint32 *src_end_pos);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_get_char_size_of_charset
+ * DESCRIPTION
+ *  Get maximum number of bytes, that the given charset can take for a single character
+ * PARAMETERS
+ *  mmi_chset_enum         :  [IN]        Charset
+ * RETURNS
+ *  Maximum number of bytes, that chset can take for a single character
+ *****************************************************************************/
+extern kal_int32 mmi_chset_get_char_size_of_charset(mmi_chset_enum chset);
+
+extern kal_int32 mmi_chset_get_char_size_of_default_charset(void);
+
+/* UTF8 related */
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_utf8_to_ucs2
+ * DESCRIPTION
+ *  Convert single UTF8 character to UCS2
+ * PARAMETERS
+ *  ucs2	:  [OUT] Output buffer (Needs at least 2 bytes)
+ *  utf8 :  [IN]  Input buffer (Can have 1 to 4 bytes, depending ont he character)
+ * RETURNS
+ *  Number of input bytes used
+ *****************************************************************************/
+extern kal_int32 mmi_chset_utf8_to_ucs2(kal_uint8 *ucs2, kal_uint8 *utf8);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_ucs2_to_utf8
+ * DESCRIPTION
+ *  Convert single UCS2 character to UTF8
+ * PARAMETERS
+ *  utf8  :  [OUT]Output buffer (Needs 1 to 4 bytes, depending ont he character)
+ *  ucs2  :  [IN] Input
+ * RETURNS
+ *  Number of bytes taken in utf8
+ *****************************************************************************/
+extern kal_int32 mmi_chset_ucs2_to_utf8(kal_uint8 *utf8, kal_uint16 ucs2);
+
+extern kal_int32 mmi_chset_utf8_to_ucs2_string(kal_uint8 *dest, kal_int32 dest_size, kal_uint8 *src);
+extern kal_int32 mmi_chset_utf8_to_ucs2_string_ex(
+                    kal_uint8 *dest,
+                    kal_int32 dest_size,
+                    kal_uint8 *src,
+                    kal_uint32 *src_end_pos);
+extern kal_int32 mmi_chset_ucs2_to_utf8_string(kal_uint8 *dest, kal_int32 dest_size, kal_uint8 *src);
+extern kal_int32 mmi_chset_ucs2_to_utf8_string_ex(
+                    kal_uint8 *dest,
+                    kal_int32 dest_size,
+                    kal_uint8 *src,
+                    kal_uint32 *src_end_pos);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_utf8_strlen
+ * DESCRIPTION
+ *  Get string length of a UTF8 encoded buffer
+ * PARAMETERS
+ *  s   :  [IN] Input buffer
+ * RETURNS
+ *  Number of valid characters
+ *****************************************************************************/
+extern kal_int32 mmi_chset_utf8_strlen(const kal_uint8 *s);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_get_charset_id
+ * DESCRIPTION
+ *  This function is used for get the charset id for the given charset name string. It's a name resolver for charsets.
+ * PARAMETERS
+ *  chset_name     :   [IN]        Charset name
+ *  chset_id_p      :   [OUT]       Charset ID
+ * RETURNS
+ *  retrun KAL_TRUE if succeed, otherwise return KAL_FALSE
+ *****************************************************************************/
+extern kal_bool mmi_chset_get_charset_id(const kal_int8 *chset_name, mmi_chset_enum *chset_id_p);
+
+extern kal_bool chset_get_charset_id(const kal_int8 *chset_name, chset_enum *chset_id_p);
+
+/*****************************************************************************
+ * FUNCTION
+ *  chset_get_preferred_mime_name
+ * DESCRIPTION
+ *  This function is used for get the preferred MIME name of character set via
+ *  the character set id.
+ * PARAMETERS
+ *  chset_id       :   [IN]        Character set id.
+ * RETURNS
+ *  If successful, retrun the const pointer to the character set name,
+ *  otherwise return NULL
+ *****************************************************************************/
+extern const kal_int8 *chset_get_preferred_mime_name(chset_enum chset_id);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_get_utf_byte_order
+ * DESCRIPTION
+ *  The function is used for get the byte order via the byte order mark .
+ * PARAMETERS
+ *  str_bom     :  [IN]        The byte order mark.
+ * RETURNS
+ *  returns MMI_CHSET_UTF16LE if the stream is little-endian
+ *  returns MMI_CHSET_UTF16BE if the stream is big-endian
+ *  returns MMI_CHSET_UTF8 if the input BOM is a UTF-8's BOM
+ *  Otherwise returns -1
+ *****************************************************************************/
+extern kal_int8 mmi_chset_get_utf_byte_order(const kal_int8 *str_bom);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_utf16_strlen
+ * DESCRIPTION
+ *  The function is used for get the number of characters of the given UTF16
+ *  encoded string, not including the beginning BOM and the final null
+ *  character.
+ *  Here we only accept FFFE/FEFF marks as endianness indicators in the
+ *  beginning of the stream(See RFC 2781 section 3.2 specifies).
+ *  If there is no BOM, the text default is interpreted as big-endian.
+ *  The function does not count the surrogate pair. Because of it can't translate
+ *  to UCS2.
+ * PARAMETERS
+ *  str_utf16    :    [IN]        UTF-16 encoded string which length is to be computed.
+ *  utf16_type   :    [IN]        The type of input UTF-16 encoded string. MMI_CHSET_UTF16LE or MMI_CHSET_UTF16BE
+ * RETURNS
+ *  The number of characters of the input UTF16 encoded string.
+ *****************************************************************************/
+extern kal_int32 mmi_chset_utf16_strlen(const kal_int8 *str_utf16, mmi_chset_enum utf16_type);
+
+extern kal_int32 mmi_chset_ucs2_to_utf16_bom_str(
+                    kal_uint8 *dest_utf16,
+                    kal_int32 dest_size,
+                    mmi_chset_enum utf16_type,
+                    kal_uint8 *src_ucs2,
+                    kal_uint32 *src_end_pos);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_guess
+ * DESCRIPTION
+ *  Try to guess the charset of string buffer with given guess size.
+ *  It will try only the suspect list if suspect_chset_mask is not CHSET_GUESS_ALL.
+ *  Otherwise it will guess all the supported chsets.
+ *	This function will return the preferred charset if more than one charsets
+ *	have the same possibility.
+ *  Currently we support:   UTF8, UTF16, UCS2, GB2312, BIG5, ISO8859-1
+ * PARAMETERS
+ *  buff                   :  [IN]        String buffer need to guess the charset
+ *  guess_size             :  [IN]        String buffer size in byte used to guess
+ *  preferred_chset        :  [IN]        Preferred charset name, pass 0 to use system prefer charset
+ *  suspect_chset_mask     :  [IN]        Suspect charsets, use "|" to add more suspect charsets. 
+ *                                     Use CHSET_GUESS_ALL to guess in all supported charsets.
+ * RETURNS
+ *  Charset Guess result
+ *****************************************************************************/                    
+extern mmi_chset_enum mmi_chset_guess(
+                          const char *buff,
+                          kal_int32 guess_size,
+                          mmi_chset_enum preferred_chset,
+                          kal_uint32 suspect_chset_mask);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_set_default_encoding_type
+ * DESCRIPTION
+ *  This function is used for set default encoding type (g_chset_text_encoding)
+ * PARAMETERS
+ *  chset_name      :  [IN]        Charset name
+ * RETURNS
+ *  Default encoding type setting success or fail
+ *****************************************************************************/
+extern kal_bool mmi_chset_set_default_encoding_type(const kal_int8 *chset_name);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_set_default_encoding_type
+ * DESCRIPTION
+ *  This function is used for set default encoding type (g_chset_text_encoding)
+ * PARAMETERS
+ *  chset_id        :  [IN]        Charset ID
+ * RETURNS
+ *  Default encoding type setting success or fail
+ *****************************************************************************/
+extern kal_bool mmi_chset_set_default_encoding_type_by_id(mmi_chset_enum chset_id);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_get_default_encoding_type
+ * DESCRIPTION
+ *  This function is used to get default encoding type (g_chset_text_encoding)
+ * PARAMETERS
+ *  NONE
+ * RETURNS
+ *  Default encoding id
+ *****************************************************************************/
+extern mmi_chset_enum mmi_chset_get_default_encoding_type(void);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_get_chset_list_by_language
+ * DESCRIPTION
+ *  Get charset list according to current language
+ * PARAMETERS
+ *  chset_list      :  [OUT]        Charset list.
+ *  default         :  [OUT]        Default charset.
+ * RETURNS
+ *  chset number in the list
+ *****************************************************************************/
+extern kal_int32 mmi_chset_get_chset_list_by_language(mmi_chset_enum *chset_list, mmi_chset_enum *default_chset);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_get_enabled_chset_list
+ * DESCRIPTION
+ *  Get charset list 
+ * PARAMETERS
+ *  chset_list      :  [OUT]        Array of charset ids.
+ * RETURNS
+ *  Total number of enabled charsets
+ *****************************************************************************/
+extern kal_int32 mmi_chset_get_enabled_chset_list(mmi_chset_enum *chset_list);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_get_english_default_chset
+ * DESCRIPTION
+ *  Get default charset of English. Dependent of available languages in phone
+ * PARAMETERS
+ *  void
+ * RETURNS
+ *  default charset
+ *****************************************************************************/
+extern mmi_chset_enum mmi_chset_get_english_default_chset(void);
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_get_chset_string
+ * DESCRIPTION
+ *  Get charset string id (shown in menus) by chset enum
+ * PARAMETERS
+ *  chset      :  [IN]        Charset id (enum value)
+ * RETURNS
+ *  chset string id
+ *****************************************************************************/
+extern kal_uint16 mmi_chset_get_chset_string(mmi_chset_enum chset);
+
+#ifdef __MMI_CHSET_SJIS__
+extern kal_uint32 mmi_chset_sjis_to_ucs2(
+            kal_uint8 *dest,
+            kal_int32 dest_size,
+            kal_uint8 *src,
+            kal_uint32 *src_end_pos);
+extern kal_uint32 mmi_chset_ucs2_to_sjis(
+            kal_uint8 *dest,
+            kal_int32 dest_size,
+            kal_uint8 *src,
+            kal_uint32 *src_end_pos);
+#endif /* __MMI_CHSET_SJIS__ */
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_chset_is_enabled
+ * DESCRIPTION
+ *  Checks whether chset is enabled or not.
+ * PARAMETERS
+ *  chset            :  [IN]       Input charset id
+ * RETURNS
+ *  TRUE if enabled
+ *****************************************************************************/
+ extern kal_bool mmi_chset_is_enabled(mmi_chset_enum chset);
+
+/* DOM-NOT_FOR_SDK-BEGIN */
+
+/*****************************************************************************
+ * FUNCTION
+ *  mmi_charset_ucs2_to_utf8_length_in_bytes
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  raw     [IN]        
+ * RETURNS
+ *  
+ *****************************************************************************/
+extern int mmi_charset_ucs2_to_utf8_length_in_bytes(const kal_uint8 *raw);
+
+/* DOM-NOT_FOR_SDK-END */
+
+#endif /* _MMI_CONVERSIONS_H */ 
+