📄 pcsyn_application.c
字号:
{
static PC_SMS_Info_dl* SMS_info_dl;
int i=0;
switch(cmd->cid2)
{
case PC_AppCID2_Read:
info->flag = PC_IF_FLAGS_DATADL;
//info->size_dlbuff = sizeof(PC_SMS_Content);
return getShortMessage( info,cmd->type, cmd->index);
break;
case PC_AppCID2_Write:
if(info->flag == PC_IF_FLAGS_CMD)
info->flag = PC_IF_FLAGS_DATAUL;
else
{
// PCSYN_TRACE_EVENT(("<<<<write_size_ulbuff:%d>>>>",info->size_ulbuff));
T_PCSYN_MMI_SENDMMS_IND parameter;
parameter.info = info;
parameter.stype = cmd->type;
parameter.rptype = cmd->index;
P_PCSYN_MMI_SENDMMS_IND(¶meter);
//return SendShortMessage(info,cmd->type,cmd->index);
return PC_Error_WaitData;
}
break;
case PC_AppCID2_Delete:
info->flag = PC_IF_FLAGS_DATADL;
info->size_dlbuff = 0;
return delshortmessage(info,cmd->type,cmd->index);
break;
case PC_AppCID2_Copy:
if(info->flag == PC_IF_FLAGS_CMD)
info->flag = PC_IF_FLAGS_DATAUL;
else
{
return CopyShortMessage(info,cmd->type,cmd->index);
}
break;
case PC_AppCID2_Info://get shortmessage info
info->flag = PC_IF_FLAGS_DATADL;
info->size_dlbuff = sizeof(PC_SMS_Info_dl);
SMS_info_dl = (PC_SMS_Info_dl *)info->pdata_dlbuff;
SMS_info_dl->FlashMOtotal=sms_flash_count(MFW_SMS_FLASH_MO);
SMS_info_dl->FlashMTtotal=sms_flash_count(MFW_SMS_FLASH_MT);
//sms_message_list(MFW_SMS_ALL, list_data->sms_messages, MAX_MESSAGES)
// SMS_info_dl->FlashSMStotal = FlashSMStotal;
SMS_info_dl->SIMMOTotal= sms_message_count(MFW_SMS_MO);
SMS_info_dl->SIMMTTotal=sms_message_count(MFW_SMS_MT);
// SmsSend_get_config_data(&sms_parameter);
// memcpy(SMS_info_dl->p0,sms_parameter.sc_addr,MAX_LEN+3);
SMS_info_dl->MaxFlashNum=FLSAH_SMS_NUM;
SMS_info_dl->MaxSIMNum=memory.total;//sim内做多可以存短消息的个数
break;
default:
return App_Error_UnknownCID2;
}
return App_Error_NoError;
}
SHORT sms_flash_count (T_MFW_SMS_STAT stat)
{
SHORT count;
int i;
count = 0;
if( stat == MFW_SMS_FLASH_MO )
{
for( i=0; i<FLSAH_SMS_NUM; i++ )
{
if( Flash_sms_messages[i].flag !=FALSE)
{
if( Flash_sms_messages[i].state== MFW_SMS_STOR_UNSENT||
Flash_sms_messages[i].state== MFW_SMS_STOR_SENT)
count++;
}
}
return count;
}
if( stat == MFW_SMS_FLASH_MT )
{
for( i=0; i<FLSAH_SMS_NUM; i++ )
{
if( Flash_sms_messages[i].flag !=FALSE)
{
if( Flash_sms_messages[i].state== MFW_SMS_MT)
count++;
}
}
return count;
}
return 0;
}
T_MFW sms_exists(SHORT index)
{
SHORT i;
static T_MFW_SMS_MSG msg_list[MAX_MESSAGES];
memset(msg_list,0,sizeof(msg_list));
sms_message_list(MFW_SMS_ALL,msg_list, MAX_MESSAGES);
for( i=0; i<MAX_MESSAGES; i++ )
{
if( msg_list[i].index EQ index )
return MFW_SMS_OK;
}
return MFW_SMS_FAIL;
}
/******************************short message end*********************************/
/********************Call Record******************/
/**************关键变量FlashDCTbData**************/
unsigned int delCallRecord(DelRec *delCR_content,int count )
{
int k;
DelRec *buffer = delCR_content;
short index;
short ctype;
BYTE idx , n;
for(k=0;k<count;k++,buffer++)
{
ctype=buffer->ctype;
index=buffer->index;//删除索引从0开始
switch(ctype)
{
case CR_TYPE_LMN:
if(index>FlashDCTbData.LMNID-1)
return App_Error_DeleteError;
n=FlashDCTbData.LMNID;
memset((char*)FlashDCTbData.LMNTable[index],'\0',24);
memset((char*)FlashDCTbData.LMNTime[index],'\0',21);
memset((char*)FlashDCTbData.Mname[index],'\0',24);
FlashDCTbData.MForNameFlag[index]=0;
for( idx=index;idx<n-1;idx++ )
{
memcpy((char*)FlashDCTbData.LMNTable[idx],(char*)FlashDCTbData.LMNTable[idx+1],24);
memcpy((char*)FlashDCTbData.Mname[idx],(char*)FlashDCTbData.Mname[idx+1],24);
FlashDCTbData.MForNameFlag[idx]=FlashDCTbData.MForNameFlag[idx+1];
memcpy((char*)FlashDCTbData.LMNTime[idx],(char*)FlashDCTbData.LMNTime[idx+1],21);
}
memset((char*)FlashDCTbData.LMNTable[n-1],'\0',24);
memset((char*)FlashDCTbData.LMNTime[n-1],'\0',21);
memset((char*)FlashDCTbData.Mname[n-1],'\0',24);
FlashDCTbData.MForNameFlag[n-1]=0;
FlashDCTbData.LMNID--;
FlashDCTbData.LMNflag[n-1]=0;
if (FlashDCTbData.MissedCallNum>0)
FlashDCTbData.MissedCallNum=FlashDCTbData.LMNID;
flash_DCTbwrite();
break;
case CR_TYPE_LRN:
if(index>FlashDCTbData.LRNID-1)
return App_Error_DeleteError;
n=FlashDCTbData.LRNID;
memset((char*)FlashDCTbData.LRNTable[index],'\0',24);
memset((char*)FlashDCTbData.LRNTime[index],'\0',21);
memset((char*)FlashDCTbData.Rname[index],'\0',24);
FlashDCTbData.RForNameFlag[index]=0;
for( idx=index;idx<n-1;idx++ )
{
memcpy((char*)FlashDCTbData.LRNTable[idx],(char*)FlashDCTbData.LRNTable[idx+1],24);
memcpy((char*)FlashDCTbData.Rname[idx],(char*)FlashDCTbData.Rname[idx+1],24);
FlashDCTbData.RForNameFlag[idx]=FlashDCTbData.RForNameFlag[idx+1];
memcpy((char*)FlashDCTbData.LRNTime[idx],(char*)FlashDCTbData.LRNTime[idx+1],21);
}
memset((char*)FlashDCTbData.LRNTable[n-1],'\0',24);
memset((char*)FlashDCTbData.LRNTime[n-1],'\0',21);
memset((char*)FlashDCTbData.Rname[n-1],'\0',24);
FlashDCTbData.RForNameFlag[n-1]=0;
FlashDCTbData.LRNID--;
flash_DCTbwrite();
break;
case CR_TYPE_LDN:
if(index>FlashDCTbData.LDNID-1)
return App_Error_DeleteError;
n=FlashDCTbData.LDNID;
memset((char*)FlashDCTbData.LDNTable[index],'\0',24);
memset((char*)FlashDCTbData.LDNTime[index],'\0',21);
memset((char*)FlashDCTbData.Dname[index],'\0',24);
FlashDCTbData.DForNameFlag[index]=0;
for( idx=index;idx<n-1;idx++ )
{
memcpy((char*)FlashDCTbData.LDNTable[idx],(char*)FlashDCTbData.LDNTable[idx+1],24);
memcpy((char*)FlashDCTbData.Dname[idx],(char*)FlashDCTbData.Dname[idx+1],24);
FlashDCTbData.DForNameFlag[idx]=FlashDCTbData.DForNameFlag[idx+1];
memcpy((char*)FlashDCTbData.LDNTime[idx],(char*)FlashDCTbData.LDNTime[idx+1],21);
}
memset((char*)FlashDCTbData.LDNTable[n-1],'\0',24);
memset((char*)FlashDCTbData.LDNTime[n-1],'\0',21);
memset((char*)FlashDCTbData.Dname[n-1],'\0',24);
FlashDCTbData.DForNameFlag[n-1]=0;
FlashDCTbData.LDNID--;
flash_DCTbwrite();
break;
default:
return App_Error_DeleteError;
}
}
return App_Error_NoError;
}
// 找到一条通话记录的信息,将其号码、姓名、时间置空,index从0到9
/*unsigned int delCallRecord(BYTE type, BYTE index)
{
BYTE idx , n;
switch(type)
{
case CR_TYPE_LMN:
if(index>FlashDCTbData.LMNID-1)
return App_Error_NoFound;
n=FlashDCTbData.LMNID;
memset((char*)FlashDCTbData.LMNTable[index],'\0',24);
memset((char*)FlashDCTbData.LMNTime[index],'\0',21);
memset((char*)FlashDCTbData.Mname[index],'\0',24);
FlashDCTbData.MForNameFlag[index]=0;
for( idx=index;idx<n-1;idx++ )
{
memcpy((char*)FlashDCTbData.LMNTable[idx],(char*)FlashDCTbData.LMNTable[idx+1],24);
memcpy((char*)FlashDCTbData.Mname[idx],(char*)FlashDCTbData.Mname[idx+1],24);
FlashDCTbData.MForNameFlag[idx]=FlashDCTbData.MForNameFlag[idx+1];
memcpy((char*)FlashDCTbData.LMNTime[idx],(char*)FlashDCTbData.LMNTime[idx+1],21);
}
memset((char*)FlashDCTbData.LMNTable[n-1],'\0',24);
memset((char*)FlashDCTbData.LMNTime[n-1],'\0',21);
memset((char*)FlashDCTbData.Mname[n-1],'\0',24);
FlashDCTbData.MForNameFlag[n-1]=0;
FlashDCTbData.LMNID--;
flash_DCTbwrite();
break;
case CR_TYPE_LRN:
if(index>=FlashDCTbData.LRNID-1)
return App_Error_NoFound;
n=FlashDCTbData.LRNID;
memset((char*)FlashDCTbData.LRNTable[index],'\0',24);
memset((char*)FlashDCTbData.LRNTime[index],'\0',21);
memset((char*)FlashDCTbData.Rname[index],'\0',24);
FlashDCTbData.RForNameFlag[index]=0;
for( idx=index;idx<n-1;idx++ )
{
memcpy((char*)FlashDCTbData.LRNTable[idx],(char*)FlashDCTbData.LRNTable[idx+1],24);
memcpy((char*)FlashDCTbData.Rname[idx],(char*)FlashDCTbData.Rname[idx+1],24);
FlashDCTbData.RForNameFlag[idx]=FlashDCTbData.RForNameFlag[idx+1];
memcpy((char*)FlashDCTbData.LRNTime[idx],(char*)FlashDCTbData.LRNTime[idx+1],21);
}
memset((char*)FlashDCTbData.LRNTable[n-1],'\0',24);
memset((char*)FlashDCTbData.LRNTime[n-1],'\0',21);
memset((char*)FlashDCTbData.Rname[n-1],'\0',24);
FlashDCTbData.RForNameFlag[n-1]=0;
FlashDCTbData.LRNID--;
flash_DCTbwrite();
break;
case CR_TYPE_LDN:
if(index>=FlashDCTbData.LDNID-1)
return App_Error_NoFound;
n=FlashDCTbData.LDNID;
memset((char*)FlashDCTbData.LDNTable[index],'\0',24);
memset((char*)FlashDCTbData.LDNTime[index],'\0',21);
memset((char*)FlashDCTbData.Dname[index],'\0',24);
FlashDCTbData.DForNameFlag[index]=0;
for( idx=index;idx<n-1;idx++ )
{
memcpy((char*)FlashDCTbData.LDNTable[idx],(char*)FlashDCTbData.LDNTable[idx+1],24);
memcpy((char*)FlashDCTbData.Dname[idx],(char*)FlashDCTbData.Dname[idx+1],24);
FlashDCTbData.DForNameFlag[idx]=FlashDCTbData.DForNameFlag[idx+1];
memcpy((char*)FlashDCTbData.LDNTime[idx],(char*)FlashDCTbData.LDNTime[idx+1],21);
}
memset((char*)FlashDCTbData.LDNTable[n-1],'\0',24);
memset((char*)FlashDCTbData.LDNTime[n-1],'\0',21);
memset((char*)FlashDCTbData.Dname[n-1],'\0',24);
FlashDCTbData.DForNameFlag[n-1]=0;
FlashDCTbData.LDNID--;
flash_DCTbwrite();
break;
default:
return App_Error_IllegalCmdData;
}
return App_Error_NoError;
}
*/
/***********************************************/
// 得到一条通话记录的信息,将其放入cr_content.content
unsigned int getCallRecord(PC_CR_Content * cr_content, BYTE type, BYTE index)
{
BYTE *buffer = cr_content->content;
BYTE *table, *name, *time;
// BYTE i = 0;
switch(type)
{
case CR_TYPE_LMN:
if(index>FlashDCTbData.LMNID-1)
return App_Error_InfoError;
table = (BYTE *)FlashDCTbData.LMNTable[index];
name = (BYTE *)FlashDCTbData.Mname[index];
time = (BYTE *)FlashDCTbData.LMNTime[index];
break;
case CR_TYPE_LRN:
if(index>FlashDCTbData.LRNID-1)
return App_Error_InfoError;
table = (BYTE *)FlashDCTbData.LRNTable[index];
name = (BYTE *)FlashDCTbData.Rname[index];
time = (BYTE *)FlashDCTbData.LRNTime[index];
break;
case CR_TYPE_LDN:
if(index>FlashDCTbData.LDNID-1)
return App_Error_InfoError;
table = (BYTE *)FlashDCTbData.LDNTable[index];
name = (BYTE *)FlashDCTbData.Dname[index];
time = (BYTE *)FlashDCTbData.LDNTime[index];
break;
default:
return App_Error_IllegalCmdData;
}
memcpy(buffer, table, 24);
buffer += 24;
memcpy(buffer,name, 24);
buffer += 24;
memcpy(buffer,time, 21);
return App_Error_NoError;
}//
unsigned int pc_interface_CR(PC_Interface_Info * info, PC_App_Cmd_CR *cmd)
{
static PC_CR_Info_dl* cr_info_dl;
BYTE *table, * name, *time;
switch(cmd->cid2)
{
case PC_AppCID2_Read:
info->flag = PC_IF_FLAGS_DATADL;
info->size_dlbuff = sizeof(PC_CR_Content);
return getCallRecord((PC_CR_Content *) info->pdata_dlbuff,cmd->type, cmd->index);
break;
case PC_AppCID2_Write:
return App_Error_WriteError;
break;
case PC_AppCID2_Delete:
if(info->flag == PC_IF_FLAGS_CMD)
info->flag = PC_IF_FLAGS_DATAUL;
else
{
if (info->size_ulbuff>0)
return delCallRecord((DelRec *)info->pdata_ulbuff,((int)info->size_ulbuff)/4);
}
break;
case PC_AppCID2_Info://get call record info
info->flag = PC_IF_FLAGS_DATADL;
info->size_dlbuff = sizeof(PC_CR_Info_dl);
cr_info_dl = (PC_CR_Info_dl *)info->pdata_dlbuff;
cr_info_dl->LMNID = FlashDCTbData.LMNID;
cr_info_dl->LRNID = FlashDCTbData.LRNID;
cr_info_dl->LDNID = FlashDCTbData.LDNID;
break;
default:
return App_Error_UnknownCID2;
}
return App_Error_NoError;
}
/**************Call Record end********************/
/******************Target端接口*******************/
unsigned int pc_interface(PC_Interface_Info * info)
{
memset(&pc_waitdata, 0 ,sizeof(pc_waitdata) );
PCSYN_TRACE_EVENT(("pc_interface: %d, %d, %d", info->size_cmd, info->size_dlbuff, info->size_ulbuff));
//info->size_dlbuff = 0;
switch(info->flag)
{
case PC_IF_FLAGS_CMD:
memset(appcmd.data, 0 ,sizeof(appcmd.data) );
appcmd.size = info->size_cmd;
memcpy(appcmd.data, info->pdata_cmd, info->size_cmd);
case PC_IF_FLAGS_DATAUL:
switch(appcmd.data[0])
{
case PC_AppCID1_File://file cmd
info->status = pc_interface_file(info, (PC_App_Cmd_File*) appcmd.data);
break;
case PC_AppCID1_PHB://phone book
info->status = pc_interface_PHB(info, (PC_App_Cmd_PHB*) appcmd.data);
break;
case PC_AppCID1_SMS://Short message
info->status = pc_interface_SMS(info, (PC_App_Cmd_SMS*) appcmd.data);
break;
case PC_AppCID1_CR://call record
info->status = pc_interface_CR(info, (PC_App_Cmd_CR*) appcmd.data);
break;
default:
info->status = App_Error_UnknownCID1;
break;
}
break;
default:
//error flag
break;
}
return info->status;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -