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

📄 pcsyn_application.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 4 页
字号:
	g_pcsyncstatus  =0;
}
#else
void Waitdata_getsms(void * p, BYTE ctype,U8 para)
{
	static T_MFW_SMS_MT *mt;
	static T_MFW_SMS_MO *mo;

	PC_SMS_Content * SMS_content;
//	FlashSms *buffer;
	
	if(pc_waitdata.status == 0)
		return;
	
	pc_waitdata.status = 0;
	if(pc_waitdata.info == 0)
		return;
	if(pc_waitdata.info->status != PC_Error_WaitData)
		return;
	//fill info by parameter
	if (p NEQ NULL)
	{
		SMS_content=(PC_SMS_Content *)(pc_waitdata.info->pdata_dlbuff); 
		//buffer= &(SMS_content->flashsmsitem);
		switch(ctype)
		{
			case MFW_SMS_MT:
				mt=(T_MFW_SMS_MT *)p; 
				SMS_content->msg_len=mt->msg_len;
				memcpy((char*)SMS_content->sms_msg,(char*)mt->sms_msg,mt->msg_len);
				SMS_content->dcs=mt->dcs;
				break;
			case MFW_SMS_MO:
				mo=(T_MFW_SMS_MO *)p; 
				SMS_content->msg_len=mo->msg_len;
				memcpy((char*)SMS_content->sms_msg,(char*)mo->sms_msg,mo->msg_len);
				SMS_content->dcs=mo->dcs;
				break;
		}
		pc_waitdata.info->size_dlbuff=sizeof(PC_SMS_Content)-1+SMS_content->msg_len;
	} 
		

	//PCSYN_TRACE_EVENT(("<<<<callback size=%d ,%08x>>>>",buffer->msg_len,buffer));
	//PCSYN_TRACE_EVENT(("<<<<g_pcsyncstatus=%d>>>>",g_pcsyncstatus));	
	pc_waitdata.info  =0;
	{
		T_MMI_PCSYN_DATAWAIT_IND parameter;
//zkc add	07/22/04
		switch(para)
		{
			case MFW_SMS_OK:
				parameter.dummy=PC_Error_NoError;
				PCSYN_TRACE_EVENT(("<<<<get sms ok callback >>>>"));
				break;
			case CMD_SMS_READ:             /* read message */
				parameter.dummy=App_Error_ReadError;
				PCSYN_TRACE_EVENT(("<<<<get sms fail callback >>>>"));
				break;
			default:
				parameter.dummy=App_Error_DefaultError;
				PCSYN_TRACE_EVENT(("<<<<get sms default fail callback=%d>>>>",para));
		}
		M_MMI_PCSYN_WAITDATA_IND(&parameter);

	}
	g_pcsyncstatus  =0;
}
#endif

unsigned int delshortmessage(PC_Interface_Info * info,BYTE ctype, BYTE index)
{
	switch(ctype)
	{
		case PCSYN_SMS_FLASH://delete sms in flash
			if(index>FlashSMStotal) 
				return App_Error_DeleteError;
			Fresh_Del_TableId(index);
			FlashSMStotal--;
			break;
		case PCSYN_SMS_ALL://delete sms in sms
//				MI_dbgPrintf("<<<<DelSIMSMS index=:%d>>>>",delsms_content->index);
			//需要做出错处理	
			if (sms_exists(index) NEQ MFW_SMS_OK)
				return App_Error_DeleteError;
			g_pcsyncstatus = 1;
			sms_msg_delete(index);
			info->status = PC_Error_WaitData; 
			pc_waitdata.info = info; 
			pc_waitdata.status=1;
			return PC_Error_WaitData;//返回值为等待,用于异步操作

			break;
		default:
			return App_Error_DeleteError;
	}
	return App_Error_NoError;
}


void Waitdata_delsms(U8 para)
{
	if(pc_waitdata.status == 0)
		return;
	
	pc_waitdata.status = 0;
	if(pc_waitdata.info == 0)
		return;
	if(pc_waitdata.info->status != PC_Error_WaitData)
		return;
	//fill info by parameter
	
//	PCSYN_TRACE_EVENT(("<<<<delsms callback >>>>"));
	pc_waitdata.info  =0;
	{
//zkc add    07/22/04
		T_MMI_PCSYN_DATAWAIT_IND parameter;
		switch(para)
		{
			case MFW_SMS_OK:
				parameter.dummy=PC_Error_NoError;
				PCSYN_TRACE_EVENT(("<<<<delete sms ok callback >>>>"));
				break;
			case CMD_SMS_DELETE:		/* delete message */
				parameter.dummy=App_Error_DeleteError;
				PCSYN_TRACE_EVENT(("<<<<delete sms fail callback >>>>"));
				break;
			default:
				parameter.dummy=App_Error_DefaultError;
				PCSYN_TRACE_EVENT(("<<<<delete sms default fail callback=%d>>>>",para));
		}
		M_MMI_PCSYN_WAITDATA_IND(&parameter);

	}
	g_pcsyncstatus  =0;
}

void Waitdata_sms(U8 para)
{
	if(pc_waitdata.status == 0)
		return;
	
	pc_waitdata.status = 0;
	if(pc_waitdata.info == 0)
		return;
	if(pc_waitdata.info->status != PC_Error_WaitData)
		return;
	//fill info by parameter
	
	pc_waitdata.info  =0;
	{
//zkc add    07/22/04
		T_MMI_PCSYN_DATAWAIT_IND parameter;
		switch(para)
		{
			case MFW_SMS_OK:
				parameter.dummy=PC_Error_NoError;
				PCSYN_TRACE_EVENT(("<<<<delete sms ok callback >>>>"));
				break;
			default:
				parameter.dummy=App_Error_DefaultError;
				PCSYN_TRACE_EVENT(("<<<<dafault sms fail callback=%d>>>>",para));
		}
		M_MMI_PCSYN_WAITDATA_IND(&parameter);

	}
	g_pcsyncstatus  =0;
}

unsigned int CopyShortMessage(PC_Interface_Info * info,BYTE ctype, BYTE cindex)
{
//这里的ctype是指复制完后同时删除这条记录
	PC_SMS_Content * SMS_content=(PC_SMS_Content *)info->pdata_ulbuff; 
//	FlashSms *buffer = &(SMS_content->flashsmsitem);


	int j,index;
	FlashSms * tmp;//存放flashsms的信息
	T_MMI_FLASH_SMS_INDEX * tmp_index;
	T_MFW_SMS_IDX smsmsg_info;//存放sim卡sms的信息

//	PCSYN_TRACE_EVENT(("<<<<service center:%s>>>>",sms_parameter.sc_addr));
//	PCSYN_TRACE_EVENT(("<<<<add1=%s,Send add=:%s,SendMsg=:%s,len=%d>>>>",buffer->addr,NumberBuffer,TextBuffer,buffer->msg_len));

	if (sms_exists(cindex) NEQ MFW_SMS_OK)
			return App_Error_CopyError;


	j=Find_avail();//	find available flash sms table location,它是一个空的记录,可以存放要拷贝的短信
	index=j+CurrentFlashSmsTable*FlashSMS_table_len;
	tmp=&FFS_SMSData.NVMSMS[j];//tmp中存放的是FFS_SMSData内存块可以写入数据的指针
	tmp_index=&Flash_sms_messages[index];//tmp中存放的是Flash_sms_messages内存块可以写入数据的指针

	if( FlashSMStotal < FLSAH_SMS_NUM )
	{
		g_pcsyncstatus  =1;
		if ((SMS_content->state==PCSYN_SMS_STOR_UNSENT) ||(SMS_content->state==PCSYN_SMS_STOR_SENT) )
		{
			FlashSMStotal++;
			sms_copy_idx(cindex, &smsmsg_info);//获得要复制的sim卡记录的索引信息
			tmp->id=FlashSMStotal;//将复制的短消息放到flashlist的末尾
			memcpy((char *)tmp->addr,
			       (char *)SMS_content->addr,MFW_NUM_LEN);
			if (SMS_content->dcs!=0x00)
			{//如果是unicode码,需要跳过0x80
				memcpy((char *)tmp->sms_msg, &SMS_content->sms_msg[1],SMS_content->msg_len-1);
				tmp->msg_len=SMS_content->msg_len-1;
			}
			else
			{
				memcpy((char *)tmp->sms_msg,
				       (char *)SMS_content->sms_msg,SMS_content->msg_len);
				tmp->msg_len=SMS_content->msg_len;
			}	
			if( smsmsg_info.stat == MFW_SMS_STOR_UNSENT )
			{
				tmp->state=MFW_SMS_STOR_UNSENT;
				Flash_sms_messages[index].state=MFW_SMS_STOR_UNSENT;
			}
			else// if(msg_info.stat == PCSYN_SMS_STOR_UNSENT)
			{
//				PCSYN_TRACE_EVENT(("<<<<copy stat=%d,msg_type=%d,unsent=%d>>>>",smsmsg_info.stat,smsmsg_info.msg_type,MFW_SMS_STOR_UNSENT));
				tmp->state=MFW_SMS_STOR_SENT;
				Flash_sms_messages[index].state=MFW_SMS_STOR_SENT;
			}
			tmp->dcs=SMS_content->dcs;
			tmp->flag=TRUE;
			Flash_sms_messages[index].index=index;
			Flash_sms_messages[index].id=FlashSMStotal;
			memcpy((char *)Flash_sms_messages[index].addr,
			       (char *)SMS_content->addr,MFW_NUM_LEN);
			Flash_sms_messages[index].flag=TRUE;
			flash_Smswrite(FlashSMSTable[CurrentFlashSmsTable]);       
		}
		else if(SMS_content->state==PCSYN_SMS_MT)
		{
			FlashSMStotal++;
			tmp->id=FlashSMStotal;
			memcpy((char *)tmp->addr,
			       (char *)SMS_content->addr,MFW_NUM_LEN);
			memcpy(&tmp->time, 
			       &SMS_content->time, sizeof(T_MFW_SMS_SCTP));
			if (SMS_content->dcs!=0x00)
			{//如果是unicode码,需要跳过0x80
				memcpy((char *)tmp->sms_msg, &SMS_content->sms_msg[1],SMS_content->msg_len-1);
				tmp->msg_len=SMS_content->msg_len-1;
			}
			else
			{
				memcpy((char *)tmp->sms_msg,
				       (char *)SMS_content->sms_msg,SMS_content->msg_len);
				tmp->msg_len=SMS_content->msg_len;
			}	
			tmp->state=MFW_SMS_MT;
			tmp->dcs=SMS_content->dcs;
			tmp->flag=TRUE;
			memcpy(&tmp_index->time, 
			       &SMS_content->time, sizeof(T_MFW_SMS_SCTP));//收件箱有时间信息,发件箱没有
			tmp_index->index=index;
			tmp_index->id=FlashSMStotal;
			tmp_index->state=MFW_SMS_MT;
			memcpy((char *)tmp_index->addr,(char *)SMS_content->addr,MFW_NUM_LEN);
			tmp_index->flag=TRUE;
			flash_Smswrite(FlashSMSTable[CurrentFlashSmsTable]);        
		}
		g_pcsyncstatus  =0;

		if (ctype==1) //表示需要删除sim卡中的记录
		{
//			PCSYN_TRACE_EVENT(("<<<<Copy finished,del=%d>>>>",ctype));
			g_pcsyncstatus = 1;
			sms_msg_delete(cindex);
			info->status = PC_Error_WaitData; 
			pc_waitdata.info = info; 
			pc_waitdata.status=1;
			return PC_Error_WaitData;//返回值为等待,用于异步操作
		}
	}
	else
	{
//		PCSYN_TRACE_EVENT(("<<<<sms full>>>>"));
		return App_Error_CopyError;
	}
	return App_Error_NoError;
}


unsigned int SendShortMessage(PC_Interface_Info * info, BYTE stype,BYTE rptype)
{
	PC_SMS_Content * SMS_content=(PC_SMS_Content *)info->pdata_ulbuff; 
//	FlashSms *buffer = &(SMS_content->flashsmsitem);
	USHORT outLen;
	T_MFW submit_status;   /* Result of SMS send operation. */
	
	static T_MFW_SMS_MSG msg_list[MAX_MESSAGES];
	static T_MFW_SMS_INFO  sms_parameter;
	static char NumberBuffer[NUMBER_LENGTH];  
	static char TextBuffer[MAX_MSG_LEN_ARRAY];
	static UBYTE* msgBuffer;   //Pointer to data buffer 
	T_MFW_SMS_MO_TYPE sendtype;
	
	memset(&NumberBuffer,0,sizeof(NumberBuffer));
	memset(&TextBuffer,0,sizeof(TextBuffer));
	strcpy(NumberBuffer,SMS_content->addr);
	memcpy(TextBuffer,SMS_content->sms_msg,SMS_content->msg_len);
	msgBuffer = mmi_Sys_Sim(TextBuffer, &outLen,&(sms_parameter.dcs));
	
	SmsSend_set_dcs_number (&sms_parameter);
//	SmsSend_get_config_data(&sms_parameter);
//	MI_dbgPrintf("<<<<service center:%s>>>>",sms_parameter.sc_addr);
//	PCSYN_TRACE_EVENT(("<<<<add1=%s,Send add=:%s,len=%d>>>>",buffer->addr,NumberBuffer,buffer->msg_len));

	g_pcsyncstatus = 1;

#define SMSDEBUG
#ifdef	SMSDEBUG
       switch (stype)
       {
	case PC_SMS_status_SendSMS:
		if (rptype==0)//表示需要返回
			sendtype=MFW_SMS_REPLY;
		else
			sendtype=MFW_SMS_SUBMIT;
		submit_status = sms_submit( sendtype,                  /* type of the message*/
                                    (char *)NumberBuffer,        /* dest. address      */
                                    msgBuffer,                            /* sms message        */
                                    outLen,          /* lenght of message  */
                                    (char *)sms_parameter.sc_addr);/* sevice center num. */
		break;
	case PC_SMS_status_SaveSendSMS:		
		if( memory.used == memory.total && memory.total !=0 )
			return App_Error_StoreError;
		/*if (rptype==0)
			sendtype=MFW_SMS_REPLY_SENT;
		else*/
			sendtype=MFW_SMS_SUBMIT_SENT;
 		submit_status=sms_store( sendtype, (char *)NumberBuffer, msgBuffer, outLen, NULL);
		break;
 	case PC_SMS_status_SaveSMS:		
		if( memory.used == memory.total && memory.total !=0 )
			return App_Error_StoreError;
		/*if (rptype==0)
			sendtype=MFW_SMS_REPLY;
		else*/
			sendtype=MFW_SMS_SUBMIT;
		submit_status=sms_store( sendtype, (char *)NumberBuffer, msgBuffer, outLen, NULL);
		
		break;
	 }
   
	info->status = PC_Error_WaitData; 
	pc_waitdata.info = info; 
	pc_waitdata.status=1;
	return PC_Error_WaitData;//返回值为等待,用于异步操作
#else
	return App_Error_NoError;
#endif
}	


void Waitdata_sendsms(U8 para)
{
	if(pc_waitdata.status == 0)
		return;
	
	pc_waitdata.status = 0;
	if(pc_waitdata.info == 0)
		return;
	if(pc_waitdata.info->status != PC_Error_WaitData)
		return;
	//fill info by parameter
	
	pc_waitdata.info  =0;
	{
	//zkc add 07/22/04
		T_MMI_PCSYN_DATAWAIT_IND parameter;
		switch(para)
		{
			case MFW_SMS_OK:
				parameter.dummy=PC_Error_NoError;
				PCSYN_TRACE_EVENT(("<<<<send sms ok callback >>>>"));
				break;
			case CMD_SMS_SUBMIT:           /* send message */
				parameter.dummy=App_Error_SendError;
				PCSYN_TRACE_EVENT(("<<<<Send sms fail callback >>>>"));
				break;
			case CMD_SMS_READ:             /* read message */
				parameter.dummy=App_Error_ReadError;
				break;
			case CMD_SMS_STORE:            /* save message */
				parameter.dummy=App_Error_StoreError;
				break;
			case CMD_SMS_DELETE:		/* delete message */
				parameter.dummy=App_Error_DeleteError;
				break;
			default:
				parameter.dummy=App_Error_DefaultError;
				PCSYN_TRACE_EVENT(("<<<<send sms default fail callback=%d>>>>",para));
		}

		M_MMI_PCSYN_WAITDATA_IND(&parameter);

	}
	//
	g_pcsyncstatus  =0;
}

void Waitdata_storesms(U8 para)
{
	if(pc_waitdata.status == 0)
		return;
	
	pc_waitdata.status = 0;
	if(pc_waitdata.info == 0)
		return;
	if(pc_waitdata.info->status != PC_Error_WaitData)
		return;
	//fill info by parameter
	
	pc_waitdata.info  =0;
	{
	//zkc add 07/22/04
		T_MMI_PCSYN_DATAWAIT_IND parameter;
		switch(para)
		{
			case MFW_SMS_OK:
				parameter.dummy=PC_Error_NoError;
				PCSYN_TRACE_EVENT(("<<<<store sms ok callback >>>>"));
				break;
			case CMD_SMS_STORE:            /* save message */
				parameter.dummy=App_Error_StoreError;
				PCSYN_TRACE_EVENT(("<<<<store sms fail callback >>>>"));
				break;
			default:
				parameter.dummy=App_Error_DefaultError;
				PCSYN_TRACE_EVENT(("<<<<store sms default fail callback=%d>>>>",para));
		}

		M_MMI_PCSYN_WAITDATA_IND(&parameter);

	}
	//
	g_pcsyncstatus  =0;
}


unsigned int pc_interface_SMS(PC_Interface_Info * info, PC_App_Cmd_SMS *cmd)

⌨️ 快捷键说明

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