2 * Copyright (c) 2014 Samsung Electronics Co., Ltd. All rights reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include "MsgUtilFile.h"
21 #include "MsgException.h"
22 #include "MsgCppTypes.h"
23 /*#include "MsgSoundPlayer.h" */
24 #include "MsgUtilFunction.h"
25 #include "MsgStorageHandler.h"
26 #include "MsgPluginManager.h"
27 #include "MsgTransManager.h"
28 #include "MsgCmdHandler.h"
29 #include "MsgNotificationWrapper.h"
33 /*==================================================================================================
34 FUNCTION IMPLEMENTATION
35 ==================================================================================================*/
40 static gboolean __refresh_noti(void *data)
47 MSG_DEBUG("## Refresh notification ##");
48 if (MsgRefreshNotification(MSG_NOTI_TYPE_NORMAL, false, MSG_ACTIVE_NOTI_TYPE_NONE) != MSG_SUCCESS) {
49 MSG_DEBUG("MsgRefreshNoti is failed");
59 int MsgAddMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
61 msg_error_t err = MSG_SUCCESS;
63 if (!pCmd || !ppEvent) {
64 MSG_DEBUG("pCmd or ppEvent is null");
68 char* encodedData = NULL;
69 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
71 int dataSize = 0, eventSize = 0;
73 MSG_MESSAGE_INFO_S msgInfo;
74 MSG_SENDINGOPT_INFO_S sendOptInfo;
75 memset(&msgInfo, 0x00, sizeof(MSG_MESSAGE_INFO_S));
76 memset(&sendOptInfo, 0x00, sizeof(MSG_SENDINGOPT_INFO_S));
78 msgInfo.addressList = NULL;
79 unique_ptr<MSG_ADDRESS_INFO_S*, void(*)(MSG_ADDRESS_INFO_S**)> addressListBuf(&msgInfo.addressList, unique_ptr_deleter);
81 MsgDecodeMsgInfo((char *)pCmd->cmdData, &msgInfo, &sendOptInfo);
83 if (msgInfo.bBackup) {
84 err = MsgStoRestoreMessage(&msgInfo, &sendOptInfo);
86 if (err == MSG_SUCCESS) {
87 MSG_DEBUG("Command Handle Success : MsgStoRestoreMessage()");
89 /* Encoding Message ID */
90 dataSize = MsgEncodeMsgId(&(msgInfo.msgId), &encodedData);
92 MSG_DEBUG("Command Handle Fail : MsgStoRestoreMessage()");
97 err = MsgStoAddMessage(&msgInfo, &sendOptInfo);
99 if (err == MSG_SUCCESS) {
100 MSG_DEBUG("Command Handle Success : MsgStoAddMessage()");
101 /* Encoding Message ID */
102 dataSize = MsgEncodeMsgId(&(msgInfo.msgId), &encodedData);
104 MSG_DEBUG("Command Handle Fail : MsgStoAddMessage()");
108 /*storage change CB */
109 msg_id_list_s msgIdList;
110 msg_message_id_t msgIds[1];
111 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
113 msgIdList.nCount = 1;
114 msgIds[0] = msgInfo.msgId;
115 msgIdList.msgIdList = msgIds;
117 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_INSERT, &msgIdList);
119 /* Update unread message status */
120 if (msgInfo.folderId == MSG_INBOX_ID && msgInfo.bRead == false) {
123 g_timeout_add(300, __refresh_noti, NULL);
127 /* Delete Temp File for Message Data */
128 if (msgInfo.bTextSms == false)
129 MsgDeleteFile(msgInfo.msgData); /*ipc */
131 /* Make Event Data */
132 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_ADD_MSG, err, (void**)ppEvent);
138 int MsgAddSyncMLMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
140 msg_error_t err = MSG_SUCCESS;
142 if (!pCmd || !ppEvent) {
143 MSG_DEBUG("pCmd or ppEvent is null");
147 char* encodedData = NULL;
148 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
150 int dataSize = 0, eventSize = 0;
152 int extId = 0, pinCode = 0;
154 MSG_MESSAGE_INFO_S msgInfo;
155 memset(&msgInfo, 0x00, sizeof(MSG_MESSAGE_INFO_S));
157 msgInfo.addressList = NULL;
158 unique_ptr<MSG_ADDRESS_INFO_S*, void(*)(MSG_ADDRESS_INFO_S**)> addressListBuf(&msgInfo.addressList, unique_ptr_deleter);
160 memcpy(&extId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(int));
161 memcpy(&pinCode, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(int)), sizeof(int));
163 MsgDecodeMsgInfo((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(int)+sizeof(int), &msgInfo);
167 err = MsgStoAddSyncMLMessage(&msgInfo, extId, pinCode);
169 if (err == MSG_SUCCESS) {
170 MSG_DEBUG("Command Handle Success : MsgStoAddSyncMLMessage()");
172 /* Encoding Message ID */
173 dataSize = MsgEncodeMsgId(&(msgInfo.msgId), &encodedData);
175 /* broadcast to listener threads, here */
176 MsgTransactionManager::instance()->broadcastIncomingMsgCB(err, &msgInfo);
177 /*storage change CB */
178 msg_id_list_s msgIdList;
179 msg_message_id_t msgIds[1];
180 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
182 msgIdList.nCount = 1;
183 msgIds[0] = msgInfo.msgId;
184 msgIdList.msgIdList = msgIds;
186 MsgTransactionManager::instance()->broadcastStorageChangeCB(err, MSG_STORAGE_CHANGE_INSERT, &msgIdList);
188 MSG_DEBUG("Command Handle Fail : MsgStoAddSyncMLMessage()");
191 /* Make Event Data */
192 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_ADD_SYNCML_MSG, err, (void**)ppEvent);
198 int MsgUpdateMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
200 msg_error_t err = MSG_SUCCESS;
202 if (!pCmd || !ppEvent) {
203 MSG_DEBUG("pCmd or ppEvent is null");
209 MSG_MESSAGE_INFO_S msgInfo;
210 MSG_SENDINGOPT_INFO_S sendOptInfo;
211 memset(&msgInfo, 0x00, sizeof(MSG_MESSAGE_INFO_S));
212 memset(&sendOptInfo, 0x00, sizeof(MSG_SENDINGOPT_INFO_S));
214 msgInfo.addressList = NULL;
215 unique_ptr<MSG_ADDRESS_INFO_S*, void(*)(MSG_ADDRESS_INFO_S**)> addressListBuf(&msgInfo.addressList, unique_ptr_deleter);
217 MsgDecodeMsgInfo((char *)pCmd->cmdData, &msgInfo, &sendOptInfo);
220 err = MsgStoUpdateMessage(&msgInfo, &sendOptInfo);
222 if (err == MSG_SUCCESS)
223 MSG_DEBUG("Command Handle Success : MsgStoUpdateMessage()");
225 MSG_DEBUG("Command Handle Fail : MsgStoUpdateMessage()");
227 /* Delete Temp File for Message Data */
228 if (msgInfo.bTextSms == false)
229 MsgDeleteFile(msgInfo.msgData); /*ipc */
231 /*storage change CB */
232 msg_id_list_s msgIdList;
233 msg_message_id_t msgIds[1];
234 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
236 msgIdList.nCount = 1;
237 msgIds[0] = msgInfo.msgId;
238 msgIdList.msgIdList = msgIds;
240 MsgTransactionManager::instance()->broadcastStorageChangeCB(err, MSG_STORAGE_CHANGE_UPDATE, &msgIdList);
242 /* Make Event Data */
243 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_MSG, err, (void**)ppEvent);
249 int MsgUpdateReadStatusHandler(const MSG_CMD_S *pCmd, char **ppEvent)
251 msg_error_t err = MSG_SUCCESS;
253 if (!pCmd || !ppEvent) {
254 MSG_DEBUG("pCmd or ppEvent is null");
260 msg_message_id_t msgId;
263 memcpy(&msgId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_id_t));
264 memcpy(&readStatus, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_message_id_t)), sizeof(bool));
266 /* Update Read Status */
267 err = MsgStoUpdateReadStatus(msgId, readStatus);
269 MSG_DEBUG("message id = [%d], readStatus = [%d]", msgId, readStatus);
271 if (err == MSG_SUCCESS) {
272 MSG_DEBUG("Command Handle Success : MsgStoUpdateReadStatus()");
274 MSG_DEBUG("Command Handle Fail : MsgStoUpdateReadStatus()");
277 /*storage change CB */
278 msg_id_list_s msgIdList;
279 msg_message_id_t msgIds[1];
280 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
282 msgIdList.nCount = 1;
284 msgIdList.msgIdList = msgIds;
286 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_UPDATE, &msgIdList);
288 /* Make Event Data */
289 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_READ, err, (void**)ppEvent);
295 int MsgUpdateThreadReadStatusHandler(const MSG_CMD_S *pCmd, char **ppEvent)
297 msg_error_t err = MSG_SUCCESS;
299 if (!pCmd || !ppEvent) {
300 MSG_DEBUG("pCmd or ppEvent is null");
306 msg_thread_id_t threadId;
309 memcpy(&threadId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_thread_id_t));
311 MsgStoGetThreadUnreadCnt(threadId, &unReadCnt);
313 MSG_DEBUG("unReadCnt [%d]", unReadCnt);
316 msg_id_list_s msgIdList;
317 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
319 err = MsgStoUpdateThreadReadStatus(threadId, &msgIdList);
321 if (err == MSG_SUCCESS) {
322 MSG_DEBUG("Command Handle Success : MsgStoUpdateThreadReadStatus()");
323 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_UPDATE, &msgIdList);
325 MSG_DEBUG("Command Handle Fail : MsgStoUpdateThreadReadStatus()");
328 if(msgIdList.msgIdList != NULL)
329 delete [] (char*)msgIdList.msgIdList;
332 /* delete report notification */
333 if (err == MSG_SUCCESS) {
334 MsgDbHandler *dbHandle = getDbHandle();
335 char tempAddr[MAX_ADDRESS_VAL_LEN+1];
336 char sqlQuery[MAX_QUERY_LEN+1];
338 memset(tempAddr, 0x00, sizeof(tempAddr));
339 memset(sqlQuery, 0x00, sizeof(sqlQuery));
340 snprintf(sqlQuery, sizeof(sqlQuery), "SELECT B.ADDRESS_VAL FROM %s A, %s B WHERE A.CONV_ID = B.CONV_ID AND A.CONV_ID = %d;"
341 , MSGFW_MESSAGE_TABLE_NAME, MSGFW_ADDRESS_TABLE_NAME, threadId);
343 err = dbHandle->prepareQuery(sqlQuery);
345 if (err == MSG_SUCCESS) {
346 err = dbHandle->stepQuery();
348 if (err == MSG_ERR_DB_ROW) {
349 snprintf(tempAddr, sizeof(tempAddr), "%s", dbHandle->columnText(0));
350 MSG_SEC_DEBUG("Updated address = %s", tempAddr);
351 MsgDeleteReportNotification(tempAddr);
356 dbHandle->finalizeQuery();
359 /* Make Event Data */
360 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_THREAD_READ, err, (void**)ppEvent);
366 int MsgUpdateProtectedStatusHandler(const MSG_CMD_S *pCmd, char **ppEvent)
368 msg_error_t err = MSG_SUCCESS;
370 if (!pCmd || !ppEvent) {
371 MSG_DEBUG("pCmd or ppEvent is null");
377 msg_message_id_t msgId;
378 bool protectedStatus;
380 memcpy(&msgId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_id_t));
381 memcpy(&protectedStatus, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_message_id_t)), sizeof(bool));
383 /* Update Protected Status */
384 err = MsgStoUpdateProtectedStatus(msgId, protectedStatus);
386 if (err == MSG_SUCCESS) {
387 MSG_DEBUG("Command Handle Success : MsgStoUpdateProtectedStatus()");
389 MSG_DEBUG("Command Handle Fail : MsgStoUpdateProtectedStatus()");
392 /*storage change CB */
393 msg_id_list_s msgIdList;
394 msg_message_id_t msgIds[1];
395 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
397 msgIdList.nCount = 1;
399 msgIdList.msgIdList = msgIds;
401 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_UPDATE, &msgIdList);
403 /* Make Event Data */
404 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_PROTECTED, err, (void**)ppEvent);
410 int MsgDeleteMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
412 msg_error_t err = MSG_SUCCESS;
414 if (!pCmd || !ppEvent) {
415 MSG_DEBUG("pCmd or ppEvent is null");
423 msg_message_id_t* msgId = (msg_message_id_t*)pCmd->cmdData;
425 MsgStoGetSyncMLExtId(*msgId, &extId);
428 err = MsgStoDeleteMessage(*msgId, true);
430 if (err == MSG_SUCCESS) {
431 MSG_DEBUG("Command Handle Success : MsgStoDeleteMessage()");
434 /* broadcast to listener threads, here */
435 MsgTransactionManager::instance()->broadcastSyncMLMsgOperationCB(err, -1, extId);
438 msg_id_list_s msgIdList;
439 msg_message_id_t msgIds[1];
440 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
442 msgIdList.nCount = 1;
444 msgIdList.msgIdList = msgIds;
446 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_DELETE, &msgIdList);
448 MSG_DEBUG("Command Handle Fail : MsgStoDeleteMessage()");
451 /* Make Event Data */
452 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELETE_MSG, err, (void**)ppEvent);
458 int MsgDeleteAllMessageInFolderHandler(const MSG_CMD_S *pCmd, char **ppEvent)
460 msg_error_t err = MSG_SUCCESS;
462 if (!pCmd || !ppEvent) {
463 MSG_DEBUG("pCmd or ppEvent is null");
469 msg_folder_id_t* folderId = (msg_folder_id_t*)pCmd->cmdData;
472 memcpy(&bOnlyDB, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_folder_id_t)), sizeof(bool));
475 msg_id_list_s msgIdList;
476 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
479 err = MsgStoDeleteAllMessageInFolder(*folderId, bOnlyDB, &msgIdList);
481 if (err == MSG_SUCCESS) {
482 MSG_DEBUG("Command Handle Success : MsgStoDeleteAllMessageInFolder()");
483 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_DELETE, &msgIdList);
484 if(msgIdList.msgIdList != NULL)
485 delete [] (char*)msgIdList.msgIdList;
487 MSG_DEBUG("Command Handle Fail : MsgStoDeleteAllMessageInFolder()");
490 /* Make Event Data */
491 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELALL_MSGINFOLDER, err, (void**)ppEvent);
497 int MsgDeleteMessageByListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
499 msg_error_t err = MSG_SUCCESS;
501 if (!pCmd || !ppEvent) {
502 MSG_DEBUG("pCmd or ppEvent is null");
508 msg_id_list_s msgIdList;
509 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
511 memcpy(&msgIdList.nCount, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(int));
513 MSG_DEBUG("msgIdList.nCount [%d]", msgIdList.nCount);
515 msg_message_id_t msgIds[msgIdList.nCount];
516 memset(msgIds, 0x00, sizeof(msgIds));
518 msgIdList.msgIdList = msgIds;
520 for (int i = 0; i < msgIdList.nCount; i++) {
521 memcpy(&msgIds[i], (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(int)+sizeof(msg_message_id_t)*i), sizeof(msg_message_id_t));
525 err = MsgStoDeleteMessageByList(&msgIdList);
527 if (err == MSG_SUCCESS) {
528 MSG_DEBUG("Command Handle Success : MsgStoDeleteMessageByList()");
529 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_DELETE, &msgIdList);
531 MSG_DEBUG("Command Handle Fail : MsgStoDeleteMessageByList()");
534 /* Make Event Data */
535 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELETE_MESSAGE_BY_LIST, err, (void**)ppEvent);
541 int MsgMoveMessageToFolderHandler(const MSG_CMD_S *pCmd, char **ppEvent)
543 msg_error_t err = MSG_SUCCESS;
545 if (!pCmd || !ppEvent) {
546 MSG_DEBUG("pCmd or ppEvent is null");
552 msg_message_id_t msgId;
553 msg_folder_id_t folderId;
555 memcpy(&msgId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_id_t));
556 memcpy(&folderId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_message_id_t)), sizeof(msg_folder_id_t));
559 err = MsgStoMoveMessageToFolder(msgId, folderId);
561 if (err == MSG_SUCCESS) {
562 MSG_DEBUG("Command Handle Success : MsgStoMoveMessageToFolder()");
564 msg_id_list_s msgIdList;
565 msg_message_id_t msgIds[1];
566 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
568 msgIdList.nCount = 1;
570 msgIdList.msgIdList = msgIds;
572 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_UPDATE, &msgIdList);
574 MSG_DEBUG("Command Handle Fail : MsgStoMoveMessageToFolder()");
577 /* Make Event Data */
578 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_MOVE_MSGTOFOLDER, err, (void**)ppEvent);
584 int MsgMoveMessageToStorageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
586 msg_error_t err = MSG_SUCCESS;
588 if (!pCmd || !ppEvent) {
589 MSG_DEBUG("pCmd or ppEvent is null");
595 msg_message_id_t msgId;
596 msg_storage_id_t storageId;
598 memcpy(&msgId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_id_t));
599 memcpy(&storageId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_message_id_t)), sizeof(msg_storage_id_t));
602 err = MsgStoMoveMessageToStorage(msgId, storageId);
604 if (err == MSG_SUCCESS) {
605 MSG_DEBUG("Command Handle Success : MsgStoMoveMessageToStorage()");
607 MSG_DEBUG("Command Handle Fail : MsgStoMoveMessageToStorage()");
610 /* Make Event Data */
611 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_MOVE_MSGTOSTORAGE, err, (void**)ppEvent);
617 int MsgCountMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
619 msg_error_t err = MSG_SUCCESS;
621 if (!pCmd || !ppEvent) {
622 MSG_DEBUG("pCmd or ppEvent is null");
626 char* encodedData = NULL;
627 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
629 int dataSize = 0, eventSize = 0;
632 msg_folder_id_t* folderId = (msg_folder_id_t*)pCmd->cmdData;
634 /* Get Message Count */
635 MSG_COUNT_INFO_S countInfo;
637 err = MsgStoCountMessage(*folderId, &countInfo);
639 if (err == MSG_SUCCESS) {
640 MSG_DEBUG("Command Handle Success : MsgStoCountMessage()");
642 /* Encoding Messaging Count Data */
643 dataSize = MsgEncodeCountInfo(&countInfo, &encodedData);
645 MSG_DEBUG("Command Handle Fail : MsgStoCountMessage()");
648 /* Make Event Data */
649 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_COUNT_MSG, err, (void**)ppEvent);
655 int MsgCountMsgByTypeHandler(const MSG_CMD_S *pCmd, char **ppEvent)
657 msg_error_t err = MSG_SUCCESS;
659 if (!pCmd || !ppEvent) {
660 MSG_DEBUG("pCmd or ppEvent is null");
664 char* encodedData = NULL;
665 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
667 int dataSize = 0, eventSize = 0;
670 MSG_MESSAGE_TYPE_S* pMsgType = (MSG_MESSAGE_TYPE_S*)pCmd->cmdData;
674 /* Get Message Count */
675 err = MsgStoCountMsgByType(pMsgType, &nMsgCnt);
677 if (err == MSG_SUCCESS) {
678 MSG_DEBUG("Command Handle Success : MsgStoCountMsgByType()");
680 /* Encoding Messaging Count Data */
681 dataSize = MsgEncodeCountByMsgType(nMsgCnt, &encodedData);
683 MSG_DEBUG("Command Handle Fail : MsgStoCountMsgByType()");
686 /* Make Event Data */
687 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_COUNT_BY_MSGTYPE, err, (void**)ppEvent);
693 int MsgGetMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
695 msg_error_t err = MSG_SUCCESS;
697 if (!pCmd || !ppEvent) {
698 MSG_DEBUG("pCmd or ppEvent is null");
703 msg_message_id_t* msgId = (msg_message_id_t*)pCmd->cmdData;
705 char* encodedData = NULL;
706 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
708 int dataSize = 0, eventSize = 0;
711 MSG_MESSAGE_INFO_S msgInfo;
712 MSG_SENDINGOPT_INFO_S sendOptInfo;
714 memset(&msgInfo, 0x00, sizeof(MSG_MESSAGE_INFO_S));
715 memset(&sendOptInfo, 0x00, sizeof(MSG_SENDINGOPT_INFO_S));
717 msgInfo.addressList = NULL;
718 unique_ptr<MSG_ADDRESS_INFO_S*, void(*)(MSG_ADDRESS_INFO_S**)> addressListBuf(&msgInfo.addressList, unique_ptr_deleter);
720 err = MsgStoGetMessage(*msgId, &msgInfo, &sendOptInfo);
722 if (err == MSG_SUCCESS) {
723 MSG_DEBUG("Command Handle Success : MsgStoGetMessage()");
725 /* Encoding Message Info Data */
726 dataSize = MsgEncodeMsgInfo(&msgInfo, &sendOptInfo, &encodedData);
728 MSG_DEBUG("Command Handle Fail : MsgStoGetMessage()");
731 /* MsgSoundPlayStop(); */
733 /* Make Event Data */
734 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_MSG, err, (void**)ppEvent);
740 int MsgAddFolderHandler(const MSG_CMD_S *pCmd, char **ppEvent)
742 msg_error_t err = MSG_SUCCESS;
744 if (!pCmd || !ppEvent) {
745 MSG_DEBUG("pCmd or ppEvent is null");
751 /* Get Folder Info */
752 MSG_FOLDER_INFO_S* pFolderInfo = (MSG_FOLDER_INFO_S*)pCmd->cmdData;
755 err = MsgStoAddFolder(pFolderInfo);
757 if (err == MSG_SUCCESS) {
758 MSG_DEBUG("Command Handle Success : MsgStoAddFolder()");
760 MSG_DEBUG("Command Handle Fail : MsgStoAddFolder()");
763 /* Make Event Data */
764 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_ADD_FOLDER, err, (void**)ppEvent);
770 int MsgUpdateFolderHandler(const MSG_CMD_S *pCmd, char **ppEvent)
772 msg_error_t err = MSG_SUCCESS;
774 if (!pCmd || !ppEvent) {
775 MSG_DEBUG("pCmd or ppEvent is null");
781 /* Get Folder Info */
782 MSG_FOLDER_INFO_S* pFolderInfo = (MSG_FOLDER_INFO_S*)pCmd->cmdData;
785 err = MsgStoUpdateFolder(pFolderInfo);
787 if (err == MSG_SUCCESS) {
788 MSG_DEBUG("Command Handle Success : MsgStoUpdateFolder()");
790 MSG_DEBUG("Command Handle Fail : MsgStoUpdateFolder()");
793 /* Make Event Data */
794 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_FOLDER, err, (void**)ppEvent);
800 int MsgDeleteFolderHandler(const MSG_CMD_S *pCmd, char **ppEvent)
802 msg_error_t err = MSG_SUCCESS;
804 if (!pCmd || !ppEvent) {
805 MSG_DEBUG("pCmd or ppEvent is null");
811 /* Get Folder Info */
812 msg_folder_id_t* pFolderInfo = (msg_folder_id_t*)pCmd->cmdData;
815 err = MsgStoDeleteFolder(*pFolderInfo);
817 if (err == MSG_SUCCESS) {
818 MSG_DEBUG("Command Handle Success : MsgStoDeleteFolder()");
820 MSG_DEBUG("Command Handle Fail : MsgStoDeleteFolder()");
823 /* Make Event Data */
824 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELETE_FOLDER, err, (void**)ppEvent);
830 int MsgGetFolderListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
832 msg_error_t err = MSG_SUCCESS;
834 if (!pCmd || !ppEvent) {
835 MSG_DEBUG("pCmd or ppEvent is null");
839 char* encodedData = NULL;
840 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
842 int dataSize = 0, eventSize = 0;
844 /* Get Storage List */
845 msg_struct_list_s folderList;
847 err = MsgStoGetFolderList(&folderList);
849 if (err == MSG_SUCCESS) {
850 MSG_DEBUG("Command Handle Success : MsgStoGetFolderList()");
852 /* Encoding Folder List Data */
853 dataSize = MsgEncodeFolderList(&folderList, &encodedData);
855 if (folderList.msg_struct_info) {
856 msg_struct_s *msg_struct;
857 for (int i = 0; i < folderList.nCount; i++) {
858 msg_struct = (msg_struct_s *)folderList.msg_struct_info[i];
860 delete (MSG_FOLDER_INFO_S *)msg_struct->data;
864 g_free(folderList.msg_struct_info);
867 MSG_DEBUG("Command Handle Fail : MsgStoGetFolderList()");
870 /* Make Event Data */
871 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_FOLDERLIST, err, (void**)ppEvent);
877 int MsgInitSimBySatHandler(const MSG_CMD_S *pCmd, char **ppEvent)
879 msg_error_t err = MSG_SUCCESS;
881 if (!pCmd || !ppEvent) {
882 MSG_DEBUG("pCmd or ppEvent is null");
888 /* Sim Init - Later */
889 /* Run msg-init-app */
891 /* Make Event Data */
892 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_PLG_INIT_SIM_BY_SAT, err, (void**)ppEvent);
898 int MsgGetThreadViewListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
900 msg_error_t err = MSG_SUCCESS;
902 if (!pCmd || !ppEvent) {
903 MSG_DEBUG("pCmd or ppEvent is null");
907 MSG_SORT_RULE_S sortRule = {0};
909 memcpy(&sortRule, pCmd->cmdData, sizeof(MSG_SORT_RULE_S));
911 char* encodedData = NULL;
912 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
914 int dataSize = 0, eventSize = 0;
916 /* Get Thread View List */
917 msg_struct_list_s msgThreadViewList;
919 /*err = MsgStoGetThreadViewList(&sortRule, &msgThreadViewList); */
921 if (err == MSG_SUCCESS) {
922 MSG_DEBUG("Command Handle Success : MsgStoGetThreadViewList()");
924 /* Encoding Folder View List Data */
925 dataSize = MsgEncodeThreadViewList(&msgThreadViewList, &encodedData);
927 MSG_DEBUG("dataSize [%d]", dataSize);
929 if (msgThreadViewList.msg_struct_info) {
930 msg_struct_s *msg_struct;
931 for (int i = 0; i < folderList.nCount; i++) {
932 msg_struct = (msg_struct_s *)msgThreadViewList.msg_struct_info[i];
934 delete (MSG_THREAD_VIEW_S *)msg_struct->data;
938 g_free(msgThreadViewList.msg_struct_info);
941 MSG_DEBUG("Command Handle Fail : MsgStoGetThreadViewList()");
945 /* Make Event Data */
946 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_THREADVIEWLIST, err, (void**)ppEvent);
952 int MsgDeleteThreadMessageListHandler(const MSG_CMD_S *pCmd, char **ppEvent)
954 msg_error_t err = MSG_SUCCESS;
956 if (!pCmd || !ppEvent) {
957 MSG_DEBUG("pCmd or ppEvent is null");
961 msg_thread_id_t threadId;
962 bool bIncludeProtect = false;
963 bool isSyncMLMsg = false;
965 memcpy(&threadId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_thread_id_t));
966 memcpy(&bIncludeProtect, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_thread_id_t)), sizeof(bool));
970 isSyncMLMsg = MsgStoCheckSyncMLMsgInThread(threadId);
972 msg_id_list_s msgIdList;
973 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
975 err = MsgStoDeleteThreadMessageList(threadId, bIncludeProtect, &msgIdList);
977 if (err == MSG_SUCCESS) {
978 MSG_DEBUG("Command Handle Success : MsgStoDeleteThreadMessageList()");
980 if(isSyncMLMsg == true) {
981 /* broadcast to listener threads, here */
982 MsgTransactionManager::instance()->broadcastSyncMLMsgOperationCB(err, -1, -1);
985 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_DELETE, &msgIdList);
987 MSG_DEBUG("Command Handle Fail : MsgStoDeleteThreadMessageList()");
990 if(msgIdList.msgIdList != NULL) {
991 delete [] (char*)msgIdList.msgIdList;
994 /* Make Event Data */
995 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELETE_THREADMESSAGELIST, err, (void**)ppEvent);
1001 int MsgSetTempAddressTableHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1003 msg_error_t err = MSG_SUCCESS;
1005 if (!pCmd || !ppEvent) {
1006 MSG_DEBUG("pCmd or ppEvent is null");
1011 memcpy(&count, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(int));
1013 MSG_ADDRESS_INFO_S addr_info[count] = {0, };
1014 memcpy(addr_info, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(int)), sizeof(MSG_ADDRESS_INFO_S)*count);
1018 err = MsgStoSetTempAddressTable(addr_info, count);
1020 if (err == MSG_SUCCESS) {
1021 MSG_DEBUG("Command Handle Success : MsgStoSetTmpAddressTable()");
1023 MSG_DEBUG("Command Handle Fail : MsgStoSetTmpAddressTable()");
1026 /* Make Event Data */
1027 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_SET_TEMP_ADDRESS_TABLE, err, (void**)ppEvent);
1035 int MsgCountMsgByContactHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1037 msg_error_t err = MSG_SUCCESS;
1039 if (!pCmd || !ppEvent) {
1040 MSG_DEBUG("pCmd or ppEvent is null");
1044 /* Get From address */
1045 MSG_THREAD_LIST_INDEX_S addrInfo;
1047 memcpy(&addrInfo, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(MSG_THREAD_LIST_INDEX_S));
1049 char* encodedData = NULL;
1050 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
1052 int dataSize = 0, eventSize = 0;
1054 /* Get Message Common Info */
1055 MSG_THREAD_COUNT_INFO_S threadCountInfo = {0};
1057 err = MsgStoCountMsgByContact(&addrInfo, &threadCountInfo);
1059 if (err == MSG_SUCCESS) {
1060 MSG_DEBUG("Command Handle Success : MsgStoCountMsgByContact()");
1062 /* Encoding Folder View List Data */
1063 dataSize = MsgEncodeMsgGetContactCount(&threadCountInfo, &encodedData);
1065 MSG_DEBUG("dataSize [%d]", dataSize);
1067 MSG_DEBUG("Command Handle Fail : MsgStoCountMsgByContact()");
1070 /* Make Event Data */
1071 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_CONTACT_COUNT, err, (void**)ppEvent);
1077 int MsgGetQuickPanelDataHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1079 msg_error_t err = MSG_SUCCESS;
1081 if (!pCmd || !ppEvent) {
1082 MSG_DEBUG("pCmd or ppEvent is null");
1086 /* Get Message ID */
1087 msg_quickpanel_type_t* type = (msg_quickpanel_type_t*)pCmd->cmdData;
1089 char* encodedData = NULL;
1090 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
1092 int dataSize = 0, eventSize = 0;
1095 MSG_MESSAGE_INFO_S msgInfo;
1096 memset(&msgInfo, 0x00, sizeof(MSG_MESSAGE_INFO_S));
1098 msgInfo.addressList = NULL;
1099 unique_ptr<MSG_ADDRESS_INFO_S*, void(*)(MSG_ADDRESS_INFO_S**)> addressListBuf(&msgInfo.addressList, unique_ptr_deleter);
1101 err = MsgStoGetQuickPanelData(*type, &msgInfo);
1103 if (err == MSG_SUCCESS) {
1104 MSG_DEBUG("Command Handle Success : MsgStoGetQuickPanelData()");
1106 /* Encoding Message Info Data */
1107 dataSize = MsgEncodeMsgInfo(&msgInfo, &encodedData);
1109 MSG_DEBUG("Command Handle Fail : MsgStoGetQuickPanelData()");
1112 /* Make Event Data */
1113 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_QUICKPANEL_DATA, err, (void**)ppEvent);
1119 int MsgResetDatabaseHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1121 msg_error_t err = MSG_SUCCESS;
1123 if (!pCmd || !ppEvent) {
1124 MSG_DEBUG("pCmd or ppEvent is null");
1131 err = MsgStoResetDatabase();
1133 if (err == MSG_SUCCESS)
1134 MSG_DEBUG("Command Handle Success : MsgStoResetDatabase()");
1136 MSG_DEBUG("Command Handle Fail : MsgStoResetDatabase()");
1138 /* Make Event Data */
1139 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_RESET_DB, err, (void**)ppEvent);
1145 int MsgGetMemSizeHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1147 msg_error_t err = MSG_SUCCESS;
1149 if (!pCmd || !ppEvent) {
1150 MSG_DEBUG("pCmd or ppEvent is null");
1154 char* encodedData = NULL;
1155 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
1157 int dataSize = 0, eventSize = 0;
1159 /* Get Memory size */
1160 unsigned int memsize = 0;
1162 memsize = MsgDu(MSG_DATA_ROOT_PATH);
1164 dataSize = MsgEncodeMemSize(&memsize, &encodedData);
1166 /* Make Event Data */
1167 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_MEMSIZE, err, (void**)ppEvent);
1173 int MsgBackupMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1175 msg_error_t err = MSG_SUCCESS;
1177 if (!pCmd || !ppEvent) {
1178 MSG_DEBUG("pCmd or ppEvent is null");
1183 char path[MSG_FILEPATH_LEN_MAX+1] = {0, };
1184 msg_message_backup_type_t type;
1186 memcpy(&type, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_message_backup_type_t));
1187 memcpy(&path, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(msg_message_backup_type_t)), sizeof(path));
1189 err = MsgStoBackupMessage(type, path);
1190 if (err == MSG_SUCCESS)
1191 MSG_DEBUG("Command Handle Success : MsgBackupMessageHandler()");
1193 MSG_DEBUG("Command Handle Fail : MsgBackupMessageHandler()");
1195 /* Make Event Data */
1196 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_BACKUP_MESSAGE, err, (void**)ppEvent);
1202 int MsgRestoreMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1204 msg_error_t err = MSG_SUCCESS;
1206 if (!pCmd || !ppEvent) {
1207 MSG_DEBUG("pCmd or ppEvent is null");
1212 msg_id_list_s *msgIdList = NULL;
1213 char path[MSG_FILEPATH_LEN_MAX+1] = {0, };
1214 memcpy(&path, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(path));
1215 MSG_DEBUG("path = %s", path);
1218 err = MsgStoRestoreMessage(path, &msgIdList);
1220 if (err == MSG_SUCCESS) {
1221 MSG_DEBUG("Command Handle Success : MsgStoRestoreMessage()");
1224 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_INSERT, msgIdList);
1226 if (msgIdList->msgIdList)
1227 free(msgIdList->msgIdList);
1232 MSG_DEBUG("Not Exist msg id list to restore");
1235 MSG_DEBUG("Command Handle Fail : MsgStoRestoreMessage()");
1237 /* Make Event Data */
1238 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_RESTORE_MESSAGE, err, (void**)ppEvent);
1244 int MsgGetReportStatusHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1246 msg_error_t err = MSG_SUCCESS;
1248 if (!pCmd || !ppEvent) {
1249 MSG_DEBUG("pCmd or ppEvent is null");
1253 /* Get Message ID */
1254 msg_message_id_t* msgId = (msg_message_id_t*)pCmd->cmdData;
1255 MSG_MESSAGE_TYPE_S msgType = {0, };
1257 char* encodedData = NULL;
1258 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
1260 int dataSize = 0, eventSize = 0;
1262 MSG_REPORT_STATUS_INFO_S *reportStatus = NULL;
1263 int report_count = 0;
1265 if (MsgStoGetMsgType(*msgId, &msgType) != MSG_SUCCESS)
1266 MSG_DEBUG("MsgStoGetMsgType is failed");
1268 if (msgType.mainType == MSG_SMS_TYPE) {
1269 err = MsgStoGetSmsReportStatus(*msgId, &report_count, &reportStatus);
1270 } else if (msgType.mainType == MSG_MMS_TYPE) {
1271 err = MsgStoGetMmsReportStatus(*msgId, &report_count, &reportStatus);
1273 MSG_DEBUG("Message Type is unknown!");
1274 err = MSG_ERR_INVALID_MSG_TYPE;
1277 if (err == MSG_SUCCESS) {
1278 MSG_DEBUG("Command Handle Success : MsgGetReportStatusHandler()");
1280 /* Encoding Report Status Data */
1281 dataSize = MsgEncodeReportStatus(reportStatus, report_count, &encodedData);
1283 MSG_DEBUG("Command Handle Fail : MsgGetReportStatusHandler()");
1286 /* Make Event Data */
1287 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_REPORT_STATUS, err, (void**)ppEvent);
1293 int MsgGetThreadIdByAddressHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1295 msg_error_t err = MSG_SUCCESS;
1297 if (!pCmd || !ppEvent) {
1298 MSG_DEBUG("pCmd or ppEvent is null");
1302 MSG_MESSAGE_INFO_S msgInfo;
1303 memset(&msgInfo, 0x00, sizeof(MSG_MESSAGE_INFO_S));
1305 msgInfo.addressList = NULL;
1306 unique_ptr<MSG_ADDRESS_INFO_S*, void(*)(MSG_ADDRESS_INFO_S**)> addressListBuf(&msgInfo.addressList, unique_ptr_deleter);
1308 int *addrCnt = (int *)pCmd->cmdData;
1309 MSG_DEBUG("*addrCnt [%d]", *addrCnt);
1311 msgInfo.nAddressCnt = *addrCnt;
1313 msgInfo.addressList = (MSG_ADDRESS_INFO_S *)new char[sizeof(MSG_ADDRESS_INFO_S) * msgInfo.nAddressCnt];
1315 for(int i = 0; i < msgInfo.nAddressCnt; i++)
1316 memcpy(&msgInfo.addressList[i], (MSG_ADDRESS_INFO_S *)(pCmd->cmdData+sizeof(int)+(sizeof(MSG_ADDRESS_INFO_S)*i)), sizeof(MSG_ADDRESS_INFO_S));
1318 char* encodedData = NULL;
1319 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
1321 int dataSize = 0, eventSize = 0;
1323 msg_thread_id_t threadId;
1325 err = MsgStoGetThreadIdByAddress(&msgInfo, &threadId);
1327 if (err == MSG_SUCCESS) {
1328 MSG_DEBUG("threadId [%d]", threadId);
1329 MSG_DEBUG("Command Handle Success : MsgGetThreadIdByAddressHandler()");
1331 /* Encoding threadId Data */
1332 dataSize = MsgEncodeThreadId(&threadId, &encodedData);
1334 MSG_DEBUG("Command Handle Fail : MsgGetThreadIdByAddressHandler()");
1337 /* Make Event Data */
1338 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_THREAD_ID_BY_ADDRESS, err, (void**)ppEvent);
1344 int MsgGetThreadInfoHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1346 msg_error_t err = MSG_SUCCESS;
1348 if (!pCmd || !ppEvent) {
1349 MSG_DEBUG("pCmd or ppEvent is null");
1353 char* encodedData = NULL;
1354 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
1359 msg_thread_id_t threadId;
1361 memcpy(&threadId, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(msg_thread_id_t));
1363 MSG_THREAD_VIEW_S threadInfo;
1364 memset(&threadInfo, 0x00, sizeof(threadInfo));
1366 err = MsgStoGetThreadInfo(threadId, &threadInfo);
1368 if (err == MSG_SUCCESS) {
1369 MSG_DEBUG("Command Handle Success : MsgStoGetThreadInfo()");
1371 /* Encoding thread Info Data */
1372 dataSize = MsgEncodeThreadInfo(&threadInfo, &encodedData);
1374 MSG_DEBUG("Command Handle Fail : MsgStoGetThreadInfo()");
1377 /* Make Event Data */
1378 eventSize = MsgMakeEvent(encodedData, dataSize, MSG_EVENT_GET_THREAD_INFO, err, (void**)ppEvent);
1384 #ifdef MMS_REPORT_OPERATIONS
1385 int MsgCheckReadReportRequestedHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1388 msg_error_t err = MSG_SUCCESS;
1390 char* encodedData = NULL;
1391 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
1393 int dataSize = 0, eventSize = 0;
1395 /* Get Message ID */
1396 msg_message_id_t* MsgId = (msg_message_id_t*)pCmd->cmdData;
1398 /* Check ReadReport Is Requested */
1399 bool bReadReportRequested;
1401 bReadReportRequested = MsgStoCheckReadReportRequested(*MsgId);
1402 if (err == MSG_SUCCESS) {
1403 MSG_DEBUG("Command Handle Success : MsgStoCheckSendReadReport()");
1405 /* Encoding ReadReportIsSent Data */
1406 dataSize = MsgEncodeReadReportRequested(bReadReportRequested, &encodedData);
1408 MSG_DEBUG("Command Handle Fail : MsgStoCheckReadReportIsSent()");
1411 /* Make Event Data */
1412 eventSize = MsgMakeStorageEvent(encodedData, dataSize, MSG_EVENT_PLG_CHECK_READ_REPORT_REQUESTED, err, (void**)ppEvent);
1418 int MsgCheckReadReportIsSentHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1421 msg_error_t err = MSG_SUCCESS;
1423 char* encodedData = NULL;
1424 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
1426 int dataSize = 0, eventSize = 0;
1428 /* Get Message ID */
1429 msg_message_id_t* MsgId = (msg_message_id_t*)pCmd->cmdData;
1431 /* Check ReadReport Is Sent */
1432 bool bReadReportIsSent;
1434 MSG_DEBUG("#### MSGID = %d ####", *MsgId);
1436 bReadReportIsSent = MsgStoCheckReadReportIsSent(*MsgId);
1437 MSG_DEBUG("######## 1. bReadStatusIsSent = %d #######", bReadReportIsSent);
1438 if (err == MSG_SUCCESS) {
1439 MSG_DEBUG("Command Handle Success : MsgStoCheckReadReportIsSent()");
1441 /* Encoding ReadReportIsSent Data */
1442 dataSize = MsgEncodeReadReportIsSent(bReadReportIsSent, &encodedData);
1444 MSG_DEBUG("Command Handle Fail : MsgStoCheckReadReportIsSent()");
1447 /* Make Event Data */
1448 eventSize = MsgMakeStorageEvent(encodedData, dataSize, MSG_EVENT_PLG_CHECK_READ_REPORT_IS_SENT, err, (void**)ppEvent);
1454 int MsgSetReadReportSendStatusHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1457 msg_error_t err = MSG_SUCCESS;
1459 char* encodedData = NULL;
1460 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
1462 int dataSize = 0, eventSize = 0;
1464 /* Get Message ID */
1465 msg_message_id_t msgId;
1466 int readReportSendStatus;
1468 memcpy(&msgId, (char*)pCmd + sizeof(MSG_CMD_TYPE_T), sizeof(msg_message_id_t));
1469 memcpy(&readReportSendStatus, (char*)pCmd + sizeof(MSG_CMD_TYPE_T) + sizeof(msg_message_id_t), sizeof(int));
1471 /* Set Read Report Send Status */
1472 err = MsgStoSetReadReportSendStatus(msgId, readReportSendStatus);
1474 if (err == MSG_SUCCESS) {
1475 MSG_DEBUG("Command Handle Success : MsgStoUpdateReadStatus()");
1477 MSG_DEBUG("Command Handle Fail : MsgStoUpdateReadStatus()");
1480 /* Make Event Data */
1481 eventSize = MsgMakeStorageEvent(encodedData, dataSize, MSG_EVENT_PLG_SET_READ_REPORT_SEND_STATUS, err, (void**)ppEvent);
1487 int MsgGetMmsVersionHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1490 msg_error_t err = MSG_SUCCESS;
1492 char* encodedData = NULL;
1493 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
1495 int dataSize = 0, eventSize = 0;
1497 /* Get Message ID */
1498 msg_message_id_t* MsgId = (msg_message_id_t*)pCmd->cmdData;
1500 /* Check ReadReport Is Sent */
1503 MSG_DEBUG("#### MSGID = %d ####", *MsgId);
1505 version = MsgStoGetMmsVersion(*MsgId);
1506 MSG_DEBUG("######## 1. version = %x #######", version);
1507 if (err == MSG_SUCCESS) {
1508 MSG_DEBUG("Command Handle Success : MsgStoCheckReadReportIsSent()");
1510 /* Encoding ReadReportIsSent Data */
1511 dataSize = MsgEncodeMmsVersion(version, &encodedData);
1513 MSG_DEBUG("Command Handle Fail : MsgStoCheckReadReportIsSent()");
1516 /* Make Event Data */
1517 eventSize = MsgMakeStorageEvent(encodedData, dataSize, MSG_EVENT_PLG_GET_MMS_VERSION, err, (void**)ppEvent);
1523 int MsgGetMmsStatusInfoHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1526 msg_error_t err = MSG_SUCCESS;
1528 char* encodedData = NULL;
1529 unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
1531 int dataSize = 0, eventSize = 0;
1533 /* Get Message ID */
1534 msg_message_id_t* MsgId = (msg_message_id_t*)pCmd->cmdData;
1536 MMS_STATUS_INFO_S mmsStatusInfo;
1538 MSG_DEBUG("#### MSGID = %d ####", *MsgId);
1540 err = MsgStoGetMmsStatusInfo(*MsgId, &mmsStatusInfo);
1541 if (err == MSG_SUCCESS) {
1542 MSG_DEBUG("Command Handle Success : MsgGetMmsStatusInfoHandler()");
1544 /* Encoding ReadReportIsSent Data */
1545 dataSize = MsgEncodeMmsStatusInfo(&mmsStatusInfo, &encodedData);
1547 MSG_DEBUG("Command Handle Fail : MsgGetMmsStatusInfoHandler()");
1550 /* Make Event Data */
1551 eventSize = MsgMakeStorageEvent(encodedData, dataSize, MSG_EVENT_PLG_GET_MMS_STATUS_INFO, err, (void**)ppEvent);
1558 int MsgAddPushEventHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1560 msg_error_t err = MSG_SUCCESS;
1562 if (!pCmd || !ppEvent) {
1563 MSG_DEBUG("pCmd or ppEvent is null");
1569 /* Get Message Info */
1570 MSG_PUSH_EVENT_INFO_S* pPushEvent = (MSG_PUSH_EVENT_INFO_S*)pCmd->cmdData;
1573 err = MsgStoAddPushEvent(pPushEvent);
1575 if (err == MSG_SUCCESS) {
1576 MSG_DEBUG("Command Handle Success : MsgStoAddPushEvent()");
1578 MSG_DEBUG("Command Handle Fail : MsgStoAddPushEvent()");
1581 /* Make Event Data */
1582 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_ADD_PUSH_EVENT, err, (void**)ppEvent);
1587 int MsgDeletePushEventHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1589 msg_error_t err = MSG_SUCCESS;
1591 if (!pCmd || !ppEvent) {
1592 MSG_DEBUG("pCmd or ppEvent is null");
1598 /* Get Message Info */
1599 MSG_PUSH_EVENT_INFO_S* pPushEvent = (MSG_PUSH_EVENT_INFO_S*)pCmd->cmdData;
1602 err = MsgStoDeletePushEvent(pPushEvent);
1604 if (err == MSG_SUCCESS) {
1605 MSG_DEBUG("Command Handle Success : MsgStoDeletePushEvent()");
1607 MSG_DEBUG("Command Handle Fail : MsgStoDeletePushEvent()");
1610 /* Make Event Data */
1611 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_DELETE_PUSH_EVENT, err, (void**)ppEvent);
1616 int MsgUpdatePushEventHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1618 msg_error_t err = MSG_SUCCESS;
1620 if (!pCmd || !ppEvent) {
1621 MSG_DEBUG("pCmd or ppEvent is null");
1627 /* Get Message Info */
1628 MSG_PUSH_EVENT_INFO_S pSrc;
1629 MSG_PUSH_EVENT_INFO_S pDst;
1630 memcpy(&pSrc, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(MSG_PUSH_EVENT_INFO_S));
1631 memcpy(&pDst, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN+sizeof(MSG_PUSH_EVENT_INFO_S)), sizeof(MSG_PUSH_EVENT_INFO_S));
1634 err = MsgStoUpdatePushEvent(&pSrc, &pDst);
1636 if (err == MSG_SUCCESS) {
1637 MSG_DEBUG("Command Handle Success : MsgStoUpdatePushEvent()");
1639 MSG_DEBUG("Command Handle Fail : MsgStoUpdatePushEvent()");
1642 /* Make Event Data */
1643 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_PUSH_EVENT, err, (void**)ppEvent);
1648 int MsgAddSimMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1650 msg_error_t err = MSG_SUCCESS;
1652 if (!pCmd || !ppEvent) {
1653 MSG_DEBUG("pCmd or ppEvent is null");
1659 MSG_MESSAGE_INFO_S msgInfo;
1660 MSG_SENDINGOPT_INFO_S sendOptInfo;
1661 memset(&msgInfo, 0x00, sizeof(MSG_MESSAGE_INFO_S));
1662 memset(&sendOptInfo, 0x00, sizeof(MSG_SENDINGOPT_INFO_S));
1664 msgInfo.addressList = NULL;
1665 unique_ptr<MSG_ADDRESS_INFO_S*, void(*)(MSG_ADDRESS_INFO_S**)> addressListBuf(&msgInfo.addressList, unique_ptr_deleter);
1667 MsgDecodeMsgInfo((char *)pCmd->cmdData, &msgInfo);
1669 int *simIdList = NULL;
1671 char *offset = NULL;
1672 offset = ((char *)pCmd->cmdData) + sizeof(MSG_MESSAGE_INFO_S) + (sizeof(MSG_ADDRESS_INFO_S) * msgInfo.nAddressCnt);
1674 listSize = *(int*)offset;
1675 offset += sizeof(int);
1676 MSG_DEBUG("listSize [%d]", listSize);
1678 simIdList = (int *)offset;
1680 MSG_DEBUG("simIdList[0] [%d]", simIdList[0]);
1683 #if 0 /* Not to broadcast callback here. */
1684 bool isReplaceMsg = false;
1686 if (msgInfo.msgId <= 0)
1689 isReplaceMsg = true;
1691 if (msgInfo.msgId <= 0)
1695 msg_message_id_t msg_id = MsgStoAddSimMessage(&msgInfo, simIdList, listSize);
1698 MSG_DEBUG("Command Handle Success : MsgStoAddSimMessage()");
1700 #if 0 /* Not to broadcast callback here. */
1701 /*storage change CB */
1702 msg_id_list_s msgIdList;
1703 msg_message_id_t msgIds[1];
1704 memset(&msgIdList, 0x00, sizeof(msg_id_list_s));
1706 msgIdList.nCount = 1;
1707 msgIds[0] = msgInfo.msgId;
1708 msgIdList.msgIdList = msgIds;
1711 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_UPDATE, &msgIdList);
1713 MsgTransactionManager::instance()->broadcastStorageChangeCB(MSG_SUCCESS, MSG_STORAGE_CHANGE_INSERT, &msgIdList);
1716 MSG_DEBUG("Command Handle Fail : MsgStoAddSimMessage()");
1717 err = MSG_ERR_INVALID_MESSAGE;
1720 /* Delete Temp File for Message Data */
1721 if (msgInfo.bTextSms == false)
1722 MsgDeleteFile(msgInfo.msgData); /*ipc */
1724 /* Make Event Data */
1725 eventSize = MsgMakeEvent((const void *)&msg_id, sizeof(msg_message_id_t), MSG_EVENT_ADD_SIM_MSG, err, (void**)ppEvent);
1731 int MsgUpdateIMSIHandler(const MSG_CMD_S *pCmd, char **ppEvent)
1733 msg_error_t err = MSG_SUCCESS;
1735 if (!pCmd || !ppEvent) {
1736 MSG_DEBUG("pCmd or ppEvent is null");
1743 memcpy(&sim_idx, (void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), sizeof(int));
1746 err = MsgStoUpdateIMSI(sim_idx);
1748 if (err == MSG_SUCCESS) {
1749 MSG_DEBUG("Command Handle Success : MsgStoUpdateIMSI()");
1751 MSG_DEBUG("Command Handle Fail : MsgStoUpdateIMSI()");
1754 /* Make Event Data */
1755 eventSize = MsgMakeEvent(NULL, 0, MSG_EVENT_UPDATE_IMSI, err, (void**)ppEvent);