/***************************************************************************** FUNCTION NAME : SP_Entry_Make_Call PURPOSE :when the sp service is IVR, question call or don't call. INPUT PARAMETERS : void OUTPUT PARAMETERS : void RETURNS : ******************************************************************************/ void SP_Entry_Make_Call (void) { S8 textbuf[SP_CODE_LENGTH*ENCODING_LENGTH]; SP_SMS_Service_Code_Struct sp_level2_service_code; mmi_trace(g_sw_SP,"niej SP_Entry_Make_Call"); SP_Get_Level2_Service_Code(sp_level1_scr.sp_menu_id, sp_level1_scr.sp_menu_id+sp_level_2_index+1, &sp_level2_service_code); EntryNewScreen(SCR_ID_MSG_CONFIRMATION, Sp_Exit_Make_Call, NULL, NULL); memset(textbuf, 0, SP_CODE_LENGTH*ENCODING_LENGTH); memset(g_msg_cntx.smsPhoneNumber, 0, (MAX_DIGITS+1)*ENCODING_LENGTH); AnsiiToUnicodeString(textbuf, (S8*)sp_level2_service_code.Code_Subscribe); mmi_trace(g_sw_SP, "niej Code_Subscribe[%s]", sp_level2_service_code.Code_Subscribe); pfnUnicodeStrcpy(g_msg_cntx.smsPhoneNumber, textbuf); mmi_trace(1, "g_msg_cntx.smsPhoneNumber[%s]", g_msg_cntx.smsPhoneNumber); ShowCategory154Screen(0, 0, STR_GLOBAL_YES, IMG_SMS_COMMON_NOIMAGE, STR_GLOBAL_NO, IMG_SMS_COMMON_NOIMAGE, (PU8)get_string_lang (STR_GLOBAL_DIAL, SSC_SCHINESE), (PU8)g_msg_cntx.smsPhoneNumber, IMG_GLOBAL_QUESTION, NULL); SetLeftSoftkeyFunction (Sp_Make_Call, KEY_EVENT_UP); SetRightSoftkeyFunction (GoBackHistory, KEY_EVENT_UP); playRequestedTone(WARNING_TONE); }
/***************************************************************************** * FUNCTION * ShowCallManagementErrorMessage * DESCRIPTION * This function shows the failure in case of call management * * This is a part of other hardware application. * PARAMETERS * cause [IN] * TRUE(?) [OUT] Or FALSE * RETURNS * pBOOL(?) *****************************************************************************/ void ShowCallManagementErrorMessage(U16 cause) { /*----------------------------------------------------------------*/ /* Local Variables */ /*----------------------------------------------------------------*/ U16 error_code, img_id = IMG_ERROR_NOTIFY; U16 tone_id = ERROR_TONE_IN_CALL; /*----------------------------------------------------------------*/ /* Code Body */ /*----------------------------------------------------------------*/ MMI_TRACE(MMI_TRACE_G5_CM, MMI_CM_FUNC_ShowCallManagementErrorMessage); if (GetCallEndCause() == 0) { SetCallEndCause(cause); } SetCbackAfterSS(NULL); if (GetNotifySSFlag()) { MMI_TRACE(MMI_TRACE_G5_CM, MMI_CM_INFO_ShowErrorAfterNotifySS); SetCbackAfterSS((FuncPtr) ShowCallManagementErrorMessage); return; } EntryNewScreen(CM_SCR_ERR_MSG, ExitScrCMErrMsg, NULL, NULL); switch (GetCallEndCause()) { case ERR_UNASSIGNED_NUM: tone_id = NUM_UNOBTAIN_TONE; case ERR_INVALID_NUMBER_FORMAT: error_code = ERROR_UNRECOGNIZED_NUMBER; break; case ERR_SWITCH_EQUIPMENT_CONGESTION: tone_id = CONGESTION_TONE; case ERR_CALL_REJECTED: tone_id= AUTH_FAIL_TONE; case ERR_NO_ROUTE_TO_DESTINATION: case ERR_DEST_OUT_OF_ORDER: case ERR_FACILITY_REJECT: case ERR_TEMPORARY_FAILURE: case ERR_SER_UNAVAILABLE: case ERR_BEARER_SER_UNIMPL: case ERR_INVALID_TI_VALUE: case ERR_USER_NOT_IN_CUG: case ERR_INCOMPATIBLE_DEST: case ERR_SEMANTIC_ERR: case ERR_INTER_WRK_UNSPECIFIED: case ERR_CSMCC_ILLEGAL_CALL_ID: case ERR_CSMCC_CALL_ALLOC_FAIL: case ERR_CSMCC_BC_FILL_FAIL: case ERR_CSMCC_ILLEGAL_BC: case ERR_CSMCC_MODIFY_ACTUAL_MODE: case ERR_CSMCC_DATA_ACT_FAIL: case ERR_MAC_FAILURE: case ERR_SYNC_FAILURE: case ERR_CONGESTION: case ERR_ILLEGAL_MS: case ERR_ILLEGAL_ME: case ERR_CM_MM_CM_ENQUEUE_FAIL: case ERR_CM_MM_NOT_UPDATED: case ERR_CM_MM_STATE_NOT_ALLOWED_CM: error_code = ERROR_FAIL; break; case ERR_CHANNEL_UN_ACCP: case ERR_NO_CIRCUIT_CHANNEL_AVAIL: case ERR_NETWORK_OUT_OF_ORDER: case ERR_QOS_UNAVAIL: case ERR_INVALID_TRANSIT_NW_SEL: case ERR_CSMCC_NO_RESPONSE_FROM_NW: case ERR_NETWORK_FAILURE: case ERR_CM_MM_RR_CONN_RELEASE: case ERR_CM_SS_SYSTEMFAILURE: error_code = ERROR_NETWORK_FAIL; break; case ERR_REQUESTED_CKT_CHANEL_NOT_AVIL: case ERR_RESOURCE_UNAVAIL_UNSPECIFIED: case ERR_CM_MM_AUTH_FAILURE: error_code = ERROR_NETWORK_NOT_AVAILABLE; break; case ERR_OPR_DTR_BARRING: case ERR_CALL_BARRED: case ERR_IC_BAR_CUG: case ERR_BEARER_CAP_NOT_AVAIL: case ERR_CM_MM_ACCESS_BARRED: error_code = INCOMING_DEFAULT_ERROR; break; case ERR_USER_BUSY: { /* voice call shows user busy, csd call shows network busy */ if (cm_p->state_info.CallStructureForCallLog.call_type == CM_VOICE_CALL) { error_code = ERROR_USER_BUSY; } else { error_code = ERROR_BUSY_NETWORK; } } break; case ERR_NO_USER_RESPONDING: error_code = ERROR_NOT_RESPONDING; break; case ERR_NO_ANSWER_ON_ALERT: error_code = ERROR_NO_ANSWER; break; case ERR_ACM_EXCEEDED: error_code = ERROR_ACM_EXCEEDED; break; case ERR_REQ_FACILITY_UNAVAIL: case ERR_IE_NOT_IMPLEMENTED: case ERR_CONDITIONAL_MM_IE_ERROR: case ERR_CM_MM_ASSIGNMENT_REJECT: error_code = ERROR_UNAVAILABLE; break; case ERR_CSMCC_ILLEGAL_DTMF_TONE: case ERR_CSMCC_CALL_ACCEPT_NOT_ALLOW: case ERR_MS_ID_NOT_DERIVED_BY_NW: case ERR_IMPLICIT_DETACH: case ERR_MSG_NOT_COMPAT_WITH_PROTO_STATE: case ERR_PROTO_ERROR_UNSPECIFIED: error_code = ERROR_UNEXPECTED_ERROR; break; case ERR_IMSI_UNKNOWN_IN_HLR: case ERR_IMSI_UNKNOWN_IN_VLR: case ERR_CM_MM_IMSI_DETACH: error_code = ERROR_IMSI_UNKNOWN; break; case ERR_IMEI_NOT_ACCEPTED: error_code = ERROR_IMEI_ERROR; break; case ERR_GPRS_NOT_ALLOWED: case ERR_GPRS_NON_GPRS_NOT_ALLOWED: error_code = ERROR_GPRS_NOT_ALLOWED; break; case ERR_CM_MT_DATA_CALL: error_code = ERROR_MT_DATA_CALL; break; case ERR_REQ_FAC_NOT_SUBS: case ERR_PLMN_NOT_ALLOWED: case ERR_LOCATION_AREA_NOT_ALLOWED: case ERR_ROAMING_AREA_NOT_ALLOWED: case ERR_GPRS_NOT_ALLOWED_IN_PLMN: case ERR_NO_SUITABLE_CELLS_IN_LA: case ERR_MSC_TEMP_NOT_REACHABLE: case ERR_CM_MM_ABORT_BY_NW: /* case ERR_CM_MM_STATE_NOT_ALLOWED_CM: */ case ERR_BEARER_CAP_NOT_AUTHORISED: error_code = ERROR_NETWORK_NOT_ALLOWED; break; case ERR_CSMCC_CMD_NOT_ALLOW: case ERR_SERV_OPTION_NOT_SUPPORTED: case ERR_REQ_SERV_OPTION_NOT_SUBSCRIBED: case ERR_SERV_OPTION_TEMP_OUT_OF_ORDER: case ERR_CALL_CANNOT_BE_IDENTIFIED: error_code = ERROR_COMMAND_NOT_SUPPORTED; break; case ERR_NO_PDP_CONTEXT_ACTIVATED: case ERR_SEMANTICALLY_INCORRECT_MSG: case ERR_INVALID_MM_MAND_INFO: error_code = ERROR_DATA_ERROR; break; case ERR_MSG_TYPE_NON_EXISTENT: case ERR_MSG_TYPE_INCOMPAT_WITH_PROTO_STATE: error_code = ERROR_MESSAGE_TYPE_ERROR; break; case ERR_ACCESS_CLASS_BARRED: case ERR_CM_MM_RANDOM_ACCES_FAILURE: error_code = ERROR_ACCESS_FAIL; break; case ERR_CM_MM_CONN_TIMEOUT: error_code = ERROR_TIMER_EXPIRED; break; case ERR_NORMAL_CALL_CLR: case ERR_NORMAL_UNSPECIFIED: error_code = STR_CALL_ENDED; img_id = IMG_CM_STATE_ENDED; break; case ERR_L4C_USSD_ABORT: error_code = ERROR_USSD_ABORTED; break; case ERR_CM_MM_RR_NO_SERVICE: case ERR_CM_MM_NO_SERVICE: case ERR_RESERVED: case ERR_NUMBER_CHANGED: case ERR_PRE_EMPTION: case ERR_NON_SEL_USER_CLEAR: case ERR_RES_STATUS_ENQ: case ERR_ACCESS_INFO_DISCARDED: case ERR_RESTR_DIGITAL_INFO: case ERR_SER_OPT_UNIMPL: case ERR_INVALID_MANDATORY_INF: case ERR_MSG_TYPE_UNIMPL: case ERR_MSG_TYPE_NOT_COMPATIBLE: case ERR_IE_NON_EX: case ERR_COND_IE_ERR: case ERR_INCOMP_MESG_WITH_STATE: case ERR_RECOVERY_ON_TIMER_EXPIRY: case ERR_PROTOCOL_ERR_UNSPECIFIED: case ERR_CSMCC_CALL_RE_EST: case ERR_RETRY_UPON_ENTRY_INTO_NEWCELL_MIN: case ERR_RETRY_UPON_ENTRY_INTO_NEWCELL_MAX: case ERR_CM_MM_CAUSE_NONE: case ERR_L4C_GEN_CAUSE: error_code = INCOMING_DEFAULT_ERROR; break; case ERR_L4C_FDN_FAIL: error_code = ERROR_FDN_FAIL; break; case NO_ACTIVE_CALL: error_code = ERROR_INVALID_COMMAND; break; case ERR_CM_UNKNOWN: error_code = INCOMING_UNKNOWN_ERROR; break; default: error_code = INCOMING_DEFAULT_ERROR; break; } /* End of Switch */ ShowCategory62Screen(error_code, img_id, NULL); TurnOnBacklight(1); SetCallEndCause(0); if (GetTotalActiveCallCount() == 0 && GetTotalHoldCallCount() == 0) { /* only play error tone when not in-call */ playRequestedTone(tone_id); SetErrorToneFlag(tone_id); } if (cm_p->redial_info.RedialTimer == TRUE) { /* cannot press key before pop up disappear, buy more time for call log writing */ DeleteSubLCDScreen(SUB_LCD_SCR1001_CM_OUTGOINGCALLSCREEN); GoBackSubLCDHistory(); if (IsScreenPresent(CM_SCR_MARKER)) { DeleteUptoCmScreen(); } DeleteScreenIfPresent(CM_SCR_MARKER); ClearInputEventHandler(MMI_DEVICE_ALL); SetPOPUpFlag(TRUE); SetKeyHandler(ResetRedialAndGoBack, KEY_END, KEY_EVENT_DOWN); cm_p->redial_info.ErrRedialScreen = TRUE; StartTimer(CM_NOTIFYDURATION_TIMER, CM_NOTIFY_TIMEOUT, ShowRedialScreen); } else { /* cannot press key before pop up disappear, buy more time for call log writing */ ClearInputEventHandler(MMI_DEVICE_ALL); SetKeyHandler((FuncPtr) GoBackfromNotifyScr, KEY_END, KEY_EVENT_DOWN); SetPOPUpFlag(TRUE); StartTimer(CM_NOTIFYDURATION_TIMER, CM_NOTIFY_TIMEOUT, GoBackfromNotifyScr); } }