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

📄 mms_mmis.c

📁 是一个手机功能的模拟程序
💻 C
字号:
/*
+-----------------------------------------------------------------------------
|  File     : mms_mmis.c
+-----------------------------------------------------------------------------
|  Purpose  : This Modul defines the functions for processing
|             of outcomming primitives to mmi for mms task
+-----------------------------------------------------------------------------
*/
 
#define ENTITY_MMS

/*==== INCLUDES ===================================================*/
#if defined (NEW_FRAME)

#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
#include <stddef.h>
#include "typedefs.h"
#include "pcm.h"
#include "pconst.cdg"
#include "mconst.cdg"
#include "message.h"
#include "ccdapi.h"
#include "vsi.h"
#include "custom.h"
#include "gsm.h"
#include "prim.h"
#include "pei.h"
#include "tok.h"

#else

#include <string.h>
#include <stdlib.h>
#include <stddef.h>
#include "stddefs.h"
#include "pconst.cdg"
#include "mconst.cdg"
#include "message.h"
#include "ccdapi.h"
#include "custom.h"
#include "gsm.h"
#include "prim.h"
#include "vsi.h"
#include "pei.h"
#include "tok.h"

#endif

#include "mmstask.h"
#include "mms_clib.h"

#define TRACE_EVENT(f) MMS_TRACE_EVENT((f));

static BYTE mmstask_processing = 0;

void set_mmstask_proc(BYTE flag)
{
	if(flag)
		mmstask_processing  = 1;
	else
		mmstask_processing = 0;
	MMS_TRACE_EVENT(("set_mmstask_proc: %d", mmstask_processing));
}
BYTE get_mmstask_proc()
{

	return mmstask_processing;
}


/***************************************
*											*
*				MMS TASK					*
*											*
****************************************/


/*
$Description:
	mms-->mms, 
*/
void S_MMS_MMI_READY_CNF(T_MMS_MMI_READY_CNF * parameter)
{

	TRACE_EVENT("S_MMS_MMI_READY_CNF");
	psa_MMS_MMI_IND(S_MMS_MMI_READY_CNF_ID, parameter, sizeof(T_MMS_MMI_READY_CNF) );
}

/*
$Description:
	mms-->mms, player_initialize
*/
void S_MMS_MMI_PLAYERINITIALIZE_CNF(T_MMS_MMI_PLAYERINITIALIZE_CNF * parameter)
{

	TRACE_EVENT("S_MMS_MMI_PLAYERINITIALIZE_CNF");
	psa_MMS_MMI_IND(S_MMS_MMI_PLAYERINITIALIZE_CNF_ID, parameter, sizeof(T_MMS_MMI_PLAYERINITIALIZE_CNF) );
}


/*
$Description:
	mms-->mmi, 请求call MMS_BitBlt
*/
void S_MMS_MMI_MMSBITBLT_IND(T_MMS_MMI_MMSBITBLT_IND * parameter)
{
	TRACE_EVENT("S_MMS_MMI_MMSBITBLT_IND");
	psa_MMS_MMI_IND(S_MMS_MMI_MMSBITBLT_IND_ID, parameter, sizeof(T_MMS_MMI_MMSBITBLT_IND));

}

/*
$Description:
	mms-->mmi, 请求call sys_drawpoint
*/
void S_MMS_MMI_DRAWPOINT_IND(T_MMS_MMI_DRAWPOINT_IND * parameter)
{
	TRACE_EVENT("S_MMS_MMI_DRAWPOINT_IND");
	psa_MMS_MMI_IND(S_MMS_MMI_DRAWPOINT_IND_ID, parameter, sizeof(T_MMS_MMI_DRAWPOINT_IND));

}

/*
$Description:
	mms-->mmi, 请求call sys_drawtext
*/
void S_MMS_MMI_DRAWTEXT_IND(T_MMS_MMI_DRAWTEXT_IND * parameter)
{
	TRACE_EVENT("S_MMS_MMI_DRAWTEXTT_IND");
	psa_MMS_MMI_IND(S_MMS_MMI_DRAWTEXT_IND_ID, parameter, sizeof(T_MMS_MMI_DRAWTEXT_IND));

}

/*
$Description:
	mms-->mmi, 请求call mmisys_drawfillrect
*/
void S_MMS_MMI_DRAWFILLRECT_IND(T_MMS_MMI_DRAWFILLRECT_IND * parameter)
{
	TRACE_EVENT("S_MMS_MMI_DRAWFILLRECT_IND");
	psa_MMS_MMI_IND(S_MMS_MMI_DRAWFILLRECT_IND_ID, parameter, sizeof(T_MMS_MMI_DRAWFILLRECT_IND));

}

/*
$Description:
	mms-->mmi, 请求call mmisys_refreshwindow
*/
void S_MMS_MMI_REFRESHWINDOW_IND(T_MMS_MMI_REFRESHWINDOW_IND * parameter)
{
	TRACE_EVENT("S_MMS_MMI_REFRESHWINDOW_IND");
	psa_MMS_MMI_IND(S_MMS_MMI_REFRESHWINDOW_IND_ID, parameter, sizeof(T_MMS_MMI_REFRESHWINDOW_IND));

}
	
/* mms task
mms status ind to aci(mmi)

   * 
   *                    |
   *                   MMS                 
   *                    |
   *                    v
   *      +-----------(ACI)----------+
   *      |                          |
   *      |            MMI        	|
   *      |                          |
   *      +-------------^------------+
   *                    
  */
void   psa_MMS_MMI_IND (BYTE event_id,void* data, USHORT data_size)
{
	PALLOC_SDU (mms_mmi_ind, MMS_MMI_IND, 8*data_size);
	mms_mmi_ind->event_id = event_id;
	mms_mmi_ind->sdu.o_buf     = 0;
	mms_mmi_ind->sdu.l_buf     = 8*data_size;
	memcpy(mms_mmi_ind->sdu.buf,data,data_size);

	TRACE_EVENT("psa_MMS_MMI_IND");
	
        PSENDX (MMI, mms_mmi_ind);
}



/***************************************
*											*
*				MMI TASK					*
*											*
****************************************/
/*mmi task
$Description:
	mms-->mmi, 
*/

void M_MMS_MMI_READY_CNF(T_MMS_MMI_READY_CNF * parameter)
{

	TRACE_EVENT("M_MMS_MMI_READY_CNF");
	switch(parameter->event_id)
	{
	case M_MMI_MMS_PLAYERONDRAW_IND_ID://player_on_draw done
		{
			extern void player_on_draw_done();
			player_on_draw_done();
		}
		break;
	case M_MMI_MMS_MSETCMSG_IND_ID://manager_set_currentmessage done
		{
			extern void mms_set_currentmsg_done();
			mms_set_currentmsg_done();
		}
		break;
	case M_MMI_MMS_EDTONINIT_IND_ID://editor_on_initialize
		{

			extern void editor_on_initialize_done(void *pData);
			editor_on_initialize_done(parameter->pData);
		}
		break;
	case M_MMI_MMS_PLAYERONPAGE_IND_ID://player_on_pageXXX
		{

			extern void player_on_page_done(void *pData);
			player_on_page_done(parameter->pData);
		}
		break;
	case M_MMI_MMS_DRAWAIBUM_IND_ID://MMS_DrawXXXAlbum
		{
			extern void MMS_DrawXXXAlbum_done();
			MMS_DrawXXXAlbum_done();
		}
		break;
	case M_MMI_MMS_MIMNGRINIT_IND_ID://MI_manager_on_initialize
		{
			extern void  MI_manager_on_initialize_done(unsigned int mask);
			MI_manager_on_initialize_done((unsigned int) parameter->pData);
		}
		break;
	default:
		break;
	}
}


/*
$Description:
	mms-->mmi, 
*/
void M_MMS_MMI_PLAYERINITIALIZE_CNF(T_MMS_MMI_PLAYERINITIALIZE_CNF * parameter)
{

	TRACE_EVENT("M_MMS_MMI_PLAYERINITIALIZE_CNF");
	
	{
		void player_initialize_done(void *pPlayer, int retval);
		player_initialize_done(parameter->pPlayer,  parameter->retval);
	}
}

/*
$Description:
	mms-->mmi, 
*/
void M_MMS_MMI_MMSBITBLT_IND(T_MMS_MMI_MMSBITBLT_IND * parameter)
{
	
	TRACE_EVENT("M_MMS_MMI_MMSBITBLT_IND");
	{
		extern MMS_U8 mmiMMSBitBlt( MMS_U32 posX,	MMS_U32 posY, MMS_U32 width, MMS_U32 height,MMS_VOID * BmpPtr);
		mmiMMSBitBlt( parameter-> posX,	parameter-> posY, parameter-> width, parameter-> height,parameter-> BmpPtr);
	}
}

/*
$Description:
	mms-->mmi, 
*/
void M_MMS_MMI_DRAWPOINT_IND(T_MMS_MMI_DRAWPOINT_IND * parameter)
{
	
	TRACE_EVENT("M_MMS_MMI_DRAWPOINT_IND");
	{
		extern MMS_VOID mmisys_drawpoint(MMS_S32 x, MMS_S32 y, MMS_COLOR color);
		mmisys_drawpoint( parameter->x,	parameter-> y, parameter-> color);
	}
}

/*
$Description:
	mms-->mmi, 
*/
void M_MMS_MMI_DRAWTEXT_IND(T_MMS_MMI_DRAWTEXT_IND * parameter)
{
	
	TRACE_EVENT("M_MMS_MMI_DRAWTEXT_IND");
	{
		MMS_S32 mmisys_drawtext(MMS_S32 x, MMS_S32 y, MMS_S8* string, MMS_U8 font, MMS_COLOR color);
		mmisys_drawtext( parameter-> x,	parameter->y, parameter-> string, parameter->font,parameter-> color);
	}
}

/*
$Description:
	mms-->mmi, 
*/
void M_MMS_MMI_DRAWFILLRECT_IND(T_MMS_MMI_DRAWFILLRECT_IND * parameter)
{
	
	TRACE_EVENT("M_MMS_MMI_DRAWFILLRECT_IND");
	{
		MMS_VOID mmisys_drawfillrect(MMS_S32 x, MMS_S32 y, MMS_S32 width, MMS_S32 height, MMS_COLOR color);
		mmisys_drawfillrect( parameter-> x,	parameter-> y, parameter-> width, parameter-> height,parameter-> color);
	}
}

/*
$Description:
	mms-->mmi, 
*/
void M_MMS_MMI_REFRESHWINDOW_IND(T_MMS_MMI_REFRESHWINDOW_IND * parameter)
{
	
	TRACE_EVENT("M_MMS_MMI_REFRESHWINDOW_IND");
	{
		MMS_VOID	mmisys_refreshwindow();
		mmisys_refreshwindow();
	}
}


/****************************************************
$Description:
	process mms->mmi ind in mmi task
*******************************************************/
GLOBAL const void mms_mmi_ind (
                                  T_MMS_MMI_IND *mms_mmi_ind
                                )
{
#define MMS_MMI_IND_HANDLE(N)\
{\
	T_MMS_MMI_##N##_IND (parameter);\
	memcpy(&parameter, mms_mmi_ind->sdu.buf,mms_mmi_ind->sdu.l_buf/8);\
	M_MMS_MMI_##N##_IND(&parameter);\
}

#define MMS_MMI_CNF_HANDLE(N)\
{\
	T_MMS_MMI_##N##_CNF (parameter);\
	memcpy(&parameter, mms_mmi_ind->sdu.buf,mms_mmi_ind->sdu.l_buf/8);\
	M_MMS_MMI_##N##_CNF(&parameter);\
}
	  //PACCESS(mmi_mms_ind);

	  TRACE_EVENT("mms_mmi_ind()");

	  
	  switch(mms_mmi_ind->event_id)
  	{
	case S_MMS_MMI_READY_CNF_ID:
		MMS_MMI_CNF_HANDLE(READY)
		break;
	case S_MMS_MMI_PLAYERINITIALIZE_CNF_ID:
		MMS_MMI_CNF_HANDLE(PLAYERINITIALIZE)
		break;
	case S_MMS_MMI_MMSBITBLT_IND_ID:
		MMS_MMI_IND_HANDLE(MMSBITBLT)
		break;
	case S_MMS_MMI_DRAWPOINT_IND_ID:
		MMS_MMI_IND_HANDLE(DRAWPOINT)
		break;
	case S_MMS_MMI_DRAWTEXT_IND_ID:
		MMS_MMI_IND_HANDLE(DRAWTEXT)
		break;
	case S_MMS_MMI_DRAWFILLRECT_IND_ID:
		MMS_MMI_IND_HANDLE(DRAWFILLRECT)
		break;
	case S_MMS_MMI_REFRESHWINDOW_IND_ID:
		MMS_MMI_IND_HANDLE(REFRESHWINDOW)
		break;
	default:
		break;
  	}
	  /*It is no necessary because aci will free it*/
	 // PFREE(mmi_mms_ind);
}


⌨️ 快捷键说明

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