📄 mmiservices.c
字号:
FREE_MEMORY ((void *)data->mfw_ss_cf, sizeof (T_ss_feature_cf)); //hu binhao 2003-2-19
data->mfw_ss_cf = NULL;
//step 4 save number to usually used number list
/***********************************WUFEI APPEND*********************************************/
if( strlen(ss_data.edt_buf_number)!=0 )
{
n=usednumber_GetListCount(RES_USEDNUMBER);
i=0;
avail=1;
while( avail==1 AND i<n )
{
if( strstr((char*)FlashDCTbData.UsedNumberTable[i],ss_data.edt_buf_number)!=NULL )
avail=0;
i++;
}
if( avail==1 )
{
if( FlashDCTbData.UsedTbIdx==10 )
{
FlashDCTbData.UsedTbIdx=0;
}
if( FlashDCTbData.UsedTbIdx<10 )
{
strcpy((char*)FlashDCTbData.UsedNumberTable[FlashDCTbData.UsedTbIdx],ss_data.edt_buf_number);
FlashDCTbData.UsedTbIdx++;
flash_DCTbwrite();
}
}
memset(ss_data.edt_buf_number,'\0',PHB_MAX_LEN);
}
/*************************************************************************************/
}
else
{
switch( srv_check_CF_telephony_status ( &ss_cnf->cf_cnf ) )
{
case CF_ACTIVE_STATUS:
iconsSetState(iconIdCallFor);
break;
case CF_INACTIVE_STATUS:
iconsDeleteState(iconIdCallFor);
break;
default: // CF_UNKNOWN_STATUS
//iconsDeleteState(iconIdCallFor); //SPR#984 - DS - Commented out. Leave state unchanged as default.
break;
}
showCFStatus(win, data);
/***********************************WUFEI APPEND*********************************************/
if( strlen(ss_data.edt_buf_number)!=0 )
{
n=usednumber_GetListCount(RES_USEDNUMBER);
i=0;
avail=1;
while( avail==1 AND i<n )
{
if( strstr((char*)FlashDCTbData.UsedNumberTable[i],ss_data.edt_buf_number)!=NULL )
avail=0;
i++;
}
if( avail==1 )
{
if( FlashDCTbData.UsedTbIdx==10 )
{
FlashDCTbData.UsedTbIdx=0;
}
if( FlashDCTbData.UsedTbIdx<10 )
{
strcpy((char*)FlashDCTbData.UsedNumberTable[FlashDCTbData.UsedTbIdx],ss_data.edt_buf_number);
FlashDCTbData.UsedTbIdx++;
flash_DCTbwrite();
}
}
memset(ss_data.edt_buf_number,'\0',PHB_MAX_LEN);
}
/*************************************************************************************/
}
}
else
{
switch( ss_cnf->cf_cnf.ss_code )
{
case SS_CODES_UNKNOWN:
//break;/*2004/4/30, wangyan modify*/
case SS_CF_CFU:
case SS_CF_ALL:
case SS_CLIR:
case SS_CF_ALL_COND:
case SS_CF_CFNRy:
case SS_CF_CFNR:
case SS_CF_CFB:
switch( ss_cnf->cf_cnf.ss_error )
{
case MFW_SS_NO_ERROR:
// HU begin
//SPR#984 - DS - Only update icons if activating / cancelling.
// MmiTrace("mmiservices.c MFW_SS_NO_ERROR hubh11");
if( CFAction==CFDeactivate )
{
//step1 if CFDeactivate,then change CFFlag according CFType
switch( CFType )
{
case CFNoReach:
FlashDCTbData.CFFlag &=ReSetCFNRc;
break;
case CFBusy:
FlashDCTbData.CFFlag &=ReSetCFB;
break;
case CFNoReply:
FlashDCTbData.CFFlag &=ReSetCFNRy;
break;
case CFUnconditional:
FlashDCTbData.CFFlag &=ReSetCFU;
break;
case CFAllCalls:
FlashDCTbData.CFFlag =0;
break;
}
//if CFFlag equal 0, iconsDeleteState(iconIdCallFor)
if( !(FlashDCTbData.CFFlag&GetFourbits) )
{
if( ss_cnf->cf_cnf.ss_category != SS_INTERROGATION )
{
switch( srv_check_CF_telephony_status ( &ss_cnf->cf_cnf ) )
{
case CF_ACTIVE_STATUS:
iconsSetState(iconIdCallFor);
// MmiTrace("ser MFW_SS_NO_ERROR hubh11");
break;
case CF_INACTIVE_STATUS:
iconsDeleteState(iconIdCallFor);
break;
default: // CF_UNKNOWN_STATUS
//iconsDeleteState(iconIdCallFor); //SPR#984 - DS - Commented out. Leave state unchanged as default.
break;
}
}
}
flash_DCTbwrite(); //wriite to flash hu binhao 2003-2-11
}
/*
* now store the MFW data under the SS window
*/
data->mfw_ss_cf = (T_ss_feature_cf *)ALLOC_MEMORY (sizeof (T_ss_feature_cf));
/*
* copy all interesting feature entries
*/
data->max_feature = srv_copy_feature_list_cf (data->mfw_ss_cf, &ss_cnf->cf_cnf);
data->current_feature = /*CFService*/0;
if( data->max_feature EQ 0 )
{
srv_empty_list_result (ss_cnf->cf_cnf.ss_category);
FREE_MEMORY ((void *)data->mfw_ss_cf, sizeof (T_ss_feature_cf));
data->mfw_ss_cf = NULL;
//consider the change sim card sitation ,for delet the call forward icon in idile interface.
// begin hu binhao 2003-4-30
{
unsigned char Tempflag;
Tempflag=0;
switch( CFType )
{
//step1 1:to adjust the bit in FlashDCTbData.CFFlag after check state ,according CFType
case CFNoReach:
if( (FlashDCTbData.CFFlag&SetCFNRc)!=0 )
{
FlashDCTbData.CFFlag &=ReSetCFNRc;
Tempflag=1;
}
break;
case CFBusy:
if( (FlashDCTbData.CFFlag&SetCFB)!=0 )
{
FlashDCTbData.CFFlag &=ReSetCFB;
Tempflag=1;
}
break;
case CFNoReply:
if( (FlashDCTbData.CFFlag&SetCFNRy)!=0 )
{
FlashDCTbData.CFFlag &=ReSetCFNRy;
Tempflag=1;
}
break;
case CFUnconditional:
if( (FlashDCTbData.CFFlag&SetCFU)!=0 )
{
FlashDCTbData.CFFlag &=ReSetCFU;
Tempflag=1;
}
break;
}
//step 2: if there are some change,we must write the DCTB flash file
if( Tempflag!=0 )
{
flash_DCTbwrite();
}
//step 3: if it has not any type of call forward ,we delete the icon in idile interface
if( !(FlashDCTbData.CFFlag&GetFourbits) )
{
iconsDeleteState(iconIdCallFor);
}
}
//2003-4-30 hu binhao end
}
else
{
/*
* now display status
*/
showCFStatus(win, data);
FREE_MEMORY ((void *)data->mfw_ss_cf, sizeof (T_ss_feature_cf)); //hu binhao 2003-2-19
data->mfw_ss_cf = NULL; //hu binhao 2003-2-19
}
break;
default:
// TRACE_FUNCTION("ERROR in CFU,INTERROGATION");
//showError(win, ss_cnf->cf_cnf.ss_error);
services_info_screen(win,TxtFailed);//WUFEI Modify
break;
}
break;
default:
break;
} /* end switch(ss_cnf->cf_cnf.ss_code) */
}
break;
case E_SS_CW_CNF:
if( ss_cnf->cw_cnf.ss_error == MFW_SS_NO_ERROR )
{
/*
* now store the MFW data under the SS window
*/
data->mfw_ss_cw = (T_ss_feature_cw *)ALLOC_MEMORY (sizeof (T_ss_feature_cw));
/*
* copy all interesting feature entries
*/
data->max_feature = srv_copy_feature_list_cw (data->mfw_ss_cw, &ss_cnf->cw_cnf);
data->current_feature = 0;
if( data->max_feature EQ 0 )
{
//glowing, 2003/11/21, fix the bug that if the SIMcard does not have calling
// waiting function, it still give the active info.
if( ss_cnf->cw_cnf.ss_status NEQ 0xFF AND ss_cnf->cw_cnf.ss_status NEQ 0x00 )
//if (ss_cnf->cw_cnf.ss_status NEQ 0xFF)
srv_display_status (ss_cnf->cw_cnf.ss_status);
else
//srv_empty_list_result (ss_cnf->cw_cnf.ss_category);
srv_empty_list_result_new (ss_cnf->cw_cnf.ss_category, event, ss_cnf->cw_cnf.ss_status); /* Marcus: Issue 1214: 22/10/2002 */
FREE_MEMORY ((void *)data->mfw_ss_cw, sizeof (T_ss_feature_cw));
data->mfw_ss_cw = NULL;
}
else
{
/*
* now display status
*/
showCWStatus(win, data);
/*
if(cwflag)
services_info_screen(win,TxtActivated);
else
services_info_screen(win,TxtDeActivated);
*/
}
if( cwflag )
{
FlashDCTbData.callwaitflag=1;
flash_DCTbwrite();
}
else
{
FlashDCTbData.callwaitflag=0;
flash_DCTbwrite();
}
}
else
{
//showError(win, ss_cnf->cw_cnf.ss_error);
services_info_screen(win,TxtFailed);//WUFEI Modify
}
break;
case E_SS_CLI_CNF:
//TRACE_FUNCTION(" E_SS_CLI_CNF"); //hu hubh marked 11-28
if( ss_cnf->cli_cnf.ss_error == MFW_SS_NO_ERROR )
{
showCLIStatus(win, ss_cnf);
}
else
{
//showError(win, ss_cnf->cli_cnf.ss_error);
services_info_screen(win,TxtFailed);//WUFEI Modify
}
break;
case E_SS_CB_CNF:
switch( ss_cnf->cb_cnf.ss_error )
{
case MFW_SS_NO_ERROR:
/*
* now store the MFW data under the SS window
*/
data->mfw_ss_cb = (T_ss_feature_cb *)ALLOC_MEMORY (sizeof (T_ss_feature_cb));
/*
* copy all interesting feature entries
*/
data->max_feature = srv_copy_feature_list_cb (data->mfw_ss_cb, &ss_cnf->cb_cnf);
data->current_feature = 0;
if( data->max_feature EQ 0 )
{
srv_empty_list_result (ss_cnf->cb_cnf.ss_category);
FREE_MEMORY ((void *)data->mfw_ss_cb, sizeof (T_ss_feature_cb));
data->mfw_ss_cb = NULL;
}
else
{
/*
* now display status
*/
showCBStatus(win, data);
}
break;
default:
//showError(win, ss_cnf->cb_cnf.ss_error);
services_info_screen(win,TxtFailed);//WUFEI Modify
break;
}
break;
case E_SS_IMEI: /* present IMEI */
/* T_MFW_IMEI imei_cnf;*/
//TRACE_FUNCTION(" E_SS_IMEI");
switch( ss_cnf->imei_info.error )
{
case MFW_SS_NO_ERROR:
//TRACE_FUNCTION( "Handling IMEI no error" );
showIMEI2(win, ss_cnf);
break;
default:
//TRACE_FUNCTION("ERROR in IMEI");
//showError(win, ss_cnf->imei_info.error);
services_info_screen(win,TxtFailed);//WUFEI MODIFY
break;
}
break;
/* we must display the ussd info and then edit and send a user ussd */
case E_SS_USSD_REQ:
//TRACE_FUNCTION(" E_SS_USSD_REQ");
switch( ss_cnf->ussd_info.error )
{
case MFW_SS_NO_ERROR:
//TRACE_FUNCTION( "Handling USSD_REQ no error" );
showUSSDREQ(win, ss_cnf );
break;
default:
//TRACE_FUNCTION("ERROR in USSD REQ");
//showError(win, ss_cnf->ussd_info.error);
services_info_screen(win,TxtFailed);//WUFEI Modify
break;
}
break;
/* just display the ussd info */
case E_SS_USSD_CNF:
// TRACE_FUNCTION(" E_SS_USSD_CNF");
switch( ss_cnf->ussd_info.error )
{
case MFW_SS_NO_ERROR:
//TRACE_FUNCTION( "Handling USSD_CNF no error" );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -