2 * Copyright 2012-2013 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.1 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #ifndef MMS_PLUGIN_CODEC_TYPE_H
18 #define MMS_PLUGIN_CODEC_TYPE_H
20 #include "MmsPluginTypes.h"
22 #define MMS_MAJOR_VERSION 1
25 #define MMS_MINOR_VERSION 1
26 #define MMS_VERSION 0x91
28 #elif defined(MMS_V1_2)
29 #define MMS_MINOR_VERSION 2
30 #define MMS_VERSION 0x92
33 #define MMS_MINOR_VERSION 0
34 #define MMS_VERSION 0x90
37 #define MSG_MMS_ENCODE_BUFFER_MAX (2 * 1024)
38 #define MSG_MMS_DECODE_BUFFER_MAX (2 * 1024)
41 #define MARK 0x22 // "
42 #define LENGTH_QUOTE 0x1F
43 #define MSG_STDSTR_LONG 0xFF
44 #define INVALID_VALUE -1
46 #define MMS_CONTENT_ID_LEN 100
47 #define MSG_DATE_LEN 50
48 #define MSG_SUBJ_LEN 40
49 #define MSG_LOCALE_SUBJ_LEN (3 * MSG_SUBJ_LEN)
50 #define MSG_LOCAL_TEMP_BUF_SIZE 1024
51 #define MSG_ADDR_LEN MAX_ADDRESS_VAL_LEN
52 #define MMS_LOCALE_RESP_TEXT_LEN 90
53 #define MSG_LOCALE_ADDR_LEN (3 * MAX_ADDRESS_VAL_LEN)
54 #define MSG_BOUNDARY_LEN 70
55 #define MSG_LOCALE_NAME_LEN 150
56 #define MSG_LOCALE_FILENAME_LEN_MAX (3 * MSG_FILENAME_LEN_MAX)
57 #define MMS_READ_REPORT_STRING_READ "Read:"
58 #define MMS_READ_REPORT_STRING_DELETED "Deleted:"
60 #define MSG_ATTACH_MAX 20
61 #define MSG_STR_ADDR_DELIMETER ";"
63 #define MMS_TEXT_LEN 2000
64 #define MSG_CH_ADDR_DELIMETER ';'
65 #define MSG_MMS_STR_ADDR_DELIMETER MSG_STR_ADDR_DELIMETER
66 #define MSG_MMS_CH_ADDR_DELIMETER MSG_CH_ADDR_DELIMETER
69 typedef unsigned int UINT;
70 typedef unsigned long int UINT32;
71 typedef unsigned char UINT8;
72 typedef unsigned short int UINT16;
73 typedef unsigned long ULONG;
74 typedef unsigned char UCHAR;
75 typedef unsigned short MCHAR;
76 typedef unsigned short USHORT;
78 typedef struct _MsgAddress MsgAddress;
79 typedef struct _MsgBody MsgBody;
80 typedef struct _MsgMultipart MsgMultipart;
81 typedef struct _MsgMessage MsgMessage;
86 MMS_CODE_CONTENTLOCATION,
89 MMS_CODE_DELIVERYREPORT,
90 MMS_CODE_DELIVERYTIME,
100 MMS_CODE_REPORTALLOWED,
101 MMS_CODE_RESPONSESTATUS,
102 MMS_CODE_RETRIEVESTATUS, /* Add by MMSENC v1.1 */
103 MMS_CODE_RESPONSETEXT,
104 MMS_CODE_RETRIEVETEXT, /* Add by MMSENC v1.1 */
105 MMS_CODE_SENDERVISIBILLITY,
111 /* Add by MMSENC v1.1 */
113 MMS_CODE_REPLYCHARGING,
114 MMS_CODE_REPLYCHARGINGDEADLINE,
115 MMS_CODE_REPLYCHARGINGID,
116 MMS_CODE_REPLYCHARGINGSIZE,
117 MMS_CODE_PREVIOUSLYSENTBY,
118 MMS_CODE_PREVIOUSLYSENTDATE,
120 MMS_CODE_TRANSFERENCODING,
121 MMS_CODE_DISPOSITION,
126 MMS_BODYHDR_TRANSFERENCODING,
127 MMS_BODYHDR_DISPOSITION,
128 MMS_BODYHDR_CONTENTID,
129 MMS_BODYHDR_CONTENTLOCATION,
130 MMS_BODYHDR_X_OMA_DRM_SEPARATE_DELIVERY, // DRM RO WAITING
136 MmsCodeParameterCode,
137 MmsCodeMsgBodyHeaderCode,
141 MmsCodeDeliveryReport,
145 MmsCodeResponseStatus,
146 MmsCodeRetrieveStatus,
148 MmsCodeReportAllowed,
149 MmsCodeSenderVisibility,
154 MmsCodeReplyCharging,
158 MmsCodeMsgDisposition,
159 MmsCodeContentTransferEncoding
163 MMS_DATATYPE_NONE = -1,
164 MMS_DATATYPE_READ = 0,
165 MMS_DATATYPE_SENT = 1,
166 MMS_DATATYPE_NOTIFY = 2,
167 MMS_DATATYPE_UNSENT = 3,
168 MMS_DATATYPE_DRAFT = 4,
169 MMS_DATATYPE_SENDING = 6,
170 MMS_DATATYPE_RETRIEVING = 7,
171 MMS_DATATYPE_UNRETV = 8,
172 MMS_DATATYPE_TEMPLATE = 9,
173 MMS_DATATYPE_DRM_RO_WAITING = 10 // DRM RO WAITING
177 MMS_MSGTYPE_ERROR = -1, // error return in Get method
178 MMS_MSGTYPE_SEND_REQ = 0, // default
179 MMS_MSGTYPE_SEND_CONF = 1,
180 MMS_MSGTYPE_NOTIFICATION_IND = 2,
181 MMS_MSGTYPE_NOTIFYRESP_IND = 3,
182 MMS_MSGTYPE_RETRIEVE_CONF = 4,
183 MMS_MSGTYPE_ACKNOWLEDGE_IND = 5,
184 MMS_MSGTYPE_DELIVERY_IND = 6,
185 MMS_MSGTYPE_READREC_IND = 7,
186 MMS_MSGTYPE_READORG_IND = 8,
187 MMS_MSGTYPE_FORWARD_REQ = 9,
188 MMS_MSGTYPE_FORWARD_CONF = 10,
189 MMS_MSGTYPE_READ_REPLY = 11, // for internal use
194 MMS_PRIORITY_ERROR = -1, // error return in Get method
195 MMS_PRIORITY_LOW = 0, // default
196 MMS_PRIORITY_NORMAL = 1,
197 MMS_PRIORITY_HIGH = 2
201 MMS_SENDER_VISIBLE_ERROR = -1, // error return in Get method
207 MMS_REPORT_ERROR = -1, // error return in Get method
213 MMS_REPORTALLOWED_ERROR = -1, // error return in Get method
214 MMS_REPORTALLOWED_YES = 0,
215 MMS_REPORTALLOWED_NO = 1
219 MMS_RECEIVE_READ_REPORT_ALLOWED,
220 MMS_RECEIVE_READ_REPORT_PROMPT,
221 MMS_RECEIVE_READ_REPORT_NOT_ALLOWED,
222 } MmsRecvReadReportType ;
225 MMS_MSGSTATUS_NONE = -1, // backward compatibility
226 MMS_MSGSTATUS_ERROR = -1, // error return in Get method
227 MMS_MSGSTATUS_EXPIRED = 0, // This value SHOULD not be used in the M-NotifyResp.ind PDU.
228 MMS_MSGSTATUS_RETRIEVED = 1,
229 MMS_MSGSTATUS_REJECTED = 2,
230 MMS_MSGSTATUS_DEFERRED = 3,
231 MMS_MSGSTATUS_UNRECOGNISED = 4, // This value SHALL not be used in the M-Delivery.ind PDU.
232 MMS_MSGSTATUS_INDETERMINATE = 5,
233 MMS_MSGSTATUS_FORWARDED = 6,
234 MMS_MSGSTATUS_UNREACHABLE = 7
238 MMS_READSTATUS_NONE = -1, // no touch status
240 MMS_IS_DELETED = 1 // Deleted without being read
244 MMS_ADDRESS_PRESENT_TOKEN,
245 MMS_INSERT_ADDRESS_TOKEN
249 MSG_PARAM_REPORT_TYPE_DELIVERY_STATUS,
250 MSG_PARAM_REPORT_TYPE_NUM,
251 MSG_PARAM_REPORT_TYPE_UNKNOWN,
252 } MsgParamReportType;
254 /* Response status */
256 MMS_RESPSTATUS_ERROR = -1, // error return in Get method
257 MMS_RESPSTATUS_OK = 0, // default value
258 MMS_RESPSTAUTS_ERROR_UNSPECIFIED = 1,
259 MMS_RESPSTAUTS_ERROR_SERVICEDENIED = 2,
260 MMS_RESPSTAUTS_ERROR_MESSAGEFORMATCORRUPT = 3,
261 MMS_RESPSTAUTS_ERROR_SENDINGADDRESSUNRESOLVED = 4,
262 MMS_RESPSTAUTS_ERROR_MESSAGENOTFOUND = 5,
263 MMS_RESPSTAUTS_ERROR_NETWORKPROBLEM = 6,
264 MMS_RESPSTAUTS_ERROR_CONTENTNOTACCEPTED = 7,
265 MMS_RESPSTAUTS_ERROR_UNSUPPORTEDMESSAGE = 8,
267 MMS_RESPSTAUTS_ERROR_TRANSIENT_FAILURE = 9,
268 MMS_RESPSTAUTS_ERROR_TRANSIENT_SENDING_ADDRESS_UNRESOLVED = 10,
269 MMS_RESPSTAUTS_ERROR_TRANSIENT_MESSAGE_NOT_FOUND = 11,
270 MMS_RESPSTAUTS_ERROR_TRANSIENT_NETWORK_PROBLEM = 12,
272 MMS_RESPSTAUTS_ERROR_PERMANENT_FAILURE = 13,
273 MMS_RESPSTAUTS_ERROR_PERMANENT_SERVICE_DENIED = 14,
274 MMS_RESPSTAUTS_ERROR_PERMANENT_MESSAGE_FORMAT_CORRUPT = 15,
275 MMS_RESPSTAUTS_ERROR_PERMANENT_SENDING_ADDRESS_UNRESOLVED = 16,
276 MMS_RESPSTAUTS_ERROR_PERMANENT_MESSAGE_NOT_FOUND = 17,
277 MMS_RESPSTAUTS_ERROR_PERMANENT_CONTENT_NOT_ACCEPTED = 18,
278 MMS_RESPSTAUTS_ERROR_PERMANENT_REPLY_CHARGING_LIMITATIONS_NOT_MET = 19,
279 MMS_RESPSTAUTS_ERROR_PERMANENT_REPLY_CHARGING_REQUEST_NOT_ACCEPTED = 20,
280 MMS_RESPSTAUTS_ERROR_PERMANENT_REPLY_CHARGING_FORWARDING_DENIED = 21,
281 MMS_RESPSTAUTS_ERROR_PERMANENT_REPLY_CHARGING_NOT_SUPPORTED = 22
285 MMS_RETRSTATUS_ERROR = -1, // error return in Get method
286 MMS_RETRSTATUS_OK = 0,
287 MMS_RETRSTATUS_TRANSIENT_FAILURE = 1,
288 MMS_RETRSTATUS_TRANSIENT_MESSAGE_NOT_FOUND = 2,
289 MMS_RETRSTATUS_TRANSIENT_NETWORK_PROBLEM = 3,
290 MMS_RETRSTATUS_PERMANENT_FAILURE = 4,
291 MMS_RETRSTATUS_PERMANENT_SERVICE_DENIED = 5,
292 MMS_RETRSTATUS_PERMANENT_MESSAGE_NOT_FOUND = 6,
293 MMS_RETRSTATUS_PERMANENT_CONTENT_UNSUPPORT = 7
297 MMS_REPLY_NONE = -1, // error return in Get method
298 MMS_REPLY_REQUESTED = 0,
299 MMS_REPLY_REQUESTED_TEXT_ONLY = 1,
300 MMS_REPLY_ACCEPTED = 2,
301 MMS_REPLY_ACCEPTED_TEXT_ONLY = 3
302 } MmsReplyChargeType;
305 MMS_STATUS_ERROR = -1, // error return in Get method
306 MMS_STATUS_INITIAL = 0,
307 MMS_STATUS_REQUESTING = 1,
308 MMS_STATUS_SUCCESS = 2,
314 MMS_EDIT_STYLE_THIS_PAGE = 0,
315 MMS_EDIT_STYLE_ALL_PAGE,
319 MMS_SPECIAL_MSG_TYPE_NONE = 0,
320 MMS_SPECIAL_MSG_TYPE_SYSTEM_TEMPLATE, // system template .
321 MMS_SPECIAL_MSG_TYPE_VOICE_MESSAGE, //voice message service
323 MMS_SPECIAL_MSG_TYPE_VDF_POSTCARD, //postcard service, or Generic Postcard Service
324 MMS_SPECIAL_MSG_TYPE_POSTCARD_EXT1, //Stickers Service
325 MMS_SPECIAL_MSG_TYPE_POSTCARD_EXT2, //Photo 10x15
326 MMS_SPECIAL_MSG_TYPE_POSTCARD_EXT3, //8 Photos
327 MMS_SPECIAL_MSG_TYPE_POSTCARD_EXT4, // 4 Photos
332 MMS_MM_CLASS_IMAGE_BASIC,
333 MMS_MM_CLASS_IMAGE_RICH,
334 MMS_MM_CLASS_VIDEO_BASIC,
335 MMS_MM_CLASS_VIDEO_RICH,
336 MMS_MM_CLASS_MEGAPIXEL,
337 MMS_MM_CLASS_CONTENT_BASIC,
338 MMS_MM_CLASS_CONTENT_RICH,
343 MMS_MSGCLASS_ERROR = -1, // error return in Get method
344 MMS_MSGCLASS_PERSONAL = 0, // default
345 MMS_MSGCLASS_ADVERTISEMENT = 1,
346 MMS_MSGCLASS_INFORMATIONAL = 2,
347 MMS_MSGCLASS_AUTO = 3
351 /*==================================================================================================
353 ==================================================================================================*/
356 MmsReplyChargeType chargeType;
357 MmsTimeStruct deadLine;
359 char szChargeID[MMS_MSG_ID_LEN + 1];
362 typedef struct _MmsMsgMultiStatus {
363 char szTo[MAX_ADDRESS_VAL_LEN + 1];
364 bool bDeliveryReportIsRead;
365 bool bDeliveyrReportIsLast;
366 msg_delivery_report_status_t msgStatus;
368 bool bReadReplyIsRead;
369 bool bReadReplyIsLast;
370 msg_read_report_status_t readStatus;
373 struct _MmsMsgMultiStatus *pNext;
376 typedef struct _MMS_ATTRIB_S {
377 MimeType contentType;
379 MmsDataType dataType;
383 char szFrom[MSG_LOCALE_ADDR_LEN + 11]; //"/TYPE=PLMN", /"TYPE=IPv4", "/TYPE=IPv6"
384 char szSubject[MSG_LOCALE_SUBJ_LEN + 1];
389 MmsPriority priority;
391 MmsReplyCharge replyCharge;
392 bool bChargingMsgReplied;
395 bool bAskDeliveryReport;
397 MmsRecvReadReportType readReportAllowedType;
402 MmsRecvReadReportSendStatus readReportSendStatus;
404 bool bReadReportSent;
407 bool bUseExpiryCustomTime; // for expiry custom time
408 bool bUseDeliveryCustomTime; // for expiry custom time
409 MmsEditStyleMode editStyleMode; //editStyle on All Page
411 MmsSpecialMsgType specialMsgType; // instead of bPostcard
413 #ifdef __SUPPORT_DRM__
415 int roWaitingTimerMax; // DRM RO WAITING
416 char *pszDrmData; // DRM Data to draw mailbox icon
420 MmsMsgClass msgClass;
421 MmsTimeStruct expiryTime;
422 MmsTimeStruct expiryCustomTime;
423 MmsTimeStruct deliveryTime;
424 MmsTimeStruct deliveryCustomTime;
426 //for ReadMsg, When Sending notifyResp.ind
427 msg_delivery_report_status_t msgStatus;
429 MmsResponseStatus responseStatus;
430 MmsRetrieveStatus retrieveStatus;
431 char szResponseText[MMS_LOCALE_RESP_TEXT_LEN + 1];
432 char szRetrieveText[MMS_LOCALE_RESP_TEXT_LEN + 1];
434 MmsMsgMultiStatus *pMultiStatus;
438 typedef struct _MsgContentParam {
440 char szBoundary[MSG_BOUNDARY_LEN + 1];
441 char szFileName[MSG_FILENAME_LEN_MAX + 1];
442 char szName[MSG_LOCALE_FILENAME_LEN_MAX + 1];
444 #ifdef FEATURE_JAVA_MMS
445 char *szApplicationID;
446 char *szReplyToApplicationID;
451 char szStart[MSG_MSG_ID_LEN + 1];
452 char szStartInfo[MSG_MSG_ID_LEN + 1];
454 MsgParamReportType reportType; //only used as parameter of Content-Type: multipart/report; report-type=delivery-status;
457 #ifdef __SUPPORT_DRM__
458 typedef struct _MsgDRMInfo {
460 MimeType contentType;
463 char *szContentDescription;
464 char *szContentVendor;
466 char *szDrm2FullPath;
467 int roWaitingTimerMax; // DRM RO WAITING
469 char *pszContentType;
475 typedef struct _MsgType {
481 #ifdef __SUPPORT_DRM__
486 char szContentID[MSG_MSG_ID_LEN + 1];
487 char szContentLocation[MSG_MSG_ID_LEN + 1];
488 char szOrgFilePath[MSG_FILEPATH_LEN_MAX];
490 char szContentRepPos[30];
491 char szContentRepSize[30];
492 char szContentRepIndex[8];
493 #ifdef __SUPPORT_DRM__
494 int nDrmConvertedStatus;
497 MsgContentParam param;
501 int type; //MSG_ADDR_TYPE_PHONE/EMAIL/IPV4/IPV6
502 int recipientType; // TO, CC, BCC
503 char szName[MSG_LOCALE_NAME_LEN + 1];
504 char szAddr[MSG_ADDR_LEN + 1];
506 bool bDoNotShow; // temporary clip
509 ULONG uLastRecentTime; // last recent time save item
510 ULONG uMostUseCount; // most use count item.
511 int index; // index sorting..
514 typedef struct _MsgHeader {
518 char szReturnPath[MSG_ADDR_LEN + 1];
519 char szDate[MSG_DATE_LEN];
520 char szSubject[MSG_LOCALE_SUBJ_LEN + 1];
521 char szMsgID[MSG_MSG_ID_LEN + 1];
527 char szOrgFilePath[MSG_FILEPATH_LEN_MAX];
528 MsgType presentationType;
529 MsgBody *pPresentationBody;
534 MsgMultipart *pMultipart;
535 MsgMessage *pMessage;
539 struct _MsgMultipart {
551 typedef struct _MMS_MESSAGE_S {
553 msg_message_id_t msgID;
554 int mailbox; // mailbox type,MMS_MAILBOX_XXX
555 char szFileName[MSG_FILENAME_LEN_MAX];
556 char szTrID[MMS_TR_ID_LEN + 1];
557 char szMsgID[MMS_MSG_ID_LEN + 1];
558 char szForwardMsgID[MMS_MSG_ID_LEN + 1];
559 char szContentLocation[MMS_LOCATION_LEN + 1];
565 #endif //MMS_PLUGIN_CODEC_TYPE_H