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

📄 messages.cpp

📁 mtk simulator v2 new source code
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/*****************************************************************************
*  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).
*
*****************************************************************************/
// Messages.cpp: implementation of the SMS Message Req Handling.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Messages.h"
#include "stdio.h"
#include "MemAllocator.h"
#include "stdlib.h"
#include "time.h"
#include "string.h"

U8 voicemailcount = 0;
static unreadCount = 0;
static mmi_call_price_unit_req_struct PriceUnitData;

U8 LastListReq = 0;		// 1 For Inbox,	2 For Outbox
U16 ReferenceNumber = 1;
struct InBoxStructType
{	
	smsal_inbox_struct listInfo;
	mmi_sms_get_msg_rsp_struct message;
	char  messageSpace[160];
}InboxMsgStruct;

struct 
{
	U8 count;
	struct InBoxStructType inBoxStruct[MAX_MESSAGES_LIMIT];
}inbox;

//abhi:start:voicemail box structure
struct
{
	U8 count;
	mmi_sms_get_mailbox_address_rsp_struct vmbox; 
}voicemailbox;
//abhi:End

struct OutBoxStructType
{	
	smsal_outbox_struct listInfo;
	mmi_sms_get_msg_rsp_struct message;
	char  messageSpace[160];
}outboxMsgStruct;

struct OutBoxType 
{
	U8 count;
	struct OutBoxStructType outBoxStruct[MAX_MESSAGES_LIMIT];
}outbox;

smsal_prefer_storage_struct gMemoryStatus = { 0 , 1, 2, 4, 5, 6, 20, 20, 20 }; //we can store total 20 messages in inbox+outbox

void *gSMSBuffer;


void *SendSMSResponse()
{
	mmi_sms_send_msg_req_struct	* SendSMSReq = (mmi_sms_send_msg_req_struct *)gSMSBuffer;

	mmi_sms_send_msg_rsp_struct	* SendSMSRsp = (mmi_sms_send_msg_rsp_struct	* )
					CMemAllocator::MyMallocDataPtr(sizeof(*SendSMSRsp));
/* Start : JP : 20050515 */
	SendSMSRsp->result = (kal_bool)TRUE;
	SendSMSRsp->cause = 8;
	SendSMSRsp->mr = 0;
	SendSMSRsp->msg_len = 0;
	SendSMSRsp->ref_count = 0;
	strcpy((S8*)SendSMSRsp->scts,(S8*)"0000000");
	SendSMSRsp->seq_num = 0;
/* End : JP : 20050515 */
	return (void *)SendSMSRsp;
}

void *SendMessageList()
{
	mmi_sms_get_msg_list_req_struct *SMSListReq = ( mmi_sms_get_msg_list_req_struct * )gSMSBuffer;
	mmi_sms_get_msg_list_rsp_struct *ListResponse = (mmi_sms_get_msg_list_rsp_struct *)
			CMemAllocator::MyMallocDataPtr(sizeof(*ListResponse));
	memset( ListResponse, 0, sizeof(mmi_sms_get_msg_list_rsp_struct) );
//	Code Start For Inbox List 
	if( SMSListReq->status == 5 )
	{
		readSMSFile(INBOX_FILE_INDEX);
		LastListReq = 1;
		ListResponse->inbox.msg_count = SMSListReq->no_msg;//inbox.count;
		//for( U8 i = 0 ; i<inbox.count; i++ )
		for( U8 i = SMSListReq->start_index, j=0 ; i<SMSListReq->start_index+SMSListReq->no_msg; i++,j++ )
		{
			ListResponse->inbox.inbox_list[j].index = i;
			ListResponse->inbox.inbox_list[j].status = inbox.inBoxStruct[i].listInfo.status;
			ListResponse->inbox.inbox_list[j].storage_type = 1;
			memcpy( &ListResponse->inbox.inbox_list[j].oa.number, &inbox.inBoxStruct[i].listInfo.oa.number,
							sizeof(l4c_number_struct) );
			memcpy( &ListResponse->inbox.inbox_list[j].concat_info,
					&inbox.inBoxStruct[i].listInfo.concat_info,
					sizeof(smsal_concat_struct) );
			memcpy( &ListResponse->inbox.inbox_list[j].scts,
					&inbox.inBoxStruct[i].listInfo.scts,
					sizeof(ListResponse->inbox.inbox_list[j].scts) );
		}
	}
	else if( SMSListReq->status == 6 )
	{
		readSMSFile(OUTBOX_FILE_INDEX);
		LastListReq = 2;
		ListResponse->outbox.msg_count = SMSListReq->no_msg;//outbox.count;
		//for( U8 i = 0 ; i<outbox.count; i++ )
		for( U8 i = SMSListReq->start_index,j=0 ; i<SMSListReq->start_index+SMSListReq->no_msg; i++,j++ )
		{
			ListResponse->outbox.outbox_list[j].index = i;
			ListResponse->outbox.outbox_list[j].status = outbox.outBoxStruct[i].listInfo.status;
			ListResponse->outbox.outbox_list[j].storage_type = 1;
			memcpy( &ListResponse->outbox.outbox_list[j].da.number,
					&outbox.outBoxStruct[i].listInfo.da.number,
							sizeof(l4c_number_struct) );
			memcpy( &ListResponse->outbox.outbox_list[j].concat_info,
					&outbox.outBoxStruct[i].listInfo.concat_info,
					sizeof(smsal_concat_struct) );
		}
	}
	return (void *)ListResponse;
}


void SaveVoiceMailBoxNumbers()
{
	char vmdata1[]="VoiceMailNumber1";
	char vmnumber1[]="11111";

	char vmdata2[]="VoiceMailNumber2";
	char vmnumber2[]="22222";

	mmi_sms_get_mailbox_address_rsp_struct *VoicemailGetRsp= & voicemailbox.vmbox;
	
	memset(& voicemailbox.vmbox,0,sizeof(voicemailbox.vmbox));

	voicemailbox.count=1; //abhi:

	VoicemailGetRsp->result = KAL_TRUE;
	VoicemailGetRsp->mailbox_num = 2;

	VoicemailGetRsp->mailbox_info[0].name.name_length = strlen(vmdata1);
	VoicemailGetRsp->mailbox_info[0].name.name_dcs = 4;
	strcpy((char*)VoicemailGetRsp->mailbox_info[0].name.name,vmdata1);
	
	VoicemailGetRsp->mailbox_info[0].number_info.type = 145;
	strcpy((char*)VoicemailGetRsp->mailbox_info[0].number_info.number,vmnumber1);
	VoicemailGetRsp->mailbox_info[0].number_info.length= strlen(vmnumber1);

	VoicemailGetRsp->mailbox_info[1].name.name_length = strlen(vmdata2);
	VoicemailGetRsp->mailbox_info[1].name.name_dcs = 4;
	strcpy((char*)VoicemailGetRsp->mailbox_info[1].name.name,vmdata2);
	
	VoicemailGetRsp->mailbox_info[1].number_info.type = 129;
	strcpy((char*)VoicemailGetRsp->mailbox_info[1].number_info.number,vmnumber2);
	VoicemailGetRsp->mailbox_info[1].number_info.length= strlen(vmnumber2);


	memcpy (&voicemailbox.vmbox,VoicemailGetRsp,sizeof(mmi_sms_get_mailbox_address_rsp_struct));

	WriteVoiceMailFile();

}

void *SendGetVoicemailAddressRsp()
{
	mmi_sms_get_mailbox_address_rsp_struct *VoicemailGetRsp= (mmi_sms_get_mailbox_address_rsp_struct *)
		CMemAllocator::MyMallocDataPtr(sizeof(*VoicemailGetRsp));

	memset(VoicemailGetRsp,0,sizeof(*VoicemailGetRsp));
	ReadVoiceMailFile();
	memcpy(VoicemailGetRsp,&voicemailbox.vmbox,sizeof(*VoicemailGetRsp));
	
	VoicemailGetRsp->result= KAL_TRUE; // for ok 0 for fail 1;
	
	voicemailcount++;

	return (void*)VoicemailGetRsp; 

}
void *SendSetVoicemailAddressRsp()
{
	mmi_sms_set_mailbox_address_req_struct *VoicemailSetReq = (mmi_sms_set_mailbox_address_req_struct *)gSMSBuffer;

	mmi_sms_set_mailbox_address_rsp_struct *VoicemailSetRsp = (mmi_sms_set_mailbox_address_rsp_struct *)
		CMemAllocator::MyMallocDataPtr(sizeof(mmi_sms_set_mailbox_address_rsp_struct));

	mmi_sms_get_mailbox_address_rsp_struct *VoicemailGetRsp= (mmi_sms_get_mailbox_address_rsp_struct *)
		CMemAllocator::MyMallocDataPtr(sizeof(mmi_sms_get_mailbox_address_rsp_struct));


	memset(VoicemailSetRsp,0,sizeof(mmi_sms_set_mailbox_address_rsp_struct));
	memset(VoicemailGetRsp,0,sizeof(*VoicemailGetRsp));

	ReadVoiceMailFile();
	memcpy(VoicemailGetRsp,&voicemailbox.vmbox,sizeof(*VoicemailGetRsp));

	if(VoicemailSetReq->mailbox_num == 0)
	{
		VoicemailGetRsp->mailbox_info[0].number_info.type = VoicemailSetReq->num_addr.type;
    	memcpy(VoicemailGetRsp->mailbox_info[0].number_info.number,VoicemailSetReq->num_addr.number,VoicemailSetReq->num_addr.length);
		VoicemailGetRsp->mailbox_info[0].number_info.length= VoicemailSetReq->num_addr.length;
	}

	if(VoicemailSetReq->mailbox_num == 1) 
	{
		VoicemailGetRsp->mailbox_info[1].number_info.type = VoicemailSetReq->num_addr.type;
		memcpy(VoicemailGetRsp->mailbox_info[1].number_info.number,VoicemailSetReq->num_addr.number,VoicemailSetReq->num_addr.length);
		VoicemailGetRsp->mailbox_info[1].number_info.length= VoicemailSetReq->num_addr.length;
	}

	memcpy (&voicemailbox.vmbox,VoicemailGetRsp,sizeof(mmi_sms_get_mailbox_address_rsp_struct));
	WriteVoiceMailFile();

	VoicemailSetRsp->result = KAL_TRUE;
	VoicemailSetRsp->cause = 0;

	return (void *)VoicemailSetRsp;
}

//abhi:End


void *GetMemoryStorage()
{
	mmi_sms_get_preferred_storage_rsp_struct *MemoryRsp = (	mmi_sms_get_preferred_storage_rsp_struct *)CMemAllocator::MyMallocDataPtr(sizeof(mmi_sms_get_preferred_storage_rsp_struct));
	memset( MemoryRsp, 0, sizeof(mmi_sms_get_preferred_storage_rsp_struct));
	MemoryRsp->result = KAL_TRUE;
	memcpy( &MemoryRsp->info, &gMemoryStatus, sizeof(smsal_prefer_storage_struct));
	//MemoryRsp->info.used2 = 0;
	readSMSFile(INBOX_FILE_INDEX);
	readSMSFile(OUTBOX_FILE_INDEX);
	//abhi
	if (gMemoryStatus.mem2 == 0) //for SIM
		MemoryRsp->info.used2 = 0;
	else 
		MemoryRsp->info.used2 = inbox.count + outbox.count;  
/*	MemoryRsp->info.mem1 = 0;			MemoryRsp->info.used1=4;		MemoryRsp->info.total1 = 10;
	MemoryRsp->info.mem2 = 1;			MemoryRsp->info.used2=5;		MemoryRsp->info.total2 = 10;
	MemoryRsp->info.mem3 = 2;			MemoryRsp->info.used3=6;		MemoryRsp->info.total3 = 20;*/
	return (void*) MemoryRsp;
}	

void *SetMemoryStorage()
{
	mmi_sms_set_preferred_storage_req_struct *SetMemoryReq = (mmi_sms_set_preferred_storage_req_struct *)gSMSBuffer;
	mmi_sms_set_preferred_storage_rsp_struct *SetMemoryRsp = (mmi_sms_set_preferred_storage_rsp_struct *)CMemAllocator::MyMallocDataPtr(sizeof(mmi_sms_set_preferred_storage_rsp_struct));
	memset( SetMemoryRsp, 0, sizeof(mmi_sms_set_preferred_storage_rsp_struct) );
	gMemoryStatus.mem1 = SetMemoryReq->mem1;	gMemoryStatus.mem2 = SetMemoryReq->mem2;	gMemoryStatus.mem3 = SetMemoryReq->mem3;
	SetMemoryRsp->result = KAL_TRUE;	/* JP Added for PC Simulator 20050516 */
	SetMemoryRsp->param = gMemoryStatus ;
	return (void*)SetMemoryRsp;
}

void SetBufferForMessage( void * dataBuf )
{
	gSMSBuffer = dataBuf ;
}

void writeSMSFile(U8 flag)	// flag = 0 for inbox, flag = 1 for outbox
{
	FILE *fp;
	if( flag == INBOX_FILE_INDEX )
	{
		fp = fopen( INBOX_FILE, "wb" );
		fwrite(&inbox, sizeof(inbox), 1, fp );
	}
	else if( flag == OUTBOX_FILE_INDEX )
	{
		fp = fopen( OUTBOX_FILE, "wb" );
		fwrite(&outbox, sizeof(outbox), 1, fp );
	}
	if( fp != NULL )fclose(fp);
}

void readSMSFile(U8 flag)	// flag = 0 for inbox, flag = 1 for outbox
{
	FILE *fp;
	if( flag == INBOX_FILE_INDEX )
	{
		if( (fp = fopen( INBOX_FILE, "rb" )) == NULL )
		{
			//exit(0);
		}
		else
		{
			U8 i;

			unreadCount = 0;
			fread(&inbox, sizeof(inbox), 1, fp );
			for (i = 0; i < inbox.count; i++)
			{
				if (inbox.inBoxStruct[i].listInfo.status == 0)
					unreadCount++;
			}
		}
	}
	else if( flag == OUTBOX_FILE_INDEX )
	{
		if( (fp = fopen( OUTBOX_FILE, "rb" )) == NULL )
		{
			//exit(0);
		}

⌨️ 快捷键说明

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