www.pudn.com > mmi.rar > ATHandler.c
/*****************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2005
*
* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
/*******************************************************************************
* Modification Notice:
* --------------------------
* This software is modified by MediaTek Inc. and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2001
*
*******************************************************************************/
/*******************************************************************************
* Filename:
* ---------
* ATHandler.c
*
* Project:
* --------
* Maui_Software
*
* Description:
* ------------
* .......
*
* Author:
* -------
* -------
*
*------------------------------------------------------------------------------
* $Log$
*
* removed!
* removed!
* Add check for MMI_PS_AT_LANG_EN.
*
* removed!
* removed!
*
*
* removed!
* removed!
* Fix compile warning.
*
* removed!
* removed!
* Add LCM Test support.
*
* removed!
* removed!
* Set Greeting text modification.
*
* removed!
* removed!
* Modify Index parameter of AtSetProfileTone.
*
* removed!
* removed!
* Add check length: 0xFF = only modify mode for setting greeting text.
*
* removed!
* removed!
* Add AT general response for set_silent mode.
*
* removed!
* removed!
*
*
* removed!
* removed!
*
*
* removed!
* removed!
*
*
* removed!
* removed!
*
*
* removed!
* removed!
*
*
* removed!
* removed!
*
*
* removed!
* removed!
*
*
* removed!
* removed!
*
*
* removed!
* removed!
*
*
* removed!
* removed!
*
*
* removed!
* removed!
*
*
*******************************************************************************/
/**
* Copyright Notice
* ?2002 - 2003, Pixtel Communications, Inc., 1489 43rd Ave. W.,
* Vancouver, B.C. V6M 4K8 Canada. All Rights Reserved.
* (It is illegal to remove this copyright notice from this software or any
* portion of it)
*/
/**********************************************************************************
Filename: ATHandler.c
Author: Gautam
Date Created:
Contains: AT comamnd handler
**********************************************************************************/
#include "Stdc.h"
#include "L4Dr1.h"
#include "GlobalMenuItems.h"
#include "PixtelDataTypes.h"
#include "KeyBrd.h"
#include "ProtocolEvents.h"
#include "ATHandlerProt.h"
// #include "ATHandlerDcl.h"
#include "DateTimeType.h"
#include "AlarmGProt.h"
#include "AlarmFrameWorkProt.h"
#include "CallManagementGProt.h"
#include "CallManagementStruct.h"
#include "gpioInc.h"
#include "GlobalDefs.h"
#include "IdleAppDef.h"
#include "IdleAppProt.h" /* IsTrChineseSet(), IsSmChinsesSet() */
#include "mdi_datatype.h"
#include "mdi_audio.h"
#include "MMIThemes.h"
#include "NVRAMEnum.h"
#include "NVRAMProt.h"
#include "NVRAMType.h"
#include "PhoneSetupGprots.h" /* PhnsetGetTimeFormat(), PhnsetGetDateFormat() */
#include "ProfilesDefs.h"
#include "ProfileGprots.h"
#include "Profiles_prot.h"
#include "SettingDefs.h" /* MAX_SETTING_WELCOME_TEXT */
#include "SettingGprots.h"
#include "SettingProt.h"
#include "SimDetectionGexdcl.h"
#include "SettingsGdcl.h"
#include "WPSSProtos.h"
#include "ShortcutsProts.h"
#include "SSCStringHandle.h" /* SSC_ENGLISH, ... defination */
#include "wgui_status_icons.h"
#include "wgui_categories_inputs.h"
#include "DownloadDefs.h"
#include "WallpaperDefs.h"
#include "PhoneSetup.h"
#include "FontRes.h"
#ifdef MMI_ON_HARDWARE_P
#include "L4Dr.h"
#endif
#ifndef YEARFORMATE
#define YEARFORMATE 2000
#endif
BOOL SetFromAT = FALSE;
extern U8 gprofileId;
extern U8 gactivatedprofile;
extern U16 gCurrLangIndex;
extern U16 gMaxDeployedLangs;
extern sLanguageDetails *gLanguageArray;
extern rtc_format_struct gclockData;
extern S8 gHour[];
extern S8 gMinute[];
extern S8 gDate[];
extern S8 gMonth[];
extern S8 gYear[];
extern U8 gPLMN[];
extern sLanguageDetails *gLanguageArray;
extern U16 gCurrLangIndex;
extern BOOL AtSetProfileTone(U8 profileID, PROFILE_TONE_TYPE_ENUM tone_type, U8 tone_idx);
extern void RefreshNwProviderName(U8 *UpdatePlmn);
extern void MutethePhone(void);
extern void UnMutethePhone(void);
void ATRstFactoryDefault(void *ind);
void ATRstConfirm(void);
void ATVerifyPINRsp(void *info);
void ATLCMRGBTestHandler(void *ind);
/*****************************************************************************
* FUNCTION
* ATHandlerInit
* DESCRIPTION
* Set Volume : in the existing profile???
* Set Mute Mode
* Set Silent Mode
* Set Vibartion Mode
* Simulate Key Input
* Display Text On Main LCD : in what ever screen or the scren that ermits the same
* Display Status Icon : Irrespective of the condition?
* Set Alarm :Organise
* Delete Alarm ... would he give the ID ???:Organizer
* Set Date and Time :Settings phonesetup
* Set Date and Time Format .Settings
* Set language : Settings
* Set Greeting Text :Settings
* Make Outgoing Call
* Answer Incoming Call
* Hang up outgoig call during dialling
* Sync Call Table
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void ATHandlerInit(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
SetProtocolEventHandler(ATSetVolume, PRT_MSG_ID_MMI_EQ_VOLUME_CHANGE_IND);
SetProtocolEventHandler(ATSimulateKeyBoard, PRT_MSG_ID_MMI_EQ_SIMULATE_KEY_PRESS_REQ_IND);
SetProtocolEventHandler(ATTextOnLCD, PRT_MSG_ID_MMI_EQ_DISPLAY_TEXT_REQ_IND);
SetProtocolEventHandler(AtShowStatusIcon, PRT_MSG_ID_MMI_EQ_SET_INDICATOR_REQ_IND);
SetProtocolEventHandler(ATSetRTC, PRT_MSG_ID_MMI_EQ_SET_RTC_TIME_REQ_IND);
SetProtocolEventHandler(ATSetAlarm, MSG_ID_MMI_AT_ALARM_SET_REQ_IND);
SetProtocolEventHandler(ATQueryAlarm, MSG_ID_MMI_AT_ALARM_QUERY_REQ_IND);
SetProtocolEventHandler(ATCancelAlarm, MSG_ID_MMI_AT_ALARM_DELETE_REQ_IND);
SetProtocolEventHandler(ATMakeOutgoingCall, PRT_MSG_ID_MMI_CC_DIAL_REQ_IND);
SetProtocolEventHandler(ATAnswerIncomingCall, PRT_MSG_ID_MMI_CC_CALL_ACCEPT_REQ_IND);
SetProtocolEventHandler(ATHangupCall, PRT_MSG_ID_MMI_CC_CALL_ABORT_REQ_IND);
SetProtocolEventHandler(ATSetProfileHandler, PRT_MMI_SET_MMI_DEFAULT_PROF_IND);
SetProtocolEventHandler(ATSyncCallTable, PRT_MSG_ID_MMI_CC_SYNC_TABLE_REQ_IND);
SetProtocolEventHandler(AtSetGreetingTextHdlr, PRT_MMI_EQ_SET_GREETING_TEXT_REQ_IND);
SetProtocolEventHandler(ATSetLanguage, PRT_MMI_EQ_SET_LANGUAGE_REQ_IND);
SetProtocolEventHandler(ATSetSilentMode, PRT_MMI_EQ_SET_SILENT_MODE_REQ_IND);
SetProtocolEventHandler(ATSetVibrationMode, PRT_MMI_EQ_SET_VIBRATOR_MODE_REQ_IND);
SetProtocolEventHandler(ATSetDateandTimeFormat, PRT_MMI_EQ_SET_DATE_TIME_FORMAT_REQ_IND);
SetProtocolEventHandler(ATSetMute, PRT_MMI_EQ_MUTE_CHANGE_IND);
SetProtocolEventHandler(AtQueryGreetingTextIndHdlr, PRT_MMI_EQ_QUERY_GREETING_TEXT_REQ_IND);
SetProtocolEventHandler(AtQueryLangIndHdlr, PRT_MMI_EQ_QUERY_LANGUAGE_REQ_IND);
SetProtocolEventHandler(AtQuerySilentModeIndHdlr, PRT_MMI_EQ_QUERY_SILENT_MODE_REQ_IND);
SetProtocolEventHandler(AtQueryVibratorModeIndHdlr, PRT_MMI_EQ_QUERY_VIBRATOR_MODE_REQ_IND);
SetProtocolEventHandler(AtQueryDTFmtIndHdlr, PRT_MMI_EQ_QUERY_DATE_TIME_FORMAT_REQ_IND);
SetProtocolEventHandler(AtQueryMuteModeIndHdlr, PRT_MMI_EQ_QUERY_MUTE_MODE_REQ_IND);
SetProtocolEventHandler(ATPowerReset, MSG_ID_MMI_POWER_RESET_IND);
SetProtocolEventHandler(ATRstFactoryDefault, PRT_MMI_FACTORY_RESTORE_REQ_IND);
SetProtocolEventHandler(ATLCMRGBTestHandler, MSG_ID_MMI_EM_RGB_TEST_REQ_IND);
}
/*********************/
/* Send Message Func */
/*********************/
/*****************************************************************************
* FUNCTION
* SendMsg2AT
* DESCRIPTION
* Send message to AT
* PARAMETERS
* msg_id [IN] Message id
* local_param_ptr [?] Local parameter pointer
* peer_buf_ptr [?] Peer buffer pointer
* RETURNS
* void
*****************************************************************************/
void SendMsg2AT(U16 msg_id, void *local_param_ptr, void *peer_buf_ptr)
{
#ifdef MMI_ON_HARDWARE_P
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MYQUEUE Message;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
Message.oslMsgId = msg_id;
Message.oslDataPtr = (oslParaType*) local_param_ptr;
Message.oslPeerBuffPtr = peer_buf_ptr;
Message.oslSrcId = MOD_MMI;
Message.oslDestId = MOD_L4C;
OslMsgSendExtQueue(&Message);
#endif /* MMI_ON_HARDWARE_P */
}
/******************/
/* Greeting Text */
/******************/
/*****************************************************************************
* FUNCTION
* AtSetGreetingTextHdlr
* DESCRIPTION
* Set greeting text from AT command
* PARAMETERS
* msg [?] Greeting text to be set
* RETURNS
* void
*****************************************************************************/
void AtSetGreetingTextHdlr(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_at_general_res_req_struct *rsp_msg;
mmi_eq_set_greeting_text_req_ind_struct *msgReq;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
msgReq = (mmi_eq_set_greeting_text_req_ind_struct*) msg;
rsp_msg = (mmi_at_general_res_req_struct*) OslConstructDataPtr(sizeof(mmi_at_general_res_req_struct));
if ( (msgReq->length < (MAX_SETTING_WELCOME_TEXT * ENCODING_LENGTH)) || (msgReq->length == 0xFF))
{
rsp_msg->result = PhnsetSetWelcomeText((MMI_BOOL) msgReq->mode, (U8) msgReq->dcs, (U8*) msgReq->text, (U8)msgReq->length);
}
SendMsg2AT(MSG_ID_MMI_AT_GENERAL_RES_REQ, (void*)rsp_msg, NULL);
}
/***************/
/* Language */
/***************/
/*****************************************************************************
* FUNCTION
* AtQueryGreetingTextIndHdlr
* DESCRIPTION
* Query Greeting Text from AT command
* PARAMETERS
* msg [?] No action
* RETURNS
* void
*****************************************************************************/
void AtQueryGreetingTextIndHdlr(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_eq_query_greeting_text_res_req_struct *rsp_msg;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
rsp_msg = (mmi_eq_query_greeting_text_res_req_struct*)
OslConstructDataPtr(sizeof(mmi_eq_query_greeting_text_res_req_struct));
rsp_msg->mode = IsShowWelcomeScr1();
rsp_msg->dcs = L4_UCS2;
PhnsetGetWelcomeText((S8*) rsp_msg->text, sizeof(rsp_msg->text));
rsp_msg->length = (U8) pfnUnicodeStrlen((S8*) rsp_msg->text);
SendMsg2AT(PRT_MMI_EQ_QUERY_GREETING_TEXT_RES_REQ, (void*)rsp_msg, NULL);
}
/*****************************************************************************
* FUNCTION
* ATSetLanguage
* DESCRIPTION
* Set Language from AT command
* PARAMETERS
* msg [?] Set language request
* RETURNS
* void
*****************************************************************************/
void ATSetLanguage(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/* to see the value of language code */
U8 data = 0;
S16 error;
S8 *ssc_sp;
mmi_eq_set_language_req_ind_struct *msgInd;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
msgInd = (mmi_eq_set_language_req_ind_struct*) msg;
switch (msgInd->lang_code)
{
case MMI_PS_AT_LANG_TW:
ssc_sp = SSC_TCHINESE; /* data = 1; */
break;
case MMI_PS_AT_LANG_ZH:
ssc_sp = SSC_SCHINESE; /* data = 2; */
break;
case MMI_PS_AT_LANG_DEFAULT:
case MMI_PS_AT_LANG_EN:
default:
ssc_sp = SSC_ENGLISH; /* data = 0; */
break;
}
for (data = 0; data < gMaxDeployedLangs; data++)
{
if (strcmp((PS8) gLanguageArray[data].aLangSSC, ssc_sp) == 0)
{
break;
}
}
/* Language not support (out of boundary) */
if (data >= gMaxDeployedLangs)
{
SendLangChange2AT(0xFF);
return;
}
if (data != gCurrLangIndex)
{
SetCurrentLanguage(data);
WriteValue(NVRAM_SETTING_LANG, &data, DS_BYTE, &error);
RefreshNwProviderName(gPLMN);
if (g_idle_context.IsOnIdleScreen)
{
EntryIdleScreen();
}
}
SendLangChange2AT(data);
}
/*****************************************************************************
* FUNCTION
* AtQueryLangIndHdlr
* DESCRIPTION
* Query language setting from AT command
* PARAMETERS
* msg [?] No action
* RETURNS
* void
*****************************************************************************/
void AtQueryLangIndHdlr(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U8 lang_type = MMI_PS_AT_LANG_DEFAULT;
mmi_eq_query_language_res_req_struct *res_msg;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
res_msg =
(mmi_eq_query_language_res_req_struct*) OslConstructDataPtr(sizeof(mmi_eq_query_language_res_req_struct));
if (IsTrChineseSet())
{
lang_type = MMI_PS_AT_LANG_TW;
}
else if (IsSmChineseSet())
{
lang_type = MMI_PS_AT_LANG_ZH;
}
else if (strcmp((PS8) gLanguageArray[gCurrLangIndex].aLangSSC, SSC_ENGLISH) == 0)
{
lang_type = MMI_PS_AT_LANG_EN;
}
else
{
lang_type = MMI_PS_AT_LANG_UNKWN;
}
res_msg->lang_code = lang_type;
SendMsg2AT(PRT_MMI_EQ_QUERY_LANGUAGE_RES_REQ, (void*)res_msg, NULL);
}
/*****************************************************************************
* FUNCTION
* SendLangChange2AT
* DESCRIPTION
* Send to AT command when language change, for AT+CLAE
* PARAMETERS
* code [IN] Language to be set
* RETURNS
* void
*****************************************************************************/
void SendLangChange2AT(U8 code)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_eq_set_language_req_struct *msgReq;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
msgReq = (mmi_eq_set_language_req_struct*) OslConstructDataPtr(sizeof(mmi_eq_set_language_req_struct));
/*
* switch (code)
* {
* case 0: msgReq->lang_code = MMI_PS_AT_LANG_EN; break;
* case 1: msgReq->lang_code = MMI_PS_AT_LANG_TW; break;
* case 2: msgReq->lang_code = MMI_PS_AT_LANG_ZH; break;
* default: msgReq->lang_code = MMI_PS_AT_LANG_EN; break;
* }
*/
if (code > gMaxDeployedLangs)
{
msgReq->lang_code = MMI_PS_AT_LANG_UNKWN;
}
else
{
if (strcmp((PS8) gLanguageArray[code].aLangSSC, SSC_ENGLISH) == 0)
{
msgReq->lang_code = MMI_PS_AT_LANG_EN;
}
else if (strcmp((PS8) gLanguageArray[code].aLangSSC, SSC_TCHINESE) == 0)
{
msgReq->lang_code = MMI_PS_AT_LANG_TW;
}
else if (strcmp((PS8) gLanguageArray[code].aLangSSC, SSC_SCHINESE) == 0)
{
msgReq->lang_code = MMI_PS_AT_LANG_ZH;
}
else
{
msgReq->lang_code = MMI_PS_AT_LANG_UNKWN;
}
}
SendMsg2AT(PRT_MMI_EQ_SET_LANGUAGE_REQ, (void*)msgReq, NULL);
}
/***************/
/* Silent mode */
/***************/
/*****************************************************************************
* FUNCTION
* ATSetSilentMode
* DESCRIPTION
* Set Silent Mode from AT command
* PARAMETERS
* msg [?] Set silent mode on/off request message
* RETURNS
* void
*****************************************************************************/
void ATSetSilentMode(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_eq_set_silent_mode_req_struct *msgReq;
mmi_at_general_res_req_struct *rsp_msg;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
msgReq = (mmi_eq_set_silent_mode_req_struct*) msg;
rsp_msg = (mmi_at_general_res_req_struct*) OslConstructDataPtr(sizeof(mmi_at_general_res_req_struct));
SetFromAT = TRUE;
if (msgReq->mode)
{
ClearKeyEvents();
ActivateSilentProfile();
if (IsSilentModeActivated())
{
/* set silent mode successfully */
rsp_msg->result = TRUE;
}
else
{
/* set silent mode failed */
rsp_msg->result = FALSE;
}
}
else
{
ClearKeyEvents();
DeactivateSilentProfile();
if (IsSilentModeActivated())
{
/* deactivate silent mode failed */
rsp_msg->result = FALSE;
}
else
{
/* deactivate silent mode successfully */
rsp_msg->result = TRUE;
}
}
SendMsg2AT(MSG_ID_MMI_AT_GENERAL_RES_REQ, (void*)rsp_msg, NULL);
SetFromAT = FALSE;
}
/*****************************************************************************
* FUNCTION
* AtQuerySilentModeIndHdlr
* DESCRIPTION
* Query silent mode setting from AT command
* PARAMETERS
* msg [?] No action
* RETURNS
* void
*****************************************************************************/
void AtQuerySilentModeIndHdlr(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_eq_query_silent_mode_res_req_struct *res_msg;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
res_msg =
(mmi_eq_query_silent_mode_res_req_struct*)
OslConstructDataPtr(sizeof(mmi_eq_query_silent_mode_res_req_struct));
if (gactivatedprofile == 5) /* 5: Silent Profile */
{
res_msg->mode = MMI_TRUE;
}
else
{
res_msg->mode = MMI_FALSE;
}
SendMsg2AT(PRT_MMI_EQ_QUERY_SILENT_MODE_RES_REQ, (void*)res_msg, NULL);
}
/******************/
/* Vibration Mode */
/******************/
/*****************************************************************************
* FUNCTION
* ATSetVibrationMode
* DESCRIPTION
* AT Command set Vibrator Mode
* PARAMETERS
* msg [?] Set vibration mode on/off request
* RETURNS
* void
*****************************************************************************/
void ATSetVibrationMode(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U8 tmpValue = gprofileId;
mmi_eq_set_vibrator_mode_req_ind_struct *msgInd;
MMI_ALERT_TYPE alertType;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
msgInd = (mmi_eq_set_vibrator_mode_req_ind_struct*) msg;
SetFromAT = TRUE;
gprofileId = gactivatedprofile;
alertType = GetMtCallAlertTypeEnum();
if (msgInd->mode == 1)
{
if ((alertType == MMI_ALERT_NONE) || (alertType == MMI_SILENT))
{
SetMtCallAlertTypeEnum(MMI_VIBRATION_ONLY);
}
else if (alertType == MMI_RING)
{
SetMtCallAlertTypeEnum(MMI_VIBRATION_AND_RING);
}
}
else if (msgInd->mode == 0)
{
if ((alertType == MMI_VIBRATION_AND_RING) || (alertType == MMI_VIBRATION_THEN_RING))
{
SetMtCallAlertTypeEnum(MMI_RING);
}
else if (alertType == MMI_VIBRATION_ONLY)
{
SetMtCallAlertTypeEnum(MMI_SILENT);
}
}
gprofileId = tmpValue;
SetFromAT = FALSE;
if (GetActiveScreenId() == SCR_PROFILES_CUSTOMIZE)
{
ExitScrProfilesCustomize();
GoBackHistory();
}
}
/*****************************************************************************
* FUNCTION
* AtQueryVibratorModeIndHdlr
* DESCRIPTION
* Query vibrator mode setting from AT command
* PARAMETERS
* msg [?] No action
* RETURNS
* void
*****************************************************************************/
void AtQueryVibratorModeIndHdlr(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MMI_ALERT_TYPE alert_type;
mmi_eq_query_vibrator_mode_res_req_struct *res_msg;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
res_msg = (mmi_eq_query_vibrator_mode_res_req_struct*)
OslConstructDataPtr(sizeof(mmi_eq_query_vibrator_mode_res_req_struct));
alert_type = GetMtCallAlertTypeEnum();
if (alert_type == MMI_VIBRATION_ONLY ||
alert_type == MMI_VIBRATION_AND_RING || alert_type == MMI_VIBRATION_THEN_RING)
{
res_msg->mode = MMI_TRUE;
}
else
{
res_msg->mode = MMI_FALSE;
}
SendMsg2AT(PRT_MMI_EQ_QUERY_VIBRATOR_MODE_RES_REQ, (void*)res_msg, NULL);
}
/********************/
/* Date/Time Format */
/********************/
/*****************************************************************************
* FUNCTION
* ATSetDateandTimeFormat
* DESCRIPTION
* AT Command set Date Time Format
* PARAMETERS
* msg [?] Set date time format request message, specifying time/date
* RETURNS
* void
*****************************************************************************/
void ATSetDateandTimeFormat(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U8 date_time_fmt = 0;
mmi_eq_set_date_time_format_req_ind_struct *msgReq;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
msgReq = (mmi_eq_set_date_time_format_req_ind_struct*) msg;
SetFromAT = TRUE;
if (msgReq->is_date_set)
{
switch (msgReq->mode)
{
case DATE_DD_MMM_YYYY:
date_time_fmt = 0;
break;
case DATE_DD_MM_YYYY_S:
date_time_fmt = 1;
break;
case DATE_MM_DD_YYYY_S:
date_time_fmt = 2;
break;
case DATE_YYYY_MM_DD_S:
date_time_fmt = 3;
break;
case DATE_YYYY_MM_DD_H:
date_time_fmt = 4;
break;
case DATE_MMM_DD_YYYY:
date_time_fmt = 5;
break;
default:
break; /* we do not have suport for this format */
}
PhnsetSetDateFormat(date_time_fmt);
}
else
{
switch (msgReq->mode)
{
case TIME_HH_MM_24:
date_time_fmt = 1;
break;
case TIME_HH_MM_12:
date_time_fmt = 0;
break;
default:
break; /* formt not support */
}
PhnsetSetTimeFormat(date_time_fmt);
}
SetFromAT = FALSE;
if (g_idle_context.IsOnIdleScreen)
{
EntryIdleScreen();
}
}
/*****************************************************************************
* FUNCTION
* AtQueryDTFmtIndHdlr
* DESCRIPTION
* Query date time format setting from AT command
* PARAMETERS
* msg [?] Query type (time/date)
* RETURNS
* void
*****************************************************************************/
void AtQueryDTFmtIndHdlr(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U8 date_time_fmt;
mmi_eq_query_date_time_format_req_ind_struct *in_msg = (mmi_eq_query_date_time_format_req_ind_struct*) msg;
mmi_eq_query_date_time_format_res_req_struct *res_msg;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
res_msg = (mmi_eq_query_date_time_format_res_req_struct*)
OslConstructDataPtr(sizeof(mmi_eq_query_date_time_format_res_req_struct));
if (in_msg->is_date == MMI_TRUE)
{ /* Query date format */
res_msg->is_date = MMI_TRUE;
date_time_fmt = PhnsetGetDateFormat();
switch (date_time_fmt)
{
case 0:
res_msg->mode = DATE_DD_MMM_YYYY;
break;
case 1:
res_msg->mode = DATE_DD_MM_YYYY_S;
break;
case 2:
res_msg->mode = DATE_MM_DD_YYYY_S;
break;
case 3:
res_msg->mode = DATE_YYYY_MM_DD_S;
break;
case 4:
res_msg->mode = DATE_YYYY_MM_DD_H;
break;
case 5:
res_msg->mode = DATE_MMM_DD_YYYY;
break;
default:
res_msg->mode = 0;
break;
}
}
else
{ /* Query time format */
res_msg->is_date = MMI_FALSE;
date_time_fmt = PhnsetGetTimeFormat();
switch (date_time_fmt)
{
case 0:
res_msg->mode = TIME_HH_MM_12;
break;
case 1:
res_msg->mode = TIME_HH_MM_24;
break;
default:
res_msg->mode = TIME_HH_MM_12;
break;
}
}
SendMsg2AT(PRT_MMI_EQ_QUERY_DATE_TIME_FORMAT_RES_REQ, (void*)res_msg, NULL);
}
/*******************/
/* Mute mode */
/*******************/
/*****************************************************************************
* FUNCTION
* ATSetMute
* DESCRIPTION
* AT Command set Mute
* PARAMETERS
* msg [?] Set mute on/off request
* RETURNS
* void
*****************************************************************************/
void ATSetMute(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_eq_set_mute_req_struct *msgReq;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
msgReq = (mmi_eq_set_mute_req_struct*) msg;
if (!isInCall())
{
return;
}
SetFromAT = TRUE;
switch (msgReq->audio_device)
{
case MDI_DEVICE_MICROPHONE:
if ((msgReq->mute_onoff == MMI_TRUE) && !IsPhoneInMute())
{
MutethePhone();
}
else if ((msgReq->mute_onoff == MMI_FALSE) && IsPhoneInMute())
{
UnMutethePhone();
}
break;
case MDI_DEVICE_SPEAKER:
if (msgReq->mute_onoff == MMI_TRUE)
{
MuteOnSpeaker();
}
else
{
MuteOnSpeaker();
}
break;
default:
break;
}
SetFromAT = FALSE;
}
/*****************************************************************************
* FUNCTION
* AtQueryMuteModeIndHdlr
* DESCRIPTION
* Query mute mode setting from AT command
* PARAMETERS
* msg [?] No action
* RETURNS
* void
*****************************************************************************/
void AtQueryMuteModeIndHdlr(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_eq_query_mute_mode_res_req_struct *res_msg;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
res_msg = (mmi_eq_query_mute_mode_res_req_struct*)
OslConstructDataPtr(sizeof(mmi_eq_query_mute_mode_res_req_struct));
if (IsPhoneInMute())
{
res_msg->mode = MMI_TRUE;
}
else
{
res_msg->mode = MMI_FALSE;
}
SendMsg2AT(PRT_MMI_EQ_QUERY_MUTE_MODE_RES_REQ, (void*)res_msg, NULL);
}
/*********/
/* Volume */
/*********/
/*****************************************************************************
* FUNCTION
* ATSetVolume
* DESCRIPTION
* AT command set volume
* PARAMETERS
* msg [?] Volume type/level setting request
* RETURNS
* void
*****************************************************************************/
void ATSetVolume(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U32 tmpValue;
mmi_eq_set_volume_req_struct *msgReq;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
msgReq = (mmi_eq_set_volume_req_struct*) msg;
SetFromAT = TRUE;
tmpValue = gprofileId;
gprofileId = gactivatedprofile;
switch (msgReq->volume_type)
{
case MDI_VOLUME_MEDIA:
if (msgReq->volume_level < MDI_MAX_VOLUME_LEVEL)
/* MTK Brian added for setting activated ring tone volume, 2003/12/02 */
{
SetActivatedRingVolumeLevel(msgReq->volume_level);
}
break;
case MDI_VOLUME_KEY:
if (msgReq->volume_level < MDI_MAX_VOLUME_LEVEL)
/* MTK Brian added for setting activated keypad volume, 2003/12/02 */
{
SetActivatedKeypadVolumeLevel(msgReq->volume_level);
}
break;
case MDI_VOLUME_SPH:
if (msgReq->volume_level < MDI_MAX_VOLUME_LEVEL)
{
SaveSpeechVolume(msgReq->volume_level);
}
break;
default:
break;
}
gprofileId = (U8) tmpValue;
SetFromAT = FALSE;
}
/**********/
/* Keybord */
/**********/
/*****************************************************************************
* FUNCTION
* ATSimulateKeyBoard
* DESCRIPTION
* AT command simulate key board event
* PARAMETERS
* msg [?] Keypad status/key code message
* RETURNS
* void
*****************************************************************************/
void ATSimulateKeyBoard(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_eq_simulate_key_press_req_ind_struct *msgReq;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
msgReq = (mmi_eq_simulate_key_press_req_ind_struct*) msg;
SetFromAT = TRUE;
ProcessKeyEvent(msgReq->keypad_status, msgReq->keycode);
/* can not be tested on windiows as status value reuired is 513 ,.. 8 bits ?? */
SetFromAT = FALSE;
}
/*************/
/* Status Icon */
/*************/
/*****************************************************************************
* FUNCTION
* AtShowStatusIcon
* DESCRIPTION
* AT command set to show status icon
* PARAMETERS
* msg [?] Status icon id to be shown
* RETURNS
* void
*****************************************************************************/
void AtShowStatusIcon(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_eq_set_indicator_req_ind_struct *msgReq;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
msgReq = (mmi_eq_set_indicator_req_ind_struct*) msg;
SetFromAT = TRUE;
if (msgReq->icon_id < MAX_STATUS_ICONS)
{
ShowStatusIcon(msgReq->icon_id);
UpdateStatusIcons();
}
SetFromAT = FALSE;
}
/*******/
/* RTC */
/*******/
/*****************************************************************************
* FUNCTION
* ATSetRTC
* DESCRIPTION
* AT command set RTC
* PARAMETERS
* msg [?] RTC
* RETURNS
* void
*****************************************************************************/
void ATSetRTC(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MYTIME alarmDateTime;
mmi_eq_set_rtc_time_req_ind_struct *msgReq;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
msgReq = (mmi_eq_set_rtc_time_req_ind_struct*) msg;
SetFromAT = TRUE;
if (msgReq->rtc_type == RTC_TIME_CLOCK_IND)
{
mmi_at_general_res_req_struct *rsp_msg;
rsp_msg = (mmi_at_general_res_req_struct*) OslConstructDataPtr(sizeof(mmi_at_general_res_req_struct));
alarmDateTime.nSec = msgReq->alarm.data_time.rtc_sec;
alarmDateTime.nMin = msgReq->alarm.data_time.rtc_min;
alarmDateTime.nHour = msgReq->alarm.data_time.rtc_hour;
alarmDateTime.nDay = msgReq->alarm.data_time.rtc_day;
alarmDateTime.nMonth = msgReq->alarm.data_time.rtc_mon;
alarmDateTime.nYear = msgReq->alarm.data_time.rtc_year + YEARFORMATE;
if (PhnsetSetDTFromAT(alarmDateTime))
{
rsp_msg->result = TRUE;
}
else
{
rsp_msg->result = FALSE;
}
SendMsg2AT(MSG_ID_MMI_AT_GENERAL_RES_REQ, (void*)rsp_msg, NULL);
}
SetFromAT = FALSE;
if (g_idle_context.IsOnIdleScreen)
{
EntryIdleScreen();
}
}
/********/
/* Alarm */
/********/
/*****************************************************************************
* FUNCTION
* ATQueryAlarm
* DESCRIPTION
* Query alarm setting from AT command
* PARAMETERS
* msg [?] No action
* RETURNS
* void
*****************************************************************************/
void ATQueryAlarm(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
SetFromAT = TRUE;
AlmQueryAlarmFromAT();
SetFromAT = FALSE;
}
/*****************************************************************************
* FUNCTION
* ATSetAlarm
* DESCRIPTION
* AT command set alarm
* PARAMETERS
* msg [?] Alarm time/index to be set
* RETURNS
* void
*****************************************************************************/
void ATSetAlarm(void *msg)
{
#ifdef MMI_ON_HARDWARE_P
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_at_alarm_set_req_ind_struct *req = (mmi_at_alarm_set_req_ind_struct*) msg;
mmi_at_alarm_set_res_req_struct *rsp;
MYTIME alarmDateTime;
MYQUEUE Message;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
SetFromAT = TRUE;
Message.oslSrcId = MOD_MMI;
Message.oslDestId = MOD_L4C;
Message.oslMsgId = MSG_ID_MMI_AT_ALARM_SET_RES_REQ;
rsp = (mmi_at_alarm_set_res_req_struct*) OslConstructDataPtr(sizeof(mmi_at_alarm_set_res_req_struct));
if (req->alarm.alarm_index < NUM_OF_ALM)
{
alarmDateTime.nSec = req->alarm.date_time.rtc_sec;
alarmDateTime.nMin = req->alarm.date_time.rtc_min;
alarmDateTime.nHour = req->alarm.date_time.rtc_hour;
alarmDateTime.nDay = req->alarm.date_time.rtc_day;
alarmDateTime.nMonth = req->alarm.date_time.rtc_mon;
alarmDateTime.nYear = req->alarm.date_time.rtc_year + YEARFORMATE;
ClearKeyEvents();
AlmSetAlarmFromAT(req->alarm.alarm_index, alarmDateTime, req->alarm.recurr);
rsp->result = KAL_TRUE;
}
else
{
rsp->result = KAL_FALSE;
}
Message.oslDataPtr = (oslParaType*) rsp;
Message.oslPeerBuffPtr = NULL;
OslMsgSendExtQueue(&Message);
SetFromAT = FALSE;
#endif /* MMI_ON_HARDWARE_P */
}
/*****************************************************************************
* FUNCTION
* ATCancelAlarm
* DESCRIPTION
* AT command cancel alarm
* PARAMETERS
* msg [?] Alarm index to be set
* RETURNS
* void
*****************************************************************************/
void ATCancelAlarm(void *msg)
{
#ifdef MMI_ON_HARDWARE_P
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_at_alarm_delete_req_ind_struct *req = (mmi_at_alarm_delete_req_ind_struct*) msg;
mmi_at_alarm_delete_res_req_struct *rsp;
MYQUEUE Message;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
SetFromAT = TRUE;
Message.oslSrcId = MOD_MMI;
Message.oslDestId = MOD_L4C;
Message.oslMsgId = MSG_ID_MMI_AT_ALARM_DELETE_RES_REQ;
rsp = (mmi_at_alarm_delete_res_req_struct*) OslConstructDataPtr(sizeof(mmi_at_alarm_delete_res_req_struct));
if (req->alarm_index < NUM_OF_ALM)
{
ClearKeyEvents();
AlmCancelAlarmFromAT(req->alarm_index);
rsp->result = KAL_TRUE;
}
else
{
rsp->result = KAL_FALSE;
}
Message.oslDataPtr = (oslParaType*) rsp;
Message.oslPeerBuffPtr = NULL;
OslMsgSendExtQueue(&Message);
SetFromAT = FALSE;
#endif /* MMI_ON_HARDWARE_P */
}
/*******/
/* Call */
/*******/
/*****************************************************************************
* FUNCTION
* ATAnswerIncomingCall
* DESCRIPTION
* AT command answer incoming call
* PARAMETERS
* msg [?] Call id to be answered
* RETURNS
* void
*****************************************************************************/
void ATAnswerIncomingCall(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_cc_call_accept_req_ind_struct *msgReq;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
msgReq = (mmi_cc_call_accept_req_ind_struct*) msg;
AcceptCallForAT(msgReq->call_id);
}
/*****************************************************************************
* FUNCTION
* ATMakeOutgoingCall
* DESCRIPTION
* AT command make outgoing call
* PARAMETERS
* msg [?] Destination number/call type to be made
* RETURNS
* void
*****************************************************************************/
void ATMakeOutgoingCall(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_cc_dial_req_ind_struct *msgReq;
PU8 start;
U8 number[MAX_DIGIT];
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
msgReq = (mmi_cc_dial_req_ind_struct*) msg;
memset((PS8) number, 0, MAX_DIGIT);
start = number;
if (msgReq->dest.type & 0x10)
{
number[0] = '+';
start++;
}
if (msgReq->dest.length < MAX_DIGIT)
{
strncpy((PS8) start, (PS8) msgReq->dest.number, msgReq->dest.length);
}
else
{
strcpy((PS8) start, (PS8) msgReq->dest.number);
}
MakeMOForAT((PS8) number, msgReq->dest.length, msgReq->call_type);
}
/*****************************************************************************
* FUNCTION
* ATHangupCall
* DESCRIPTION
* AT command hang up call
* PARAMETERS
* msg [?] No action
* RETURNS
* void
*****************************************************************************/
void ATHangupCall(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/* use of id feild.. t */
mmi_cc_call_release_ind_struct *msgReq;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
msgReq = (mmi_cc_call_release_ind_struct*) msg;
RemoveOutgoingIndicationScreen();
}
/*****************************************************************************
* FUNCTION
* ATSyncCallTable
* DESCRIPTION
* AT command sync call table
* PARAMETERS
* msg [?] No action
* RETURNS
* void
*****************************************************************************/
void ATSyncCallTable(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
SetSyncCallFromATFlag(TRUE);
SyncCallList();
}
/*************/
/* Text on LCD */
/*************/
static U8 buffer[100];
/*****************************************************************************
* FUNCTION
* ATTextOnLCD
* DESCRIPTION
* AT command show text on LCD (function not working)
* PARAMETERS
* msg [?] Message to be shown(?)
* RETURNS
* void
*****************************************************************************/
void ATTextOnLCD(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
int buffersize = 100;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (g_idle_context.IsOnIdleScreen)
{
ClearKeyEvents();
ShowCategory5Screen(
0,
0,
STR_GLOBAL_OK,
IMG_GLOBAL_OK,
0,
0,
INPUT_TYPE_ALPHANUMERIC_UPPERCASE,
buffer,
buffersize,
0);
SetLeftSoftkeyFunction(ATTextOnLCDExit, KEY_EVENT_UP);
}
}
/*****************************************************************************
* FUNCTION
* ATTextOnLCDExit
* DESCRIPTION
* Exit text on LCD screen
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void ATTextOnLCDExit(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
EntryIdleScreen();
}
/********/
/* Profile */
/********/
/*****************************************************************************
* FUNCTION
* ATSetProfileHandler
* DESCRIPTION
* AT command set profile
* PARAMETERS
* msg [?] Wall paper/tone/home city/theme/short cut setting request
* RETURNS
* void
*****************************************************************************/
void ATSetProfileHandler(void *msg)
{
#ifdef MMI_ON_HARDWARE_P
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_set_mmi_default_prof_ind_struct *mmi_set_prof_struct = (mmi_set_mmi_default_prof_ind_struct*) msg;
mmi_at_general_res_req_struct *msgReq;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
msgReq = (mmi_at_general_res_req_struct*) OslConstructDataPtr(sizeof(mmi_at_general_res_req_struct));
msgReq->result = MMI_FALSE;
if (mmi_set_prof_struct->op != 1) /* Query command, not imlpemented, send response with error result to L4 */
{
goto MMILAB_ATSETPROF_END;
}
switch (mmi_set_prof_struct->category)
{
case 0: /* Wallpaper */
{
if (PhnsetSetDisplayFromAT((U8) (mmi_set_prof_struct->param3 - 1), (U8) MMI_PHNSET_TYPE_WP) == MMI_TRUE)
{
msgReq->result = MMI_TRUE;
}
break;
}
case 1: /* Tone */
{
if (mmi_set_prof_struct->param2 == 0)
{
if (AtSetProfileTone(mmi_set_prof_struct->param1, TONE_POWERONTONE, (mmi_set_prof_struct->param3 - 1)) ==
MMI_TRUE)
{
msgReq->result = MMI_TRUE;
}
}
break;
}
case 2: /* Home City */
{
if (ATSetHomeCity((U8) (mmi_set_prof_struct->param3)) == MMI_TRUE)
{
msgReq->result = MMI_TRUE;
}
break;
}
#if defined(__MMI_THEMES_APPLICATION__)
case 3: /* Theme */
{
if (ATSetTheme((U8) (mmi_set_prof_struct->param3 - 1)) == MMI_TRUE)
{
msgReq->result = MMI_TRUE;
}
break;
}
#endif /* defined(__MMI_THEMES_APPLICATION__) */
#ifndef __DISABLE_SHORTCUTS_IMPL__
case 4: /* Shortcut */
{
if (ATSetShortcuts((PU8) mmi_set_prof_struct->param4) == MMI_TRUE)
{
msgReq->result = MMI_TRUE;
}
break;
}
#endif /* __DISABLE_SHORTCUTS_IMPL__ */
case 5: /* Screen Saver */
{
if (PhnsetSetDisplayFromAT((U8) (mmi_set_prof_struct->param3 - 1), (U8) MMI_PHNSET_TYPE_SS) == MMI_TRUE)
{
msgReq->result = MMI_TRUE;
}
break;
}
#ifdef __MMI_POWER_ON_OFF_DISPLAY__
case 6: /* Power On */
{
if (PhnsetSetDisplayFromAT((U8) (mmi_set_prof_struct->param3 - 1), (U8) MMI_PHNSET_TYPE_PWRON) == MMI_TRUE)
{
msgReq->result = MMI_TRUE;
}
break;
}
case 7: /* Power Off */
{
if (PhnsetSetDisplayFromAT((U8) (mmi_set_prof_struct->param3 - 1), (U8) MMI_PHNSET_TYPE_PWROFF) == MMI_TRUE)
{
msgReq->result = MMI_TRUE;
}
break;
}
#endif /* __MMI_POWER_ON_OFF_DISPLAY__ */
default:
msgReq->result = MMI_FALSE;
break;
}
MMILAB_ATSETPROF_END:
SendMsg2AT(MSG_ID_MMI_AT_GENERAL_RES_REQ, (void*)msgReq, NULL);
#endif /* MMI_ON_HARDWARE_P */
}
/*****************************************************************************
* FUNCTION
* ATPowerReset
* DESCRIPTION
* AT command reset power
* PARAMETERS
* ind [?]
* in msg no action(?)
* RETURNS
* void
*****************************************************************************/
void ATPowerReset(void *ind)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_power_reset_ind_struct *msg = (mmi_power_reset_ind_struct*) ind;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
AlmATPowerReset(msg->poweroff, msg->rtc_timer);
}
/*****************************************************************************
* FUNCTION
* ATRstFactoryDefault
* DESCRIPTION
* AT command restore factory default
* PARAMETERS
* ind [?]
* in msg no action(?)
* RETURNS
* void
*****************************************************************************/
extern SecuritySetupContext gSecuritySetupContext;
void ATRstFactoryDefault(void *ind)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MYQUEUE Message;
MMIPHONEVERIFYREQ *local_data;
mmi_factory_restore_req_ind_struct *msg = (mmi_factory_restore_req_ind_struct*) ind;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
Message.oslSrcId = MOD_MMI;
Message.oslDestId = MOD_L4C;
Message.oslMsgId = PRT_MMI_SMU_VERIFY_PIN_REQ;
local_data = (MMIPHONEVERIFYREQ*) OslConstructDataPtr(sizeof(MMIPHONEVERIFYREQ));
memset(local_data->pin, '\0', (MAX_SIM_SETTING_PASSWD_LEN + 1));
memset(local_data->new_pin, '\0', (MAX_SIM_SETTING_PASSWD_LEN + 1));
local_data->pin_type = MMI_SETTING_TYPE_PHONELOCK;
/* Change gInputPhoneLockBuffer to ASCII then copy local_data->pin */
memcpy(local_data->pin, msg->pwd, (MAX_SIM_SETTING_PASSWD_LEN + 1));
Message.oslDataPtr = (oslParaType*) local_data;
Message.oslPeerBuffPtr = NULL;
/* set the protocol handler to handle the response of this request */
gSecuritySetupContext.VerifyPassSuccessCallBack = ATRstConfirm;
SetProtocolEventHandler(ATVerifyPINRsp, PRT_MMI_SMU_VERIFY_PIN_RSP);
OslMsgSendExtQueue(&Message);
}
/*****************************************************************************
* FUNCTION
* ATVerifyPINRsp
* DESCRIPTION
*
* PARAMETERS
* info [?]
* RETURNS
* void
*****************************************************************************/
void ATVerifyPINRsp(void *info)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
extern void FillCountDownNumber(sim_chv_info_struct chv_info);
mmi_smu_verify_pin_rsp_struct *local_data = (mmi_smu_verify_pin_rsp_struct*) info;
FillCountDownNumber(local_data->chv_info);
gSecuritySetupContext.PINBlocked = 0;
g_pwr_context.PowerOnSIMStatus &= ~MMI_SIM_STATUS_INVALID; /* 0x01: Invalid SIM reset */
if (local_data->next_type != MMI_SETTING_TYPE_NO_REQUIRED)
{
mmi_at_general_res_req_struct *rsp_msg;
rsp_msg = (mmi_at_general_res_req_struct*) OslConstructDataPtr(sizeof(mmi_at_general_res_req_struct));
rsp_msg->result = FALSE;
SendMsg2AT(MSG_ID_MMI_AT_GENERAL_RES_REQ, (void*)rsp_msg, NULL);
}
else
{
SECSETVerifyPINRsp(info);
}
}
/*****************************************************************************
* FUNCTION
* ATRstConfirm
* DESCRIPTION
* This function is to handle AT command restore factory default
* Following functions: RstStartRestore
* PARAMETERS
* void
* a(?) [IN/OUT]
* b(?) [IN]
* RETURNS
* void
*****************************************************************************/
extern pBOOL bStatus;
void ATRstConfirm(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_at_general_res_req_struct *rsp_msg;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
rsp_msg = (mmi_at_general_res_req_struct*) OslConstructDataPtr(sizeof(mmi_at_general_res_req_struct));
RstStartRestore();
if (bStatus)
{
rsp_msg->result = TRUE;
}
else
{
rsp_msg->result = FALSE;
}
SendMsg2AT(MSG_ID_MMI_AT_GENERAL_RES_REQ, (void*)rsp_msg, NULL);
}
/*****************************************************************************
* FUNCTION
* ATLCMRGBTestHandler
* DESCRIPTION
* This function is to handle AT command LCM RGB Test
* PARAMETERS
* void
* a(?) [IN/OUT]
* b(?) [IN]
* RETURNS
* void
*****************************************************************************/
void ATLCMRGBTestHandler(void *ind)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_at_general_res_req_struct *rsp_msg;
mmi_em_rgb_test_req_ind_struct *msg = (mmi_em_rgb_test_req_ind_struct*) ind;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
extern void EMLCDSetColor(U8 red, U8 green, U8 blue);
rsp_msg = (mmi_at_general_res_req_struct*) OslConstructDataPtr(sizeof(mmi_at_general_res_req_struct));
if (msg->type)
{
if ((msg->red > 255) || (msg->green > 255) || (msg->blue > 255))
{
rsp_msg->result = FALSE;
}
else
{
rsp_msg->result = TRUE;
EMLCDSetColor((U8)msg->red, (U8)msg->green, (U8)msg->blue);
}
}
else
{
rsp_msg->result = TRUE;
GoBackHistory();
}
SendMsg2AT(MSG_ID_MMI_AT_GENERAL_RES_REQ, (void*)rsp_msg, NULL);
}