update tizen source
[framework/messaging/msg-service.git] / plugin / mms_plugin / include / MmsPluginTypes.h
1 /*
2 *
3 * Copyright (c) 2000-2012 Samsung Electronics Co., Ltd. All Rights Reserved.
4 *
5 * This file is part of msg-service.
6 *
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>
13 *
14 * PROPRIETARY/CONFIDENTIAL
15 *
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.
21 *
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.
28 *
29 */
30
31 #ifndef MMSTPDUTYPES_H
32 #define MMSTPDUTYPES_H
33
34 #define __SUPPORT_LIBCURL__
35
36 #include "MmsPluginMessage.h"
37 #include "MsgStorageTypes.h"
38
39
40 typedef enum _E_UA_STATE {
41         eUA_IDLE = 0,
42         eUA_READY,
43         eUA_WAITING
44 } E_UA_STATE;
45
46
47 typedef unsigned int MMS_NET_ERROR_T;
48
49 typedef unsigned int MMS_PDU_TYPE_T;
50
51 typedef unsigned char MMS_HTTP_CMD_TYPE_T;
52
53
54 enum _MMS_NET_ERROR_E {
55         eMMS_SUCCESS = 0,
56         eMMS_CM_OPEN_SUCCESS,
57         eMMS_CM_OPEN_FAILED,
58         eMMS_CM_CLOSE_IND,
59         eMMS_CM_CLOSE_RSP,
60         eMMS_CM_CLOSE_FAILED,   //5
61         eMMS_CM_KILL_RSP,
62         eMMS_CM_KILL_FAILED,
63
64         eMMS_HTTP_SESSION_INIT,
65         eMMS_HTTP_SESSION_CLOSED,
66         eMMS_HTTP_SESSION_OPEN_FAILED, //10
67         eMMS_HTTP_SENT_SUCCESS,
68         eMMS_HTTP_CONF_SUCCESS,
69         eMMS_HTTP_ERROR_NETWORK,
70         eMMS_HTTP_CONF_RECEIVED_TIMEOUT,
71         eMMS_HTTP_RECV_DATA,    //15
72         eMMS_HTTP_EVENT_RECV_DATA_PROGRESS,
73         eMMS_HTTP_EVENT_RECV_DATA_ERROR,
74         eMMS_HTTP_EVENT_SENT_ACK_COMPLETED,
75         eMMS_HTTP_ERROR_UNKNOWN,
76         eMMS_EXCEPTIONAL_ERROR, //20
77
78         eMMS_UNKNOWN
79 };
80
81 typedef struct _MMS_COND_S {
82         bool valid;
83         MMS_NET_ERROR_T reason;
84
85 } MMS_COND_S;
86
87 enum _MMS_PDU_TYPE_E {
88         eMMS_SEND_REQ = 0,
89         eMMS_SEND_CONF,
90         eMMS_NOTIFICATION_IND,
91         eMMS_NOTIFYRESP_IND,
92         eMMS_RETRIEVE_AUTO_CONF,
93         eMMS_ACKNOWLEDGE_IND,
94         eMMS_DELIVERY_IND,
95         eMMS_READREC_IND,
96         eMMS_READORIG_IND,
97         eMMS_READREPORT_REQ,
98         eMMS_READREPORT_CONF,   //10
99         eMMS_FORWARD_REQ,
100         eMMS_FORWARD_CONF,
101         eMMS_RETRIEVE_AUTO,
102         eMMS_RETRIEVE_MANUAL,
103         eMMS_RETRIEVE_MANUAL_CONF,
104         eMMS_CANCEL_REQ,
105         eMMS_CANCEL_CONF,
106         eMMS_DELETE_REQ,
107         eMMS_DELETE_CONF,
108         eMMS_MBOX_STORE_REQ,    // 20
109         eMMS_MBOX_STORE_CONF,
110         eMMS_MBOX_VIEW_REQ,
111         eMMS_MBOX_VIEW_CONF,
112         eMMS_MBOX_UPLOAD_REQ,
113         eMMS_MBOX_UPLOAD_CONF,
114         eMMS_MBOX_DELETE_REQ,
115         eMMS_MBOX_DELETE_CONF,
116 };
117
118 enum _MMS_HTTP_CMD_TYPE_E {
119         eHTTP_CMD_REGISTER = 0,
120         eHTTP_CMD_DEREGISTER,
121         eHTTP_CMD_INIT_SESSION,
122         eHTTP_CMD_CANCEL_SESSION,
123         eHTTP_CMD_CLOSE_SESSION,
124         eHTTP_CMD_DELETE_SESSION,
125         eHTTP_CMD_POST_TRANSACTION,
126         eHTTP_CMD_GET_TRANSACTION,
127         eHTTP_CMD_DELETE_TRANSACTION
128 };
129
130 typedef enum {
131         MSG_CHECK_ADDR_TYPE_PHONE = 0x01,
132         MSG_CHECK_ADDR_TYPE_EMAIL = 0x02,
133         MSG_CHECK_ADDR_TYPE_IPV4  = 0x04,
134         MSG_CHECK_ADDR_TYPE_IPV6  = 0x08,
135         MSG_CHECK_ADDR_TYPE_NUM   = 0x10,
136         MSG_CHECK_ADDR_TYPE_ALIAS = 0x20
137 } MsgAddrCheckType;
138
139 typedef struct _mmsTranQEntity {
140         bool isCompleted;
141         MSG_REQUEST_ID_T reqID;
142         int msgId;
143         unsigned int sessionId;
144         char transactionId[MMS_TR_ID_LEN + 1];
145
146         MMS_PDU_TYPE_T eMmsPduType;
147         MMS_HTTP_CMD_TYPE_T eHttpCmdType;
148
149         MMS_PDU_TYPE_T eMmsTransactionStatus;
150
151         int postDataLen;
152         char *pPostData;
153
154         int getDataLen;
155         char *pGetData;
156 } mmsTranQEntity;
157
158 typedef enum {
159         MMS_RM_PDU_TYPE,
160
161         MMS_RM_SEND_REQ,
162         MMS_RM_GET_REQ_AUTO,
163         MMS_RM_GET_REQ_MANUAL,
164         MMS_RM_NOTIFY_RESP_IND,
165         MMS_RM_ACK_IND,
166
167         MMS_RM_NOTI_IND,
168         MMS_RM_RETRIEVE_CONF,
169
170         MMS_RM_READ_REPORT_V10,
171         MMS_RM_READ_REPORT_V11
172 } MmsRmPduType;
173
174 /// CM //////////////////////////////////////////////////////
175
176 #define MAX_PROFILE_ID 1
177
178 #define MAX_URL_LENGTH 1024
179 #define MAX_IPV4_LENGTH 30
180
181 typedef struct _MMS_NETWORK_PROFILE_S {
182         int profileId[MAX_PROFILE_ID];
183         int profileCount;
184 } MMS_NETWORK_PROFILE_S;
185
186
187
188 /// HTTP ////////////////////////////////////////////////////
189
190 enum _E_MMS_CONNECTION_MODE {
191         eTCP_WITH_PROXY = 0,  /** Means HTTP Proxy/Gateway are available */
192         eTCP_WITHOUT_PROXY = 1   /**  Means HTTP Proxy/Gateway is not available */
193 };
194
195 typedef unsigned int E_MMS_CONNECTION_MODE; /**< Values from \ref  _E_MMS_CONNECTION_MODE   */
196
197 enum _E_MMS_NETWORK_ACCESS_POINT {
198         eNETWORK_ACCESS_POINT_ACKTIVE = 1
199 };
200
201 typedef unsigned int E_MMS_NETWORK_ACCESS_POINT;
202
203 typedef struct  _MMSC_CONFIG_DATA_S {
204         char mmscUrl[MAX_URL_LENGTH + 1];                       /** if break, change it to NETPM_HOME_URL_LEN_MAX   */
205         char httpProxyIpAddr[MAX_IPV4_LENGTH + 1];      /**   HTTP Proxy's URL or IP address */
206
207         unsigned int proxyPortNo;       /** MMS HTTP proxy Port number  */
208         E_MMS_CONNECTION_MODE connectionMode;   /**   Values must be from ENUM list -\ref E_MMS_CONNECTION_MODE  */
209         E_MMS_NETWORK_ACCESS_POINT networkAccessPoint;  /**   Values must be from \ref E_MMS_NETWORK_ACCESS_POINT  */
210         unsigned int bAutoRetrieveFlag; /**  Value's shall be true or false */
211         unsigned int profileId;                 /** Profile is for CM Conn open*/
212 } MMSC_CONFIG_DATA_S;
213
214 typedef struct _MMS_PLUGIN_HTTP_DATA_S {
215         int profileId;
216         int profileCount;
217         int currentProfileId;
218         int sessionId;
219         int transactionId;
220         void *session;
221         void *sessionHeader;
222         MMSC_CONFIG_DATA_S mmscConfig;
223 } MMS_PLUGIN_HTTP_DATA_S;
224
225 typedef struct _MMS_PLUGIN_HTTP_CONTEXT_S {
226         char *recv_header_buf ;
227         int header_bufsize;
228         unsigned char *final_content_buf; // Final Concatenated Buffer
229         unsigned long ulContentLength;  // Content Leght Value received in HTTP OK Header
230         unsigned long bufOffset; /** < Incremented once received Content_receiving or Content_received Event */
231 } MMS_PLUGIN_HTTP_CONTEXT_S;
232
233 typedef struct _MMS_PLUGIN_PROCESS_DATA_S {
234         unsigned char *pData;
235         unsigned long dataLen;
236 } MMS_PLUGIN_PROCESS_DATA_S;
237
238
239 ///////////////////////////////////////////////////////////////
240
241 #define RETRY_MAX 1
242
243 typedef enum {
244         MMS_HTTP_GET = 1,               /* GET  */
245         MMS_HTTP_POST = 2               /* POST */
246 } MMS_HTTP_METHOD;
247
248 #define MAX_MMSC_URL_LEN        100     /**   MAX URL Length includes NULL char */
249 #define MAX_HTTP_PROXY_IPADDR_LEN       100     /**   MAX  HTTP Proxy IP addres length  includes NULL char */
250
251 #define HTTP_REQUEST_LEN   1024
252 #define HTTP_VER     "HTTP/1.1"
253 #define CRLF             "\r\n"
254 #define CRLFCRLF     "\r\n\r\n"
255
256 /*  URL of  IIS Server - Where CGI script located */
257 #define IIS_PostURI   "/mms/post.exe"
258 #define OperatorPostUrl   "/mms/"
259 #define MAX_MMSC_IPADDR_LEN   512
260 #define POST_URI   OperatorPostUrl
261
262
263
264 //////////////////////////////////////////////////////////
265 #define HTTP_RESP_SUCCESS    200
266 #define HTTP_PROB_RESP_SUCCESS    100
267
268
269 #define MMS_HTTP_HDR_CONNECTION "Keep-Alive"
270
271 /********* HTTP HEADER MACROS *********/
272 #define MMS_HTTP_HDR_CONTENT_TYPE "application/vnd.wap.mms-message"
273
274 #define MMS_HTTP_HDR_USER_AGENT "AX355"
275
276 #define MMS_HTTP_HDR_ACCEPT "application/vnd.wap.mms-message"
277
278 #define MMS_HTTP_HDR_ACCEPT_LANGUAGE "en"
279
280 #define MMS_HTTP_HDR_ACCEPT_CHARSET "US-ASCII, ISO-8859-1, UTF-8"
281
282 //  MMSC Address
283 #define NOW_MMSC_URL    "http://165.213.73.234:7082/01030016028=01030016028"
284 #define NOW_MMSC_IP      "165.213.73.234"
285 #define NOW_MMSC_PROXY   "165.213.73.234"
286 #define NOW_MMSC_PROXY_PORT  7082
287
288 #define DEFAULT_MMSC_URL                NOW_MMSC_URL
289 #define DEFAULT_MMSC_IP         NOW_MMSC_IP
290 #define DEFAULT_MMSC_PORT       7082
291 #define DEFAULT_HTTP_PROXY      NOW_MMSC_PROXY
292 #define DEFAULT_HTTP_PROXY_PORT NOW_MMSC_PROXY_PORT
293
294 typedef struct _S_HTTP_UA_RECVING_DATA {
295         int curr_len_recv;
296         int total_data_len;
297 } S_HTTP_UA_RECVING_DATA;
298
299 /////////////////////////////////////////////////////
300
301 #define IN        /*! Pfrefix*/
302 #define OUT       /*! Pfrefix*/
303 #define INOUT     /*! Pfrefix*/
304
305 #endif
306