2 * Copyright 2012 Samsung Electronics Co., Ltd
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
8 * http://www.tizenopensource.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 MMSTPDUTYPES_H
18 #define MMSTPDUTYPES_H
20 #define __SUPPORT_LIBCURL__
22 #include "MmsPluginMessage.h"
23 #include "MsgStorageTypes.h"
26 typedef enum _E_UA_STATE {
33 typedef unsigned int MMS_NET_ERROR_T;
35 typedef unsigned int MMS_PDU_TYPE_T;
37 typedef unsigned char MMS_HTTP_CMD_TYPE_T;
40 enum _MMS_NET_ERROR_E {
46 eMMS_CM_CLOSE_FAILED, //5
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
67 typedef struct _MMS_COND_S {
69 MMS_NET_ERROR_T reason;
73 enum _MMS_PDU_TYPE_E {
76 eMMS_NOTIFICATION_IND,
78 eMMS_RETRIEVE_AUTO_CONF,
84 eMMS_READREPORT_CONF, //10
89 eMMS_RETRIEVE_MANUAL_CONF,
94 eMMS_MBOX_STORE_REQ, // 20
99 eMMS_MBOX_UPLOAD_CONF,
100 eMMS_MBOX_DELETE_REQ,
101 eMMS_MBOX_DELETE_CONF,
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
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
125 typedef struct _mmsTranQEntity {
127 msg_request_id_t reqID;
129 unsigned int sessionId;
130 char transactionId[MMS_TR_ID_LEN + 1];
132 MMS_PDU_TYPE_T eMmsPduType;
133 MMS_HTTP_CMD_TYPE_T eHttpCmdType;
135 MMS_PDU_TYPE_T eMmsTransactionStatus;
149 MMS_RM_GET_REQ_MANUAL,
150 MMS_RM_NOTIFY_RESP_IND,
154 MMS_RM_RETRIEVE_CONF,
156 MMS_RM_READ_REPORT_V10,
157 MMS_RM_READ_REPORT_V11
160 /// CM //////////////////////////////////////////////////////
162 #define MAX_PROFILE_ID 1
164 #define MAX_URL_LENGTH 1024
165 #define MAX_IPV4_LENGTH 30
167 typedef struct _MMS_NETWORK_PROFILE_S {
168 int profileId[MAX_PROFILE_ID];
170 } MMS_NETWORK_PROFILE_S;
174 /// HTTP ////////////////////////////////////////////////////
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 */
181 typedef unsigned int E_MMS_CONNECTION_MODE; /**< Values from \ref _E_MMS_CONNECTION_MODE */
183 enum _E_MMS_NETWORK_ACCESS_POINT {
184 eNETWORK_ACCESS_POINT_ACKTIVE = 1
187 typedef unsigned int E_MMS_NETWORK_ACCESS_POINT;
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 */
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;
200 typedef struct _MMS_PLUGIN_HTTP_DATA_S {
203 int currentProfileId;
208 MMSC_CONFIG_DATA_S mmscConfig;
209 } MMS_PLUGIN_HTTP_DATA_S;
211 typedef struct _MMS_PLUGIN_HTTP_CONTEXT_S {
212 char *recv_header_buf ;
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;
219 typedef struct _MMS_PLUGIN_PROCESS_DATA_S {
220 unsigned char *pData;
221 unsigned long dataLen;
222 } MMS_PLUGIN_PROCESS_DATA_S;
225 ///////////////////////////////////////////////////////////////
230 MMS_HTTP_GET = 1, /* GET */
231 MMS_HTTP_POST = 2 /* POST */
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 */
237 #define HTTP_REQUEST_LEN 1024
238 #define HTTP_VER "HTTP/1.1"
240 #define CRLFCRLF "\r\n\r\n"
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
250 //////////////////////////////////////////////////////////
251 #define HTTP_RESP_SUCCESS 200
252 #define HTTP_PROB_RESP_SUCCESS 100
255 #define MMS_HTTP_HDR_CONNECTION "Keep-Alive"
257 /********* HTTP HEADER MACROS *********/
258 #define MMS_HTTP_HDR_CONTENT_TYPE "application/vnd.wap.mms-message"
260 #define MMS_HTTP_HDR_USER_AGENT "AX355"
262 #define MMS_HTTP_HDR_ACCEPT "application/vnd.wap.mms-message"
264 #define MMS_HTTP_HDR_ACCEPT_LANGUAGE "en"
266 #define MMS_HTTP_HDR_ACCEPT_CHARSET "US-ASCII, ISO-8859-1, UTF-8"
269 #define NOW_MMSC_URL ""
270 #define NOW_MMSC_IP ""
271 #define NOW_MMSC_PROXY ""
272 #define NOW_MMSC_PROXY_PORT
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
279 typedef struct _S_HTTP_UA_RECVING_DATA {
282 } S_HTTP_UA_RECVING_DATA;
284 /////////////////////////////////////////////////////
286 #define IN /*! Pfrefix*/
287 #define OUT /*! Pfrefix*/
288 #define INOUT /*! Pfrefix*/