www.pudn.com > mms.rar > Cms_MMSProvide.h
/*=====================================================================
Copyright (c) 2001-2002 MobileSoft Corporation
All Rights Reserved.
$Logfile: "Cms_MMSProvide.h"
$Revision:
$vision: 1.00
$Date: 05/23/2003
$Author: Shawn Pan
$Declare:
This document contains information proprietary to MobileSoft
Technology (Nanjing), Corp. Transmittal, receipt, or possession
of this document does not express, license, or imply any rights to
use, sell, design, or manufacture from this information. No reproduction,
publication, or disclosure of this information, in whole or in part,
shall be made without prior written authorization from an officer of
MobileSoft Technology (NanJing), Corp.
Abstract:
Modified By:
Environment:
Revision History:
=====================================================================*/
#ifndef _CMS_MMS_PROVIDE_H
#define _CMS_MMS_PROVIDE_H
#include "Cms_callback.h"// Modified by TIPrj[2005/7/14]
#include "Cms_MMSGlobal.h"
#include "Cms_MMSDoc.h"
#ifndef MMSHANDLE
#define MMSHANDLE void*
#endif
#ifndef bool
#define bool int
#endif
#ifndef WTP_PACKET_SIZE
#define WTP_PACKET_SIZE 1395//1020
#endif
//#define CECW_RECV_MRU WTP_PACKET_SIZE+10
/* define document type */
#ifndef DOCUMENT_TYPE_WML
#define DOCUMENT_TYPE_WML 1
#endif
#ifndef DOCUMENT_TYPE_SMIL
#define DOCUMENT_TYPE_SMIL 2
#endif
#ifndef DOCUMENT_TYPE_MMS
#define DOCUMENT_TYPE_MMS 3
#endif
/*------------------------------------------------------------------------
*
*
*
* the size of variable in a struct should be times of 4 bytes
* this is padding
*
*
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
*
*
*
* use this to malloc space
*
*
*
------------------------------------------------------------------------*/
#ifndef WTP_MTU
#define WTP_MTU 1500
#endif
#ifndef WTP_RECV_MAXSPACE
#define WTP_RECV_MAXSPACE WTP_MTU+100
#endif
/*----------------------------------------------------------------------*/
/*------------------------------------------------------------------------
*
*
*
* MMS head field definition
*
*
*
------------------------------------------------------------------------*/
#ifndef MMS_BCC
#define MMS_BCC 0x01
#endif
#ifndef MMS_CC
#define MMS_CC 0x02
#endif
#ifndef MMS_CONTENT_LOCATION
#define MMS_CONTENT_LOCATION 0x03
#endif
#ifndef MMS_CONTENT_TYPE
#define MMS_CONTENT_TYPE 0x04
#endif
#ifndef MMS_DATE
#define MMS_DATE 0x05
#endif
#ifndef MMS_DELIVERY_REPORT
#define MMS_DELIVERY_REPORT 0x06
#endif
#ifndef MMS_DELIVERY_TIME
#define MMS_DELIVERY_TIME 0x07
#endif
#ifndef MMS_EXPIRY
#define MMS_EXPIRY 0x08
#endif
#ifndef MMS_FROM
#define MMS_FROM 0x09
#endif
#ifndef MMS_MESSAGE_CLASS
#define MMS_MESSAGE_CLASS 0x0a
#endif
#ifndef MMS_MESSAGE_ID
#define MMS_MESSAGE_ID 0x0b
#endif
#ifndef MMS_MESSAGE_TYPE
#define MMS_MESSAGE_TYPE 0x0c
#endif
#ifndef MMS_MMS_VERSION
#define MMS_MMS_VERSION 0x0d
#endif
#ifndef MMS_MESSAGE_SIZE
#define MMS_MESSAGE_SIZE 0x0e
#endif
#ifndef MMS_PRIORITY
#define MMS_PRIORITY 0x0f
#endif
#ifndef MMS_READ_REPORT
#define MMS_READ_REPORT 0x10
#endif
#ifndef MMS_REPORT_ALLOWED
#define MMS_REPORT_ALLOWED 0x11
#endif
#ifndef MMS_RESPONSE_STATUS
#define MMS_RESPONSE_STATUS 0x12
#endif
#ifndef MMS_RESPONSE_TEXT
#define MMS_RESPONSE_TEXT 0x13
#endif
#ifndef MMS_SENDER_VISIBILITY
#define MMS_SENDER_VISIBILITY 0x14
#endif
#ifndef MMS_STATUS
#define MMS_STATUS 0x15
#endif
#ifndef MMS_SUBJECT
#define MMS_SUBJECT 0x16
#endif
#ifndef MMS_TO
#define MMS_TO 0x17
#endif
#ifndef MMS_TRANSACTION_ID
#define MMS_TRANSACTION_ID 0x18
#endif
#ifndef MMS_READ_STATUS
#define MMS_READ_STATUS 0x1b
#endif
/*------------------------------------------------------------------------
*
*
*
* MMS message type value definition
*
*
*
------------------------------------------------------------------------*/
#ifndef MMS_MESSAGE_TYPE_SEND_REQ
#define MMS_MESSAGE_TYPE_SEND_REQ 128
#endif
#ifndef MMS_MESSAGE_TYPE_SEND_CONF
#define MMS_MESSAGE_TYPE_SEND_CONF 129
#endif
#ifndef MMS_MESSAGE_TYPE_NOTIFICATION_IND
#define MMS_MESSAGE_TYPE_NOTIFICATION_IND 130
#endif
#ifndef MMS_MESSAGE_TYPE_NOTIFYRESP_IND
#define MMS_MESSAGE_TYPE_NOTIFYRESP_IND 131
#endif
#ifndef MMS_MESSAGE_TYPE_RETRIVE_CONF
#define MMS_MESSAGE_TYPE_RETRIVE_CONF 132
#endif
#ifndef MMS_MESSAGE_TYPE_ACKNOWLEDGE_IND
#define MMS_MESSAGE_TYPE_ACKNOWLEDGE_IND 133
#endif
#ifndef MMS_MESSAGE_TYPE_DELIVERY_IND
#define MMS_MESSAGE_TYPE_DELIVERY_IND 134
#endif
#ifndef MMS_MESSAGE_TYPE_READREC_IND
#define MMS_MESSAGE_TYPE_READREC_IND 135
#endif
#ifndef MMS_MESSAGE_TYPE_READORIG_IND
#define MMS_MESSAGE_TYPE_READORIG_IND 136
#endif
/*------------------------------------------------------------------------
*
*
*
* MMS head field macro definition
*
*
*
------------------------------------------------------------------------*/
/* define address type */
#ifndef ADDRESS_TYPE_UNKNOWN
#define ADDRESS_TYPE_UNKNOWN 0
#endif
#ifndef ADDRESS_TYPE_PLMN
#define ADDRESS_TYPE_PLMN 1
#endif
#ifndef ADDRESS_TYPE_IPV4
#define ADDRESS_TYPE_IPV4 2
#endif
#ifndef ADDRESS_TYPE_IPV6
#define ADDRESS_TYPE_IPV6 3
#endif
#ifndef ADDRESS_TYPE_EMAIL
#define ADDRESS_TYPE_EMAIL 4
#endif
/* Well-known Parameter Assignments */
#ifndef MMS_TYPE_PA_TYPE
#define MMS_TYPE_PA_TYPE 0x09
#endif
#ifndef MMS_TYPE_PA_START
#define MMS_TYPE_PA_START 0x0A
#endif
/* macro define of deffrient mms bool field value */
#ifndef MMS_FIELD_VALUE_YES
#define MMS_FIELD_VALUE_YES 128
#endif
#ifndef MMS_FIELD_VALUE_NO
#define MMS_FIELD_VALUE_NO 129
#endif
/* macro define of deffrient time field type value */
#ifndef MMS_TIME_TYPE_ABCOLUTE
#define MMS_TIME_TYPE_ABCOLUTE 128
#endif
#ifndef MMS_TIME_TYPE_RELATIVE
#define MMS_TIME_TYPE_RELATIVE 129
#endif
/* macro define of from field value type value */
#ifndef MMS_FROM_VALUE_TYPE_ADDRESS
#define MMS_FROM_VALUE_TYPE_ADDRESS 128
#endif
#ifndef MMS_FROM_VALUE_TYPE_INSERT
#define MMS_FROM_VALUE_TYPE_INSERT 129
#endif
/* macro define of from message class type value */
#ifndef MMS_MESSAGE_CLASS_TYPE_PERSONAL
#define MMS_MESSAGE_CLASS_TYPE_PERSONAL 128
#endif
#ifndef MMS_MESSAGE_CLASS_TYPE_ADVERTISEMENT
#define MMS_MESSAGE_CLASS_TYPE_ADVERTISEMENT 129
#endif
#ifndef MMS_MESSAGE_CLASS_TYPE_INFORMATIONAL
#define MMS_MESSAGE_CLASS_TYPE_INFORMATIONAL 130
#endif
#ifndef MMS_MESSAGE_CLASS_TYPE_AUTO
#define MMS_MESSAGE_CLASS_TYPE_AUTO 131
#endif
#ifndef MMS_DELIVERY_REPORT_YES
#define MMS_DELIVERY_REPORT_YES 1
#endif
#ifndef MMS_DELIVERY_REPORT_NO
#define MMS_DELIVERY_REPORT_NO 0
#endif
#ifndef MMS_READ_REPORT_YES
#define MMS_READ_REPORT_YES 1
#endif
#ifndef MMS_READ_REPORT_NO
#define MMS_READ_REPORT_NO 0
#endif
/* macro define of message priority value */
#ifndef MMS_PRIORITY_VALUE_LOW
#define MMS_PRIORITY_VALUE_LOW 128
#endif
#ifndef MMS_PRIORITY_VALUE_NORMAL
#define MMS_PRIORITY_VALUE_NORMAL 129
#endif
#ifndef MMS_PRIORITY_VALUE_HIGH
#define MMS_PRIORITY_VALUE_HIGH 130
#endif
/* macro define of send visibility value */
#define MMS_SENDER_VISIBILITY_HIDE 128
#define MMS_SENDER_VISIBILITY_SHOW 129
/* macro define of status value */
#define MMS_STATUS_VALUE_EXPIRED 128
#define MMS_STATUS_VALUE_RETRIVED 129
#define MMS_STATUS_VALUE_REJECTED 130
#define MMS_STATUS_VALUE_DEFERRED 131
#define MMS_STATUS_VALUE_UNRECOGNISED 132
#if 0 // Modified by TIPrj[2005/7/13]
/*------------------------------------------------------------------------
*
*
*
* MMS bottom message funcion param definition
*
*
*
------------------------------------------------------------------------*/
typedef enum
{
NETLINK_RETURN = 0,
SENDDATA_RETURN,
DATAARRIVED,
NETCLOSELINK_RETURN,
FILEOPRATE_RETURN,
DIR_OPREATE_RETURN,
//CECW_TIMER_MSG,//timout
WTP_TIMEROUT_MSG
}CenMsgType;
typedef enum
{
NETLINK_FAILED,
NETLINK_SUCCESS
}NETLINK_RETURN_VALUE;//after netlink
typedef enum
{
SENDDATA_FAILED,
SENDDATA_SUCCESS
}SENDDATA_RETURN_VALUE;
typedef enum
{
MMSNETLINKING,
MMSNETLINK_SUCCESS,
WAPCONNECT_SUCCESS,
MMS_RECEIVING,
MMS_SENDING,
MMSNETLINK_FAILED,
MMSWAPCONNECT_FAILED,
//MMSSEND_FAILED,
//MMSSEND_SUCCESS,
MMSRECV_FAILED,
MMSRECV_FAILED_BY_NOT_FOUND,
MMSRECV_FINISHED,
MMSRECV_SUCCESS,
MMSOPR_CANCEL,
MMSWAP_DISCONNECTED,
MMSSYSTEM_ERROR,
MMSUNKNOWN_ERROR,
MMSNET_DISCONNECTED,
MMSNET_DISCONNECTING,
/* macro define of Response status value */
MMS_RESPONSE_STATUS_VALUE_OK =128,
MMS_RESPONSE_STATUS_VALUE_E_UNSPECIFIED =129,
MMS_RESPONSE_STATUS_VALUE_E_SERVICE_DENIED =130,
MMS_RESPONSE_STATUS_VALUE_E_FORMAT_CORRUPT =131,
MMS_RESPONSE_STATUS_VALUE_E_ADDRESS_UNRESOLVED =132,
MMS_RESPONSE_STATUS_VALUE_E_MESSAGE_NOT_FOUND =133,
MMS_RESPONSE_STATUS_VALUE_E_NETWORK_PROBLEM =134,
MMS_RESPONSE_STATUS_VALUE_E_NOT_ACCEPTED =135,
MMS_RESPONSE_STATUS_VALUE_E_UNSUPORTED_MESSAGE =136,
MMS_RESPONSE_STATUS_VALUE_E_UNKNOW_ERROR =999,
}MMS_LIBSTATUS_VALUE;
typedef enum
{
SMS_TYPE_DELIVERY_IND,
SMS_TYPE_NOTIFICATION_IND,
SMS_TYPE_READORIG_IND,
SMS_TYPE_UNKNOW,
}SMS_HANDLE_STATUS;
typedef enum mmsliberrcode{
MMS_NO_ERROR = 0, //没有错误
MMSMEMORY_ERROR,
MMSSEND_ABORT,
MMSRECV_ABORT,
MMSTEXT_TOOLARGE,
MMSIMAGEAUDIO_TOOLARGE,
MMSMSG_TOOLARGE,
}MMSLIBERRCODE;
/*------------------------------------------------------------------------
*
*
*
* some data stucture set before sending
*
*
*
------------------------------------------------------------------------*/
typedef struct tag_send_setting
{
char *send_vfilename;
char *conf_vfilename;
}MMS_SEND_SETTING;
typedef struct tag_recv_setting
{
char *get_url;
char *recv_vfilename;
bool immediate_recv; //if receiving immediately,1 means receiving imediately;0,the opposite.
int recv_msgsize;
}MMS_RECV_SETTING;
typedef struct tag_mmsconfig_setting
{
unsigned char *wap_gateway; //gateway address,China Mobile provide it as "10.0.0.172" 2003.11.03
char *mms_centery; //mms centry,China Mobile provide as "Http://mmsc.monternet.com/"
int wap_port; //wap wtp port 9201
}MMS_CONFIG_SETTING;
/*------------------------------------------------------------------------
*
*
*
* display some subject as phone to the upper
*
*
*
------------------------------------------------------------------------*/
typedef struct tag_sms_msg
{
int msgsize; //消息大小
long de_date; //delivery report date
int de_status; //delivery report status
char *de_msgid; //delivery report message id
char *de_to; //delivery report receiver
char *mms_url; //MMS所在的URL
char *phone_number; //发件人的电话
char *subject; //MMS主题
char *tid; //transaction ID
}NOTIFICATION_IND_SMS_MSG;
#endif // Modified by TIPrj[2005/7/13]
/*------------------------------------------------------------------------
*
*
*
* MMS callback mmsproc
* report the status to upper
*
*
------------------------------------------------------------------------*/
/*
typedef enum
{
LIB_STATUS_SENDRETURN,
LIB_STATUS_RECVRETURN,
LIB_STATUS_NORMAL_STATUS,
LIB_STATUS_TOTAL_BYTES,
LIB_STATUS_SENDED_BYTES,
LIB_STATUS_RECVED_BYTES
}MMS_LIBSTATUS;
*/
/*------------------------------------------------------------------------
* MMS文档结构定义
*
*
*
------------------------------------------------------------------------*/
#ifndef MAX_VERSION_LENGTH
#define MAX_VERSION_LENGTH 16
#endif
#ifndef MAX_MESSAGEID_LENGTH
#define MAX_MESSAGEID_LENGTH 40
#endif
#ifndef MAX_CONTENTLOCATON_LENGTH
#define MAX_CONTENTLOCATON_LENGTH 100
#endif
#ifndef MAX_RESPONSETEXT_LENGTH
#define MAX_RESPONSETEXT_LENGTH 30
#endif
#ifndef MAX_NAME_LENGTH
#define MAX_NAME_LENGTH 90/*128*//*64*/
#endif
#ifndef MAX_BOUNDARY_STR_LENGTH
#define MAX_BOUNDARY_STR_LENGTH 40
#endif
#ifndef MAX_CONTENT_LENGTH
#define MAX_CONTENT_LENGTH 128
#endif
#ifndef MAX_SUBJECT_LENGTH
#define MAX_SUBJECT_LENGTH 60
#endif
#ifndef MAX_URL_LENGTH
#define MAX_URL_LENGTH 256
#endif
#ifndef MAX_LENGTH
#define MAX_LENGTH 256
#endif
#ifndef FILE_BLOCK_LENGTH
#define FILE_BLOCK_LENGTH 2048
#endif
/*
* Added by longqiangl
* 2003-07-01
* MMS client should process correctly multi-recepient information
* tag_MMS_RECEPIENT is defined for this consideration
* The MMS recepient information , including To/CC/BCC
*/
typedef struct tag_MMS_RECEPIENT
{
struct tag_MMS_RECEPIENT *p_next;
/* Address of the recipient. */
char m_address[MAX_NAME_LENGTH];
}MMS_RECEPIENT;
typedef MMS_RECEPIENT* p_MMS_RECEPIENT;
typedef struct _CmsMMSHead
{
/* Internal Flags */
int flagMultipartRelated;
/* Header Fields Flags */
int flagBccAvailable;
int flagCcAvailable;
int flagContentTypeAvailable;
int flagDateAvailable;
int flagDeliveryReportAvailable;
int flagDeliveryTimeAvailable;
int flagDeliveryTimeAbsolute;
int flagExpiryAvailable;
int flagExpiryAbsolute;
int flagFromAvailable;
int flagMessageClassAvailable;
int flagMessageIdAvailable;
int flagMessageTypeAvailable;
int flagMMSVersionAvailable;
int flagPriorityAvailable;
int flagReadReportAvailable;
int flagSenderVisibilityAvailable;
int flagStatusAvailable;
int flagReadStatusAvailable;
int flagSubjectAvailable;
int flagToAvailable;
int flagTransactionIdAvailable;
/* hulf add */
int flagContentLocationAvailable;
int flagReportAllowedAvailable;
int flagResponseStatusAvailable;
int flagResponseTextAvailable;
int flagMessageSizeAvailable;
/* head flied value */
/*
* Revised by longqiangl
* 2003-07-01
*/
//char Mms_bcc[MAX_NAME_LENGTH];/* Address of the recipient. */
//char Mms_cc[MAX_NAME_LENGTH]; /* Address of the recipient. */
p_MMS_RECEPIENT p_bcc_head;
p_MMS_RECEPIENT p_cc_head;
char Mms_content_location[MAX_CONTENTLOCATON_LENGTH];
/* This field defines the location of the message. */
char Mms_content_type[MAX_CONTENT_LENGTH];
/* The content type of the message. */
int Mms_date; /* Arrival time of the message at MMSProxy -Relay.
MMS Proxy -Relaywill generate this field when
not supplied by terminal. */
int Mms_delivery_time; /* default: immediate.
Time of desired delivery. Indicates the earliest
possible delivery of the message to the recipient.
The field has two formats, either absolute or
CMS_MMS_S32erval. */
int Mms_expiry; /* default: maximum.
Length of time the message will be stored in MMS
Proxy-Relayor time to delete the message. The field has
two formats, either absolute or CMS_MMS_S32erval. */
char Mms_from[MAX_NAME_LENGTH];
/* Address of the sender. If hiding the address of the sender
from the recipient is supported, the MMS Proxy -Relay
will not add this field to a message header. */
char Mms_message_ID[MAX_MESSAGEID_LENGTH];
/* This is an unique reference assigned to message. This ID
SHALL always be present when the originator client
requested a read reply.
The ID enables a client to match read reports with */
/* Encoded as in email address as per [RFC822].
The characters "<" and ">" are not included. */
char Mms_message_class; /* Class of the message. */ //xuelianb modify [2005-12-26]
unsigned char Mms_delivery_report; /* Default determined when service is ordered.
Specifies whether the user wants a delivery
report from each recipient. When Message-Class
is Auto, the field SHALL always be present and
the value SHALL be No. */
unsigned char Mms_message_type; /* Specifies the message type. */
unsigned char Mms_mms_version; /* The MMS version number. According to this
specification, the version is 1.0. */
/* The three most significant bits of the Short-CMS_MMS_S32eger are
CMS_MMS_S32erpreted to encode a major version number in the range 1-7,
and the four least significant bits contain a minor version
number in the range 0-14. If there is only a major version
number, this is encoded by placing the value 15 in the four
least significant bits [WAPWSP]. */
long Mms_message_size; /* Full size of message in octets. */
unsigned char Mms_priority; /* Default: Normal.
Priority of the message for the recipient. */
char Mms_read_report; /* Specifies whether the user wants a read report from each
recipient as a new message. When Message-Class is
Auto, the field SHALL always be present and the value
SHALL be No. */ //xuelianb modify [2005-12-26]
unsigned char Mms_report_allowed; /* Default: Yes.
Sending of delivery report allowed to the user or not. */
unsigned char Mms_response_status; /* MMS specific status. */
char Mms_response_text[MAX_RESPONSETEXT_LENGTH];
/* Description which qualifies the response status value. */
char Mms_subj[MAX_SUBJECT_LENGTH+12];
/* Subject of the message. */
/*
* Revised by longqiangl
* 2003-07-01
*/
//char Mms_to[MAX_NAME_LENGTH];
/* Address of the recipient. */
p_MMS_RECEPIENT p_to_head;
/* Address of the recipient. */
char Mms_transaction_ID[MAX_NAME_LENGTH];
unsigned char Mms_sender_visibility; /* Default: show address/phone number of the
sender to the recipient unless the sender has a secret
number/address.
Hide = don't show any address. Show = show even secret
address. */
unsigned char Mms_status; /* Message status. The status Retrieved SHALL be used
only after successful retrieval of multimedia message. */
/* This transaction ID identifies the M-Send.conf and the
corresponding request only. */
char Mms_read_status;//xuelianb add [2005-12-26]
//CENT_FILL_FIELD2
} CmsMMSHead;
/* struct define: MMSContentHead
* define data block head information in rfc2387 mutipart/related
*/
/*
typedef struct _MMSContentHead
{
CMS_MMS_S8 Charset[30];
CMS_MMS_S8 Type[30];
CMS_MMS_S8 Encoding[30];
} MMSContentHead;
*/
/* struct define: MMSContentList
* define data block list in MMS PDU body
*/
typedef struct _MMSContentList
{
int start; /* start poCMS_MMS_S32 of this data block */
int length; /* length of this data block */
char type[MAX_CONTENT_LENGTH]; /* format type of this block */
char id[MAX_NAME_LENGTH]; /* id value or filename of this block */
char filename[MAX_NAME_LENGTH]; /* file name of this block */
struct _MMSContentList *firstchild; /* first child of this data block */
struct _MMSContentList *next; /* next of this data block */
}MMSContentList;
/* struct define: CmsMMSDocument
* CmsMMSDocument describe a mms pdu
*/
typedef struct _CmsMMSDocument
{
char mmsfile[MAX_NAME_LENGTH]; /* filename of mm */
char mmsstart[MAX_NAME_LENGTH]; /* smil or wml document id(filename) */
char mmstype[MAX_NAME_LENGTH]; /* document type */
MMSContentList *ccontent; /* current content in body */
CmsMMSHead *mmshead; /* head of mm */
MMSContentList *content; /* content list in body */
int mms_totalsize; //2003.11.03
}CmsMMSDocument;
typedef CmsMMSDocument *P_MMS_DOCUMENT;
/*------------------------------------------------------------------------
*
*
*
* the Interface of CECW &MMS lib
* about the bottom message handle
*
*
------------------------------------------------------------------------*/
void mmsEventPostEvent(CenMsgType type,unsigned int param1,void* param2);
void mmsEventProcessEvent(void);
/*------------------------------------------------------------------------
*
*
*
* MMs init,send receive SMS handle interface
*
*
*
------------------------------------------------------------------------*/
void WAP_GlobalV_Init(void);
void MMS_GlobalV_Init(void);
int MMS_Init(void);
int MMS_SetMaxSize(int send_maxsize,int recv_maxsize);
void MMS_Close(void);
bool MMS_Machine_Config(MMS_CONFIG_SETTING *p_cfgset);
MMSHANDLE MMS_NewMms(void);
int MMS_DeleteMms(MMSHANDLE mmsdoc);
int MMS_SetDefault(MMSHANDLE mmsdoc, int mmstype);
void MmsSetReadReportDefault(MMSHANDLE mmsdoc,char* messageId);
int MMS_SetMmsFile(MMSHANDLE mmsdoc, char *mmsfile);
int MMS_GetMmsFile(MMSHANDLE mmsdoc, char *mmsfile);
int MMS_SetMmsHeadField(MMSHANDLE mmsdoc, int field, long ivalue, char *svalue);
int MMS_GetMmsHeadField(MMSHANDLE mmsdoc, int field, long *ivalue, char *svalue);
int MMS_ClearMmsHeadField(MMSHANDLE mmsdoc, int field);
//void mms_storecontent(MMSHANDLE mmsdoc);
void MMS_SetContentID_SUPPORT(int y_n);
int MMS_EncodeMms(MMSHANDLE mmsdoc);
int MMS_DecodeMms(MMSHANDLE mmsdoc);
CmsMMSHead *MMS_Decode_Header(char *filename);
void MMS_DeleteHead(CmsMMSHead* mmshead);
int MmsDecodeHead(MMSHANDLE mmsdoc);
int MMS_SendMms(MMS_SEND_SETTING *send_setting,mmsproc proc);
int MMS_ReceiveMms(MMS_RECV_SETTING *recv_setting,mmsproc proc);
int MMS_DeferMms(NOTIFICATION_IND_SMS_MSG *p_msg,MMS_CONFIG_SETTING *p_cfgset);
void MMS_SendRecvCancel(void);
int MMS_sms_onpushmessage(unsigned char *sms_userdata,int sms_userdata_len,int flag_userdata_head,smsproc proc);
/*P_MMS_DOUCMENT 和pMMS_EDocument struct converter*/
int cms_parse_mms(char * filename, pMMS_EDocument theDocument);
MMSHANDLE cms_integrate_mms(pMMS_EDocument pMms_edoc);
//int cms_mms_saveasmodu(pMMS_EDocument pMms_edoc,char * mmsfile);
void timer_thread(void);
MMSLIBERRCODE MMS_GetLastError(void);
#undef bool
#endif /*#ifndef _CMS_MMS_PROVIDE_H*/