err = SmsPluginStorage::instance()->checkMessage(&msgInfo);
if (err == MSG_SUCCESS) {
- MSG_CB_MSG_S cbOutMsg = {0, };
-
- /*cbOutMsg.type = MSG_CB_SMS; */
- cbOutMsg.type = msgInfo.msgType.subType;
- cbOutMsg.receivedTime = cbMsg->recvTime;
- cbOutMsg.serialNum = encodeCbSerialNum(CbMsgPage.pageHeader.serialNum);
- cbOutMsg.messageId = cbMsg->msgId;
- cbOutMsg.dcs = CbMsgPage.pageHeader.dcs.rawData;
- memset (cbOutMsg.cbText, 0x00, sizeof(cbOutMsg.cbText));
-
- cbOutMsg.cbTextLen = convertTextToUtf8((unsigned char*)cbOutMsg.cbText, sizeof(cbOutMsg.cbText), cbMsg);
- memset(cbOutMsg.language_type, 0x00, sizeof(cbOutMsg.language_type));
- memcpy(cbOutMsg.language_type, CbMsgPage.pageHeader.dcs.iso639Lang, 3);
- err = SmsPluginEventHandler::instance()->callbackCBMsgIncoming(&cbOutMsg, &msgInfo);
- if (err != MSG_SUCCESS)
- MSG_WARN("callbackMsgIncoming() Error !! [%d]", err);
+ bool is_duplicated = SmsPluginStorage::instance()->isDuplicatedCBMsg(&msgInfo);
+ if (is_duplicated == false) {
+ MSG_CB_MSG_S cbOutMsg = {0, };
+
+ /*cbOutMsg.type = MSG_CB_SMS; */
+ cbOutMsg.type = msgInfo.msgType.subType;
+ cbOutMsg.receivedTime = cbMsg->recvTime;
+ cbOutMsg.serialNum = cbMsg->serialNum;
+ cbOutMsg.messageId = cbMsg->msgId;
+ cbOutMsg.dcs = CbMsgPage.pageHeader.dcs.rawData;
+ memset (cbOutMsg.cbText, 0x00, sizeof(cbOutMsg.cbText));
+
+ cbOutMsg.cbTextLen = convertTextToUtf8((unsigned char*)cbOutMsg.cbText, sizeof(cbOutMsg.cbText), cbMsg);
+ memset(cbOutMsg.language_type, 0x00, sizeof(cbOutMsg.language_type));
+ memcpy(cbOutMsg.language_type, CbMsgPage.pageHeader.dcs.iso639Lang, 3);
+ err = SmsPluginEventHandler::instance()->callbackCBMsgIncoming(&cbOutMsg, &msgInfo);
+ if (err != MSG_SUCCESS)
+ MSG_WARN("callbackMsgIncoming() Error !! [%d]", err);
+ } else {
+ MSG_DEBUG("This cb message is duplicated");
+ }
} else {
MSG_WARN("checkMessage() Error !! [%d]", err);
}
pCbMsg->classType = CbPage->pageHeader.dcs.classType;
pCbMsg->codingScheme = CbPage->pageHeader.dcs.codingScheme;
pCbMsg->recvTime = CbPage->pageHeader.recvTime;
+ pCbMsg->serialNum = encodeCbSerialNum(CbPage->pageHeader.serialNum);
cbPageMap::iterator it;
int offset = 0;
void SmsPluginCbMsgHandler::convertCbMsgToMsginfo(SMS_CBMSG_S *pCbMsg, MSG_MESSAGE_INFO_S *pMsgInfo, msg_sim_slot_id_t simIndex)
{
pMsgInfo->msgId = (msg_message_id_t)pCbMsg->msgId;
+ pMsgInfo->serialNum = pCbMsg->serialNum;
pMsgInfo->folderId = MSG_CBMSGBOX_ID;