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