📄 mmiservices.c
字号:
break;
}
}
/*
* no break
*/
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:
/*
* 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)
{
/* Marcus: Issue 1652: 03/02/2003: Start */
if (ss_cnf->cf_cnf.ss_feature_count)
{
T_MFW_FEATURE *temp = ss_cnf->cf_cnf.ss_feature_list;
srv_empty_list_result (ss_cnf->cf_cnf.ss_category, event, temp->ss_status);
}
else
{
srv_empty_list_result (ss_cnf->cf_cnf.ss_category, event, 0);
}
/* Marcus: Issue 1651: 03/02/2003: End */
FREE_MEMORY ((void *)data->mfw_ss_cf, sizeof (T_ss_feature_cf));
data->mfw_ss_cf = NULL;
}
else
{
/*
* now display status
*/
showCFStatus(win, data);
}
break;
default:
TRACE_FUNCTION("ERROR in CFU,INTERROGATION");
showError(win, ss_cnf->cf_cnf.ss_error);
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)
{
if (ss_cnf->cw_cnf.ss_status NEQ 0xFF AND ss_cnf->cw_cnf.ss_status NEQ 0x00)
srv_display_status (ss_cnf->cw_cnf.ss_status);
else
srv_empty_list_result (ss_cnf->cw_cnf.ss_category, event, ss_cnf->cw_cnf.ss_status); /* Marcus: Issue 1588: 23/01/2003 */
FREE_MEMORY ((void *)data->mfw_ss_cw, sizeof (T_ss_feature_cw));
data->mfw_ss_cw = NULL;
}
else
{
/*
* now display status
*/
showCWStatus(win, data);
}
}
else
{
showError(win, ss_cnf->cw_cnf.ss_error);
}
break;
case E_SS_CLI_CNF:
TRACE_FUNCTION(" E_SS_CLI_CNF");
if (ss_cnf->cli_cnf.ss_error == MFW_SS_NO_ERROR)
{
showCLIStatus(win, ss_cnf);
}
else
{
showError(win, ss_cnf->cli_cnf.ss_error);
}
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, event, 0); /* Marcus: Issue 1588: 23/01/2003 */
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);
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);
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);
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" );
showUSSDCNF(win, ss_cnf );
break;
default:
TRACE_FUNCTION("ERROR in USSD_CNF");
showError(win, ss_cnf->ussd_info.error);
break;
}
break;
case E_SS_GET_PW:
if (ss_cnf->pw_cnf.ss_error == MFW_SS_NO_ERROR)
{
showOk(win);
strncpy((char*)ss_data.edt_buf_cb_password,
(char*)ss_cnf->pw_cnf.ss_new_pwd,CB_PSW_LEN);
}
else
{
showError(win, ss_cnf->pw_cnf.ss_error);
}
break;
default:
return;
}
}
/*******************************************************************************
$Function: srv_check_CF_telephony_status
$Description:
$Returns:
$Arguments:
*******************************************************************************/
static UBYTE srv_check_CF_telephony_status (T_MFW_SS_CF_CNF * in_list)
{
UBYTE i;
for (i=0;i<in_list->ss_feature_count;i++)
{
T_MFW_FEATURE * pFeature = &in_list->ss_feature_list[i];
/*
* first check service type
*/
if (pFeature->ss_telecom_type EQ MFW_BST_TELE)
{
switch (pFeature->ss_telecom_service)
{
case MFW_TS_ALL_TS:
case MFW_TS_ALL_SPCH:
case MFW_TS_TLPHNY:
case MFW_TS_ALL_XCPT_SMS:
if (pFeature->ss_status & SS_STAT_ACTIVE)
return CF_ACTIVE_STATUS;
/* Marcus: Issue 1652: 03/02/2003: Start */
else if (pFeature->ss_status & SS_STAT_PROVISIONED)
return CF_PROVISIONED_STATUS;
/* Marcus: Issue 1651: 03/02/2003: End */
else
return CF_INACTIVE_STATUS;
break;
default:
break;
}
}
//SPR#984 - DS - Added code below for when no service type is specified.
if (pFeature->ss_telecom_type EQ MFW_BST_UNKNOWN) //When no service type is specfied
{
switch (pFeature->ss_telecom_service)
{
case MFW_BS_TS_UNKNOWN:
if (pFeature->ss_status & SS_STAT_ACTIVE)
return CF_ACTIVE_STATUS;
/* Marcus: Issue 1651: 30/01/2003: Start */
else if (pFeature->ss_status & SS_STAT_PROVISIONED)
return CF_PROVISIONED_STATUS;
/* Marcus: Issue 1651: 30/01/2003: End */
else
return CF_INACTIVE_STATUS;
break;
default:
break;
}
}
}
return CF_UNKNOWN_STATUS;
}
/*******************************************************************************
$Function: srv_check_CF_telephony_status
$Description: copies only the interesting parts of the call forwarding
feature list.
$Returns:
$Arguments:
*******************************************************************************/
static UBYTE srv_copy_feature_list_cf (T_ss_feature_cf * out_list, T_MFW_SS_CF_CNF * in_list)
{
UBYTE found_entries = 0;
UBYTE i;
char temp[50];
{
sprintf(temp,"ss_feature_count %d",in_list->ss_feature_count);
TRACE_FUNCTION(temp);
}
for (i=0;i<in_list->ss_feature_count;i++)
{ //MC got rid of pointer arithmetic
T_MFW_FEATURE * pFeature = &in_list->ss_feature_list[i]; //SPR#1081 - DS - Removed mem allocation. Uses assignment instead.
T_ss_feature_cf_data * cf_data = &out_list->ss[found_entries];
sprintf(temp,"Telecom type:%d, service: %d ",pFeature->ss_telecom_type, pFeature->ss_telecom_service);
TRACE_FUNCTION(temp);
/*
* first check teleservice
*/
if (srv_get_service_type (&cf_data->service, pFeature->ss_telecom_type/*CFService*/,
pFeature->ss_telecom_service))
{
/*
* second set status
*/
srv_get_status (&cf_data->status, pFeature->ss_status);
if ((ss_cnf->cf_cnf.ss_code==SS_CF_CFU)||(ss_cnf->cf_cnf.ss_code==SS_CF_ALL)){
if (pFeature->ss_status & SS_STAT_ACTIVE)
iconsSetState(iconIdCallFor);
/* Marcus: Issue 1652: 03/02/2003: Start */
else if (pFeature->ss_status & SS_STAT_PROVISIONED)
iconsSetState(iconIdCallFor);
/* Marcus: Issue 1652: 03/02/2003: End */
else
iconsDeleteState(iconIdCallFor);
}
/*
* third set forwarded to number
*/
srv_get_forwarded_to_number ((CHAR *)cf_data->forwarded_to_number,
(CHAR *)pFeature->ss_forwarded_to_number);
{
char temp[80];
sprintf(temp,"ss_forwarded_to_number %s",
(CHAR *)pFeature->ss_forwarded_to_number);
TRACE_FUNCTION(temp);
}
found_entries++;
}
}
/*
* return the number of interesting entries
*/
return found_entries;
}
/*******************************************************************************
$Function: srv_get_forwarded_to_number
$Description: sets the forwarded to number if available.
$Returns:
$Arguments:
*******************************************************************************/
static void srv_get_forwarded_to_number ( char * textString,
char * forwarded_to_number)
{
TRACE_FUNCTION("srv_get_forwarded_to_number");
memset (textString, 0, 16);
strncpy (textString, forwarded_to_number, 15);
}
/*******************************************************************************
$Function: srv_get_service_type
$Description: checks if the service is interesting or not.
$Returns:
$Arguments:
$History:
//SPR#0776 - DS - Added default value for textId. Changed references from TxtNotImplemented
to TxtNull.
*******************************************************************************/
static UBYTE srv_get_service_type ( USHORT * textId,
UBYTE ss_telecom_type, UBYTE ss_telecom_service)
{
TRACE_FUNCTION("srv_get_service_type");
TRACE_EVENT_P1("ss_telecom_type: %x", ss_telecom_type);
TRACE_EVENT_P1("ss_telecom_service: %x", ss_telecom_service);
*textId = TxtNull; //Set to TxtNull in case no match found below.
switch ( ss_telecom_type )
{
case MFW_BST_UNKNOWN:
break;
case MFW_BST_TELE:
switch ( ss_telecom_service )
{
case MFW_TS_ALL_TS:
*textId = TxtAllCalls;
return TRUE;
case MFW_TS_ALL_SPCH: /* All speech transmission services */
case MFW_TS_TLPHNY: /* telephony */
case MFW_TS_PLMN1: /*MC, this is returned for auxiliary telephony status, 742*/
*textId = TxtVoice;
return TRUE;
case MFW_TS_ALL_XCPT_SMS:
*textId = TxtNull;
return TRUE;
case MFW_TS_ALL_DATA:
*textId = TxtData;
return TRUE;
case MFW_TS_ALL_FAX:
*textId = TxtFax;
return TRUE;
}
break;
case MFW_BST_BEARER:
switch ( ss_telecom_service )
{
case MFW_BS_ALL_BS:
*textId = TxtData; //SPR#933 - DS - Changed TxtNull to TxtData.
return TRUE;
case MFW_BS_ALL_DATA_CDA: //SPR#933 - DS - Added so MMI displays correct info to user.
*textId = TxtData;
return TRUE;
default:
break;
}
break;
}
return FALSE;
}
/*******************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -