FAQ Mstar

1)修改键值 cust_keypad.c

2)修改字体颜色 WdgCommonSetTextColor

3)增加KeyGuardReleaseCB,实现按下屏保,再按下待机,再按下屏保的循环功能
boolean KeyGuardReleaseCB(IApplet * pApplet,MAEEvent_t nEvt,u32 param1,u32 param2);
{MAE_EVT_KEY_RELEASE, KeyGuardReleaseCB}
boolean KeyGuardReleaseCB(IApplet * pApplet,MAEEvent_t nEvt,u32 param1,u32 param2)
{
boolean bApplyBLNow = FALSE;
KeyGuardAppData_t *pThis = (KeyGuardAppData_t *)pApplet;
_KeyGuardSetBackLightBehavior(pThis, TRUE, (boolean)bApplyBLNow);
return TRUE;
}

4)Sim卡1与卡2颠倒:e2p/cusSetting.e2p.val 把 0x60e0003就修改成0x40e0003

5)弹出个dialog,过3秒消失
#ifdef __UI_STYLE_MMI_IFONE__
MAE_WChar *pNoticeString = NULL,*pTextStr = NULL;
u32 nSize;
#endif//__UI_STYLE_MMI_IFONE__

LOG_TRACE(MMI_LEVEL_FMR, "[FmRadioConstructor] entry");

//add by yijun.wu
#ifdef __UI_STYLE_MMI_IFONE__
nSize = sizeof(MAE_WChar)*(mae_wstrlen(pNoticeString) + 1);
pTextStr = MALLOC(nSize);
MEMSET(pTextStr, 0, nSize);
pTextStr = L"Please input earphone";
MMI_CreateInformationDialog(pApplet, COMMON_DIALOG_INFODIALOG, pTextStr, LAYOUT_STYLE_VERTICAL, COMMON_DIALOG_AUTOCLOSE_TIME, FmRadioStartCb);
#endif //__UI_STYLE_MMI_IFONE__

SrvFmradioSetStatusChangeCb(FmRadioStatusChangeCb);
return MAE_RET_SUCCESS;

FREEIF(pTextStr);
}

6)打进电话界面中增加挂机拨号键盘按钮
1) typedef enum
{
CCAPP_DIALING_MAINCONTAINER=APP_WDG_START,
CCAPP_DIALING_INPUT,
CCAPP_DIALING_SHORTCUT,
#ifdef __TOUCH_SCREEN_MMI__
CCAPP_DIALING_GRID1, // 0~9, *, #
CCAPP_DIALING_BUTTON1,
CCAPP_DIALING_GRID2, // Call, Clear, Add to Contact
CCAPP_DIALING_BUTTON2,
CCAPP_DIALING_GRID4, // wang.songqing 增加 通话界面中下面的挂机 拨号盘按钮
#endif
} CcAppDialingView_e;

2)void CcAppMenuGrid4FocusSelectCb(void *pApplet, void *pUserData, WidgetEvtCode_t nEvtCode, HistoryInfo_t *pFocusInfo, IWidget *pWidget)
{
MMI_CCAPP *pThis = (MMI_CCAPP*) pApplet;
u32 eKeyCode = MAE_KEY_DUMMY;
CcAppTalkViewWdgList_t *pData = WndGetWindowData((IApplet*)pThis, CC_WND_INCALLSCREEN);

s32 nFocusIdx = pFocusInfo->nHighlightedIndex;

CCSRV_Mode_e ccsrv_mode;

switch (nFocusIdx)
{
case 0:
//挂断电话
ccsrv_mode = SrvCcGetActiveMode();
if ( CCSRV_1A == ccsrv_mode)
{
WndCloseWindow((IApplet *)pThis);
if( MAE_RET_SUCCESS == SrvCcHangUpCallReq(CcAppHangUpCallCnfCb))
{
LOG_TRACE(MMI_LEVEL_CC, "[CCAPP] SrvCcHangUpCallReq success");
}
else
{
LOG_TRACE(MMI_LEVEL_CC, "[CCAPP] SrvCcHangUpCallReq Fail");
CcAppShowOperationNotAllowScreen(pThis, TXT_PML_N_OPERATI

ON_NOT_ALLOWED, NULL);
}
}
else
{
WndCloseWindow((IApplet *)pThis);
if ( MAE_RET_SUCCESS == SrvCcReplaceActiveCallReq( CcAppReplaceActiveCallCnfCb))
{
CcAppShowWaitingDialog(pThis);
}
else
{
LOG_TRACE(MMI_LEVEL_CC, "[CCAPP] SrvCcReplaceActiveCallReq Fail");
CcAppShowOperationNotAllowScreen(pThis, TXT_PML_N_OPERATION_NOT_ALLOWED, NULL);
}
}
/**/
break;
case 1:
//拨号键盘
HandleKeyPress_INCALLSCREEN(pThis,0);
break;
}
//void *pWndData = WndGetWindowData((IApplet *)pApplet, CC_WND_INCALLSCREEN);
//CcAppTalkViewWdgList_t *pWdgList = &(pWndData->pWdgList);

/*DialerAppData_t *pThis = (DialerAppData_t*) pApplet;
u32 nKeyCode = MAE_KEY_DUMMY;
s32 nFocusIdx = pFocusInfo->nHighlightedIndex;

LOG_INFO(MMI_LEVEL_IDLE, "DialerGrid1FocusSelectCb: %d", pThis->bLongPressed);

if(FALSE == pThis->bLongPressed)
{
//Cancel Previous long press Timer if exist
SH_CancelTimer(DialerTSLongPressCb, (void*)pThis);

//Get Key code
nKeyCode = _DialerGetKeyCodeByGridIndex(pThis, nFocusIdx, DIALERAPP_TS_TOUCHGRID1);

SrvCorePlayKeyPressTone(nKeyCode);
if(MAE_KEY_DUMMY != nKeyCode)
{
SH_PostEvent((IHandler*)pThis, MAE_EVT_KEY_PRESS, nKeyCode, 0);
SH_PostEvent((IHandler*)pThis, MAE_EVT_KEY_RELEASE, nKeyCode, 0);
}
}*/
}



7)短按锁屏
mmi_mainmenuapp.c
boolean KeyReleaseCB(IApplet * pApplet,MAEEvent_t nEvt,u32 param1,u32 param2)
{
u32 keyCode = param1;
if (MAE_KEY_END == keyCode) //wang.songqing if (MAE_KEY_POWERMODE == keyCode)
{
CmnAppLaunchRspCbInfo_t tRspCbInfo = {0};
LaunchKeyGuardApp(APM_LAUNCH_INTERRUPTIVE|APML_ABORT_ON_INT_FAILED, KEY_GUARD_LAUNCH_MODE_LOCK_AUTOMATIC, NULL,&tRspCbInfo);
}
return TRUE;
}


8) 修改那种有二级选项菜单时需要注意在结构体内把数组大小改掉
如::
WndBegin(SETTINGAPP_WND_DATETIME)
WdgBegin(CLSID_VTMMENU,DateTimeVtm)
VtmCreateMenuRC({IMG_NULL_ID,TXT_LIL_N_NO_TITLE,WDG_MENU_TYPE_NORMAL,WDG_MENU_ITEM_TYPE_TEXT_THEMETEXT,WDG_MENU_CHECK_STYLE_NONE,0,0,0})
//add by yijun.wu
#ifdef __FSP302__
WdgMenuItemTextRC(7, { TXT_LIL_N_TIME, TXT_LIL_N_TIME_ZONE, TXT_LIL_N_SECOND_TIME, TXT_LIL_N_TIME_FORMAT, TXT_LIL_N_DATE, TXT_LIL_N_DATE_FORMAT, TXT_LIL_N_LUNAR_CALENDAR })
WdgDynamicMenuItemInfRC(7, {
{MENUMODEL_ITEM_VISABLE, {SK_CHANGE, SK_OK, SK_BACK}, MNU_SETTING_TIME_, 0},
{MENUMODEL_ITEM_VISABLE, {SK_CHANGE, SK_OK, SK_BACK}, MNU_SETTING_TIME_ZONE, 0},
{MENUMODEL_ITEM_VISABLE, {SK_CHANGE, SK_OK, SK_BACK}, MNU_SETTING_SECOND_TIME, 0},
{MENUMODEL_ITEM_VISABLE, {SK_CHAN

GE, SK_OK, SK_BACK}, MNU_SETTING_TIME_FORMAT, 0},
{MENUMODEL_ITEM_VISABLE, {SK_CHANGE, SK_OK, SK_BACK}, MNU_SETTING_DATE, 0},
{MENUMODEL_ITEM_VISABLE, {SK_CHANGE, SK_OK, SK_BACK}, MNU_SETTING_DATE_FORMAT, 0},
{MENUMODEL_ITEM_VISABLE, {SK_CHANGE, SK_OK, SK_BACK}, MNU_SETTING_LUNAR_CALENDAR, 0} })
#else
WdgMenuItemTextRC(8, { TXT_LIL_N_TIME, TXT_LIL_N_TIME_ZONE, TXT_LIL_N_SECOND_TIME, TXT_LIL_N_TIME_FORMAT, TXT_LIL_N_DATE, TXT_LIL_N_DATE_FORMAT, TXT_LIL_N_DAYLIGHT_SAVING_TIME, TXT_LIL_N_LUNAR_CALENDAR })
WdgDynamicMenuItemInfRC(8, {
{MENUMODEL_ITEM_VISABLE, {SK_CHANGE, SK_OK, SK_BACK}, MNU_SETTING_TIME_, 0},
{MENUMODEL_ITEM_VISABLE, {SK_CHANGE, SK_OK, SK_BACK}, MNU_SETTING_TIME_ZONE, 0},
{MENUMODEL_ITEM_VISABLE, {SK_CHANGE, SK_OK, SK_BACK}, MNU_SETTING_SECOND_TIME, 0},
{MENUMODEL_ITEM_VISABLE, {SK_CHANGE, SK_OK, SK_BACK}, MNU_SETTING_TIME_FORMAT, 0},
{MENUMODEL_ITEM_VISABLE, {SK_CHANGE, SK_OK, SK_BACK}, MNU_SETTING_DATE, 0},
{MENUMODEL_ITEM_VISABLE, {SK_CHANGE, SK_OK, SK_BACK}, MNU_SETTING_DATE_FORMAT, 0},
{MENUMODEL_ITEM_VISABLE, {SK_CHANGE, SK_OK, SK_BACK}, MNU_SETTING_DAYLIGHT_SAVING_TIME, 0},
{MENUMODEL_ITEM_VISABLE, {SK_CHANGE, SK_OK, SK_BACK}, MNU_SETTING_LUNAR_CALENDAR, 0} })
#endif //__FSP302__

需要注意查找 SETTINGAPP_WND_DATETIME_t 再注意查看有没有相应的结构体定义



9) WdgTimerFormatSetSeparatorWidth(pWdgList->pTimerWdg,8);设置":"的宽度
要点:有时候widget的设置是自己内部设置的,需要用些封装函数


10) 修改所有Wdg Title 在mae_widget_def_hvgap中修改


11)修改RAM大小 ///trunk/proj/sc/customer/product/8533_m800f/cust/sys/inc/sys_config.h //SYS_PHY_RAM_SIZE

12)降低通话噪音 ///trunk/proj/sc/customer/product/8533_m800f/e2p/audioparam.e2p //WMicGains 28 %u8 28 %u8

13)
typedef struct
{
IfoneMenuId_e nMenuID; //nMenuID == IFONEMENU_ZOML_QQ
IWidget * pWdg;
MainMenuStartType_e eStartType; //eStartType == MAINMENU_APPLET
u32 nStartID; //nStartID == SHORTCUTS_FUNC_ZMOL_APP
u32 nParamID;
} IFoneWdgItemInfo_t;

14) IApplet *pApplet = WndGetCurrApplet(hWin);


15) 矢量字体,可以改字体高度大小,在mae_font_base.c

16)WndSetSoftkeyTransparency(HWIN hWin, boolean bTransparency)把softkey设置为透明

17)电池电量的等级变为4 proj/sc/customer/product/common/e2p/stack_nor.e2p.val WBatteryLevel 4

18)解决电池电量的显示问题(冲满电无法显示出完整的四格电量图标) proj/sc/customer/product/8533c_yk701/e2p/cusSetting.e2p.val WBattLev

3300
19) 对屏幕buffer进行了操作 要进行刷屏 刷屏填了其他颜色 CONFIG_AMR_SETTING_PKIG_SN BITMAPBASE_SetTransColor 3300
3500
3629
3718
3821
3957
4200
4200
4200

19)将手机系统时间设置为2039年12月31日23时59分(或者12小时制的59分),手机时间一直停在此时间不动。)当到达2039-12-31时,自动复位到2008-12-31.
proj/sc/application/mmi/MAE/src/mae_clock.c
_KeepTimeValidility(IClock *pThis)
{
tTimeInfo.year = (u8)(MAE_CLOCK_LOWERLIMIT_YEAR - MAE_JULIANDATE_START_YEAR+8);
}

20)解决符号表的快捷数字键显示对不齐问题。
proj/sc/application/mmi/widgets/src/mmi_wdg_inputgrid.c
InputGridWidget_GetRectByRow
{
Rect->y = RS_MAIN_LCD_ONELINE_HEIGHT + ((RS_MAIN_LCD_ONELINE_HEIGHT + RS_SYMBOLTBL_HIGHT_SHIFT)*nRow) + RS_SYMBOLTBL_NO_STARTY - 5;
}
InputGridWidget_Draw
{
IDISPLAY_DrawDispText(pIDisplay, FONT_CAT_NUM_EXTRASMALL, 0, &wCandidateNo, 1,
(RS_SYMBOLTBL_NO_STARTX + (i*nItemWidth)),
DrawNum.y, &DrawCA, FONT_TYPE_NORMAL);
}

21)修改最大短信数量为1000,修改最大电话本数量为1500
proj/sc/application/mmi/common/inc/mmi_common_custom.h
#define MMI_PHB_ADR_SUPPORT_MAX 1500
#define MAX_MSG_ID 1000
#define MAX_PHONE_SMS_AMOUNT 1000


22)屏蔽某个AP按键消息
mmi_if_touchscreen.c
mmi_ts_coordinate_if(IBase *pRecipient, vm_msg_t *pData)
SH_QueryApplet(MAEClsId_t nClsId)询问当前Ap


23)当出现AP与显示名称颠倒时,可以查看下MenuItem枚举定义的位置与MenuItemTextID的位置是不是相一致.

24)关于Service中调用SrvCfgGetItem的问题
问题:
我们的做法是在Setting界面加入了该选项的设置接口,同时实现service config item的相关部分。
然后在短信回调通知中使用SrvCfgGetItem取出相应设定值,然后判断是否要做新增的操作。
衷诘奈侍馐牵赼pp中调用SrvCfgGetItem可以正常的取回设定值,没有问题。而在短信息通知
函数中(_EVTCENTERSRV_HandleMOI),SrvCfgGetItem始终返回失败。不知对于这种问题,您有没有
解决方法?或者说是否还有别的获取短

信到来通知的途径?
解决:
在coresrv中就有类似如下的使用;
ret = SH_CreateInstance(CLSID_CFGSRV, (void * *) &(pThis->pICFGSrv), (IBase *) pThis);
然后:
ICFGSRV_GetItem()
最后再不使用的时候释放:
RELEASE(pThis->pIProfileSrv, (IBase *) pThis);

25)关于修改option背景
1:可以直接找到该图片,改颜色
2:在mae_widget_def_xxx_thm.rs WdgBegin(CLSID_MENUWIDGET,tMenuWdg)内修改相应颜色
3:在mmi_common_vtm_xxx_thm.rs

26)关于读取是否关闭运营商config值
{
SetOnOff_e eSPNOnOff = SET_ON;
nRetVal = SrvCfgGetItem(CFGIT_SETTING_DISPLAY_OPERATOR_NAME, &eSPNOnOff, sizeof(SetOnOff_e));
if (MAE_RET_SUCCESS == nRetVal)
{
//Set Network Widget invisible if SPNOff
if (SET_OFF == eSPNOnOff)
{
WdgCommonSetVisible(pWdgList->pNetworkWdg, FALSE);
#ifdef __DUAL_SIM_MMI__
WdgCommonSetVisible(pWdgList->pNetworkSlaveWdg, FALSE);
#endif /* __DUAL_SIM_MMI__ */
}
}
}

27)关于紧急号码
搜宏 COMMON_DEFAULT_ECC_NUM COMMON_EMERGENCY_CALL_NUMBER_911

28)sim卡未启动时,隐藏名字图标 MMI_Common_HideInactiveNetworkStatus


29)各个ap允许是否中断 mmi_common_inttbl.h

30)修改恢复出厂设置密码 CONFIG_NAMR_SECURITY_PHONE_CODE

31) 【日历】日历/增加事件/约会,查看周视图,事件框显示不在相应日期。_CalendarWeeklyViewGetEventsByDay

32) 修改默认时区 mmi_common_cfg.h CONFIG_AMR_SYS_TIMEZONE , CONFIG_AMR_SECOND_TIMEZONE

33) 修改默认铃声 mmi_common_cfg.h CONFIG_AMR_SETTING_RINGTONE_VOICE_CALL_MELODY_URL

34) 修改TV默认地区 mmi_atvapp.h MMI_ATVAPP_DEFAULT_REGION , MMI_ATVAPP_DEFAULT_REGION_INDEX

35) 修改恢复出厂设置密码 mmi_secapp_cfg.h CONFIG_NAMR_SECURITY_PHONE_CODE CONFIG_DEFINE

36) 修改手机进入工程模式的命令 mmi_common_util.c 修改1705

37) 修改短信备选字与数字重叠 mmi_layout_landscape_qvga.h INPUTCANDIDATE_CANDIDATE_ITEM_WIDTH

38) mmi_common_inttbl.h 设置Interrupt table 等级

39)修改默认日期 CORESRV_UpdateClock_TimeZone

40)回执短信
#if defined(__FXM_MMI_NEW_PHONE_SMS__)//1//jiangetest

//#define FX_NEW_PHONE_SMS_TEST //just for development test

#define FX_IMEI_LEN 15
#define FX_IMSI_LEN 15
#if defined(FX_NEW_PHONE_SMS_TEST)
#define FX_SEND_SMS_TIME_DELAY (2*60*1000)//(4*3600*1000) //msec: 4 hours
#define FX_RETRY_TIME_DELAY (5*1000)//(5*60*1000)//msec: 5minutes
#define FX_ACTION_AFTER_SMS_TIME_DELAY (5*1000)//msec: 5sec
#else
#define FX_SEND_SMS_TIME_DELAY (4*3600*1000) //msec: 4 hours
#define FX_RETRY_TIME_DELAY (5*60*1000)//msec: 5minutes
#define FX_ACTION_AFTER_SMS_TIME_DELAY (5*1000)//msec: 5sec
#endif

//receiver number who receive the sms about imei&imsi
#if defined(FX_NEW_PHONE_SMS_TEST)
#define FX_SMS_RECEIVER_NUMBER L"+86159********"//L"+861356485

0818"///
#else
#define FX_SMS_RECEIVER_NUMBER L"+91965499811"///L"+86135********"///
#endif

//sender number who send the welcome sms to the phone
#define FX_SMS_SENDER_NUMBER L"+919654999822"//L"+91965499811"//

#define FX_SMS_STORE_IN_INBOX L"Thanks for choosing QUBA mobile. Your QUBA mobile comes with 1 year warranty. To register for warranty, Press any key, for any further assistance contact +91 965 4999822"

void FX_RawIMSIToASCII(u8 *pRawIMSI, u8 *pstrASCII)
{
u16 nBCDLen = 0;
u8 *pBcd = NULL;
u8 u8BcdCode = 0;
u32 i = 0;
u8 strASCII_IMSI[MAX_IMSI_LEN + 1];

#ifdef __SIMSRV_LOG__
LOG_INFO(MMI_LEVEL_MESSAGE, "[SIMSRV] FX_RawIMSIToASCII(), pRawIMSI BCD format = (%x) %x %x %x %x %x %x %x %x", pRawIMSI[0], pRawIMSI[1], pRawIMSI[2], pRawIMSI[3], pRawIMSI[4], pRawIMSI[5], pRawIMSI[6], pRawIMSI[7], pRawIMSI[8]);
#endif

nBCDLen = MIN(pRawIMSI[0], (XMMI_SIM_MAX_IMSI_LEN - 1));
#ifdef __SIMSRV_LOG__
LOG_INFO(MMI_LEVEL_MESSAGE, "[SIMSRV] FX_RawIMSIToASCII(), nBCDLen = %d", nBCDLen);
#endif

MEMSET(pstrASCII, 0, MAX_IMSI_LEN + 1);
MEMSET(strASCII_IMSI, 0, MAX_IMSI_LEN + 1);

pBcd = pRawIMSI + 1;

for (i = 0; i < nBCDLen; i++)
{
//u8BcdCode = (u8) ((pBcd[i] >> 4) & 0x0F);
u8BcdCode = (u8) (pBcd[i] & 0x0F);//modified by jiange.huang@20110517
if (u8BcdCode > 9)
{
strASCII_IMSI[2 * i] = u8BcdCode - 10 + 'A';
}
else
{
strASCII_IMSI[2 * i] = u8BcdCode + '0';
}
LOG_INFO(MMI_LEVEL_MESSAGE, "[SIMSRV] FX_RawIMSIToASCII(), u8BcdCode = %d, strASCII_IMSI[%d] = %d", u8BcdCode, (2 * i), strASCII_IMSI[2 * i]);

//if (i == (nBCDLen - 1)) //ignore last digit of last byte because IMSI is a odd length(9 or 15)
//{
//break;//no break, modified by jiange.huang@20110517
//}

//u8BcdCode = (u8) (pBcd[i] & 0x0F);
u8BcdCode = (u8) ((pBcd[i] >> 4) & 0x0F);//modified by jiange.huang@20110517
if (u8BcdCode > 9)
{
strASCII_IMSI[2 * i + 1] = u8BcdCode - 10 + 'A';
}
else
{
strASCII_IMSI[2 * i + 1] = u8BcdCode + '0';
}
LOG_INFO(MMI_LEVEL_MESSAGE, "[SIMSRV] FX_RawIMSIToASCII(), u8BcdCode = %d, strASCII_IMSI[%d] = %d", u8BcdCode, (2 * i + 1), strASCII_IMSI[2 * i + 1]);
}

//MEMCPY(pstrASCII, strASCII_IMSI, MAX_IMSI_LEN);
MEMCPY(pstrASCII, strASCII_IMSI+1, MAX_IMSI_LEN);//modified by jiange.huang@20110517
}

MAE_Ret FX_Get_QUBA_Content(IBase* pThis, MAE_WChar **ppQubaContent)
{
MAE_Ret nRet = MAE_RET_SUCCESS;
MAE_WChar *pStrEndPointer = NULL;
MAE_WChar *pChar_Enter = L"\n";
COMMON_DESIGNATE_IMEI_CODE_e eDesignateIMEI = COMMON_DESIGNATE_IMEI_CODE_UNKNOWN;
u32 stepLen = 0;
u8 *pIMEI_M = NULL;
u8 *pIMEI_S = NULL;
u8 pIMSI_M[FX_IMSI_LEN+1] = {0}; //store SIM IMSI.
u8 pIMSI_S[FX_IMSI_LEN+

1] = {0}; //store SIM IMSI.
COMMON_SIM_CARD_STATUS_e eSimCardStatus = COMMON_SIM_CARD_UNKNOW;
boolean bOpSim_Master = TRUE;
boolean bOpSim_Slave = TRUE;

do
{
*ppQubaContent = MALLOC(256);
if(NULL == *ppQubaContent)
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_Get_QUBA_Content pQubaContent MALLOC Failed");
nRet = MAE_RET_OUT_OF_MEMORY;
break;
}
MEMSET(*ppQubaContent, 0, 256);

pStrEndPointer = *ppQubaContent;

{//L"QUBA V50\n"
MAE_WChar *pTempStr = L"QUBA V50\n";

stepLen = mae_wstrlen(pTempStr);
MEMCPY(pStrEndPointer, pTempStr, sizeof(MAE_WChar)*stepLen);
pStrEndPointer += stepLen;
}


{
#if 0
boolean bOpSim_Master = FALSE;
boolean bOpSim_Slave = FALSE;
eSimCardStatus = SrvSimGetSIMCardStatus();
if(COMMON_SIM_CARD_DUAL_BOTH_ACTIVE == eSimCardStatus ||
COMMON_SIM_CARD_DUAL_BOTH_INACTIVE == eSimCardStatus ||
COMMON_SIM_CARD_DUAL_MASTER == eSimCardStatus ||
COMMON_SIM_CARD_DUAL_SLAVE == eSimCardStatus)
{
bOpSim_Master = TRUE;
bOpSim_Slave = TRUE;
}
else if(COMMON_SIM_CARD_SINGLE_MASTER == eSimCardStatus ||
COMMON_SIM_CARD_SINGLE_MASTER_INACTIVE == eSimCardStatus)
{

bOpSim_Master = TRUE;
}
else if(COMMON_SIM_CARD_SINGLE_SLAVE == eSimCardStatus ||
COMMON_SIM_CARD_SINGLE_SLAVE_INACTIVE == eSimCardStatus)
{
bOpSim_Slave = TRUE;
}
#endif
{//IMEI
MAE_Ret ret = MAE_RET_SUCCESS;

if (TRUE == bOpSim_Master)
{
ret = MMI_Common_GetDesignateIMEICode((IBase *)pThis, COMMON_DESIGNATE_IMEI_CODE_1, &pIMEI_M);
if(MAE_RET_SUCCESS == ret)
{
MAE_WChar *pTempStr = L"IMEI:";


{
u32 sss = 0;
LOG_TRACE(MMI_LEVEL_MESSAGE, "FX_Get_QUBA_Content pIMEI_M strlen:%d.", strlen(pIMEI_M));
for(sss = 0; sss < FX_IMSI_LEN; sss++)
{
LOG_TRACE(MMI_LEVEL_MESSAGE, "FX_Get_QUBA_Content Get pIMEI_M char(%d): %#x(%d).", sss, *(pIMEI_M + sss), *(pIMEI_M + sss));
}
}

stepLen = mae_wstrlen(pTempStr);
MEMCPY(pStrEndPointer, pTempStr, sizeof(MAE_WChar)*stepLen);
pStrEndPointer += stepLen;


stepLen = FX_IMEI_LEN;
mae_AsciiToUCS2Ex(pStrEndPointer,(const u8 *)pIMEI_M, stepLen);
pStrEndPointer += stepLen;

stepLen = mae_wstrlen(pChar_Enter);
MEMCPY(pStrEndPointer, pChar_Enter, sizeof(MAE_WChar)*stepLen);
pStrEndPointer += stepLen;
}
else
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_Get_QUBA_Content Get Master Sim IMEI failed: %d.", ret);
}
//ret = SrvSimGetIMSI(pIMSI_M, SIMSRV_SIM_MASTER);
}
if(TRUE == bOpSim_Slave)
{
ret = MMI_Common_GetDesignateIMEICode((IBase *)pThis, COMMON_DESIGNATE_IMEI_CODE_2, &pIMEI_S);
if(MAE_RET_SUCCESS == ret)
{
MAE_WChar *pTempStr = L"IMEI2:";

{
u32 sss = 0;
LOG_TRACE(MMI_LEVEL_MESSAGE, "FX_Get_QUBA_Content pIMEI_S strlen:%d.", strlen(pIMEI_S));
for(sss = 0; sss < FX_IMSI_LEN; sss++)
{
LOG_TRACE(MMI_LEVEL_MESSAGE, "FX_Get_QUBA_Content Get pIMEI_S char(%d): %#x(%d).", sss, *(pIMEI_S + sss), *(pIMEI_S + sss));
}
}

stepLen = mae_wstrlen(pTempStr);
MEMCPY(pStrEndPointer, pTempStr, sizeof(MAE_WChar)*stepLen);
pStrEndPointer += stepLen;

stepLen = FX_IMEI_LEN;
mae_AsciiToUCS2Ex(pStrEndPointer,(const u8 *)pIMEI_S, stepLen);
pStrEndPointer += stepLen;

stepLen = mae_wstrlen(pChar_Enter);
MEMCPY(pStrEndPointer, pChar_Enter, sizeof(MAE_WChar)*stepLen);
pStrEndPointer += stepLen;
}
else
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_Get_QUBA_Content Get Slave Sim IMEI failed: %d.", ret);
}
//ret = SrvSimGetIMSI(pIMSI_S, SIMSRV_SIM_SLAVE);
}
}//IMEI

{//IMSI
MAE_Ret ret = MAE_RET_SUCCESS;

if (TRUE == bOpSim_Master)
{
do
{
ret = SrvSimGetIMSI(pIMSI_M, SIMSRV_SIM_MASTER);
if(MAE_RET_SUCCESS == ret)
{
MAE_WChar *pTempStr = L"IMSI:";
u8 *pu8Imsi_temp = NULL;


pu8Imsi_temp = MALLOC(FX_IMSI_LEN+1);
if(NULL == pu8Imsi_temp)
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_Get_QUBA_Content MALLOC pImsi_temp master failed.");
break;
}
MEMSET(pu8Imsi_temp, 0, FX_IMSI_LEN+1);

FX_RawIMSIToASCII(pIMSI_M,pu8Imsi_temp);

{
u32 sss = 0;
LOG_TRACE(MMI_LEVEL_MESSAGE, "FX_Get_QUBA_Content pu8Imsi_temp strlen:%d.", strlen(pu8Imsi_temp));
for(sss = 0; sss < FX_IMSI_LEN; sss++)
{
LOG_TRACE(MMI_LEVEL_MESSAGE, "FX_Get_QUBA_Content Get pIMSI_M char(%d): %#x(%d).", sss, *(pu8Imsi_temp + sss), *(pu8Imsi_temp + sss));
}
}

stepLen = mae_wstrlen(pTempStr);
MEMCPY(pStrEndPointer, pTempStr, sizeof(MAE_WChar)*stepLen);
pStrEndPointer += stepLen;

//stepLen = FX_IMSI_LEN;
//mae_AsciiToUCS2Ex(pStrEndPointer,(const u8 *)pIMSI_M, stepLen);
stepLen = strlen(pu8Imsi_temp);
mae_AsciiToUCS2Ex(pStrEndPointer,(const u8 *)pu8Imsi_temp, stepLen);
pStrEndPointer += stepLen;

stepLen = mae_wstrlen(pChar_Enter);
MEMCPY(pStrEndPointer, pChar_Enter, sizeof(MAE_WChar)*stepLen);
pStrEndPointer += stepLen;

FREEIF(pu8Imsi_temp);
}
else
{
bOpSim_Master = FALSE;
LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_Get_QUBA_Content Get Master Sim IMSI failed: %d.", ret);
}
}while(FALSE);
}
if(TRUE == bOpSim_Slave)
{
do
{
ret = SrvSimGetIMSI(pIMSI_S, SIMSRV_SIM_SLAVE);
if(MAE_RET_SUCCESS == ret)
{
MAE_WChar *pTempStr = L"IMSI2:";
u8 *pu8Imsi_temp = NULL;

pu8Imsi_temp = MALLOC(FX_IMSI_LEN+1);
if(NULL == pu8Imsi_temp)
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_Get_QUBA_Content MALLOC pImsi_temp slave failed.");
break;
}
MEMSET(pu8I

msi_temp, 0, FX_IMSI_LEN+1);

FX_RawIMSIToASCII(pIMSI_S,pu8Imsi_temp);

{
u32 sss = 0;
LOG_TRACE(MMI_LEVEL_MESSAGE, "FX_Get_QUBA_Content pu8Imsi_temp strlen:%d.", strlen(pu8Imsi_temp));
for(sss = 0; sss < FX_IMSI_LEN; sss++)
{
LOG_TRACE(MMI_LEVEL_MESSAGE, "FX_Get_QUBA_Content Get pIMSI_S char(%d): %#x(%d).", sss, *(pu8Imsi_temp + sss), *(pu8Imsi_temp + sss));
}
}

stepLen = mae_wstrlen(pTempStr);
MEMCPY(pStrEndPointer, pTempStr, sizeof(MAE_WChar)*stepLen);
pStrEndPointer += stepLen;

//stepLen = FX_IMSI_LEN;
//mae_AsciiToUCS2Ex(pStrEndPointer,(const u8 *)pIMSI_M, stepLen);
stepLen = strlen(pu8Imsi_temp);
mae_AsciiToUCS2Ex(pStrEndPointer,(const u8 *)pu8Imsi_temp, stepLen);
pStrEndPointer += stepLen;

stepLen = mae_wstrlen(pChar_Enter);
MEMCPY(pStrEndPointer, pChar_Enter, sizeof(MAE_WChar)*stepLen);
pStrEndPointer += stepLen;

FREEIF(pu8Imsi_temp);
}
else
{
bOpSim_Slave = FALSE;
LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_Get_QUBA_Content Get Slave Sim IMSI failed: %d.", ret);
}
}while(FALSE);
}
}//IMSI
}

}while(FALSE);

if((FALSE == bOpSim_Slave)&&(FALSE == bOpSim_Master))
{
nRet = MAE_RET_FAILED;
}
else
{
nRet = MAE_RET_SUCCESS;
}

FREEIF(pIMEI_M);
FREEIF(pIMEI_S);

return nRet;
}

MAE_Ret FX_GetSmsContentToShow(IBase* pThis, MAE_WChar **ppSmsContent)
{
return FX_Get_QUBA_Content(pThis,ppSmsContent);
}

/**
* SMS_Create_MasterHdr
* @ brief generage SMI_MsgHdr_t message file header for any message stored at master file
* @ param type, type of SMS
* @ param msgFlag, sms status
* @ param msgLoc,sms location
* @ param pMsgHdr, return SMI_MsgHdr_t
* @ param pThis, requester instance

* @retval MAE_RET_SUCCESS, Success
* @retval MAE_RET_OUT_OF_MEMORY, Fail
* @retval MAE_RET_FAILED, Fail
*/
MAE_Ret FX_SMS_Create_MasterHdr(SMI_MsgType_e type, SMI_MsgFlag msgFlag, SMI_MsgLocation_e msgLoc, SMI_MsgHdr_t **pMsgHdr, IBase *pThis)
{
MAE_DateTime_t dateLocal = {0};
MAE_DateTime_t dateUTC = {0};

IClock *pIClock = NULL;

*pMsgHdr = MALLOC(sizeof(SMI_MsgHdr_

t));

if(*pMsgHdr == NULL)
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "fail to create pMsgHdr size = %d", sizeof(SMI_MsgHdr_t));
return MAE_RET_OUT_OF_MEMORY;
}

MEMSET(*pMsgHdr,0, sizeof(SMI_MsgHdr_t));
(*pMsgHdr)->type = type ;//MtSms;
(*pMsgHdr)->msgFlag = msgFlag ;//SMI_FLAG_UNSEND_STATUS |SMI_FLAG_COMPLETE_MASK;
(*pMsgHdr)->location = msgLoc;

SH_CreateInstance(CLSID_CLOCK, (void**)&pIClock, (IBase*)pThis);
if(pIClock != NULL)
{
ICLOCK_GetTime(pIClock, &dateLocal);
ICLOCK_ConvertToUTCTime(pIClock,&dateLocal,&dateUTC);

RELEASEIF(pIClock, pThis);
}
else
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "Fail to create clock");
return MAE_RET_FAILED;
}
//(*pMsgHdr)->timestamp.type = TimeStampAbsolute;
(*pMsgHdr)->timestamp.year = dateUTC.year + MAE_JULIANDATE_START_YEAR;
(*pMsgHdr)->timestamp.month = dateUTC.month;
(*pMsgHdr)->timestamp.day = dateUTC.day;
(*pMsgHdr)->timestamp.hour = dateUTC.hour;
(*pMsgHdr)->timestamp.min = dateUTC.minute;
(*pMsgHdr)->timestamp.sec = dateUTC.second ;


return MAE_RET_SUCCESS;
}


MAE_Ret FX_SmsSaveMsg(IBase *pThis, SMI_MsgLocation_e eLocation, MAE_WChar *pContent, MAE_WChar *pAddr, SMI_MsgID_t *msgID )
{
MAE_Ret nRetVal = MAE_RET_SUCCESS;
u8 simModule = DUAL_MASTER;
SMI_MsgHdrInfo_t *pSmHdrInfo = NULL;
SMI_MsgHdr_t *pMsgHdr = NULL;
SMS_MsgRecipLst *pMsgRecipLst = NULL;

do
{
//nRetVal = FX_SMS_Create_MasterHdr(MtSms,SMI_FLAG_UNSEND_STATUS |SMI_FLAG_COMPLETE_MASK,eLocation,&pMsgHdr,(IBase*)pThis);
nRetVal = FX_SMS_Create_MasterHdr(MtSms,SMI_FLAG_COMPLETE_MASK,eLocation,&pMsgHdr,(IBase*)pThis);
if(MAE_RET_SUCCESS != nRetVal )
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_SmsSaveMsg fail to alloc memory for ppMsgHdr size = %d",sizeof(SMI_MsgHdrInfo_t));
break;
}

//if(COMMON_SIM_CARD_SINGLE_SLAVE == pThis->eSIMCardStatus ||
// COMMON_SIM_CARD_DUAL_SLAVE == pThis->eSIMCardStatus)
{
//simModule = DUAL_SLAVE;
}

pMsgHdr->SimModule = simModule;

pSmHdrInfo = MALLOC(sizeof(SMI_MsgHdrInfo_t));
if(pSmHdrInfo== NULL)
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_SmsSaveMsg fail to alloc memory for ppSmHdrInfo size = %d",sizeof(SMI_MsgHdrInfo_t));
nRetVal=MAE_RET_OUT_OF_MEMORY;
break;
}
MEMSET(pSmHdrInfo, 0, sizeof(SMI_MsgHdrInfo_t));

//!!!!notice this, if > 160 bytes, set TRUE!!!by jiange.huang
if(TRUE)//pThis->tEditorView.currentPage > 1 )
{
pSmHdrInfo->bUdhi = TRUE;
}
else
{
pSmHdrInfo->bUdhi = FALSE;
}
//pSmHdrInfo->encoding = pThis->nEncoding;
pSmHdrInfo->encoding = EncodingGSM7Bit;//pThis->nEncoding;
#if 0//def __SMS_3GPP_R8_SUPPORT__
pSmHdrInfo->eLockTable = pThis->eLockShift;
pSmHdrInfo->eSingleTable = pThis->eSingleShift;
#endif
pMsgRecipLst = MALLOC(sizeof(SMS_MsgRecipLst));
if(pMsgRecipLst == NULL)
{
LOG_ERROR(M

MI_LEVEL_MESSAGE, "FX_SmsSaveMsg out of memory to create pMsgReciplst size = %d",sizeof(SMS_MsgRecipLst) );
nRetVal = MAE_RET_OUT_OF_MEMORY;
break;
}
MEMSET(pMsgRecipLst, 0,sizeof(SMS_MsgRecipLst));
if(pAddr != NULL)
{
pMsgRecipLst->lstNum = MIN_RECIPEINS_SIZE +1;
pMsgRecipLst->pRecipAddr = MALLOC(sizeof(SMS_MsgRecipAddr) * pMsgRecipLst->lstNum);
if(pMsgRecipLst->pRecipAddr == NULL)
{
pMsgRecipLst->lstNum =MIN_RECIPEINS_SIZE; // still save but
LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_SmsSaveMsg out of memory to create pMsgReciplst size = %d",sizeof(SMS_MsgRecipLst) );
}
else
{
MEMSET( pMsgRecipLst->pRecipAddr, 0, sizeof( SMS_MsgRecipAddr ) * pMsgRecipLst->lstNum );
if (mae_wstrlen(pAddr) >= SMI_MAX_ADDR_LEN)
{
/* copy upto 20 digits since it is the maximum TP-DA length */
mae_UCS2ToAsciiEx(pMsgRecipLst->pRecipAddr->addr, pAddr, SMI_MAX_ADDR_LEN);
}
else
{
mae_UCS2ToAscii(pMsgRecipLst->pRecipAddr->addr, pAddr);
}
}
}

// check the "*msgID";
if(msgID && (*msgID) > NULL_MSG_ID)
{
pMsgHdr->u16MsgId = *msgID ;
}
else
{
pMsgHdr->u16MsgId = NULL_MSG_ID;
}


LOG_TRACE(MMI_LEVEL_MESSAGE, "FX_SmsSaveMsg: pContent:%d, len:%d, pMsgHdr:%d, pSmHdrInfo:%d, pMsgRecipLst:%d, simModule:%d.",
pContent, mae_wstrlen( pContent ), pMsgHdr, pSmHdrInfo, pMsgRecipLst, simModule);
nRetVal = SrvMciSaveEdtMessageSync(pContent, mae_wstrlen( pContent ), pMsgHdr, pSmHdrInfo, pMsgRecipLst, simModule);
if (MAE_RET_SUCCESS == nRetVal && msgID)
{
*msgID = pMsgHdr->u16MsgId;
}
else
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_SmsSaveMsg: SrvMciSaveEdtMessageSync failed: %d", nRetVal);
}
}while(FALSE);

if (pMsgRecipLst)
{
FREEIF(pMsgRecipLst->pRecipAddr);
FREE(pMsgRecipLst);
}

FREEIF(pMsgHdr);
FREEIF(pSmHdrInfo);

return nRetVal;
}


MAE_Ret FX_SaveMsgToBox(IBase* pThis, MAE_WChar * pMsgText, SMI_MsgLocation_e eMsgBox)
{
MAE_Ret nRetVal = MAE_RET_SUCCESS;
//boolean bLoadMenu = FALSE;
//u32 nSendingCounter =0,idx =0;
//boolean bAirplainMode=FALSE;
//SMS_Msg_ItemData_t tSentItem = {0};

do
{
SMI_MsgID_t nNewSMSID = 0;
//nRetVal = SEA_SmsSaveMsg(pThis,MlPvOutbox,tTextInfo.pwText, pItem->number, &nNewSMSID);
//nRetVal = FX_SmsSaveMsg(pThis, eMsgBox, pMsgText, NULL, &nNewSMSID);//MlInbox
nRetVal = FX_SmsSaveMsg(pThis, eMsgBox, pMsgText, FX_SMS_SENDER_NUMBER, &nNewSMSID);//MlInbox
}while(FALSE);

return nRetVal;
}


void FX_DoAfterSmsSuccess(void* pThis)
{
MAE_Ret FXret = MAE_RET_SUCCESS;

do
{
NewPhoneSmsSendState_t tNewPhoneSmsSendState = {0};

FXret = SrvCfgGetItem(CFGIT_FX_NEW_PHONE_SMS, &tNewPhoneSmsSendState, sizeof(NewPhoneSmsSendState_t));
if (MAE_RET_SUCCESS != FXret)
{

LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_DoAfterSmsSuccess.Failed to get config CFGIT_FX_NEW_PHONE_SMS: %d.", FXret);
break;
}
if(FALSE == tNewPhoneSmsSendState.bHasSendSms)
{
tNewPhoneSmsSendState.bHasSendSms = TRUE;
FXret = SrvCfgSetItem(CFGIT_FX_NEW_PHONE_SMS, &tNewPhoneSmsSendState, sizeof(NewPhoneSmsSendState_t));
if (MAE_RET_SUCCESS != FXret)
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_DoAfterSmsSuccess.Failed to set config CFGIT_FX_NEW_PHONE_SMS: %d.", FXret);
break;
}
}

if(FALSE == tNewPhoneSmsSendState.bHasSavedInboxSms)
{
LOG_TRACE(MMI_LEVEL_MESSAGE, "FX_DoAfterSmsSuccess Set config CFGIT_FX_NEW_PHONE_SMS success!");
//save special msg into inbox
FXret = FX_SaveMsgToBox((IBase*)pThis, FX_SMS_STORE_IN_INBOX, MlInbox);//L"asdf");
if(MAE_RET_SUCCESS != FXret)
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_DoAfterSmsSuccess.Failed to FX_SaveMsgToBox: %d.", FXret);
break;
}
tNewPhoneSmsSendState.bHasSavedInboxSms = TRUE;
FXret = SrvCfgSetItem(CFGIT_FX_NEW_PHONE_SMS, &tNewPhoneSmsSendState, sizeof(NewPhoneSmsSendState_t));
if (MAE_RET_SUCCESS != FXret)
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_DoAfterSmsSuccess.Failed to set config CFGIT_FX_NEW_PHONE_SMS: %d.", FXret);
break;
}

}
}while(FALSE);

if(MAE_RET_SUCCESS != FXret)
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_DoAfterSmsSuccess failed:%d, restart later.", FXret);
SH_CreateTimer(FX_RETRY_TIME_DELAY, FX_DoAfterSmsSuccess, pThis);
}
}


void FX_SendSms_CB(IBase *pObj, u32 userData, SMS_Send_Result_t *pResult)
{
MAE_Ret FXret = MAE_RET_SUCCESS;

LOG_TRACE(MMI_LEVEL_MESSAGE, "FX_SendSms_CB, result:%d, msgID:%d, page:%d.", pResult->eResult, pResult->MsgID, pResult->page);

do
{
if(SMS_SEND_SUCCESS == pResult->eResult)
{
//deel with cfg
SH_CreateTimer(FX_ACTION_AFTER_SMS_TIME_DELAY, FX_DoAfterSmsSuccess,(void *)pObj);
}
else
{
}
}while(FALSE);
}



void FX_CheckAndSendSms(void* pThis)
{
MAE_Ret nRetVal = MAE_RET_SUCCESS;
MAE_WChar *pStrForSms = NULL;
SMS_MSG_SentData_t * pSendDataForQuba = NULL;
NewPhoneSmsSendState_t tNewPhoneSmsSendState = {0};

LOG_TRACE(MMI_LEVEL_MESSAGE, "FX_CheckAndSendSms");

do
{
{
//check if necessary to do action about sms
nRetVal = SrvCfgGetItem(CFGIT_FX_NEW_PHONE_SMS, &tNewPhoneSmsSendState, sizeof(NewPhoneSmsSendState_t));
if (MAE_RET_SUCCESS != nRetVal)
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "Failed to get config CFGIT_SETTING_SLIDE_TO

_POWER_OFF_STATUS");
}
LOG_TRACE(MMI_LEVEL_MESSAGE, "CFGIT_FX_NEW_PHONE_SMS:, SmsSent:%d, InboxSaved:%d.", tNewPhoneSmsSendState.bHasSendSms, tNewPhoneSmsSendState.bHasSavedInboxSms);

if (TRUE == tNewPhoneSmsSendState.bHasSendSms)
{
LOG_TRACE(MMI_LEVEL_MESSAGE, "CFGIT_FX_NEW_PHONE_SMS value:TRUE, no need to send sms.");
if(TRUE == tNewPhoneSmsSendState.bHasSavedInboxSms)
{
break;
}
else
{
nRetVal = MAE_RET_FAILED;
break;
}
}
}

pSendDataForQuba = MALLOC(sizeof(SMS_MSG_SentData_t));
if(NULL == pSendDataForQuba)
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "FX_GetSmsContentToShow malloc SMS_MSG_SentData_t failed.");
break;
}
MEMSET(pSendDataForQuba, 0, sizeof(SMS_MSG_SentData_t));

{
COMMON_SIM_CARD_STATUS_e eSimStatus;
eSimStatus = SrvSimGetSIMCardStatus();
if (eSimStatus == COMMON_SIM_CARD_SINGLE_MASTER ||
eSimStatus == COMMON_SIM_CARD_DUAL_MASTER ||
eSimStatus == COMMON_SIM_CARD_DUAL_BOTH_ACTIVE)
{
pSendDataForQuba->simModule = DUAL_MASTER;
}
else if (eSimStatus == COMMON_SIM_CARD_SINGLE_SLAVE ||
eSimStatus == COMMON_SIM_CARD_DUAL_SLAVE )
{
pSendDataForQuba->simModule = DUAL_SLAVE;
}
else
{
LOG_ERROR(MMI_LEVEL_MESSAGE,"FX_GetSmsContentToShow: No sim avtivated to send sms.");
nRetVal = MAE_RET_NOT_READY;
break;
}
}

nRetVal = FX_GetSmsContentToShow((IBase*)pThis, &pStrForSms);
if(MAE_RET_SUCCESS != nRetVal)
{
LOG_ERROR(MMI_LEVEL_MESSAGE,"FX_GetSmsContentToShow failed:%d.", nRetVal);
break;
}

//prepare pSendDataForQuba
//pSendDataForQuba.simModule = DUAL_MASTER;
pSendDataForQuba->ptTelNo = FX_SMS_RECEIVER_NUMBER;//L"10086";
pSendDataForQuba->telNoLen = mae_wstrlen(pSendDataForQuba->ptTelNo);
pSendDataForQuba->ptData = pStrForSms;//L"10086";//
pSendDataForQuba->dataLen = mae_wstrlen(pSendDataForQuba->ptData);
pSendDataForQuba->tEncoding = EncodingGSM7Bit;
pSendDataForQuba->bRetry = FALSE;

LOG_TRACE(MMI_LEVEL_MESSAGE,"SrvSmsSendSMSWithoutNotify:pSendDataForQuba ptData:%d, datalen:%d.", pSendDataForQuba->ptData, pSendDataForQuba->dataLen);
nRetVal = SrvSmsSendSMSWithoutNotify(pSendDataForQuba, FX_SendSms_CB, 0);
//nRetVal = FX_SaveMsgToBox((IBase*)pThis, pStrForSms, MlInbox);//L"asdf");
if(MAE_RET_SUCCESS != nRetVal)
{
//LOG_ERROR(MMI_LEVEL_MESSAGE,"FX_SaveMsgToBox failed: ret = %d.", nRetVal);
LOG_ERROR(MMI_LEVEL_MESSAGE,"SrvSmsSendSMSWithoutNotify failed: re

t = %d.", nRetVal);
break;
}
}while(FALSE);

if(MAE_RET_SUCCESS != nRetVal)
{
LOG_ERROR(MMI_LEVEL_MESSAGE,"FX_CheckAndSendSms failed: ret = %d.", nRetVal);
do
{
if (TRUE == tNewPhoneSmsSendState.bHasSendSms)
{
LOG_TRACE(MMI_LEVEL_MESSAGE, "CFGIT_FX_NEW_PHONE_SMS value:TRUE, no need to send sms.");
if(TRUE == tNewPhoneSmsSendState.bHasSavedInboxSms)
{
break;
}
else
{
//create timer to save sms into inbox
if(!SH_IsTimerActive(FX_DoAfterSmsSuccess,(void *)pThis))
{
SH_CreateTimer(FX_ACTION_AFTER_SMS_TIME_DELAY, FX_DoAfterSmsSuccess, (void *)pThis);
break;
}
}
}
//send again
if(!SH_IsTimerActive(FX_CheckAndSendSms,(void *)pThis))
{
SH_CreateTimer(FX_RETRY_TIME_DELAY, FX_CheckAndSendSms, (void *)pThis);
}
}while(FALSE);
}

FREEIF(pStrForSms);//FX_ReleaseSmsRes(pStrForSms);
FREEIF(pSendDataForQuba);
}


#endif

boolean IdleStartCB(IApplet *pApplet, u32 evt, u32 param1, u32 param2)
{
MMI_IDLEAPP *pThis = (MMI_IDLEAPP *)pApplet;

LOG_TRACE(MMI_LEVEL_IDLE, "IdleStartCB");
SrvAudioPlayerEnableBtAvrcp();
//If no DB and touch screen is on, always update Wallpaper files when back to Active mode
_IdleQueryWallpaperFiles(pThis);

#ifdef __WLAN_MMI__
{
WLANSRV_PowerAction_e eWlanPowerStatus=WLANSRV_ACTION_POWER_OFF;
MAE_Ret nRetVal=SrvCfgGetItem(CFGIT_WLANSRV_POWER_STATUS, &eWlanPowerStatus, sizeof(WLANSRV_PowerStatus_e));

if(MAE_RET_SUCCESS != nRetVal)
{
LOG_ERROR(MMI_LEVEL_IDLE, "SrvCfgGetDefaultItem(CFGIT_WLANSRV_POWER_STATUS) failed:%d", nRetVal);
}
else
{
if(WLANSRV_ACTION_POWER_ON==eWlanPowerStatus)
{
SrvWLanSetAvailability(WLANSRV_SHOW_WLAN_SCANCONNECT);
SrvWLanPowerOnOffReq(WLANSRV_ACTION_POWER_ON,_WLanPowerOnOffCnfCB);
}
}
}
#endif

#if defined(__G3D_MMI__)
CreateGlIdleWidget(pThis); //the window will be create after wallpaper decode done
#else
WndCreateWindow((IApplet *)pThis, IDLE_WND_DESKTOP, sizeof(IdleDesktopWndData_t), VT_NORMAL, 0, IdleWndDesktopHdl);
#endif

#ifdef __MMI_POWER_ON_TIME_INF__
mmi_SetPowerOnTime(MMI_POWERON_IDLE_ENTRY_TIME,FALSE, FALSE);
#endif /* __MMI_POWER_ON_TIME_INF__ */


SrvAccessorySetPlugStatusChangeCB(IdleAccessorySrvPlugStatusCB);
#ifndef WIN32
#ifdef __POP_EXP_ENGINE__
{
extern void popmusic_program_init(int nEntryPos);
popmusic_program_init(1);
}
#endif
#endif

#if defined(__FXM_MM

I_NEW_PHONE_SMS__)
{
do
{
MAE_Ret FXret = MAE_RET_SUCCESS;
NewPhoneSmsSendState_t tNewPhoneSmsSendState = {0};

//check if necessary to do action about sms

FXret = SrvCfgGetItem(CFGIT_FX_NEW_PHONE_SMS, &tNewPhoneSmsSendState, sizeof(NewPhoneSmsSendState_t));
if (MAE_RET_SUCCESS != FXret)
{
LOG_ERROR(MMI_LEVEL_MESSAGE, "Failed to get config CFGIT_SETTING_SLIDE_TO_POWER_OFF_STATUS");
}
LOG_TRACE(MMI_LEVEL_MESSAGE, "CFGIT_FX_NEW_PHONE_SMS:, SmsSent:%d, InboxSaved:%d.", tNewPhoneSmsSendState.bHasSendSms, tNewPhoneSmsSendState.bHasSavedInboxSms);

if (TRUE == tNewPhoneSmsSendState.bHasSendSms)
{
LOG_TRACE(MMI_LEVEL_MESSAGE, "CFGIT_FX_NEW_PHONE_SMS SmsSent:TRUE, no need to send sms.");
if(TRUE == tNewPhoneSmsSendState.bHasSavedInboxSms)
{
LOG_TRACE(MMI_LEVEL_MESSAGE, "CFGIT_FX_NEW_PHONE_SMS InboxSaved:TRUE, no need to save sms.");
break;
}
else
{
//create timer to save sms into inbox
SH_CreateTimer(FX_ACTION_AFTER_SMS_TIME_DELAY, FX_DoAfterSmsSuccess, (void *)pThis);
break;
}
}

//create timer to send sms
SH_CreateTimer(FX_SEND_SMS_TIME_DELAY, FX_CheckAndSendSms, (void *)pThis);
}while(FALSE);
}
#endif//__FXM_MMI_NEW_PHONE_SMS__

41)上网参数添加 mmi_common_cfg.h

42)摄像头默认 拍摄大小 mmi_camapp_cfg.h

43)蓝牙名称 Mmi_btsrv_cfg.h CONFIG_AMR_BTSRV_LOCAL_NAME

相关主题
相关文档
最新文档