📄 mmimms_main.c
字号:
{
g_issendingreadrpt = FALSE;
MMK_PostMsg(MMIMMS_SEND_MMSREADRPT_WAITING_WIN_ID, MSG_MMS_SENDED_FAILED, PNULL, 0);
}
break;
//发送时gprs网络拨号失败同样返回发送失败
case MMSNETLINK_FAILED:
SCI_TRACE_LOW("mms_lib_callback:dial failed");
g_netusing = MMS_MSG_NETUSING_STEP2;//modify 2006-1-3
if(g_issendingreadrpt== FALSE)
{
MMK_PostMsg(MMIMMS_SEND_MMS_WAITING_WIN_ID, MSG_MMS_SENDED_FAILED, PNULL, 0);
}else
{
MMK_PostMsg(MMIMMS_SEND_MMSREADRPT_WAITING_WIN_ID, MSG_MMS_SENDED_FAILED, PNULL, 0);
}
break;
//发送时用户取消发送则返回发送取消
case MMSOPR_CANCEL:
SCI_TRACE_LOW("mms_lib_callback:user cancel");
MMK_PostMsg(MMIMMS_SEND_MMS_WAITING_WIN_ID, MSG_MMS_SEND_CANCEL, PNULL, 0);
break;
default:
SCI_TRACE_LOW("mms_lib_callback:%s\n","LIB_STATUS_SENDRETURN default.");
break;
}
}
break;
case LIB_STATUS_RECVRETURN:
{
SCI_TRACE_LOW("FNH LIB_STATUS_RECVRETURN status_value = %d",status_value);
switch(status_value)
{
case MMSRECV_SUCCESS:
SCI_TRACE_LOW("mms_lib_callback:recv success");
g_netusing = MMS_MSG_NETUSING_STEP2;//modify 2006-1-3
SCI_TRACE_LOW("fnh MMSRECV_SUCCESS iFClose = %d",iFClose);
if (iFClose == 0)
{
SCI_TRACE_LOW("fnh before display progress");
MMIMMS_DisplaySendRecvProgress(g_progressneedsize,g_progressneedsize);
}
MMK_PostMsg(MMIMMS_DOWNLOAD_DOWNLOADING_WIN_ID, MSG_MMS_RECV_OK, PNULL, 0);
break;
case MMSRECV_FAILED:
SCI_TRACE_LOW("mms_lib_callback:recv failed");
g_netusing = MMS_MSG_NETUSING_STEP2;//modify 2006-1-3
MMK_PostMsg(MMIMMS_DOWNLOAD_DOWNLOADING_WIN_ID, MSG_MMS_RECV_FAILED, PNULL, 0);
break;
case MMSOPR_CANCEL:
MMK_PostMsg(MMIMMS_DOWNLOAD_DOWNLOADING_WIN_ID, MSG_MMS_RECV_CANCEL, PNULL, 0);
SCI_TRACE_LOW("mms_lib_callback:recv cancel");
break;
case MMSNETLINK_FAILED:
SCI_TRACE_LOW("mms_lib_callback:gprs netlink failed");
g_netusing = MMS_MSG_NETUSING_STEP2;//modify 2006-1-3
MMK_PostMsg(MMIMMS_DOWNLOAD_DOWNLOADING_WIN_ID, MSG_MMS_RECV_FAILED, PNULL, 0);
break;
case MMSRECV_FAILED_BY_NOT_FOUND:
SCI_TRACE_LOW("mms_lib_callback:recv failed, message not found");//常是由于一条MMS已过期而接收失败
g_netusing = MMS_MSG_NETUSING_STEP2;//modify 2006-1-3
MMK_PostMsg(MMIMMS_DOWNLOAD_DOWNLOADING_WIN_ID, MSG_MMS_RECV_INVALIDPERIOD, PNULL, 0);
break;
default:
{
SCI_TRACE_LOW("mms_lib_callback:%s\n","LIB_STATUS_RECVRETURN default.");
}
break;
}
}
break;
case LIB_STATUS_SENDED_BYTES:
if(g_issendingreadrpt == FALSE)
{
g_progresscurrentsize = (status_value+g_progressneedsize)/2;
SCI_TRACE_LOW("fnh LIB_STATUS_SENDED_BYTES iFClose = %d",iFClose);
if (iFClose == 0)
{
SCI_TRACE_LOW("fnh before display progress");
MMIMMS_DisplaySendRecvProgress(g_progresscurrentsize,g_progressneedsize);
}
}
break;
case LIB_STATUS_RECVED_BYTES:
g_progresscurrentsize = (status_value+g_progressneedsize)/2;
SCI_TRACE_LOW("fnh LIB_STATUS_RECVED_BYTES iFClose = %d",iFClose);
if (iFClose == 0)
{
SCI_TRACE_LOW("fnh before display progress");
MMIMMS_DisplaySendRecvProgress(g_progresscurrentsize,g_progressneedsize);
}
break;
default:
SCI_TRACE_LOW("mms_lib_callback:%s\n","all default.");
break;
}
return 1;
}
/******************************************************************************
* 函数定义: GetReceiverListLen
* 函数说明: 得到收件人列表中的所有条目长度总和,其中还包括每两个条目之间的
间隔符所占长度。
* 参数说明: p_receiver: 收件人列表
* 返回值: 计算出的收件人长度之和
********************************************************************************/
int GetReceiverListLen(p_MMS_RECEPIENT p_receiver)
{
p_MMS_RECEPIENT plist = NULL;
int len = 0;
plist = p_receiver;
while(plist)
{
len += SCI_STRLEN((char *)plist->m_address)+1;
plist = plist->p_next;
}
return len;
}
/* ----------------------------------------------------------------------------
* Function Name: SaveMmsMessage
* Purpose: 保存彩信到当前的信箱
* Input: folder_id:信箱ID号,从1到5分别为:收件箱、发件箱、已发信箱、草稿箱、
当前信箱(可能不需要,暂时加上)
* Returns: void
* Author:nihongf@mobilesoft.com.cn
* ----------------------------------------------------------------------------*/
void SaveMmsMessage(SAVE_MMS_STATUS folder_id, char *filename)
{
P_MMS_DOCUMENT pMms_Doc = NULL;
char fname[MMS_FILE_NAME_LEN];
uint8 *phone_list = NULL;
int phone_list_len = 0;
uint32 value ;
pMessageFolder folder = NULL;
long expire = 0;
if(folder_id == SAVE_MMS_TO_INBOX)
{
folder = g_pManager->inboxfolder;
}
else if(folder_id == SAVE_MMS_TO_OUTBOX)
{
folder = g_pManager->outboxfolder;
}
else if(folder_id == SAVE_MMS_TO_SENTBOX)
{
folder = g_pManager->sentfolder;
}
else if(folder_id == SAVE_MMS_TO_DRAFTBOX)
{
folder = g_pManager->draftfolder;
}
else if(folder_id == SAVE_MMS_TO_DEFAULT)
{
folder = g_pManager->currentfolder;
}
else
{
SCI_TRACE_LOW("error:wrong folder id");
return;
}
value = MMI_GetFfsTime();
SCI_TRACE_LOW("FNH MMI_GetFfsTime = %u",MMI_GetFfsTime());
SCI_TRACE_LOW("FNH value = %u",value);
sprintf(fname,"%lu",value);
strcat(fname, ".mms");
SCI_TRACE_LOW("FNH fname = %s",fname);
if(filename != NULL)
{
SCI_MEMSET(filename,0,sizeof(filename));
SCI_STRCPY(filename,fname);
}
SCI_TRACE_LOW("FNH start of send message");
pMms_Doc = (P_MMS_DOCUMENT)cms_integrate_mms(g_peditdoc);
SCI_TRACE_LOW("fnh pMMS_Doc = %d",pMms_Doc);
SCI_TRACE_LOW("FNH after cms_integrate_mms");
if(!MMS_SetMmsFile(pMms_Doc,fname))
{
SCI_TRACE_LOW("FNH error:MMS_SetMmsFile failed");
if (pMms_Doc)
{
MMS_DeleteMms(pMms_Doc);
pMms_Doc = NULL;
}
return;
}
SCI_TRACE_LOW("FNH before insert to");
if ((g_p_mms_to) || (g_p_mms_to_group))//插入电话号码
{
p_MMS_RECEPIENT plist = NULL;
char *phone_list = NULL;
uint16 single_tele_len = 0;
uint16 group_tele_len = 0;
SCI_TRACE_LOW("FNH enter g_p_mms_to");
if (g_p_mms_to)
{
single_tele_len = GetReceiverListLen(g_p_mms_to);
SCI_TRACE_LOW("FNH g_p_mms_to len = %d",single_tele_len);
}
if (g_p_mms_to_group)
{
if (g_p_mms_to_group->cur_group)
{
group_tele_len = GetReceiverListLen(g_p_mms_to_group->cur_group);
}
}
phone_list_len = single_tele_len+group_tele_len+1;
phone_list = (char *)cms_malloc(phone_list_len);
if(!phone_list)
{
SCI_TRACE_LOW("malloc failed:phone list len = %d",phone_list_len);
return;
}
SCI_MEMSET(phone_list,0,phone_list_len);
if (g_p_mms_to)
{
plist = g_p_mms_to;
while(plist->p_next)
{
strcat((char *)phone_list,(const char *)(plist->m_address));
strcat((char *)phone_list,",");
plist = plist->p_next;
}
strcat((char *)phone_list,(const char *)(plist->m_address)); // xuelianb modify[2005-11-08]
}
plist = NULL;
if (g_p_mms_to_group)
{
if (g_p_mms_to_group->cur_group)
{
plist = g_p_mms_to_group->cur_group;
if (g_p_mms_to)
{
strcat((char *)phone_list,",");
}
while(plist->p_next)
{
strcat((char *)phone_list,(const char *)(plist->m_address));
strcat((char *)phone_list,",");
plist = plist->p_next;
}
strcat((char *)phone_list,(const char *)(plist->m_address)); // xuelianb modify[2005-11-08]
}
}
// SCI_TRACE_LOW("FNH to phone_list = %s",phone_list);
MMS_SetMmsHeadField(pMms_Doc, MMS_TO, (long)0, (char *)phone_list);
if (phone_list)
{
cms_free(phone_list);
phone_list = NULL;
}
SCI_TRACE_LOW("FNH set to ok");
}
if ((g_p_mms_cc) ||(g_p_mms_cc_group))
{
p_MMS_RECEPIENT plist = NULL;
char *phone_list = NULL;
uint16 single_tele_len = 0;
uint16 group_tele_len = 0;
SCI_TRACE_LOW("FNH enter g_p_mms_cc");
if (g_p_mms_cc)
{
single_tele_len = GetReceiverListLen(g_p_mms_cc);
SCI_TRACE_LOW("FNH g_p_mms_cc len = %d",single_tele_len);
}
if (g_p_mms_cc_group)
{
if (g_p_mms_cc_group->cur_group)
{
group_tele_len = GetReceiverListLen(g_p_mms_cc_group->cur_group);
}
}
phone_list_len = single_tele_len+group_tele_len+1;
phone_list = (char *)cms_malloc(phone_list_len);
if(!phone_list)
{
SCI_TRACE_LOW("malloc failed:phone list len = %d",phone_list_len);
return;
}
SCI_MEMSET(phone_list,0,phone_list_len);
if (g_p_mms_cc)
{
plist = g_p_mms_cc;
while(plist->p_next)
{
strcat((char *)phone_list,(const char *)(plist->m_address));
strcat((char *)phone_list,",");
plist = plist->p_next;
}
strcat((char *)phone_list,(const char *)(plist->m_address)); // xuelianb modify[2005-11-08]
}
plist = NULL;
if (g_p_mms_cc_group)
{
if (g_p_mms_cc_group->cur_group)
{
plist = g_p_mms_cc_group->cur_group;
if (g_p_mms_cc)
{
strcat((char *)phone_list,",");
}
while(plist->p_next)
{
strcat((char *)phone_list,(const char *)(plist->m_address));
strcat((char *)phone_list,",");
plist = plist->p_next;
}
strcat((char *)phone_list,(const char *)(plist->m_address)); // xuelianb modify[2005-11-08]
}
}
// SCI_TRACE_LOW("FNH cc phone_list = %s",phone_list);
MMS_SetMmsHeadField(pMms_Doc, MMS_CC, (long)0, (char *)phone_list);
if (phone_list)
{
cms_free(phone_list);
phone_list = NULL;
}
SCI_TRACE_LOW("FNH set cc ok");
}
if ((g_p_mms_bcc) ||(g_p_mms_bcc_group))
{
p_MMS_RECEPIENT plist = NULL;
char *phone_list = NULL;
uint16 single_tele_len = 0;
uint16 group_tele_len = 0;
SCI_TRACE_LOW("FNH enter g_p_mms_bcc");
if (g_p_mms_bcc)
{
single_tele_len = GetReceiverListLen(g_p_mms_bcc);
SCI_TRACE_LOW("FNH g_p_mms_b len = %d",single_tele_len);
}
if (g_p_mms_bcc_group)
{
if (g_p_mms_bcc_group->cur_group)
{
group_tele_len = GetReceiverListLen(g_p_mms_bcc_group->cur_group);
}
}
phone_list_len = single_tele_len+group_tele_len+1;
phone_list = (char *)cms_malloc(phone_list_len);
if(!phone_list)
{
SCI_TRACE_LOW("malloc failed:phone list len = %d",phone_list_len);
return;
}
SCI_MEMSET(phone_list,0,phone_list_len);
if (g_p_mms_bcc)
{
plist = g_p_mms_bcc;
while(plist->p_next)
{
strcat((char *)phone_list,(const char *)(plist->m_address));
strcat((char *)phone_list,",");
plist = plist->p_next;
}
strcat((char *)phone_list,(const char *)(plist->m_address)); // xuelianb modify[2005-11-08]
}
plist = NULL;
if (g_p_mms_bcc_group)
{
if (g_p_mms_bcc_group->cur_group)
{
plist = g_p_mms_bcc_group->cur_group;
if (g_p_mms_bcc)
{
strcat((char *)phone_list,",");
}
while(plist->p_next)
{
strcat((char *)phone_list,(const char *)(plist->m_address));
strcat((char *)phone_list,",");
plist = plist->p_next;
}
strcat((char *)phone_list,(const char *)(plist->m_address)); // xuelianb modify[2005-11-08]
}
}
// SCI_TRACE_LOW("FNH bcc phone_list = %s",phone_list);
MMS_SetMmsHeadField(pMms_Doc, MMS_BCC, (long)0, (char *)phone_list);
if (phone_list)
{
cms_free(phone_list);
phone_list = NULL;
}
SCI_TRACE_LOW("FNH set bcc ok");
}
MMS_SetMmsHeadField(pMms_Doc, MMS_MESSAGE_CLASS, (long)MMS_MESSAGE_CLASS_TYPE_PERSONAL, (char *)0);
SCI_TRACE_BUF("FNH before sendmmshead g_p_mms_sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -