_SmsMmsCallbackHandler::_SmsMmsCallbackHandler(void)
: __msgHandle(0)
- , __cbsSettingsHandle(0)
- , __pCbsChannelList(0)
- , __pTempCbsChannelList(0)
, __callbackRegistered(false)
, __incomingSmsCallbackRegistered(true)
{
r = __msgMutex.Create();
}
- __pTempCbsChannelList = new (std::nothrow) ArrayList();
- SysTryReturnResult(NID_MSG, __pTempCbsChannelList != null, E_OUT_OF_MEMORY, "memory allocation failed");
- r = __pTempCbsChannelList->Construct();
- SysTryReturnResult(NID_MSG, r == E_SUCCESS, r, "Failed to construct an ArrayList");
std::atexit(CloseCbsSettingsHandle);
return r;
__msgMutex.Release();
- if (__cbsSettingsHandle)
- {
- msg_release_struct(&__cbsSettingsHandle);
- __cbsSettingsHandle = 0;
- }
-
- if (__pTempCbsChannelList)
- {
- if (__pTempCbsChannelList->GetCount() > 0)
- {
- __pTempCbsChannelList->RemoveAll(true);
- }
- delete __pTempCbsChannelList;
- __pTempCbsChannelList = null;
- }
}
_SmsMmsCallbackHandler*
}
int
-_SmsMmsCallbackHandler::OpenCbsSettingsHandle(msg_struct_t& cbsSettingsHandle)
-{
- int err = MSG_SUCCESS;
-
- if (!__cbsSettingsHandle)
- {
- __cbsSettingsHandle = msg_create_struct(MSG_STRUCT_SETTING_CB_OPT);
- if (__cbsSettingsHandle && __msgHandle)
- {
- err = msg_get_cb_opt(__msgHandle, __cbsSettingsHandle);
- }
- }
-
- cbsSettingsHandle = __cbsSettingsHandle;
- return err;
-}
-
-result
-_SmsMmsCallbackHandler::AddCbsChannel(int from, int to, Tizen::Base::String& name, bool activate)
-{
- result r = E_SUCCESS;
- int fromId = 0;
- int toId = 0;
- bool channelFound = false;
- SysLog(NID_MSG, "AddCbsChannel from %d to %d name %ls activate %d ",from, to, name.GetPointer(), activate);
-
- for (int index = 0; index < __pTempCbsChannelList->GetCount(); index++)
- {
- CbsChannel* pCbsChannel = null;
- pCbsChannel = dynamic_cast< Tizen::Messaging::CbsChannel* >(__pTempCbsChannelList->GetAt(index));
- SysTryReturn(NID_MSG, pCbsChannel != null, r = E_SYSTEM, E_SYSTEM, "Failed to get the channel.");
-
- pCbsChannel->GetRange(fromId, toId);
- if (from == fromId && to == toId)
- {
- channelFound = true;
- break; // found channel to be updated.
- }
-
-
- }
- SysTryReturn(NID_MSG, channelFound == false, r = E_ALREADY_SET, E_ALREADY_SET, "Failed due to already cb range.");
-
-
- if (!channelFound)
- {
- CbsChannel* pCbsChannel = null;
- pCbsChannel = _CbsChannelImpl::GetCbsChannelN(from, to, name);
- SysTryReturn(NID_MSG, pCbsChannel != null, r = E_SYSTEM, E_SYSTEM, "Failed to get the channel.");
-
- if (activate)
- {
- _CbsChannelImpl::GetInstance(*pCbsChannel)->SetCbsChannelState(activate);
- }
- r =__pTempCbsChannelList->Add(*pCbsChannel);
- SysTryReturn(NID_MSG,r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "Failed to set the channel.");
-
- }
-
-
-
-
- r = SaveCbsSettings();
- return r;
-}
-
-result
-_SmsMmsCallbackHandler::RemoveCbsChannel(int from, int to)
-{
- result r = E_SUCCESS;
- int fromId = 0;
- int toId = 0;
- bool channelFound = false;
- CbsChannel* pCbsChannel = NULL;
- SysLog(NID_MSG, "RemoveCbsChannel from %d %d ",from, to);
-
- for (int index = 0; index < __pTempCbsChannelList->GetCount(); index++)
- {
- pCbsChannel = dynamic_cast< Tizen::Messaging::CbsChannel* >(__pTempCbsChannelList->GetAt(index));
- SysTryReturn(NID_MSG, pCbsChannel != null, r = E_SYSTEM, E_SYSTEM, "Failed to get the channel.");
-
- pCbsChannel->GetRange(fromId, toId);
- if (from == fromId && to == toId)
- {
- channelFound = true; // found channel to be removed.
- __pTempCbsChannelList->RemoveAt(index);
- index--;
- delete pCbsChannel;
-
- }
- }
-
-
- if (!channelFound)
- {
- return E_OBJ_NOT_FOUND;
- }
- r = SaveCbsSettings();
- SysTryReturn(NID_MSG, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "Failed to remove the channel.");
-
- return r;
-}
-
-result
-_SmsMmsCallbackHandler::SearchCbsChannel(int from, int to, int& index)
-{
- result r = E_SUCCESS;
- int fromId = 0;
- int toId = 0;
- bool channelFound = false;
- CbsChannel* pCbsChannel = NULL;
- SysLog(NID_MSG, "SearchCbsChannel from %d %d ",from, to);
-
- for (int tempIndex = 0; tempIndex < __pTempCbsChannelList->GetCount(); tempIndex++)
- {
- pCbsChannel = dynamic_cast< Tizen::Messaging::CbsChannel* >(__pTempCbsChannelList->GetAt(tempIndex));
- SysTryReturn(NID_MSG, pCbsChannel != null, r = E_SYSTEM, E_SYSTEM, "Failed to get the channel.");
-
- pCbsChannel->GetRange(fromId, toId);
- if (from == fromId && to == toId)
- {
- channelFound = true;
- index = tempIndex;
- break; // found channel to be searched.
- }
- }
-
- if (!channelFound)
- {
- return E_OBJ_NOT_FOUND;
- }
-
- return r;
-}
-
-result
-_SmsMmsCallbackHandler::UpdateCbsChannel(int from, int to, Tizen::Base::String name, bool activate)
-{
- result r = E_SUCCESS;
- int fromId = 0;
- int toId = 0;
- bool channelFound = false;
- int index = 0;
- CbsChannel* pCbsChannel = NULL;
- SysLog(NID_MSG, "UpdateCbsChannel from %d to %d name %ls activate %d ",from, to, name.GetPointer(), activate);
-
- for (int i = 0; i < __pTempCbsChannelList->GetCount(); i++)
- {
- pCbsChannel = dynamic_cast< Tizen::Messaging::CbsChannel* >(__pTempCbsChannelList->GetAt(i));
- SysTryReturn(NID_MSG, pCbsChannel != null, r = E_SYSTEM, E_SYSTEM, "Failed to get the channel.");
-
- pCbsChannel->GetRange(fromId, toId);
- if (from == fromId && to == toId)
- {
- channelFound = true;
- index = i;
- break; // found channel to be updated.
- }
- }
-
- if (!channelFound)
- {
- return E_OBJ_NOT_FOUND;
- }
-
- // set cbs channel name
- _CbsChannelImpl::GetInstance(*pCbsChannel)->SetCbsChannelName(name);
-
- if (activate)
- {
- _CbsChannelImpl::GetInstance(*pCbsChannel)->SetCbsChannelState(activate);
- }
- else
- {
- _CbsChannelImpl::GetInstance(*pCbsChannel)->SetCbsChannelState(false);
- }
- //For changing to latest
- __pTempCbsChannelList->RemoveAt(index);
- __pTempCbsChannelList->Add(*pCbsChannel);
-
- r = SaveCbsSettings();
- SysTryReturn(NID_MSG, r == E_SUCCESS, r = E_SYSTEM, E_SYSTEM, "Failed to save the channel.");
-
- return r;
-}
-
-result
-_SmsMmsCallbackHandler::GetCbsChannel(int index, int& from, int& to, Tizen::Base::String& name, bool& activate)
-{
- result r = E_SUCCESS;
- CbsChannel* pCbsChannel = NULL;
-
- pCbsChannel = dynamic_cast< Tizen::Messaging::CbsChannel* >(__pTempCbsChannelList->GetAt(index));
- SysTryReturn(NID_MSG, pCbsChannel != null, r = E_SYSTEM, E_SYSTEM, "Failed to get the channel.");
-
- pCbsChannel->GetRange(from, to);
- name = pCbsChannel->GetName();
- if (pCbsChannel->IsActivated())
- {
- activate = true;
- }
- else
- {
- activate = false;
- }
- return r;
-}
-
-result
-_SmsMmsCallbackHandler::GetCbsChannelsCount(int& count)
-{
- result r = E_SUCCESS;
-
- if (__pTempCbsChannelList)
- {
- count = __pTempCbsChannelList->GetCount();
- }
-
- return r;
-}
-
-result
-_SmsMmsCallbackHandler::SaveCbsSettings()
-{
- int err = MSG_SUCCESS;
- result r = E_SUCCESS;
- int fromId = 0;
- int toId = 0;
- bool isChannelActive = false;
- String channelName;
- char* pTempChannelName = null;
-
- SysTryReturn(NID_MSG, __pTempCbsChannelList != null, r = E_SYSTEM, E_SYSTEM, "Failed to save the channel.");
- err = msg_get_list_handle(__cbsSettingsHandle, MSG_CB_CHANNEL_LIST_STRUCT, (void **)&__pCbsChannelList);
- SysTryReturn(NID_MSG, err == MSG_SUCCESS, r = E_SYSTEM, E_SYSTEM, "Failed to get the channel handle.");
- SysLog(NID_MSG, "SaveCbsSettings Count %d, %d ",__pCbsChannelList->nCount,__pTempCbsChannelList->GetCount());
- __pCbsChannelList->nCount = __pTempCbsChannelList->GetCount();
-
- // save Channel List
- for (int index = 0; index < __pTempCbsChannelList->GetCount(); index++)
- {
- Tizen::Messaging::CbsChannel* pCbsChannel = dynamic_cast< Tizen::Messaging::CbsChannel* >(__pTempCbsChannelList->GetAt(index));
- SysTryReturn(NID_MSG, pCbsChannel != null, r = E_SYSTEM, E_SYSTEM, "Failed to get the channel.");
- pCbsChannel->GetRange(fromId, toId);
- channelName = pCbsChannel->GetName();
- if (pCbsChannel->IsActivated())
- {
- isChannelActive = true;
- }
-
- pTempChannelName = _StringConverter::CopyToCharArrayN(channelName);
- SysTryReturn(NID_MSG, pTempChannelName != null, r = E_OUT_OF_MEMORY, r, "Memory allocation failed.");
-
- msg_set_bool_value(__pCbsChannelList->msg_struct_info[index], MSG_CB_CHANNEL_ACTIVATE_BOOL, isChannelActive);
- msg_set_int_value(__pCbsChannelList->msg_struct_info[index], MSG_CB_CHANNEL_ID_FROM_INT, fromId);
- msg_set_int_value(__pCbsChannelList->msg_struct_info[index], MSG_CB_CHANNEL_ID_TO_INT, toId);
- msg_set_str_value(__pCbsChannelList->msg_struct_info[index], MSG_CB_CHANNEL_NAME_STR,
- pTempChannelName,CB_CHANNEL_NAME_MAX);
-
- if (pTempChannelName)
- {
- delete[] pTempChannelName;
- pTempChannelName = null;
- }
- }
-
- err = msg_set_cb_opt(__msgHandle, __cbsSettingsHandle);
- r = ConvertException(err);
- SysTryReturnResult(NID_MSG, r == E_SUCCESS, r, "Failed to save the channel.[%d] ",err);
- return r;
-}
-
-result
-_SmsMmsCallbackHandler::LoadCbsSettings()
-{
- int err = MSG_SUCCESS;
- result r = E_SUCCESS;
- CbsChannel* pCbsChannel = NULL;
- int fromId = 0;
- int toId = 0;
- bool isChannelActive = false;
- char channelName[CB_CHANNEL_NAME_MAX + 1] = {0,};
-
- if (__pTempCbsChannelList->GetCount() > 0)
- {
- __pTempCbsChannelList->RemoveAll(true);
- }
-
-
- if (__cbsSettingsHandle)
- {
- // Load Channel List
- err = msg_get_list_handle(__cbsSettingsHandle, MSG_CB_CHANNEL_LIST_STRUCT, (void **)&__pCbsChannelList);
- r = ConvertException(err);
- SysTryReturnResult(NID_MSG, r == E_SUCCESS, r, "Failed to open cbs Settings Handle");
-
- for (int index = 0; index < __pCbsChannelList->nCount; index++)
- {
- msg_get_bool_value(__pCbsChannelList->msg_struct_info[index], MSG_CB_CHANNEL_ACTIVATE_BOOL, &isChannelActive);
- msg_get_int_value(__pCbsChannelList->msg_struct_info[index], MSG_CB_CHANNEL_ID_FROM_INT, &fromId);
- msg_get_int_value(__pCbsChannelList->msg_struct_info[index], MSG_CB_CHANNEL_ID_TO_INT, &toId);
- msg_get_str_value(__pCbsChannelList->msg_struct_info[index], MSG_CB_CHANNEL_NAME_STR,
- channelName,CB_CHANNEL_NAME_MAX);
- if((toId >= 0) && (fromId >= 0) && (toId >= fromId) && (toId <= MAX_CBS_CHANNEL_LIMIT) && ((toId - fromId) <= MAX_CBS_CHANNEL_RANGE))
- {
-
- pCbsChannel = _CbsChannelImpl::GetCbsChannelN(fromId, toId, String(channelName));
- SysTryReturnResult(NID_MSG, pCbsChannel != null, E_SYSTEM, "Failed to get the channel.");
- if (isChannelActive)
- {
- _CbsChannelImpl::GetInstance(*pCbsChannel)->SetCbsChannelState(isChannelActive);
- }
- __pTempCbsChannelList->Add(*pCbsChannel);
- }
- else
- {
- SysLog(NID_MSG, "Load CBS Error: From[%d] To[%d] ",fromId, toId);
-
- }
- }
- }
-
- return r;
-
-}
-
-int
_SmsMmsCallbackHandler::RegisterMessageCallback()
{
int err = MSG_SUCCESS;
*/
int OpenMessageHandle(msg_handle_t& messageHandle);
- /**
- * gets the Message Handle for Cbs message operation.
- *
- * @since 3.0
- * @return An error code
- * @param[in] cbsSettingsHandle cbs message Handle
- * @exception MSG_SUCCESS The method was successful.
- * @exception MSG_ERR_NULL_POINTER Input parameter is NULL.
- * @exception MSG_ERR_MEMORY_ERROR Memory error.
- */
- int OpenCbsSettingsHandle(msg_struct_t& cbsSettingsHandle);
-
- // Adds a CBS channel with specified parameters.
- result AddCbsChannel(int from, int to, Tizen::Base::String& name, bool activate);
-
- // Removes a CBS channel with specified parameters.
- result RemoveCbsChannel(int from, int to);
-
- // Searches a CBS channel with specified parameters and returns index of channel found.
- result SearchCbsChannel(int from, int to, int& index);
-
- // Updates a CBS channel with specified parameters.
- result UpdateCbsChannel(int from, int to, Tizen::Base::String name, bool activate);
-
- // Gets a CBS channel data with specified index.
- result GetCbsChannel(int index, int& from, int& to, Tizen::Base::String& name, bool& activate);
-
- // Gets a CBS channel count.
- result GetCbsChannelsCount(int& count);
-
- /**
- * loads the Cbs channels list.
- *
- * @since 3.0
- * @return An error code
- * @exception E_SUCCESS The method was successful.
- * @exception E_INVALID_ARG Input parameter is NULL.
- * @exception E_OUT_OF_MEMORY Memory error.
- */
- result LoadCbsSettings();
-
- /**
- * saves the Cbs channels list.
- *
- * @since 3.0
- * @return An error code
- * @exception E_SUCCESS The method was successful.
- * @exception E_INVALID_ARG Input parameter is NULL.
- * @exception E_OUT_OF_MEMORY Memory error.
- */
- result SaveCbsSettings();
-
- /**
- * closes the CBS Message Handle.
- *
- * @since 3.0
- * @return An error code
- * @exception MSG_SUCCESS The method was successful.
- * @exception MSG_ERR_NULL_POINTER Input parameter is NULL.
- * @exception MSG_ERR_MEMORY_ERROR Memory error.
- */
static void CloseCbsSettingsHandle(void);
/**
private:
static _SmsMmsCallbackHandler* __pMessageCallbackHandler;
msg_handle_t __msgHandle;
- msg_struct_t __cbsSettingsHandle;
- msg_struct_list_s* __pCbsChannelList;
- Tizen::Base::Collection::ArrayList* __pTempCbsChannelList;
bool __callbackRegistered;
bool __incomingSmsCallbackRegistered;
Tizen::Base::Collection::MultiHashMap __messageMap;