FreeCalypso > hg > tcs211-fcmodem
diff g23m/condat/ms/src/bmi/mmiSatCall.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/g23m/condat/ms/src/bmi/mmiSatCall.c Mon Jun 01 03:24:05 2015 +0000 @@ -0,0 +1,413 @@ +/******************************************************************************* + + CONDAT (UK) + +******************************************************************************** + + This software product is the property of Condat (UK) Ltd and may not be + disclosed to any third party without the express permission of the owner. + +******************************************************************************** + + $Project name: Basic MMI + $Project code: BMI + $Module: SMS + $File: mmiSatInfo.c + $Revision: 1.0 + + $Author: Condat(UK) + $Date: 25/10/00 + +******************************************************************************** + + Description: + + Implementation of MMI SIM Application Toolkit (SAT) + +******************************************************************************** + + $History: mmiSatInfo.c + + Mar 11, 2006 REF:DR:OMAPS00061467 x0035544 + Description: 27.22.4.13.3 SET UP CALL (display of icons) fails. + Solution: In the function sat_call_setup_exec() copied the icon data in to display_info structure + inorder to display on the call screen during SAT call setup. + + 25/10/00 Original Condat(UK) BMI version. + 21/02/03 removed all calls to function sat_add_unicode_tag_if_needed() + + $End + +*******************************************************************************/ + +#define ENTITY_MFW + +/* includes */ +#include <string.h> +#include <stdio.h> +#include <stdlib.h> + +#if defined (NEW_FRAME) + +#include "typedefs.h" +#include "vsi.h" +#include "pei.h" +#include "custom.h" +#include "gsm.h" + +#else + +#include "STDDEFS.H" +#include "custom.h" +#include "gsm.h" +#include "vsi.h" + +#endif +#include "mfw_sys.h" + +#include "mfw_mfw.h" +#include "mfw_win.h" +#include "mfw_kbd.h" +/* SPR#1428 - SH - New Editor changes */ +#ifndef NEW_EDITOR +#include "mfw_edt.h" +#endif +#include "mfw_lng.h" +#include "mfw_icn.h" +#include "mfw_phb.h" +#include "mfw_sim.h" +#include "mfw_nm.h" +#include "mfw_sms.h" +#include "mfw_mnu.h" +#include "mfw_sat.h" +#include "mfw_tim.h" + +#include "dspl.h" + +#include "MmiMmi.h" +#include "MmiDummy.h" +#include "MmiDialogs.h" +#include "MmiLists.h" + +#include "MmiMain.h" +#include "MmiStart.h" +#include "MmiPins.h" +#include "MmiMenu.h" +#include "MmiSoftKeys.h" +#include "MmiSounds.h" +#include "mmiCall.h" + +#include "mmiSat_i.h" + +#include "cus_aci.h" +#include "prim.h" +#ifndef PCM_2_FFS +#include "pcm.h" +#endif + + +#include "mmiColours.h" + +/********************************************************************* + * + * SUB WINDOW SAT_CALL_SETUP + * + *********************************************************************/ +typedef struct +{ + T_MMI_CONTROL mmi_control; + T_MFW_HND parent_win; + T_MFW_HND win; + T_SAT_CMD *sat_command; /* pointer to sat_command in parent */ + T_SAT_call_setup_parameter * call_setup_parameter; + T_MFW_HND redial_tim; +} T_sat_call_setup; + +extern BOOL sat_call_active; // Marcus: Issue 1812: 13/03/2003 +// ADDED BY RAVI - 29-11-2005 +extern UBYTE get_sat_redial_flag(void); +extern void set_sat_redial_flag(UBYTE flag); +// END RAVI - 29-11-2005 + +static void sat_call_setup_destroy (T_MFW_HND own_window); +static void sat_call_setup_exec (T_MFW_HND win, USHORT event, SHORT value, T_SAT_call_setup_parameter * call_setup_parameter); +static void sat_call_setup_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason); +static int sat_call_setup_tim_cb (T_MFW_EVENT event, T_MFW_TIM *tc); + +/******************************************************************************* + + $Function: sat_call_setup_create + + $Description: Creation of an instance for the SAT CALL dialog.Window must be + available after reception of SAT command only one instance. + + $Returns: mfw window handler + + $Arguments: parent_window - Parent window handler + +*******************************************************************************/ +T_MFW_HND sat_call_setup_create (T_MFW_HND parent_window) +{ + T_sat_call_setup * data = (T_sat_call_setup *)ALLOC_MEMORY (sizeof (T_sat_call_setup)); + T_MFW_WIN * win; + + data->win = win_create (parent_window, 0, 0,NULL); + sat_set_call_setup_win(data->win); + + if (data->win EQ NULL) + return NULL; + + /* + * Create window handler + */ + data->mmi_control.dialog = (T_DIALOG_FUNC)sat_call_setup_exec; + data->mmi_control.data = data; + data->parent_win = parent_window; + win = ((T_MFW_HDR *)data->win)->data; + win->user = (MfwUserDataPtr)data; + + /* + * return window handle + */ + winShow(data->win); + return data->win; +} + +/******************************************************************************* + + $Function: sat_call_setup_destroy + + $Description: Destroy the sat call dialog. + + $Returns: none + + $Arguments: own_window - Current window + +*******************************************************************************/ +static void sat_call_setup_destroy (T_MFW_HND own_window) +{ + T_MFW_WIN * win_data = ((T_MFW_HDR *)own_window)->data; + T_sat_call_setup * data = (T_sat_call_setup *)win_data->user; + + if (own_window == NULL) + { + TRACE_EVENT ("Error : sat_call_setup_destroy called with NULL Pointer"); + return; + } + + if (data) + { + /* + * Delete WIN Handler + */ + win_delete (data->win); + /* + * Free Memory + */ + FREE_MEMORY ((void *)data, sizeof (T_sat_call_setup)); + sat_set_call_setup_win(NULL); + } +} + +/******************************************************************************* + + $Function: sat_call_setup_exec + + $Description: Dialog function for sat_call_setup_exec window. + + $Returns: none + + $Arguments: win - current window + event - window event + value - unique id + call_setup_parameter - call setup info + +*******************************************************************************/ +static void sat_call_setup_exec (T_MFW_HND win, USHORT event, SHORT value, T_SAT_call_setup_parameter * call_setup_parameter) +{ + + T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; + T_sat_call_setup * data = (T_sat_call_setup *)win_data->user; + + T_DISPLAY_DATA display_info; + + TRACE_FUNCTION ("sat_call_setup_exec()"); + + if ((win EQ NULL) || (win_data EQ NULL) || (data EQ NULL)) + return; + + switch (event) + { + case SAT_CALL_ALERT: + + TRACE_EVENT("sat_call_setup_exec(): SAT_CALL_ALERT"); + + /* start an info screen to accept or reject the call setup */ + data->call_setup_parameter = call_setup_parameter; + + /* SPR#1700 - DS - Modified so SAT will not display "Setup call?" if the first alpha id has been supplied by the SIM + */ + + if (call_setup_parameter->TextString) /* Alpha id supplied by SIM */ + { + dlg_initDisplayData_TextStr( &display_info, TxtAccept, TxtReject, call_setup_parameter->TextString, NULL, COLOUR_STATUS); + //x0035544 Feb 07, 2006 DR:OMAPS00061467 +#ifdef FF_MMI_SAT_ICON + if(call_setup_parameter->IconInfo.dst != NULL) + { + display_info.IconData.width = call_setup_parameter->IconInfo.width; + display_info.IconData.height = call_setup_parameter->IconInfo.height; + display_info.IconData.dst = call_setup_parameter->IconInfo.dst; + display_info.IconData.selfExplanatory = call_setup_parameter->IconInfo.selfExplanatory; + } + #endif + + } + + else /* No alpha id supplied so show "Setup call?" */ + { + //x0035544 Mar 14, 2006 DR:OMAPS00061467 + //added missing '?' to the string "Setup call" as below + dlg_initDisplayData_TextStr( &display_info, TxtAccept, TxtReject, "Setup call?", NULL, COLOUR_STATUS); + } + dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)sat_call_setup_cb, FOREVER, KEY_LEFT|KEY_RIGHT ); + + + display_info.Identifier = event; + /* + * Call Info Screen + */ + info_dialog (win, &display_info); + break; + + case SAT_CALL_REDIAL: + /* attempt a redial if the timer has not yet elapsed */ + /* if redial is not commanded by SAT_CALL_ALERT the timer will be NULL (see sat_call_setup_cb()) */ + /* if the timer has already elapsed it is set to NULL (see sat_call_setup_tim_cb()) */ + + TRACE_EVENT("sat_call_setup_exec(): SAT_CALL_REDIAL"); + + if ((data->redial_tim NEQ NULL) || (call_setup_parameter->redialTime EQ FOREVER)) + + { + // ??? rsa according to ES we shall use a satAccept() at this point (but it returns an error) + if (!call_get_window()) + call_create(0); + SEND_EVENT(call_get_window(),CALL_OUTGOING_SAT,0,call_setup_parameter); + } + else + { + SEND_EVENT(data->parent_win, SAT_CALL_END, 0, NULL); /* inform the parent */ + } + break; + + case SAT_CALL_END: + + TRACE_EVENT("sat_call_setup_exec(): SAT_CALL_END"); + + /* SPR#1784 - DS - If call was a 'with redial' call, send a call reject to the SIM. + */ + if (get_sat_redial_flag() == 1) + { + satReject(); + + /* Reset the satWithRedial flag */ + set_sat_redial_flag(0); + } + + /* clean up after end of call */ + sat_call_setup_destroy(win); + break; + + default: + TRACE_EVENT("sat_call_setup_exec() unexpected event"); + return; + } + +} + +/******************************************************************************* + + $Function: sat_call_setup_cb + + $Description: Callback function information dialog. + + $Returns: none + + $Arguments: win - current window + identifier - unique id + reason - window event id + +*******************************************************************************/ + +static void sat_call_setup_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) +{ + T_MFW_WIN * info_win_data = ((T_MFW_HDR *) win)->data; + T_sat_call_setup * data = (T_sat_call_setup *)info_win_data->user; + + TRACE_FUNCTION("sat_call_setup_cb()"); + + if ((win EQ NULL) || (info_win_data EQ NULL) || (data EQ NULL)) + return; + + switch (reason) + { + case INFO_KCD_LEFT: /* the user has accepted the call setup */ + /* start the call */ + sat_call_active = TRUE; // Marcus: Issue 1812: 13/03/2003 + if (!call_get_window()) + call_create(0); + SEND_EVENT(call_get_window(),CALL_OUTGOING_SAT,0,data->call_setup_parameter); + satAccept(); + + /* create and start the redial timer handler */ + if ((data->call_setup_parameter->redialTime NEQ 0) && + (data->call_setup_parameter->redialTime NEQ FOREVER)) + { + data->redial_tim = + tim_create (win, data->call_setup_parameter->redialTime, (T_MFW_CB)sat_call_setup_tim_cb); + tim_start (data->redial_tim); + } + else + { + data->redial_tim = NULL; /* timer not used */ + } + + /* destroying will be done in response to SAT_CALL_END */ + SEND_EVENT(data->parent_win, SAT_CALL_END, 0, NULL); // Marcus: Issue 1812: 13/03/2003 + break; + case INFO_KCD_RIGHT: /* the user has rejected the call setup */ + TRACE_EVENT("sat_call_setup_cb(): User rejected call setup"); + satReject(); + data->redial_tim = NULL; /* timer not used */ + SEND_EVENT(data->parent_win, SAT_CALL_END, 0, NULL); /* inform the parent who will take care of destroying */ + break; + default: + break; + } +} + +/******************************************************************************* + + $Function: sat_call_setup_tim_cb + + $Description: Callback function for the redial timer. + + $Returns: Execution status + + $Arguments: event - window event + tc - timer info + +*******************************************************************************/ +static int sat_call_setup_tim_cb (T_MFW_EVENT event, T_MFW_TIM *tc) +{ + T_MFW_HND win = mfw_parent (mfw_header()); + T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; + T_sat_call_setup * data = (T_sat_call_setup *)win_data->user; + + if ((win EQ NULL) || (win_data EQ NULL) || (data EQ NULL)) + return MFW_EVENT_CONSUMED; + + data->redial_tim = NULL; /* timer has elapsed */ + return MFW_EVENT_CONSUMED; +}