⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ems_defs.h

📁 最新MTK手机软件源码
💻 H
字号:
/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2005
*
*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
*
*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/

/*******************************************************************************
 * Filename:
 * ---------
 *	ems_defs.h
 *
 * Project:
 * --------
 *   MAUI
 *
 * Description:
 * ------------
 *   This file contains function prototypes of .
 *
 * Author:
 * -------
 * -------
 * -------
 *
 *==============================================================================
 * 				HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
 *------------------------------------------------------------------------------
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
 *==============================================================================
 *******************************************************************************/
#ifndef _EMS_DEFS_H
#define _EMS_DEFS_H


#define EMS_CNTX(X) (ems_cntx_g.X)

#ifdef __PRODUCTION_RELEASE__
#define EMS_ASSERT(x)
#define EMS_EXT_ASSERT(a,b,c,d)
#else
   #ifdef  EMS_UT
   #define ASSERT(expr) if(!(expr)) { printf("\nAssert fail: %s %d\n", basename(__FILE__), __LINE__); while(1); }
   #define EXT_ASSERT(expr, e1, e2, e3) if(!(expr)) { printf("\nAssert fail: %s %d\n", basename(__FILE__), __LINE__); while(1); }
   #endif
#define EMS_ASSERT(x)               ASSERT(x)
#ifdef EMS_ON_WIN32
#define EMS_EXT_ASSERT(a,b,c,d)     ASSERT(a)
#else
#define EMS_EXT_ASSERT(a,b,c,d)     EXT_ASSERT(a,b,c,d)
#endif
#endif


#define EMS_P(x,y) (x->y)
#define EMS_R(x)   (x)

#if defined(__MTK_TARGET__) || defined(MMI_ON_WIN32) /* target and PC simulator */
#define EMS_DBG_(x) 
#else  /* specific for MoDIs */
#define EMS_DBG_(x) x
#endif

#ifdef EMS_UT

#ifndef __MTK_TARGET__
/* UT && WIN23 */
#define EMS_PRINT printf  
#define EMS_PRINT_STR printf  

#else

/* UT && Target */
#define EMS_PRINT(fmt, arg) /* empty */
#define EMS_PRINT_STR(str)  kal_print(str)   

#endif/* (__MTK_TARGET__)*/

#else

/* NOT UT */
#define EMS_PRINT(fmt, arg) /* empty */
#define EMS_PRINT_STR(str)  /* empty */  

#endif /* EMS_UT */

#define EMS_ONE_MSG_OCTET      (140)
#define EMS_ONE_MSG_LEN        (160)

/* #define EMS_HDR_SEPTETS_NUM    (7) */
/* #define EMS_CONC_HDR_LEN (5)       */

#define EMS_UDHL_HDR_LEN_OCTET        (1)
#define EMS_8BIT_CONC_HDR_LEN_OCTET   (5)
#define EMS_16BIT_CONC_HDR_LEN_OCTET  (6)
#define EMS_PORT_HDR_LEN_OCTET        (6)


/*------------------------------------
 * Information Element Identifier
 *------------------------------------*/
#define EMS_CONC8_MSG_IEI     (0x00)
#define EMS_CONC16_MSG_IEI    (0x08)

/* MISC */
#define EMS_APP_PORT8_IEI      (0x04)   /* application port - 8 bit */
#define EMS_APP_PORT16_IEI     (0x05)   /* application port - 16 bit */

/* EMS */
#define EMS_TEXT_FORMAT_IEI    (0x0a)   /* Text Formating */
#define EMS_PREDEF_SND_IEI     (0x0b)   /* Predefined Sound */
#define EMS_USER_DEF_SND_IEI   (0x0c)   /* User Defined Sound */
#define EMS_PREDEF_ANM_IEI     (0x0d)   /* Predefined Animation */
#define EMS_LARGE_ANM_IEI      (0x0e)   /* Large Animation */
#define EMS_SMALL_ANM_IEI      (0x0f)   /* Small Animation */
#define EMS_LARGE_PIC_IEI      (0x10)   /* Large Picture */
#define EMS_SMALL_PIC_IEI      (0x11)   /* Small Picture */
#define EMS_VAR_PIC_IEI        (0x12)   /* Variable Picture */

#define EMS_EXT_OBJ_IEI        (0x14)   /* Extended Object */
#define EMS_REUSED_EXT_OBJ_IEI (0x15)   /* Reused Extended Object */
#define EMS_COMPRESSED_IEI     (0x16)   /* Compression Control */
#define EMS_OBJ_DIST_IND_IEI   (0x17)   /* Object Distribution Indicator */

/* Type of extended object */
#define EMS_EXT_PREDEF_SND     (0x00)   /* Predefined Sound */
#define EMS_EXT_USER_DEF_SND   (0x01)   /* User Defined Sound */
#define EMS_EXT_BW_PIC         (0x02)   /* B&W Picture */
#define EMS_EXT_2BIT_PIC       (0x03)   /* 2-bit greyscale Picture */
#define EMS_EXT_6BIT_PIC       (0x04)   /* 6-bit greyscale Picture */
#define EMS_EXT_PREDEF_ANM     (0x05)   /* Predefined Animation */
#define EMS_EXT_BW_ANM         (0x06)   /* B&W Animation */
#define EMS_EXT_2BIT_ANM       (0x07)   /* 2-bit greyscale Animation */
#define EMS_EXT_6BIT_ANM       (0x08)   /* 6-bit greyscale Animation */
#define EMS_EXT_VCARD          (0x09)   /* vCard */
#define EMS_EXT_VCALENDAR      (0x0a)   /* vCalendar */
#define EMS_EXT_POLY_SND       (0x0c)   /* Polyphonic melody */

/* #define EMS_TXTFMT_IEDL            (4) */
#define EMS_TXTFMT_IEDL            (3)

#define EMS_PREDEF_IEDL            (2)  /* IE Data length of Predefined obj */

#define EMS_TYPE_OBJ_DIST_IND      (99)  /* for object distribute indicator */
                                         /* EMS library internal use. */


#define EMS_MAX_SEG_NUM  (EMS_CNTX(max_seg_num)) 
#define EMS_MAX_OBJECT   (EMS_CNTX(max_obj_num)) 
#define EMS_MAX_EMS_DATA   (2)
#define EMS_MAX_TEXT_BUF_SIZE   (EMS_CNTX(max_seg_num) * 153 *2 +4)

#define EMS_ASM_MALLOC(size) EMS_asm_malloc(size)
#define EMS_ASM_MFREE(ptr)   EMS_asm_mfree(ptr)

#define EMS_MALLOC(size) EMS_malloc(size)
#define EMS_MFREE(ptr)   EMS_mfree(ptr)
#define EMS_BUFF_FOOTPRINT   0xF2F2F2F2


/*================================
 * Macros 
 *================================*/

#define IS_EMS_DATA_NEED(type) ((type == EMS_TYPE_PREDEF_ANM || type ==EMS_TYPE_PREDEF_SND) ? \
                                 KAL_FALSE : KAL_TRUE)

#define IS_EMS_DATA_NEED_IEI(iei) ((iei == EMS_PREDEF_SND_IEI || iei ==EMS_PREDEF_ANM_IEI ) ? \
                                 KAL_FALSE : KAL_TRUE)

#define IS_EMS_DATA_NEED_EXT_TYPE(type) ((type == EMS_EXT_PREDEF_SND || type ==EMS_EXT_PREDEF_ANM ) ? \
                                 KAL_FALSE : KAL_TRUE)

#define EXT_OBJ_INFO_P(_obj, _var)  (((EMSExtObjInfo *)((kal_uint8*)_obj+sizeof(EMSObject)))->_var)

#define EMS_INIT_CHECK if(EMS_CNTX(isInit) == KAL_FALSE) return EMS_NOT_INITIALIZED
#define IS_EMS_INIT EMS_CNTX(isInit) 

#define SET_ACTIVE_EMS_ID(id) EMS_CNTX(activeEMSDataID) = id
#define IS_EMS_DATA_VALID(emsData) ((emsData->id < EMS_MAX_EMS_DATA && \
                                    EMS_CNTX(isEMSDataUsed[emsData->id]) == KAL_TRUE) \
                                    ? KAL_TRUE : KAL_FALSE)

#define EMS_DATA_CHECK(emsData) {EMS_INIT_CHECK; \
                                 if(IS_EMS_DATA_VALID(emsData) == KAL_FALSE) \
                                    return EMS_INVALID_EMS_DATA;}


#define GetTxtLenInChar(dcs,numOfOctet) ((dcs == SMSAL_UCS2_DCS) ? numOfOctet : (numOfOctet >> 1))
#define GetTxtLenInOctet(dcs,numOfChar) ((dcs == SMSAL_UCS2_DCS) ? numOfChar : (numOfChar << 1 ))

#define EMS_RELEASE_NOT_FINISH_OBJ(_internal_) if((_internal_)->notFinishedObject != NULL) \
                                               { ReleaseEMSObject((_internal_)->notFinishedObject); \
                                               (_internal_)->notFinishedObject = NULL; }

#define is_TPUD_avail(int_d, udh_len, txt_len, len_n)  ((((udh_len) + (txt_len) + (len_n)) > \
                                                        (int_d)->MaxLenPerSeg) \
                                                         ? KAL_FALSE : KAL_TRUE)

#define IS_FOLLOW_EMS_TXT_FMT(txt_offset_,txt_fmt_obj) ((txt_offset_ == txt_fmt_obj->OffsetToText+ \
                                             EMS_P(txt_fmt_obj->data,text_format.textLength)) \
                                             ? KAL_TRUE : KAL_FALSE)

#define BETWEEN_EMS_TXT_FMT(txt_offset_,txt_fmt_obj) ((txt_offset_ < txt_fmt_obj->OffsetToText+ \
                                            EMS_P(txt_fmt_obj->data,text_format.textLength)) \
                                            ? KAL_TRUE : KAL_FALSE)

#define SWITCH_TO_NEXT_EMS_OBJ(emsData) if(emsData->CurrentPosition.Object->next != NULL && \
   emsData->CurrentPosition.Object->next->OffsetToText < emsData->CurrentPosition.OffsetToText) \
                  emsData->CurrentPosition.Object = emsData->CurrentPosition.Object->next;             

#define IS_CURRENT_OBJ_PRESENT(emsData) ((emsData->CurrentPosition.Object == NULL) \
                                          ? KAL_FALSE : KAL_TRUE)

#define CURR_OBJ_OFFSET(emsData) (emsData->CurrentPosition.Object->OffsetToText)
#define CURR_TXT_OFFSET(emsData) (emsData->CurrentPosition.OffsetToText)
#define EMS_OBJ_OFFSET(object) (object->OffsetToText)

#define TXT_FMT_LEN(obj) (obj->data->text_format.textLength)
#define IS_TXT_FMT_OBJ(obj) ((obj->Type==EMS_TYPE_TEXT_FORMAT)?KAL_TRUE:KAL_FALSE)
#define IS_CURR_POS_AT_HEAD(emsData) (((emsData->CurrentPosition.Object == NULL) &&\
                                       (emsData->CurrentTextFormatObj == NULL) &&\
                                       (emsData->CurrentPosition.OffsetToText == 0)) \
                                       ? KAL_TRUE : KAL_FALSE)
#define IS_CURR_POS_AT_END(emsData) ((((kal_uint32*)emsData->CurrentPosition.Object ==\
                                                    (kal_uint32*)emsData->listTail) &&\
                                    (emsData->CurrentPosition.OffsetToText == emsData->textLength)) \
                                    ? KAL_TRUE : KAL_FALSE)

#define TXT_FMT_OBJ_END(obj) (EMS_OBJ_OFFSET(obj)+TXT_FMT_LEN(obj))

#define GET_PREV_TXT_FMT_OBJ(tf_obj) while(tf_obj != NULL && IS_TXT_FMT_OBJ(tf_obj) == KAL_FALSE) \
                                            tf_obj = tf_obj->prev
#define GET_NEXT_TXT_FMT_OBJ(tf_obj) while(tf_obj != NULL && IS_TXT_FMT_OBJ(tf_obj) == KAL_FALSE) \
                                            tf_obj = tf_obj->next

//#define IS_OBJ_BEYOND_CURR_POS(emsData) ((emsData->CurrentPosition.Object->OffsetToText > emsData->CurrentPosition.OffsetToText) ? KAL_TRUE : KAL_FALSE)



#endif /* _EMS_DEFS_H */


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -