3 * Copyright (c) 2000-2012 Samsung Electronics Co., Ltd. All Rights Reserved.
5 * This file is part of msg-service.
7 * Contact: Jaeyun Jeong <jyjeong@samsung.com>
8 * Sangkoo Kim <sangkoo.kim@samsung.com>
9 * Seunghwan Lee <sh.cat.lee@samsung.com>
10 * SoonMin Jung <sm0415.jung@samsung.com>
11 * Jae-Young Lee <jy4710.lee@samsung.com>
12 * KeeBum Kim <keebum.kim@samsung.com>
14 * PROPRIETARY/CONFIDENTIAL
16 * This software is the confidential and proprietary information of
17 * SAMSUNG ELECTRONICS ("Confidential Information"). You shall not
18 * disclose such Confidential Information and shall use it only in
19 * accordance with the terms of the license agreement you entered
20 * into with SAMSUNG ELECTRONICS.
22 * SAMSUNG make no representations or warranties about the suitability
23 * of the software, either express or implied, including but not limited
24 * to the implied warranties of merchantability, fitness for a particular
25 * purpose, or non-infringement. SAMSUNG shall not be liable for any
26 * damages suffered by licensee as a result of using, modifying or
27 * distributing this software or its derivatives.
34 #include "MsgMmsTypes.h"
38 #endif /* __cplusplus */
40 #define MSG_CH_CR '\r'
41 #define MSG_CH_LF '\n'
43 #define MSG_CH_TAB '\t'
44 #define MSG_CH_NULL '\0'
45 #define MSG_CH_COLON ':'
46 #define MSG_CH_SEMICOLON ';'
47 #define MSG_CH_UNDERLINE '_'
48 #define MSG_CH_COMMA ','
49 #define MSG_CH_BASE64_LOWER 'b'
50 #define MSG_CH_BASE64_UPPER 'B'
51 #define MSG_CH_QPRINT_LOWER 'Q'
52 #define MSG_CH_QPRINT_UPPER 'q'
54 #define MSG_CH_QUESTION '?'
55 #define MSG_CH_QUOT '"'
56 #define MSG_CH_EQUAL '='
57 #define MSG_CH_BRACKET_S '<'
58 #define MSG_CH_BRACKET_E '>'
60 #define MSG_STR_DEC_START "=?"
61 #define MSG_STR_DEC_END "?="
62 #define MSG_STR_CRLF "\r\n"
63 #define MSG_END_OF_HEADER "\r\n\r\n"
64 #define MSG_STR_DOUBLE_HYPEN "--"
65 #define MSG_STR_BOUNDARY_DEL "\r\n--"
67 #define MSG_MMS_STR_ADDR_DELIMETER MSG_STR_ADDR_DELIMETER
68 #define MSG_MMS_CH_ADDR_DELIMETER MSG_CH_ADDR_DELIMETER
69 #define MSG_MMS_CH_EMAIL_AT '@'
72 /* character-set parameter value of content-type header field */
74 MSG_CHARSET_US_ASCII, //0
78 /* MIME character-set value */
80 MSG_CHARSET_ISO_2022_KR,
81 MSG_CHARSET_KS_C_5601_1987,
82 MSG_CHARSET_EUC_KR, // KS_C5861-1992
83 MSG_CHARSET_ISO_2022_JP,
84 MSG_CHARSET_ISO_2022_JP_2,
85 MSG_CHARSET_ISO_8859_1, //Latin1
86 MSG_CHARSET_ISO_8859_2,
87 MSG_CHARSET_ISO_8859_3,
88 MSG_CHARSET_ISO_8859_4,
89 MSG_CHARSET_ISO_8859_5,
90 MSG_CHARSET_ISO_8859_6,
91 MSG_CHARSET_ISO_8859_6_E,
92 MSG_CHARSET_ISO_8859_6_I,
93 MSG_CHARSET_ISO_8859_7,
94 MSG_CHARSET_ISO_8859_8,
95 MSG_CHARSET_ISO_8859_8_I,
96 MSG_CHARSET_ISO_8859_9,
97 MSG_CHARSET_ISO_8859_10,
98 MSG_CHARSET_ISO_8859_15,
99 MSG_CHARSET_Shift_JIS,
104 MSG_CHARSET_WINDOW_1251,
105 MSG_CHARSET_WINDOWS_1251, // same: WIN1251, WINDOW-1251, WINDOWS-1251
113 /* Content-Transfer-Encoding header field value */
119 MSG_ENCODING_QUOTE_PRINTABLE,
125 /* Content-Disposition header field value */
127 MSG_DISPOSITION_FORMDATA,
128 MSG_DISPOSITION_ATTACHMENT,
129 MSG_DISPOSITION_INLINE,
133 #define UNDEFINED_BINARY 0xFF
134 #define MSG_UNKNOWN_TYPE_STRING "unknown"
136 typedef enum _MimeMainType {
137 MIME_MAINTYPE_APPLICATION,
140 MIME_MAINTYPE_MESSAGE,
141 MIME_MAINTYPE_MULTIPART,
148 typedef enum _MimeAppType {
149 MIME_APPLICATION_NONE,
151 MIME_APPLICATION_CAMERA,
152 MIME_APPLICATION_VIDEORECORDER,
154 MIME_APPLICATION_IMAGEVIEWER,
155 MIME_APPLICATION_FLASHVIEWER,
156 MIME_APPLICATION_IMAGEEDITOR,
157 MIME_APPLICATION_THEMEVIEWER,
159 MIME_APPLICATION_SOUNDPLAYER,
160 MIME_APPLICATION_MEDIAPLAYER,
161 MIME_APPLICATION_VOICEMEMO,
163 MIME_APPLICATION_PICSELVIEWER,
165 MIME_APPLICATION_CONTACT,
166 MIME_APPLICATION_ORGANIZER,
172 typedef struct _MimeTable {
176 MimeType mime; /* index of mime type */
177 MimeType contentType; /* representative mime type */
179 MimeMainType mainType;
183 typedef struct _ExtTable {
188 /* MIME string table ID */
200 MSG_ADDR_TYPE_ERROR = -1, // error return in Get method
201 MSG_ADDR_TYPE_PHONE = 0,
202 MSG_ADDR_TYPE_EMAIL = 1,
203 MSG_ADDR_TYPE_IPV4 = 2,
204 MSG_ADDR_TYPE_IPV6 = 3,
205 MSG_ADDR_TYPE_ALIAS = 4,
206 MSG_ADDR_TYPE_NUM = 5,
209 /* MIME header field */
211 MSG_FIELD_RETURN_PATH,
212 MSG_FIELD_MESSAGE_ID,
218 MSG_FIELD_MIME_VERSION,
219 MSG_FIELD_CONTENT_TYPE,
220 MSG_FIELD_CONTENT_TRANSFER_ENCODING,
221 MSG_FIELD_CONTENT_DISPOSITION, //If start param is given in multipart/related, this field will be ignored
222 MSG_FIELD_CONTENT_ID,
223 MSG_FIELD_CONTENT_LOCATION,
224 MSG_FIELD_CONTENT_NAME,
225 MSG_FIELD_CONTENT_DESCRIPTION,
226 MSG_FIELD_CONTENT_VENDOR,
227 MSG_FIELD_RIGHT_ISSUER,
229 MSG_FIELD_RETURN_RECEIPT_TO, /* for Delivery confirm */
230 MSG_FIELD_DISPOSITION_NOTIFICATION_TO, /* for Read confirm */
232 MSG_FILED_CONTENT_REPLACE_POS,
233 MSG_FILED_CONTENT_REPLACE_SIZE,
234 MSG_FILED_CONTENT_REPLACE_INDEX,
235 #ifdef __SUPPORT_DRM__
236 MSG_FIELD_DRM_CONVERTED,
242 /* MIME header field parameter */
247 MSG_PARAM_TYPE, // only used as parameter of Content-Type: multipart/related
248 MSG_PARAM_START, // Only if content-type is multipart/related
249 MSG_PARAM_START_INFO, // Only if content-type is multipart/related
251 MSG_PARAM_REPORT_TYPE, // only used as parameter of Content-Type: multipart/report; report-type=delivery-status;
252 #ifdef FEATURE_JAVA_MMS
253 MSG_PARAM_APPLICATION_ID,
254 MSG_PARAM_REPLY_TO_APPLICATION_ID,
260 /******************** API definition ************************/
262 bool MimeIsDownloadableInt(MimeType mime);
263 bool MimeIsDownloadableString(const char *szMime);
264 char *MimeGetExtFromMimeInt(MimeType mime);
265 char *MimeGetExtFromMimeString(const char *szMime);
266 char *MimeGetMimeFromExtString(const char *szExt);
267 MimeType MimeGetMimeFromExtInt(const char *szExt);
268 MimeMainType MimeGetMainTypeInt(MimeType mime);
269 MimeMainType MimeGetMainTypeString(const char *szMime);
270 MimeType MimeGetMimeIntFromBi(int binCode);
271 char *MimeGetMimeStringFromBi(int binCode);
272 int MimeGetBinaryValueFromMimeInt(MimeType mime);
273 int MimeGetBinaryValueFromMimeString(const char *szMime);
275 // Append the functions on MimeAppType
276 MimeAppType MimeGetAppTypeFromInt(MimeType mime);
277 MimeAppType MimeGetAppTypeFromString(const char *szMime);
278 MimeAppType MimeGetAppTypeFromExtString(const char *szExt);
280 // Append the functions returning index and content type
282 MimeType MimeGetContentTypeFromInt(MimeType mime);
283 MimeType MimeGetContentTypeFromString(const char *szMime);
284 MimeType MimeGetMimeTypeFromString(const char *szMime);
286 MimeType MimeGetMimeIntFromMimeString(char *szMimeStr);
287 char *MimeGetMimeStringFromMimeInt(int mimeType);
289 char *MsgGetString(MsgHeaderField tableId, int code);
290 char *_MsgSkipWS3(char *s);
291 int _MsgGetCode(MsgHeaderField tableId, char *pStr);
294 #endif /* __cplusplus */
296 #endif // _UTY_MIME_H_