diff src/ui3/bmi/mmiSatClassE.c @ 420:e8ddbb0837ed

src/ui3: initial import of TCS3/LoCosto BMI & MFW code
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 21 Jan 2018 03:09:00 +0000 (2018-01-21)
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ui3/bmi/mmiSatClassE.c	Sun Jan 21 03:09:00 2018 +0000
@@ -0,0 +1,599 @@
+/*******************************************************************************
+
+          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 (6349)
+ $Module:   MMI
+ $File:       MmiSatClassE.c
+ $Revision:   1.0
+
+ $Author:   Condat(UK)
+ $Date:       13/03/03
+
+********************************************************************************
+
+ Description:   Contains the implementation of SAT Class E
+
+
+
+********************************************************************************
+
+ $History: MmiSatClassE.c
+
+  13/03/03      Original Condat(UK) BMI version.
+
+ $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 /* (NEW_FRAME) */
+
+#include "gdi.h"
+#include "audio.h"
+
+#include "pconst.cdg"
+#include "mconst.cdg"
+#include "message.h"
+#include "ccdapi.h"
+#include "prim.h"
+#include "cus_aci.h"
+#include "cnf_aci.h"
+#include "mon_aci.h"
+
+#include "tok.h"
+
+#include "prim.h"
+#ifndef PCM_2_FFS
+#include "pcm.h"
+#endif
+
+
+#include "mfw_mfw.h"
+#include "mfw_kbd.h"
+#include "mfw_tim.h"
+#include "mfw_lng.h"
+#include "mfw_win.h"
+#include "mfw_icn.h"
+#include "mfw_sim.h"
+#include "mfw_nm.h"
+/* SPR#1428 - SH - New Editor changes */
+#ifndef NEW_EDITOR
+#include "mfw_edt.h"
+#endif /* NEW_EDITOR */
+#include "mfw_mnu.h"
+#include "mfw_phb.h"
+#include "mfw_sms.h"
+
+#include "dspl.h"
+
+
+#include "p_mmi.h"
+#include "message.h"
+#include "prim.h"
+#include "aci_cmh.h"
+#include "mfw_mme.h"
+
+#include "MmiMmi.h"
+
+#include "Mmiicons.h"
+#include "MmiPins.h"
+#include "MmiMain.h"
+#include "MmiDialogs.h"
+#include "MmiIdle.h"
+#include "MmiStart.h"
+#include "mmiCall.h"
+#include "MmiSimToolkit.h"
+
+#include "MmiLists.h"
+#include "MmiSounds.h"
+#include "MmiResources.h"
+#include "MmiTimeDate.h"
+#include "mmiSat_i.h"
+/* SPR#1428 - SH - New Editor changes */
+#ifdef NEW_EDITOR
+#include "ATBCommon.h"
+#include "ATBDisplay.h"
+#include "ATBEditor.h"
+#include "AUIEditor.h"
+#else
+#include "MmiEditor.h"
+#endif /* NEW_EDITOR */
+#include "MmiMenu.h" // SH - 20/11/01 - included to provide symbol SimMenuFunc
+#include "mmiSmsRead.h" /*MC SPR 940/2*/
+
+#include "cus_aci.h"
+#include "prim.h"
+#include "pcm.h"
+
+#include "mmiSatClassE.h"
+#include "mmiColours.h"
+
+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 */
+    char * alpha_id;
+} T_sat_open_channel;
+
+
+/* Local function prototypes */
+static void sat_open_channel_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
+static void sat_class_e_dialog_destroy(T_MFW_HND win);
+static void sat_class_e_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
+
+/*******************************************************************************
+
+ $Function:    	sat_class_e_create
+
+ $Description:	      Creation of an instance for the SAT Class E dialog.
+
+ $Returns:		mfw window handler 
+
+ $Arguments:        parent_window - Parent window handler
+ 
+*******************************************************************************/
+T_MFW_HND sat_class_e_create (T_MFW_HND parent_window)
+{
+    T_sat_open_channel * data = (T_sat_open_channel *)ALLOC_MEMORY (sizeof (T_sat_open_channel));
+    T_MFW_WIN       * win;
+
+    TRACE_FUNCTION("sat_open_channel_create()");
+
+    if (data != NULL)
+    {
+        data->win = win_create (parent_window, 0, 0,NULL);
+    }
+    else
+    {
+        TRACE_ERROR("Error: Cannot allocate memory for data!");
+ 	 return NULL;  /* x0039928 - Lint warning fix */
+    }
+
+    if (data->win EQ NULL)
+        return NULL;
+
+    /*
+     * Create window handler
+     */
+    data->mmi_control.dialog   = (T_DIALOG_FUNC)sat_class_e_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_open_channel_cb
+
+ $Description:  Callback for accept/reject dialog.
+ $Returns:       None.
+
+ $Arguments:  win: current window
+                    identifier: unique id
+                    reason: event id
+
+*******************************************************************************/
+static void sat_open_channel_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
+{
+    TRACE_FUNCTION("sat_open_channel_cb()");
+    
+    if (win EQ NULL)
+    {
+        return;
+    }
+    
+    switch (reason)
+    {
+    case INFO_KCD_LEFT:        /* user has accepted Open Channel request */
+        satAccept();
+
+        /* Destroy the dialog */
+        sat_class_e_dialog_destroy(win);
+        break;
+    case INFO_KCD_RIGHT:        /* user has rejected Open Channel request */
+        satReject();
+
+        /* Destroy the dialog */
+        sat_class_e_dialog_destroy(win);
+        break;
+    default:
+        break;
+    }
+}
+
+/*******************************************************************************
+
+ $Function:     sat_class_e_dialog_destroy
+
+ $Description:  Close the alert dialog
+
+ $Returns:      None.
+
+ $Arguments:  alert_dialog: window handle.
+
+*******************************************************************************/
+static void sat_class_e_dialog_destroy(T_MFW_HND win)
+{
+
+    T_MFW_WIN       * win_data;  
+    T_sat_open_channel * data;
+    
+    TRACE_FUNCTION ("sat_class_e_dialog_destroy()");
+
+    if (win == NULL) 
+    {
+       TRACE_ERROR("ERROR: win is NULL!");
+       return;
+    }
+
+    win_data = ((T_MFW_HDR *)win)->data;
+
+    if (win_data == NULL)
+    {
+        TRACE_ERROR("ERROR: win_data is NULL!");
+        return;
+    }
+
+    data = (T_sat_open_channel *)win_data->user;
+    
+    if (win != NULL)
+    {
+        if (data)
+        {
+            /*
+             * Delete WIN Handler
+             */
+            win_delete (data->win);
+            /*
+             * Free Memory
+             */
+            sat_destroy_TEXT_ASCIIZ (data->alpha_id);
+            FREE_MEMORY ((U8 *)data, sizeof (T_sat_open_channel));
+        }
+    }
+}
+
+/*******************************************************************************
+
+ $Function:     sat_class_e_cb
+
+ $Description:  Callback for Sat Class E dialogs.
+ $Returns:       None.
+
+ $Arguments:  win: current window
+                    identifier: unique id
+                    reason: event id
+
+*******************************************************************************/
+static void sat_class_e_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
+{
+    TRACE_FUNCTION("sat_class_e_cb()");
+    
+    if (win EQ NULL)
+    {
+        return;
+    }
+    
+    switch (reason)
+    {
+    case INFO_KCD_LEFT:
+    case INFO_KCD_RIGHT:
+    case INFO_TIMEOUT:
+
+        /* Destroy the dialog */
+        sat_class_e_dialog_destroy(win);
+        break;
+    default:
+        break;
+    }
+}
+
+/*******************************************************************************
+
+ $Function:    	sat_class_e_exec
+
+ $Description:	      Dialog function for Sat Class E window.
+
+ $Returns:		none
+
+ $Arguments:	      win - current window
+ 				event - window event
+ 				value - unique id
+ 				call_setup_parameter - call setup info
+
+ SPR#2321 - DS - Corrected misleading comments.
+ 
+*******************************************************************************/
+void sat_class_e_exec (T_MFW_HND win, USHORT event, SHORT value,  T_SAT_CMD * sat_command)
+{
+    
+    T_MFW_WIN       * win_data;  
+    T_sat_open_channel * data;
+    char* text_string;
+    
+    T_DISPLAY_DATA    display_info;
+    
+    TRACE_FUNCTION ("sat_class_e_exec()");
+
+    if (win == NULL) 
+    {
+       TRACE_ERROR("ERROR: win is NULL!");
+       return;
+    }
+
+    win_data = ((T_MFW_HDR *)win)->data;
+
+    if (win_data == NULL)
+    {
+        TRACE_ERROR("ERROR: win_data is NULL!");
+        return;
+    }
+
+    data = (T_sat_open_channel *)win_data->user;
+
+    if (data == NULL)
+    {
+        TRACE_ERROR("ERROR: data is NULL!");
+        return;
+    }
+    
+    switch (event)
+    {
+        case SAT_OPEN_CHANNEL:
+
+            TRACE_EVENT("SAT_OPEN_CHANNEL");
+                
+            /* Start an info screen to accept or reject the Open Channel request */
+            data->sat_command = sat_command;	
+
+            /* Extract the data from the Open Channel sat command */
+            if (sat_command != NULL)
+            {
+
+		  TRACE_EVENT_P2("dcs: %x, len: %d", sat_command->c.open.alpha_id.code, sat_command->c.open.alpha_id.len);
+		  
+                /* Alpha identifier */
+
+                /* Check alpha identifier has valid length */
+                if ( (sat_command->c.open.alpha_id.len > 0) &&
+                     (sat_command->c.open.alpha_id.len != (U8)-1) )
+                {
+                    /* Extract alpha_id data and create string */
+                    data->alpha_id = sat_create_TEXT_ASCIIZ(&sat_command->c.open.alpha_id);
+                }
+                else
+                {
+                    data->alpha_id = NULL;
+                }
+            }
+	     else
+	     {
+	     	     TRACE_ERROR("ERROR: NULL sat_command!");
+	     }
+
+            if (data->alpha_id)
+            {
+                text_string = data->alpha_id;
+#ifdef NO_ASCIIZ/*MC SPR 940/2 Add tag to Unicode strings so info dialog displays them correctly*/
+		   sat_add_unicode_tag_if_needed(text_string);
+#endif               
+            }
+            else
+            {
+                text_string = "Open Channel"; //Need to implement for Chinese
+            }
+                    
+            
+            dlg_initDisplayData_TextStr( &display_info, TxtAccept, TxtReject, text_string, NULL, COLOUR_STATUS);
+            dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)sat_open_channel_cb, FOREVER, KEY_LEFT|KEY_RIGHT );
+
+            display_info.Identifier   = event;
+            
+            /*
+            * Call Info Screen
+            */
+            info_dialog (win, &display_info);
+                
+            break;
+        
+        case SAT_CLOSE_CHANNEL:
+
+            TRACE_EVENT("SAT_CLOSE_CHANNEL");
+                
+            /* Start an info screen to inform the user that the SIM is closing the open channel*/
+            data->sat_command = sat_command;
+
+            /* Extract the data from the Close Channel sat command */
+            if (sat_command != NULL)
+            {
+                TRACE_EVENT_P2("dcs: %x, len: %d", sat_command->c.close.alpha_id.code, sat_command->c.close.alpha_id.len);
+		  
+                /* Alpha identifier */
+
+                /* SPR#2321 - DS - Check alpha identifier has valid length */
+                if ( (sat_command->c.close.alpha_id.len > 0) &&
+                     (sat_command->c.close.alpha_id.len != (U8)-1) )
+                {
+                    /* Extract alpha_id data and create string */
+                    data->alpha_id = sat_create_TEXT_ASCIIZ(&sat_command->c.close.alpha_id);
+                }
+                else
+                {
+                    data->alpha_id = NULL;
+                }
+            }
+
+            if (data->alpha_id)
+            {
+                text_string = data->alpha_id;
+#ifdef NO_ASCIIZ/*MC SPR 940/2 Add tag to Unicode strings so info dialog displays them correctly*/
+		   sat_add_unicode_tag_if_needed(text_string);
+#endif               
+            }
+            else
+            {
+                text_string = "Closing Channel"; //Need to implement for Chinese
+            }
+                    
+            
+            dlg_initDisplayData_TextStr( &display_info, TxtNull, TxtNull, text_string, NULL, COLOUR_STATUS);
+            dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)sat_class_e_cb, THREE_SECS, KEY_LEFT|KEY_RIGHT );
+
+            display_info.Identifier   = event;
+            
+            /*
+            * Call Info Screen
+            */
+            info_dialog (win, &display_info);
+                
+            break;
+
+        case SAT_SEND_DATA:
+
+	     TRACE_EVENT("SAT_SEND_DATA");
+                
+            /* Start an info screen to inform the user that the SIM is sending data */
+            data->sat_command = sat_command;
+
+            /* Extract the data from the Send Data sat command */
+            if (sat_command != NULL)
+            {
+                TRACE_EVENT_P2("dcs: %x, len: %d", sat_command->c.send.alpha_id.code, sat_command->c.send.alpha_id.len);
+		  
+                /* Alpha identifier */
+
+                /* SPR#2321 - DS - Check alpha identifier has valid length */
+                if ( (sat_command->c.send.alpha_id.len > 0) &&
+                     (sat_command->c.send.alpha_id.len != (U8)-1) )
+                {
+                    /* Extract alpha_id data and create string */
+                    data->alpha_id = sat_create_TEXT_ASCIIZ(&sat_command->c.send.alpha_id);
+                }
+                else
+                {
+                    data->alpha_id = NULL;
+                }
+            }
+
+            if (data->alpha_id)
+            {
+                text_string = data->alpha_id;
+#ifdef NO_ASCIIZ/*MC SPR 940/2 Add tag to Unicode strings so info dialog displays them correctly*/
+		   sat_add_unicode_tag_if_needed(text_string);
+#endif               
+            }
+            else
+            {
+                text_string = "Sending Data"; //Need to implement for Chinese
+            }                   
+            
+            dlg_initDisplayData_TextStr( &display_info, TxtNull, TxtNull, text_string, NULL, COLOUR_STATUS);
+            dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)sat_class_e_cb, THREE_SECS, KEY_LEFT|KEY_RIGHT );
+
+            display_info.Identifier   = event;
+            
+            /*
+            * Call Info Screen
+            */
+            info_dialog (win, &display_info);
+                
+            break;
+
+        case SAT_RECEIVE_DATA:
+
+	     TRACE_EVENT("SAT_RECEIVE_DATA");
+
+            /* Start an info screen to inform the user that the SIM is receiving data */
+            data->sat_command = sat_command;
+
+            /* Extract the data from the Receive Data sat command */
+            if (sat_command != NULL)
+            {
+                TRACE_EVENT_P2("dcs: %x, len: %d", sat_command->c.receive.alpha_id.code, sat_command->c.receive.alpha_id.len);
+		  
+                /* Alpha identifier */
+
+                /* SPR#2321 - DS - Check alpha identifier has valid length */
+                if ( (sat_command->c.receive.alpha_id.len > 0) &&
+                     (sat_command->c.receive.alpha_id.len != (U8)-1) )
+                {
+                    /* Extract alpha_id data and create string */
+                    data->alpha_id = sat_create_TEXT_ASCIIZ(&sat_command->c.receive.alpha_id);
+                }
+                else
+                {
+                    data->alpha_id = NULL;
+                }
+            }
+
+            if (data->alpha_id)
+            {
+                text_string = data->alpha_id;
+#ifdef NO_ASCIIZ/*MC SPR 940/2 Add tag to Unicode strings so info dialog displays them correctly*/
+		   sat_add_unicode_tag_if_needed(text_string);
+#endif               
+            }
+            else
+            {
+                text_string = "Receiving Data"; //Need to implement for Chinese
+            }                   
+            
+            dlg_initDisplayData_TextStr( &display_info, TxtNull, TxtNull, text_string, NULL, COLOUR_STATUS);
+            dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)sat_class_e_cb, THREE_SECS, KEY_LEFT|KEY_RIGHT );
+
+            display_info.Identifier   = event;
+            
+            /*
+            * Call Info Screen
+            */
+            info_dialog (win, &display_info);
+                
+            break;
+
+        default:
+            TRACE_EVENT("sat_open_channel_exec() unexpected event");
+            return;
+    }
+
+}
+
+/* EOF - End Of File */