📄 pcsyn_application.c
字号:
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(¶meter);
}
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(¶meter);
}
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(¶meter);
}
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(¶meter);
}
//
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(¶meter);
}
//
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 + -