From 1e2c877a3fad1cb17417c2e9f50d2cdf7f94894e Mon Sep 17 00:00:00 2001 From: shivakumar jagalur matt Date: Thu, 26 Sep 2013 16:28:02 +0530 Subject: [PATCH] S1-15867 Change-Id: I7beb2e615f1c0b5475fc6c2ac2575b9824e6e478 Signed-off-by: shivakumar jagalur matt --- src/FMsg_SmsManagerImpl.cpp | 3 +-- src/FMsg_SmsMmsCallbackHandler.cpp | 20 +++++++++++++++++++- src/FMsg_SmsMmsCallbackHandler.h | 14 ++++++++++++++ 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/src/FMsg_SmsManagerImpl.cpp b/src/FMsg_SmsManagerImpl.cpp index dda6f69..715f671 100644 --- a/src/FMsg_SmsManagerImpl.cpp +++ b/src/FMsg_SmsManagerImpl.cpp @@ -284,8 +284,7 @@ _SmsManagerImpl::AddSmsMessageEventListener(const ISmsMessageEventListener& even r = __pSmsReceiveEvent->AddListener(eventListener, true); SysTryCatch(NID_MSG, r == E_SUCCESS, , r, "Failed to add a listener"); - err = msg_reg_sms_message_callback(__msgHandle, &_SmsMmsCallbackHandler::IncomingSmsMessageCallback, 0, (void*) - __pSmsReceiveEvent); + err = _SmsMmsCallbackHandler::GetInstance()->RegisterIncomingMessageCallback(__pSmsReceiveEvent); r = ConvertException(err); SysTryCatch(NID_MSG, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "[%s] Failed to register for incoming sms callback.", GetErrorMessage(r)); diff --git a/src/FMsg_SmsMmsCallbackHandler.cpp b/src/FMsg_SmsMmsCallbackHandler.cpp index fd3b1bd..00050c5 100644 --- a/src/FMsg_SmsMmsCallbackHandler.cpp +++ b/src/FMsg_SmsMmsCallbackHandler.cpp @@ -53,6 +53,8 @@ _SmsMmsCallbackHandler::_SmsMmsCallbackHandler(void) : __msgHandle(0) , __callbackRegistered(false) , __incomingSmsCallbackRegistered(true) + , __incomingCallbackRegistered(false) + , __pSmsIncomingEvent(null) { } @@ -204,6 +206,22 @@ _SmsMmsCallbackHandler::RegisterMessageCallback() } int +_SmsMmsCallbackHandler::RegisterIncomingMessageCallback(Tizen::Base::Object* pSmsIncomingEvent) +{ + int err = MSG_SUCCESS; + + __pSmsIncomingEvent = pSmsIncomingEvent; + + if (__msgHandle && !__incomingCallbackRegistered) + { + err = msg_reg_sms_message_callback(__msgHandle, &_SmsMmsCallbackHandler::IncomingSmsMessageCallback, 0, null); + __incomingCallbackRegistered = true; + } + + return err; +} + +int _SmsMmsCallbackHandler::CloseMessageHandle() { int err = MSG_SUCCESS; @@ -404,7 +422,7 @@ _SmsMmsCallbackHandler::SentMessageStatusCallback(msg_handle_t hMsgHandle, msg_s void _SmsMmsCallbackHandler::IncomingSmsMessageCallback(msg_handle_t hMsgHandle, msg_struct_t newMsg, void* pUserParam) { - _SmsEvent* pSmsEvent = static_cast <_SmsEvent*>(pUserParam); + _SmsEvent* pSmsEvent = static_cast <_SmsEvent*>(_SmsMmsCallbackHandler::GetInstance()->__pSmsIncomingEvent); _SmsEventArg* pSmsEventArg = null; int msgSize = 0; diff --git a/src/FMsg_SmsMmsCallbackHandler.h b/src/FMsg_SmsMmsCallbackHandler.h index 06a2b9a..8eb687a 100644 --- a/src/FMsg_SmsMmsCallbackHandler.h +++ b/src/FMsg_SmsMmsCallbackHandler.h @@ -138,6 +138,18 @@ public: */ result GetAndRemoveFromMessageMap(int reqId, _MessageType& msgType, Tizen::Base::Object** pEvent); + /** + * Registers the Message call back for incoming SMS operation. + * + * @since 3.0 + * @return An error codea + * @param[in] pSmsIncomingEvent message Event + * @exception MSG_SUCCESS The method was successful. + * @exception MSG_ERR_NULL_POINTER Input parameter is NULL. + * @exception MSG_ERR_MEMORY_ERROR Memory error. + */ + int RegisterIncomingMessageCallback(Tizen::Base::Object* pSmsIncomingEvent); + // for SMS and MMS sent status static void SentMessageStatusCallback(msg_handle_t hMsgHandle, msg_struct_t msgStatus, void* pUserParam); @@ -172,6 +184,8 @@ private: msg_handle_t __msgHandle; bool __callbackRegistered; bool __incomingSmsCallbackRegistered; + bool __incomingCallbackRegistered; + Tizen::Base::Object* __pSmsIncomingEvent; Tizen::Base::Collection::MultiHashMap __messageMap; Tizen::Base::Runtime::Mutex __msgMutex; static bool __destroyed; -- 2.7.4