📄 mmimms_internal.h
字号:
/*****************************************************************************
** File Name: mmimms_internal.h *
** Author: *
** Date: 24/03/2004 *
** Copyright: 2003 Spreatrum, Incoporated. All Rights Reserved. *
** Description: *
*****************************************************************************
** Important Edit History *
** --------------------------------------------------------------------------*
** DATE NAME DESCRIPTION *
** 08/2004 Bruce.Chi Create
******************************************************************************/
#ifndef _MMI_MMS_INTERNAL_H_
#define _MMI_MMS_INTERNAL_H_
/**--------------------------------------------------------------------------*
** Include Files *
**--------------------------------------------------------------------------*/
#include "mmimms.h"
#include "guianimate.h"
#include "mmiwap.h"
#include "mmisms_api.h"
#include "guilistbox.h"
#include "ffs.h"
#include "Cms_MMSDoc.h"
#include "Cms_MMSProvide.h"
#include "Cms_WAPMain.h"
#include "Mmi_appmsg.h"
#include "Cms_MMSFilefunc.h"
#include "mmimpeg4.h"
#include "cms_sysfun.h" //added liangliu 2006-2-22
#include "mmiaudio.h" //fnh add 0320 for play audio
#include "mms_id.h"
#include "mms_image.h"
#include "mms_menutable.h"
/**--------------------------------------------------------------------------*
** Compiler Flag *
**--------------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C"
{
#endif
#define HAVE_MP3 //版本包含MP3
//#define HAVE_AMR //版本支持AMR
#define HAVE_MPEG4 //版本包含MPEG4
/**--------------------------------------------------------------------------*
** MACRO DEFINITION *
**--------------------------------------------------------------------------*/
#define ONE_KILO 1000
#define ONE_K_LEN 1024
#define MMIMMS_MAX_ONE_MMS_SIZE (100 * ONE_K_LEN) //单条MMS最大size
#define MMIMMS_MAX_TOTAL_MMS_SIZE (MMIMMS_MAX_MMS_NUM * MMIMMS_MAX_ONE_MMS_SIZE)//(2000 * ONE_KILO) //2000K
#define MMIMMS_ADDRESS_TYPE_NUM 3 //地址类型个数
#define MMIMMS_MAX_SLIDE 20 //每一条MMS最大的帧数
#define MMIMMS_MAX_ADDRESS_NUM 60 //每一类目标地址的最大个数
#define MMIMMS_MAX_ADDRESS_LEN 40 //每一条地址的最大长度
#define MMIMMS_MAX_SUBJECTS_LEN 64 //每一条MMS主题的最大长度
#define MMIMMS_MAX_TEXT_LEN 1000//160 //每一条MMS文字内容的最大长度,不要超过MAX_TXT_BUF_SIZE (t9.c)
#define MMIMMS_MAX_FS_NAME_LEN 32 //每一条MMS文件名的最大长度暂定
#define MMIMMS_ADDRESS_BTN_WIDTH 44 //添加地址按钮的宽度
#define MMIMMS_SLIDE_DUARATION_MAX 600 //99 //最大slide duaration
#define MMIMMS_SLIDE_DUARATION_MIN 1 //最小slide duaration
#define MMIMMS_SLIDE_DUARATION_DEFAULT 15 //5 s
#define MMIMMS_MAX_TRANSACTIONID_LEN 32 //transaction ID最大长度。
#define MMIMMS_MAX_NOTIFICATION_URL_LEN 512 //彩信通知URL地址的长度。//暂定吧。这个挺关键的,一旦截断了,就没法下载了。
#define MMIMMS_MAX_RECEIVE_MSG_ID_LEN 64 //这个是干什么的?
#define MMS_SIZE_OF_MESSAGE (100*1024) //定义一条MMS的大小
#define MMS_SINGLE_SLIDE_SIZE 100
#define EDITMMS_ADDITIONAL_SIZE (3 * 1024)
//FNH ADD
#define MMIMMS_PBNUM_MAX_LEN ( PHONEBOOK_MAX_DN_NUMBER_LEN << 1 )
#define MMIMMS_NUMBER_MAX_BCD_LEN 10
#define MMIMMS_NUMBER_MAX_LEN 20
#define MMIMMS_DEST_ADDR_MAX_NUM 10
//FNH ADD
//liangliu added
#define MMIMMS_SETTING_WHETHER_NUM 2
#define MMIMMS_MMSC_MAX_LEN MMS_MAX_CENTRE_ADDR_LENGTH/2
#define MMIMMS_GATEWAY_MAX_LEN MMS_MAX_GATEWAY_LENGTH/2
#define MMIMMS_PORT_MAX_LEN MMS_MAX_PORT_LENGTH/2
#define MMIMMS_USERNAME_MAX_LEN MMS_MAX_USERNAME_LENGTH/2
#define MMIMMS_PASSWORD_MAX_LEN MMS_MAX_PASSWORD_LENGTH/2
#define MMIMMS_APN_MAX_LEN MMS_MAX_APN_LENGTH/2
#define LISTMAXLENGTH 40 //added liangliu 2005-12-14
#define MMS_MAX_NUM 100 //the max num of mms in total added 2005-12-14
//#define MMIMMS_PROGRESS_BAR_LEFT 12//5
//#define MMIMMS_PROGRESS_BAR_TOP 180//144//40//121
#define MMIMMS_SCROLL_BAR_LEFT 12//5//6
#define MMIMMS_SCROLL_BAR_TOP 159//MMIMMS_PROGRESS_BAR_TOP
#define MMIMMS_SCROLL_BAR_RIGHT (MMIMMS_SCROLL_BAR_LEFT+100)
#define MMIMMS_SCROLL_BAR_BOTTOM (MMIMMS_SCROLL_BAR_TOP+20) //fnh modify 0323
#define MMIMMS_SCROLL_BAR_COLOR 0x523900//0xFCC0
#define MMIMMS_MAX_FILE_NAME_LEN 32 //from the wintable.c to
#define MMS_MAX_SIZE_OF_MULTIM (100*1024) //编辑彩信时限制的多媒体的大小
#define MMIMMS_UNKNOWN_SENDER "<Unknown>" //无收件人时彩信列表的显示内容
#define MMIMMS_MMSC_DEFAULT_URL "http://mmsc.monternet.com/"
#define MMIMMS_FS_ROOT_DIR "/MMS/" //mms directory in file system
#define MMIMMS_FS_ROOT "/"
#define MMIMMS_MMS_DIR "MMS"
#define MMIMMS_MP3_DIR "MP3"
#define MMIMMS_VIDEO_DIR "VIDEO"//added by liangliu for save video 2005-11-29
#define MMIMMS_DEFAULT_DIR_LEN 5
//#define MMIMMS_FILE_NAME_PREFIX "mms_" //file name prefix
//file name is from 1 to 100
#define MMIMMS_FILE_NAME_SUBFIX ".mms"
#define MMIMMS_FILE_WILDCARD "*.mms"
#define MMIMMS_FILE_HEAD "MMS/mms_*"
#define MMIMMS_FILE_ID_INVALID 0xFFFFL
#define MMIMMS_NV_ID_INVALID 0xFFFFL
#define FLAG_MMS_IS_MMS 0x80
#define FLAG_MMS_NOTIFICATION 0x40
#define FLAG_MMS_HAVE_DOWNLOADED 0x20
#define FLAG_MMS_INBOX_NOT_READ 0x00
#define FLAG_MMS_INBOX_HAVE_READ 0x02
#define FLAG_MMS_OUTBOX 0x04
#define FLAG_MMS_DRAFTBOX 0x05
#define FLAG_MMS_SENTBOX 0x06
#define FLAG_MMS_MOMT_STATE 0x07
#define FLAG_MMS_CONTENT_IS_UCS2 0x08
#define MMIMMS_INVALID_MMS_CONTENT_PDU_SIZE 3 //0x84A300
#define MMS_LOCAL_TIME_ZONE 8 //时区
#define MMS_100_YEARS 100
//liangliu added
#define MMS_MAX_INPUT_TEXT_SIZE 256 /* 彩信文本编辑输入最大长度 */
#define MMS_MAX_TEXT_SIZE MMS_MAX_INPUT_TEXT_SIZE * 3 + 2 /* 彩信文本UNICODE数组(全局)最大长度 */
#define MMS_MAX_INPUT_SUBJECT_SIZE 20 /* 彩信主题编辑输入最大长度 */
#define MMS_MAX_UTF_SUBJECT_SIZE MMS_MAX_INPUT_SUBJECT_SIZE*3+1 /* UNICODE(汉字)转为UTF8所需最大长度 */
#define MMS_MAX_SUBJECT_SIZE MMS_MAX_INPUT_SUBJECT_SIZE*3+2 /* 彩信主题UNICODE数组(全局)最大长度 */
#define MMS_MAX_INPUT_SEND_TO_SIZE 36 /* 编辑收件人输入的最大长度 */
#define MMS_MAX_SEND_TO_SIZE MMS_MAX_INPUT_SEND_TO_SIZE * 2 + 2 /* 收件人UNICODE数组(全局)最大长度 */
#define MMS_MAX_FILE_NAME_LENGTH 128 /* 彩信文件名最大长度 */
#define MMS_MAX_ADDRESS_LENGTH 64 /* 收(发)件人地址(即号码)在文件管理摘要结构中最大长度 */
#define MMS_MAX_DATE_LEN 32 /* 文件管理器信息日期最大长度 */
#define MMS_MAX_DETAILS_LENGTH 5 * 128 /* 信息详情string长度 */
#define MMS_MAX_MSGID_LENGTH 40 /* 信息详情string长度 */
/* image content type macros */
#define COMPOSER_IMAGE_GIF "image/gif"
#define COMPOSER_IMAGE_JPEG "image/jpeg"
#define COMPOSER_IMAGE_PNG "image/png"
#define COMPOSER_IMAGE_WBMP "image/vnd.wap.wbmp"
#define COMPOSER_IMAGE_BMP "image/bmp"
/* audio content type macros */
#define COMPOSER_AUDIO_WAV "audio/wav"
#define COMPOSER_AUDIO_IMELODY "audio/imelody"
#define COMPOSER_AUDIO_MIDI "audio/midi"
#define COMPOSER_AUDIO_AMR "audio/amr"
#define COMPOSER_AUDIO_MP3 "audio/mp3"
/* video content type macros */
#define COMPOSER_VIDEO_MPEG "video/mpeg"
/**--------------------------------------------------------------------------*
** TYPE AND CONSTANT *
**--------------------------------------------------------------------------*/
#ifndef FILE_HANDLE
#define FILE_HANDLE int
#endif
typedef enum
{
SEND_MMS_NORMAL,
SEND_MMS_FROM_CAIKE,
SEND_MMS_INVALID
}MMIMMS_MMS_OR_CAIKE;
//FNH ADD 发送当前彩信(新彩信OR发件箱中的彩信)
typedef enum
{
INBOX,
SENTBOX,
OUTBOX,
DRAFTBOX,
ALL_BOX
}MMIMMS_OPTION_BOX;
//FNH ADD 发送当前彩信(新彩信OR发件箱中的彩信)
typedef enum
{
SEND_NEW_MMS,
SEND_OUTBOX_MMS
}MMIMMS_SEND_MMS_STATUS;
typedef enum
{
DOWNLOAD_RESULT_SUCCEED,
DOWNLOAD_RESULT_FAIL,
DOWNLOAD_RESULT_MMS_TOO_BIG
}MMIMMS_DOWNLOAD_RESULT;
/* 显示矩形区域结构 */ /*record display position */
typedef struct T_Composer_Rectangle_tag{
T_WORD x; /*x start coordinate of screen*/
T_WORD y; /*y start coordinate of screen*/
T_WORD width; /*width of display position*/
T_WORD height; /*height of display postion*/
}T_Composer_Rectangle;
/*插入图片的资源信息*/
typedef struct T_Composer_Image{
T_UBYTE* ImgBuf; /*image data*/
T_CHAR* Type; /*image type*/
T_WORD begin; /*begin time of image display*/
T_WORD end; /*end time of image display*/
T_WORD size; /*size of image data*/
T_Composer_Rectangle region; /* image's region */
}T_Composer_Image;
/*插入文本的资源信息*/
typedef struct T_Composer_Text{
T_UBYTE* TxtBuf; /*text data*/
T_WORD begin; /*begin time of text show*/
T_WORD end; /*end time of text show*/
T_WORD size; /* the size of the text content */
T_Composer_Rectangle region; /* text's region */
}T_Composer_Text;
/*插入声音资源信息*/
typedef struct T_Composer_Audio{
T_UBYTE* AudBuf; /*audio data buffer*/
T_CHAR *Type; /* audio type */
T_WORD begin; /*begin time of audio play*/
T_WORD end; /*end time of audio play*/
T_WORD size; /*size of audio data*/
}T_Composer_Audio;
/*插入声音资源信息*/
typedef struct T_Composer_Video{
T_UBYTE* VidBuf; /*video data buffer*/
MMIMPEG4_TYPE_E Type; /* video type */
T_WORD begin; /*begin time of video play*/
T_WORD end; /*end time of video play*/
T_WORD size; /*size of video data*/
T_Composer_Rectangle region; /* video's region */
}T_Composer_Video;
typedef enum
{
MMSRE,
MMSFW,
MMSEDIT,
MMSREAD
}MMSSTATE;
typedef enum
{
MMIMMS_RESULT_SUCCESS, //函数调用成功
MMIMMS_RESULT_ERROR //函数调用错误
}MMIMMS_RESULT_E; //函数的返回结果
typedef enum //give specific number to differ MMIMMS_TYPE and MMIMMS_MAILBOX_TYPE
{
MMIMMS_MO = 8, //发送
MMIMMS_MT = 9, //接收
MMIMMS_MNOTI = 10, //彩信通知
MMIMMS_TOTAL = 11
}MMIMMS_TYPE;
typedef struct
{
uint32 type; //MMIMMS_TYPE
uint32 head_size; //sizeof(STRUCTURE)
uint32 body_size; //body size
BOOLEAN Delivery_Report; // 是否需要传送报告标志
BOOLEAN Read_Reply; //是否需要阅读报告标志
BOOLEAN Sender_Visibility; // 是否匿名发送标志
int8 Transaction_Id[MMIMMS_MAX_TRANSACTIONID_LEN + 1]; //事务ID,由本地产生的随机序列
int8 To[MMIMMS_MAX_ADDRESS_NUM * MMIMMS_MAX_ADDRESS_LEN + 1]; //TO接收者,多个用‘;’隔开
//int8 Cc[MMIMMS_MAX_ADDRESS_LEN]; //抄送者,多个用‘;’隔开
//int8 Bcc[MMIMMS_MAX_ADDRESS_LEN]; //密送者,多个用‘;’隔开
int8 Subject[MMIMMS_MAX_SUBJECTS_LEN + 1]; //主题
T_WORD MMS_Priority;
T_WORD MMS_Expiry; //expiry time,default use Relative-token value
T_WORD MMS_Delivery_Time; //Delivery time,default use Relative-token value
T_WORD ContentTypeAndBody_Len; //彩信数据长度
uint8 *ContentTypeAndBody; //彩信数据
}MMIMMS_FS_Send_T;
typedef struct{
uint32 type; //MMIMMS_TYPE
uint32 head_size; //sizeof(STRUCTRUE)
uint32 body_size;
BOOLEAN Delivery_Report; //是否需要传送报告标志
BOOLEAN Read_Reply; //是否需要阅读报告标志
uint8 Message_Class; //消息类型
uint8 MMS_Prioity; //优先级
//uint8 Boundary[2]; //字节对齐 补充位 //先不考虑对齐。
// uint8 flag; //标志已读未读
T_WORD Date; //彩信的发送时间
int8 Transaction_Id[MMIMMS_MAX_TRANSACTIONID_LEN + 1]; //事务id
int8 Message_Id[MMIMMS_MAX_RECEIVE_MSG_ID_LEN + 1]; //消息ID
int8 From[MMIMMS_MAX_ADDRESS_NUM *MMIMMS_MAX_ADDRESS_LEN + 1]; //发送者
int8 To[MMIMMS_MAX_ADDRESS_LEN * MMIMMS_MAX_ADDRESS_NUM + 1]; //接收者
int8 Cc[MMIMMS_MAX_ADDRESS_LEN * MMIMMS_MAX_ADDRESS_NUM + 1]; //抄送者
int8 Subject[MMIMMS_MAX_SUBJECTS_LEN + 1]; //主题
T_WORD Content_Size; //彩信数据大小
uint8 *ContentTypeAndBody; //彩信数据指针
}MMIMMS_FS_Receive_T;
typedef struct{
uint32 type; //MMIMMS_TYPE
uint32 head_size; //sizeof(STRUCTURE)
uint32 body_size;
uint8 Message_Class; //消息类型
uint8 MMS_Expiry_TimeType; //过期时间类型,相对,绝对
T_WORD Message_Size; //彩信大小
T_WORD MMS_Expiry; //过期时间
int8 Transaction_Id[MMIMMS_MAX_TRANSACTIONID_LEN + 1]; //事务ID
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -