2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.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.tizenopensource.org/license
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.
18 #include "MsgUtilFunction.h"
19 #include "MsgCppTypes.h"
20 #include "MsgException.h"
21 #include "MsgHandle.h"
24 #define MSG_TYPE_CHECK(a, b) \
26 if(a != b) return MSG_ERR_INVALID_PARAMETER; \
29 #define MSG_NULL_CHECK(a) \
31 if(a == NULL) return MSG_ERR_NULL_POINTER; \
34 /*==================================================================================================
35 IMPLEMENTATION OF MsgHandle - Setting Member Functions
36 ==================================================================================================*/
38 msg_error_t MsgHandle::getSMSCOption(msg_struct_t msg_struct)
40 msg_struct_s *smsc_opt = (msg_struct_s *)msg_struct;
41 MSG_TYPE_CHECK(smsc_opt->type, MSG_STRUCT_SETTING_SMSC_OPT);
42 MSG_NULL_CHECK(smsc_opt->data);
44 // Allocate Memory to Command Data
45 int cmdSize = sizeof(MSG_CMD_S) + sizeof(MSG_OPTION_TYPE_T);
48 bzero(cmdBuf, cmdSize);
49 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
51 // Set Command Parameters
52 pCmd->cmdType = MSG_CMD_GET_SMSC_OPT;
55 MSG_OPTION_TYPE_T opt_type = MSG_SMSC_LIST;
58 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
61 memcpy((void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), &opt_type, sizeof(MSG_OPTION_TYPE_T));
63 // Send Command to Messaging FW
64 char* pEventData = NULL;
65 AutoPtr<char> eventBuf(&pEventData);
67 write((char*)pCmd, cmdSize, &pEventData);
70 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
72 if (pEvent->eventType != MSG_EVENT_GET_SMSC_OPT)
74 THROW(MsgException::INVALID_RESULT, "Event Data Error");
77 if (pEvent->result == MSG_SUCCESS) {
78 MSG_SMSC_LIST_S smsc_list_tmp = {0,};
81 dataSize = sizeof(MSG_SMSC_LIST_S);
82 memcpy(&smsc_list_tmp, pEvent->data, dataSize);
84 MSG_SMSC_LIST_HIDDEN_S *pTmp = (MSG_SMSC_LIST_HIDDEN_S *)smsc_opt->data;
86 pTmp->smsc_list->nCount = smsc_list_tmp.totalCnt;
88 msg_struct_s *pStructTmp = NULL;
90 for (int i = 0; i < pTmp->smsc_list->nCount; i++) {
91 pStructTmp = (msg_struct_s *)pTmp->smsc_list->msg_struct_info[i];
92 memset(pStructTmp->data, 0x00, sizeof(MSG_SMSC_DATA_S));
93 memcpy(pStructTmp->data, &(smsc_list_tmp.smscData[i]), sizeof(MSG_SMSC_DATA_S));
97 return pEvent->result;
100 msg_error_t MsgHandle::setSMSCOption(msg_struct_t msg_struct)
102 msg_struct_s *smsc_opt = (msg_struct_s *)msg_struct;
103 MSG_TYPE_CHECK(smsc_opt->type, MSG_STRUCT_SETTING_SMSC_OPT);
104 MSG_NULL_CHECK(smsc_opt->data);
106 // Allocate Memory to Command Data
107 MSG_OPTION_TYPE_T optionType = MSG_SMSC_LIST;
108 int cmdSize = getSettingCmdSize(optionType);
110 char cmdBuf[cmdSize];
111 bzero(cmdBuf, cmdSize);
112 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
115 msg_struct_s *pTmp = (msg_struct_s *)msg_struct;
116 MSG_SMSC_LIST_HIDDEN_S *pTmpList = (MSG_SMSC_LIST_HIDDEN_S *)pTmp->data;
118 MSG_SMSC_LIST_S smsc_list_tmp = {0,};
120 smsc_list_tmp.totalCnt = pTmpList->smsc_list->nCount;
121 smsc_list_tmp.selected = pTmpList->selected;
123 msg_struct_s *pStructTmp = NULL;
125 for (i=0; i < smsc_list_tmp.totalCnt; i++) {
126 pStructTmp = (msg_struct_s *)pTmpList->smsc_list->msg_struct_info[i];
127 MSG_TYPE_CHECK(pStructTmp->type, MSG_STRUCT_SETTING_SMSC_INFO);
128 memcpy(&(smsc_list_tmp.smscData[i]), pStructTmp->data, sizeof(MSG_SMSC_DATA_S));
131 // Set Command Parameters
132 pCmd->cmdType = MSG_CMD_SET_SMSC_OPT;
135 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
137 MSG_SETTING_S pSetting = {0,};
139 pSetting.type = optionType;
140 memcpy(&(pSetting.option), &smsc_list_tmp, sizeof(MSG_SMSC_LIST_S));
143 memcpy(pCmd->cmdData, &pSetting, cmdSize-sizeof(MSG_CMD_S));
145 // Send Command to Messaging FW
146 char* pEventData = NULL;
147 AutoPtr<char> eventBuf(&pEventData);
149 write((char*)pCmd, cmdSize, &pEventData);
152 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
154 if (pEvent->eventType != MSG_EVENT_SET_SMSC_OPT)
156 THROW(MsgException::INVALID_RESULT, "Event Data Error");
159 return pEvent->result;
162 msg_error_t MsgHandle::getCBOption(msg_struct_t msg_struct)
164 msg_struct_s *cb_opt = (msg_struct_s *)msg_struct;
165 MSG_TYPE_CHECK(cb_opt->type, MSG_STRUCT_SETTING_CB_OPT);
166 MSG_NULL_CHECK(cb_opt->data);
168 // Allocate Memory to Command Data
169 int cmdSize = sizeof(MSG_CMD_S) + sizeof(MSG_OPTION_TYPE_T);
171 char cmdBuf[cmdSize];
172 bzero(cmdBuf, cmdSize);
173 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
175 // Set Command Parameters
176 pCmd->cmdType = MSG_CMD_GET_CB_OPT;
179 MSG_OPTION_TYPE_T opt_type = MSG_CBMSG_OPT;
182 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
185 memcpy((void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), &opt_type, sizeof(MSG_OPTION_TYPE_T));
187 // Send Command to Messaging FW
188 char* pEventData = NULL;
189 AutoPtr<char> eventBuf(&pEventData);
191 write((char*)pCmd, cmdSize, &pEventData);
194 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
196 if (pEvent->eventType != MSG_EVENT_GET_CB_OPT)
198 THROW(MsgException::INVALID_RESULT, "Event Data Error");
201 if (pEvent->result == MSG_SUCCESS) {
203 MSG_CBMSG_OPT_S cb_opt_tmp = {0,};
204 memcpy(&cb_opt_tmp, pEvent->data, sizeof(MSG_CBMSG_OPT_S));
206 MSG_CBMSG_OPT_HIDDEN_S *pTmp = (MSG_CBMSG_OPT_HIDDEN_S *)cb_opt->data;
207 pTmp->bAllChannel = cb_opt_tmp.bAllChannel;
208 pTmp->bReceive = cb_opt_tmp.bReceive;
209 pTmp->maxSimCnt = cb_opt_tmp.maxSimCnt;
211 for (i = 0; i < CB_LANG_TYPE_MAX; i++)
212 pTmp->bLanguage[i] = cb_opt_tmp.bLanguage[i];
214 pTmp->channelData->nCount = cb_opt_tmp.channelData.channelCnt;
216 msg_struct_s *pStructTmp = NULL;
218 for (i = 0; i < pTmp->channelData->nCount; i++) {
219 pStructTmp = (msg_struct_s *)pTmp->channelData->msg_struct_info[i];
220 memset(pStructTmp->data, 0x00, sizeof(MSG_CB_CHANNEL_INFO_S));
221 memcpy(pStructTmp->data, &(cb_opt_tmp.channelData.channelInfo[i]), sizeof(MSG_CB_CHANNEL_INFO_S));
225 return pEvent->result;
228 msg_error_t MsgHandle::setCBOption(msg_struct_t msg_struct)
230 msg_struct_s *cb_opt = (msg_struct_s *)msg_struct;
231 MSG_TYPE_CHECK(cb_opt->type, MSG_STRUCT_SETTING_CB_OPT);
232 MSG_NULL_CHECK(cb_opt->data);
234 // Allocate Memory to Command Data
235 MSG_OPTION_TYPE_T optionType = MSG_CBMSG_OPT;
236 int cmdSize = getSettingCmdSize(optionType);
238 char cmdBuf[cmdSize];
239 bzero(cmdBuf, cmdSize);
240 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
243 // Set Command Parameters
244 pCmd->cmdType = MSG_CMD_SET_CB_OPT;
247 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
250 MSG_CBMSG_OPT_S cb_opt_tmp = {0,};
251 MSG_CBMSG_OPT_HIDDEN_S *cb_msg_opt = (MSG_CBMSG_OPT_HIDDEN_S *)cb_opt->data;
253 cb_opt_tmp.bAllChannel = cb_msg_opt->bAllChannel;
254 cb_opt_tmp.bReceive = cb_msg_opt->bReceive;
255 cb_opt_tmp.maxSimCnt = cb_msg_opt->maxSimCnt;
256 for (int i = 0; i < CB_LANG_TYPE_MAX; i++)
257 cb_opt_tmp.bLanguage[i] = cb_msg_opt->bLanguage[i];
259 msg_struct_list_s *cb_ch_list = cb_msg_opt->channelData;
260 msg_struct_s *pStructTmp = NULL;
262 cb_opt_tmp.channelData.channelCnt = cb_ch_list->nCount;
264 for (i = 0; i < cb_opt_tmp.channelData.channelCnt; i++) {
265 pStructTmp = (msg_struct_s *)cb_ch_list->msg_struct_info[i];
266 memcpy(&(cb_opt_tmp.channelData.channelInfo[i]), &pStructTmp->data, sizeof(MSG_CB_CHANNEL_INFO_S));
269 MSG_SETTING_S pSetting = {0,};
270 pSetting.type = optionType;
272 memcpy(&(pSetting.option.cbMsgOpt), &cb_opt_tmp, sizeof(MSG_CBMSG_OPT_S));
275 memcpy(pCmd->cmdData, &pSetting, cmdSize-sizeof(MSG_CMD_S));
277 // Send Command to Messaging FW
278 char* pEventData = NULL;
279 AutoPtr<char> eventBuf(&pEventData);
281 write((char*)pCmd, cmdSize, &pEventData);
284 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
286 if (pEvent->eventType != MSG_EVENT_SET_CB_OPT)
288 THROW(MsgException::INVALID_RESULT, "Event Data Error");
291 return pEvent->result;
294 msg_error_t MsgHandle::getSmsSendOpt(msg_struct_t msg_struct)
296 msg_struct_s *sms_send_opt = (msg_struct_s *)msg_struct;
297 MSG_TYPE_CHECK(sms_send_opt->type, MSG_STRUCT_SETTING_SMS_SEND_OPT);
298 MSG_NULL_CHECK(sms_send_opt->data);
300 // Allocate Memory to Command Data
301 int cmdSize = sizeof(MSG_CMD_S) + sizeof(MSG_OPTION_TYPE_T);
303 char cmdBuf[cmdSize];
304 bzero(cmdBuf, cmdSize);
305 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
307 // Set Command Parameters
308 pCmd->cmdType = MSG_CMD_GET_SMS_SEND_OPT;
311 MSG_OPTION_TYPE_T opt_type = MSG_SMS_SENDOPT;
314 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
317 memcpy((void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), &opt_type, sizeof(MSG_OPTION_TYPE_T));
319 // Send Command to Messaging FW
320 char* pEventData = NULL;
321 AutoPtr<char> eventBuf(&pEventData);
323 write((char*)pCmd, cmdSize, &pEventData);
326 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
328 if (pEvent->eventType != MSG_EVENT_GET_SMS_SEND_OPT)
330 THROW(MsgException::INVALID_RESULT, "Event Data Error");
333 if (pEvent->result == MSG_SUCCESS) {
334 memcpy(sms_send_opt->data, pEvent->data, sizeof(MSG_SMS_SENDOPT_S));
337 return pEvent->result;
340 msg_error_t MsgHandle::setSmsSendOpt(msg_struct_t msg_struct)
342 msg_struct_s *sms_send_opt = (msg_struct_s *)msg_struct;
343 MSG_TYPE_CHECK(sms_send_opt->type, MSG_STRUCT_SETTING_SMS_SEND_OPT);
344 MSG_NULL_CHECK(sms_send_opt->data);
346 // Allocate Memory to Command Data
347 MSG_OPTION_TYPE_T optionType = MSG_SMS_SENDOPT;
348 int cmdSize = getSettingCmdSize(optionType);
350 char cmdBuf[cmdSize];
351 bzero(cmdBuf, cmdSize);
352 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
354 // Set Command Parameters
355 pCmd->cmdType = MSG_CMD_SET_SMS_SEND_OPT;
358 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
361 MSG_SETTING_S pSetting = {0,};
362 pSetting.type = optionType;
364 memcpy(&(pSetting.option.smsSendOpt), sms_send_opt->data, sizeof(MSG_SMS_SENDOPT_S));
367 memcpy(pCmd->cmdData, &pSetting, cmdSize-sizeof(MSG_CMD_S));
369 // Send Command to Messaging FW
370 char* pEventData = NULL;
371 AutoPtr<char> eventBuf(&pEventData);
373 write((char*)pCmd, cmdSize, &pEventData);
376 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
378 if (pEvent->eventType != MSG_EVENT_SET_SMS_SEND_OPT)
380 THROW(MsgException::INVALID_RESULT, "Event Data Error");
383 return pEvent->result;
386 msg_error_t MsgHandle::getMmsSendOpt(msg_struct_t msg_struct)
388 msg_struct_s *mms_send_opt = (msg_struct_s *)msg_struct;
389 MSG_TYPE_CHECK(mms_send_opt->type, MSG_STRUCT_SETTING_MMS_SEND_OPT);
390 MSG_NULL_CHECK(mms_send_opt->data);
392 // Allocate Memory to Command Data
393 int cmdSize = sizeof(MSG_CMD_S) + sizeof(MSG_OPTION_TYPE_T);
395 char cmdBuf[cmdSize];
396 bzero(cmdBuf, cmdSize);
397 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
399 // Set Command Parameters
400 pCmd->cmdType = MSG_CMD_GET_MMS_SEND_OPT;
403 MSG_OPTION_TYPE_T opt_type = MSG_MMS_SENDOPT;
406 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
409 memcpy((void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), &opt_type, sizeof(MSG_OPTION_TYPE_T));
411 // Send Command to Messaging FW
412 char* pEventData = NULL;
413 AutoPtr<char> eventBuf(&pEventData);
415 write((char*)pCmd, cmdSize, &pEventData);
418 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
420 if (pEvent->eventType != MSG_EVENT_GET_MMS_SEND_OPT)
422 THROW(MsgException::INVALID_RESULT, "Event Data Error");
425 if (pEvent->result == MSG_SUCCESS) {
426 memcpy(mms_send_opt->data, pEvent->data, sizeof(MSG_MMS_SENDOPT_S));
429 return pEvent->result;
432 msg_error_t MsgHandle::setMmsSendOpt(msg_struct_t msg_struct)
434 msg_struct_s *mms_send_opt = (msg_struct_s *)msg_struct;
435 MSG_TYPE_CHECK(mms_send_opt->type, MSG_STRUCT_SETTING_MMS_SEND_OPT);
436 MSG_NULL_CHECK(mms_send_opt->data);
438 // Allocate Memory to Command Data
439 MSG_OPTION_TYPE_T optionType = MSG_MMS_SENDOPT;
440 int cmdSize = getSettingCmdSize(optionType);
442 char cmdBuf[cmdSize];
443 bzero(cmdBuf, cmdSize);
444 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
446 // Set Command Parameters
447 pCmd->cmdType = MSG_CMD_SET_MMS_SEND_OPT;
450 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
453 MSG_SETTING_S pSetting = {0,};
454 pSetting.type = optionType;
456 memcpy(&(pSetting.option.mmsSendOpt), mms_send_opt->data, sizeof(MSG_MMS_SENDOPT_S));
459 memcpy(pCmd->cmdData, &pSetting, cmdSize-sizeof(MSG_CMD_S));
461 // Send Command to Messaging FW
462 char* pEventData = NULL;
463 AutoPtr<char> eventBuf(&pEventData);
465 write((char*)pCmd, cmdSize, &pEventData);
468 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
470 if (pEvent->eventType != MSG_EVENT_SET_MMS_SEND_OPT)
472 THROW(MsgException::INVALID_RESULT, "Event Data Error");
475 return pEvent->result;
478 msg_error_t MsgHandle::getMmsRecvOpt(msg_struct_t msg_struct)
480 msg_struct_s *mms_recv_opt = (msg_struct_s *)msg_struct;
481 MSG_TYPE_CHECK(mms_recv_opt->type, MSG_STRUCT_SETTING_MMS_RECV_OPT);
482 MSG_NULL_CHECK(mms_recv_opt->data);
484 // Allocate Memory to Command Data
485 int cmdSize = sizeof(MSG_CMD_S) + sizeof(MSG_OPTION_TYPE_T);
487 char cmdBuf[cmdSize];
488 bzero(cmdBuf, cmdSize);
489 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
491 // Set Command Parameters
492 pCmd->cmdType = MSG_CMD_GET_MMS_RECV_OPT;
495 MSG_OPTION_TYPE_T opt_type = MSG_MMS_RECVOPT;
498 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
501 memcpy((void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), &opt_type, sizeof(MSG_OPTION_TYPE_T));
503 // Send Command to Messaging FW
504 char* pEventData = NULL;
505 AutoPtr<char> eventBuf(&pEventData);
507 write((char*)pCmd, cmdSize, &pEventData);
510 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
512 if (pEvent->eventType != MSG_EVENT_GET_MMS_RECV_OPT)
514 THROW(MsgException::INVALID_RESULT, "Event Data Error");
517 if (pEvent->result == MSG_SUCCESS) {
518 memcpy(mms_recv_opt->data, pEvent->data, sizeof(MSG_MMS_RECVOPT_S));
521 return pEvent->result;
524 msg_error_t MsgHandle::setMmsRecvOpt(msg_struct_t msg_struct)
526 msg_struct_s *mms_recv_opt = (msg_struct_s *)msg_struct;
527 MSG_TYPE_CHECK(mms_recv_opt->type, MSG_STRUCT_SETTING_MMS_RECV_OPT);
528 MSG_NULL_CHECK(mms_recv_opt->data);
530 // Allocate Memory to Command Data
531 MSG_OPTION_TYPE_T optionType = MSG_MMS_RECVOPT;
532 int cmdSize = getSettingCmdSize(optionType);
534 char cmdBuf[cmdSize];
535 bzero(cmdBuf, cmdSize);
536 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
538 // Set Command Parameters
539 pCmd->cmdType = MSG_CMD_SET_MMS_RECV_OPT;
542 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
545 MSG_SETTING_S pSetting = {0,};
546 pSetting.type = optionType;
548 memcpy(&(pSetting.option.mmsRecvOpt), mms_recv_opt->data, sizeof(MSG_MMS_RECVOPT_S));
551 memcpy(pCmd->cmdData, &pSetting, cmdSize-sizeof(MSG_CMD_S));
553 // Send Command to Messaging FW
554 char* pEventData = NULL;
555 AutoPtr<char> eventBuf(&pEventData);
557 write((char*)pCmd, cmdSize, &pEventData);
560 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
562 if (pEvent->eventType != MSG_EVENT_SET_MMS_RECV_OPT)
564 THROW(MsgException::INVALID_RESULT, "Event Data Error");
567 return pEvent->result;
570 msg_error_t MsgHandle::getPushMsgOpt(msg_struct_t msg_struct)
572 msg_struct_s *push_opt = (msg_struct_s *)msg_struct;
573 MSG_TYPE_CHECK(push_opt->type, MSG_STRUCT_SETTING_PUSH_MSG_OPT);
574 MSG_NULL_CHECK(push_opt->data);
576 // Allocate Memory to Command Data
577 int cmdSize = sizeof(MSG_CMD_S) + sizeof(MSG_OPTION_TYPE_T);
579 char cmdBuf[cmdSize];
580 bzero(cmdBuf, cmdSize);
581 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
583 // Set Command Parameters
584 pCmd->cmdType = MSG_CMD_GET_PUSH_MSG_OPT;
587 MSG_OPTION_TYPE_T opt_type = MSG_PUSHMSG_OPT;
590 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
593 memcpy((void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), &opt_type, sizeof(MSG_OPTION_TYPE_T));
595 // Send Command to Messaging FW
596 char* pEventData = NULL;
597 AutoPtr<char> eventBuf(&pEventData);
599 write((char*)pCmd, cmdSize, &pEventData);
602 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
604 if (pEvent->eventType != MSG_EVENT_GET_PUSH_MSG_OPT)
606 THROW(MsgException::INVALID_RESULT, "Event Data Error");
609 if (pEvent->result == MSG_SUCCESS) {
610 memcpy(push_opt->data, pEvent->data, sizeof(MSG_PUSHMSG_OPT_S));
613 return pEvent->result;
616 msg_error_t MsgHandle::setPushMsgOpt(msg_struct_t msg_struct)
618 msg_struct_s *push_opt = (msg_struct_s *)msg_struct;
619 MSG_TYPE_CHECK(push_opt->type, MSG_STRUCT_SETTING_PUSH_MSG_OPT);
620 MSG_NULL_CHECK(push_opt->data);
622 // Allocate Memory to Command Data
623 MSG_OPTION_TYPE_T optionType = MSG_PUSHMSG_OPT;
624 int cmdSize = getSettingCmdSize(optionType);
626 char cmdBuf[cmdSize];
627 bzero(cmdBuf, cmdSize);
628 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
630 // Set Command Parameters
631 pCmd->cmdType = MSG_CMD_SET_PUSH_MSG_OPT;
634 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
637 MSG_SETTING_S pSetting = {0,};
638 pSetting.type = optionType;
640 memcpy(&(pSetting.option.pushMsgOpt), push_opt->data, sizeof(MSG_PUSHMSG_OPT_S));
643 memcpy(pCmd->cmdData, &pSetting, cmdSize-sizeof(MSG_CMD_S));
645 // Send Command to Messaging FW
646 char* pEventData = NULL;
647 AutoPtr<char> eventBuf(&pEventData);
649 write((char*)pCmd, cmdSize, &pEventData);
652 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
654 if (pEvent->eventType != MSG_EVENT_SET_PUSH_MSG_OPT)
656 THROW(MsgException::INVALID_RESULT, "Event Data Error");
659 return pEvent->result;
662 msg_error_t MsgHandle::getVoiceMsgOpt(msg_struct_t msg_struct)
664 msg_struct_s *voice_opt = (msg_struct_s *)msg_struct;
665 MSG_TYPE_CHECK(voice_opt->type, MSG_STRUCT_SETTING_VOICE_MSG_OPT);
666 MSG_NULL_CHECK(voice_opt->data);
668 // Allocate Memory to Command Data
669 int cmdSize = sizeof(MSG_CMD_S) + sizeof(MSG_OPTION_TYPE_T);
671 char cmdBuf[cmdSize];
672 bzero(cmdBuf, cmdSize);
673 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
675 // Set Command Parameters
676 pCmd->cmdType = MSG_CMD_GET_VOICE_MSG_OPT;
679 MSG_OPTION_TYPE_T opt_type = MSG_VOICEMAIL_OPT;
682 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
685 memcpy((void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), &opt_type, sizeof(MSG_OPTION_TYPE_T));
687 // Send Command to Messaging FW
688 char* pEventData = NULL;
689 AutoPtr<char> eventBuf(&pEventData);
691 write((char*)pCmd, cmdSize, &pEventData);
694 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
696 if (pEvent->eventType != MSG_EVENT_GET_VOICE_MSG_OPT)
698 THROW(MsgException::INVALID_RESULT, "Event Data Error");
701 if (pEvent->result == MSG_SUCCESS) {
702 memcpy(voice_opt->data, pEvent->data, sizeof(MSG_VOICEMAIL_OPT_S));
705 return pEvent->result;
708 msg_error_t MsgHandle::setVoiceMsgOpt(msg_struct_t msg_struct)
710 msg_struct_s *voice_opt = (msg_struct_s *)msg_struct;
711 MSG_TYPE_CHECK(voice_opt->type, MSG_STRUCT_SETTING_VOICE_MSG_OPT);
712 MSG_NULL_CHECK(voice_opt->data);
714 // Allocate Memory to Command Data
715 MSG_OPTION_TYPE_T optionType = MSG_VOICEMAIL_OPT;
716 int cmdSize = getSettingCmdSize(optionType);
718 char cmdBuf[cmdSize];
719 bzero(cmdBuf, cmdSize);
720 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
722 // Set Command Parameters
723 pCmd->cmdType = MSG_CMD_SET_VOICE_MSG_OPT;
726 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
729 MSG_SETTING_S pSetting = {0,};
730 pSetting.type = optionType;
732 memcpy(&(pSetting.option.voiceMailOpt), voice_opt->data, sizeof(MSG_VOICEMAIL_OPT_S));
735 memcpy(pCmd->cmdData, &pSetting, cmdSize-sizeof(MSG_CMD_S));
737 // Send Command to Messaging FW
738 char* pEventData = NULL;
739 AutoPtr<char> eventBuf(&pEventData);
741 write((char*)pCmd, cmdSize, &pEventData);
744 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
746 if (pEvent->eventType != MSG_EVENT_SET_VOICE_MSG_OPT)
748 THROW(MsgException::INVALID_RESULT, "Event Data Error");
751 return pEvent->result;
754 msg_error_t MsgHandle::getGeneralOpt(msg_struct_t msg_struct)
756 msg_struct_s *general_opt = (msg_struct_s *)msg_struct;
757 MSG_TYPE_CHECK(general_opt->type, MSG_STRUCT_SETTING_GENERAL_OPT);
758 MSG_NULL_CHECK(general_opt->data);
760 // Allocate Memory to Command Data
761 int cmdSize = sizeof(MSG_CMD_S) + sizeof(MSG_OPTION_TYPE_T);
763 char cmdBuf[cmdSize];
764 bzero(cmdBuf, cmdSize);
765 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
767 // Set Command Parameters
768 pCmd->cmdType = MSG_CMD_GET_GENERAL_MSG_OPT;
771 MSG_OPTION_TYPE_T opt_type = MSG_GENERAL_OPT;
774 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
777 memcpy((void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), &opt_type, sizeof(MSG_OPTION_TYPE_T));
779 // Send Command to Messaging FW
780 char* pEventData = NULL;
781 AutoPtr<char> eventBuf(&pEventData);
783 write((char*)pCmd, cmdSize, &pEventData);
786 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
788 if (pEvent->eventType != MSG_EVENT_GET_GENERAL_MSG_OPT)
790 THROW(MsgException::INVALID_RESULT, "Event Data Error");
793 if (pEvent->result == MSG_SUCCESS) {
794 memcpy(general_opt->data, pEvent->data, sizeof(MSG_GENERAL_OPT_S));
797 return pEvent->result;
800 msg_error_t MsgHandle::setGeneralOpt(msg_struct_t msg_struct)
802 msg_struct_s *general_opt = (msg_struct_s *)msg_struct;
803 MSG_TYPE_CHECK(general_opt->type, MSG_STRUCT_SETTING_GENERAL_OPT);
804 MSG_NULL_CHECK(general_opt->data);
806 // Allocate Memory to Command Data
807 MSG_OPTION_TYPE_T optionType = MSG_GENERAL_OPT;
808 int cmdSize = getSettingCmdSize(optionType);
810 char cmdBuf[cmdSize];
811 bzero(cmdBuf, cmdSize);
812 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
814 // Set Command Parameters
815 pCmd->cmdType = MSG_CMD_SET_GENERAL_MSG_OPT;
818 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
821 MSG_SETTING_S pSetting = {0,};
822 pSetting.type = optionType;
824 memcpy(&(pSetting.option.generalOpt), general_opt->data, sizeof(MSG_GENERAL_OPT_S));
827 memcpy(pCmd->cmdData, &pSetting, cmdSize-sizeof(MSG_CMD_S));
829 // Send Command to Messaging FW
830 char* pEventData = NULL;
831 AutoPtr<char> eventBuf(&pEventData);
833 write((char*)pCmd, cmdSize, &pEventData);
836 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
838 if (pEvent->eventType != MSG_EVENT_SET_GENERAL_MSG_OPT)
840 THROW(MsgException::INVALID_RESULT, "Event Data Error");
843 return pEvent->result;
846 msg_error_t MsgHandle::getMsgSizeOpt(msg_struct_t msg_struct)
848 msg_struct_s *msg_size_opt = (msg_struct_s *)msg_struct;
849 MSG_TYPE_CHECK(msg_size_opt->type, MSG_STRUCT_SETTING_MSGSIZE_OPT);
850 MSG_NULL_CHECK(msg_size_opt->data);
852 // Allocate Memory to Command Data
853 int cmdSize = sizeof(MSG_CMD_S) + sizeof(MSG_OPTION_TYPE_T);
855 char cmdBuf[cmdSize];
856 bzero(cmdBuf, cmdSize);
857 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
859 // Set Command Parameters
860 pCmd->cmdType = MSG_CMD_GET_MSG_SIZE_OPT;
863 MSG_OPTION_TYPE_T opt_type = MSG_MSGSIZE_OPT;
866 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
869 memcpy((void*)((char*)pCmd+sizeof(MSG_CMD_TYPE_T)+MAX_COOKIE_LEN), &opt_type, sizeof(MSG_OPTION_TYPE_T));
871 // Send Command to Messaging FW
872 char* pEventData = NULL;
873 AutoPtr<char> eventBuf(&pEventData);
875 write((char*)pCmd, cmdSize, &pEventData);
878 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
880 if (pEvent->eventType != MSG_EVENT_GET_MSG_SIZE_OPT)
882 THROW(MsgException::INVALID_RESULT, "Event Data Error");
885 if (pEvent->result == MSG_SUCCESS) {
886 memcpy(msg_size_opt->data, pEvent->data, sizeof(MSG_MSGSIZE_OPT_S));
889 return pEvent->result;
892 msg_error_t MsgHandle::setMsgSizeOpt(msg_struct_t msg_struct)
894 msg_struct_s *msg_size_opt = (msg_struct_s *)msg_struct;
895 MSG_TYPE_CHECK(msg_size_opt->type, MSG_STRUCT_SETTING_MSGSIZE_OPT);
896 MSG_NULL_CHECK(msg_size_opt->data);
898 // Allocate Memory to Command Data
899 MSG_OPTION_TYPE_T optionType = MSG_MSGSIZE_OPT;
900 int cmdSize = getSettingCmdSize(optionType);
902 char cmdBuf[cmdSize];
903 bzero(cmdBuf, cmdSize);
904 MSG_CMD_S* pCmd = (MSG_CMD_S*)cmdBuf;
906 // Set Command Parameters
907 pCmd->cmdType = MSG_CMD_SET_MSG_SIZE_OPT;
910 memcpy(pCmd->cmdCookie, mCookie, MAX_COOKIE_LEN);
913 MSG_SETTING_S pSetting = {0,};
914 pSetting.type = optionType;
916 memcpy(&(pSetting.option.msgSizeOpt), msg_size_opt->data, sizeof(MSG_MSGSIZE_OPT_S));
919 memcpy(pCmd->cmdData, &pSetting, cmdSize-sizeof(MSG_CMD_S));
921 // Send Command to Messaging FW
922 char* pEventData = NULL;
923 AutoPtr<char> eventBuf(&pEventData);
925 write((char*)pCmd, cmdSize, &pEventData);
928 MSG_EVENT_S* pEvent = (MSG_EVENT_S*)pEventData;
930 if (pEvent->eventType != MSG_EVENT_SET_MSG_SIZE_OPT)
932 THROW(MsgException::INVALID_RESULT, "Event Data Error");
935 return pEvent->result;