view src/ui3/mfw/mfw_sim.h @ 516:1ed9de6c90bd

src/g23m-gsm/sms/sms_for.c: bogus malloc removed The new error handling code that was not present in TCS211 blob version contains a malloc call that is bogus for 3 reasons: 1) The memory allocation in question is not needed in the first place; 2) libc malloc is used instead of one of the firmware's proper ways; 3) The memory allocation is made inside a function and then never freed, i.e., a memory leak. This bug was caught in gcc-built FreeCalypso fw projects (Citrine and Selenite) because our gcc environment does not allow any use of libc malloc (any reference to malloc produces a link failure), but this code from TCS3.2 is wrong even for Magnetite: if this code path is executed repeatedly over a long time, the many small allocations made by this malloc call without a subsequent free will eventually exhaust the malloc heap provided by the TMS470 environment, malloc will start returning NULL, and the bogus code will treat it as an error. Because the memory allocation in question is not needed at all, the fix entails simply removing it.
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 22 Jul 2018 06:04:49 +0000
parents e8ddbb0837ed
children
line wrap: on
line source

/*
+--------------------------------------------------------------------+
| PROJECT: GSM-MFW (?)                  $Workfile:: mfw_sim.h       $|
| $Author:: Vo                          $Revision::  1              $|
| CREATED: 14.10.98                     $Modtime:: 20.03.00 14:09   $|
| STATE  : code                                                      |
+--------------------------------------------------------------------+
 History:

	Apr 03, 2007    ER: OMAPS00122561  x0pleela
	Description:   [ACI] Phone lock feature has to be supported by ACI
	Solution: Phone Lock ER implementation
    
   	Sep 26, 2006 DR: OMAPS00095524 x0pleela
 	Description:Implement 2 missing SIM Lock types
 	Solution: Made the following changes
 			- Added new macros MFW_SIM_PBLOCK_REQ, MFW_SIM_PBLOCK for
 				Blocked Network category
 				
	xashmic 9 Sep 2006, OMAPS00092732
	USBMS ER
  	Sep 08, 2006 DR: OMAPS00091250 x0pleela
 	Description:The phone resets if no MEPD data is presented
 	Solution: Added a new event MFW_MEPD_INVALID which will be returned to BMI
 			to display MEPD not present to the user

	July 21, 2006 ER: OMAPS00087586, OMAPS00087587 x0pleela
	Description: 	OMAPS00087586: MasterKey funtion in TCS3.2 SW
				OMAPS00087587: Time Penaly feature extend handset security
	Solution:Made the following changes
	 	Defined new macros MFW_SIM_MKEY( Master Unlocking during bootup)
	 					  MFW_SIM_MKEYM (Master Unlocking through menu)
 	
	May 26, 2006 ER: OMAPS00079607 x0012849 :Jagannatha M
	Description: CPHS: Display 'charge/Timers' menu based on AOC ( Advice of charge )
	Solution:Made the following changes
		       1. Defined MFW_SIM_NO_AOC with value 11
			
	May 15, 2006 DR: OMAPS00067919 x0pleela
	Description: SIMP:On repeat Depersonalisation with invalid password MEPD unblock key should 
				be asked not Puk1.
	Solution:Made the following changes
		       1. Added new macro BOOTUP_OK
			2. Added new enumeration T_MFW_SIMP_CLCK_FLAG
			
	Nov 24, 2005 DR: OMAPS00045909 - Shashi Shekar B.S.
	Description: Improve IMEI control mechanism
	Solution : When MMI calls sAT_PLUSCFUN, if an IMEI invalid error is returned,
		we will block on that screen & will not allow the user to browse menus further,
		since the PS will not be booted at all!!!

	July 19, 2005 REF: CRR LOCOSTO-ENH-28173 xpradipg
  	Description: To provide MMI Support to enable/disable/change password and 
  				query all the Personalization locks
  	Solution: Integration of the changes for the same provided by the soldel 
  			  team
  			  
***********************************************************************

  PURPOSE: Types definitions for SIM management of MMI framework

*/

#ifndef DEF_MFW_SIM
#define DEF_MFW_SIM 

/*#ifndef  BMI_TEST_MC_SIM_EVENT
#define BMI_TEST_MC_SIM_EVENT
#endif*/

/*
 * events are organised as bitmaps
 */
#define E_SIM_STATUS         	0x0001
#define E_SIM_INSERTED       	0x0002
#define E_SIM_RESET          	0x0004
#define E_SIM_READ_CALLBACK		0x0008/*MC CONQ5862, 13/06/02*, added new event*/

#define E_SIM_ALL_SERVICES  0x000f

#define SIM_ACTIVE                0
#define SIM_NOT_ACTIVE            1
#define SIM_STK_RESET             2 // bugfix for SIM refresh
#define IMEI_NOT_VALID            3 // Nov 24, 2005, a0876501, DR: OMAPS00045909

typedef struct {
  UBYTE sim_procedure;
  UBYTE sim_status;
  UBYTE sim_operation_mode;
  UBYTE sim_pin_retries;
  UBYTE sim_status_type;
} T_MFW_SIM_STATUS; /* type definition for E_SIM_STATUS event */

typedef struct {
  UBYTE type;           /* MFW_SIM_PIN1/MFW_SIM_PIN2                       */
  UBYTE set;            /* MFW_SIM_ENABLE/MFW_SIM_DISABLE                  */
  UBYTE stat  ;         /* MFW_SIM_NO_PIN/MFW_SIM_PIN_REQ/MFW_SIM_PIN2_REQ */
} T_MFW_SIM_PIN_STATUS;

/*MC CONQ5862, 13/06/02*, added new data struct for E_SIM_READ_CALLBACK event*/
typedef struct {
	SHORT error_code;
	UBYTE* read_buffer;
} T_MFW_READ_CALLBACK;

/* SIM configuration information */
typedef struct
{
    UBYTE access_acm;
    UBYTE access_acmmax;
    UBYTE access_puct;
} T_MFW_AOC_ACCESS;

//x0pleela 07 Mar, 2007  ER: OMAPS00122561
#ifdef FF_PHONE_LOCK
#define MFW_PH_LOCK_ENABLE     	1
#define MFW_PH_LOCK_DISABLE	2
#define MFW_PH_LOCK_FAILURE 	3

#define MFW_PH_LOCK 			1 	/* Phone lock type 		*/
#define MFW_AUTO_PH_LOCK		2 	/* Auto Phone lock type	*/
#endif /* FF_PHONE_LOCK */

#ifdef SIM_PERS
#define UNBLOCK_SUCESS 1
#define UNBLOCK_FAILURE 2
#define BOOTUP_LOCK_SUCCESS 3
#define BOOTUP_LOCK_FAILURE 4
#define BOOTUP_OK 5		//x0pleela 21 Apr, 2006  DR: OMAPS00067919
#define MFW_SIM_NOT_BLOCKED  10
#define MFW_SIM_PERM_BLOCKED 11
#endif

/* definition of SIM procedure in E_SIM_STATUS event */

#define MFW_SIM_ACTIVATION 1
#define MFW_SIM_VERIFY     2
#define MFW_SIM_UNBLOCK    3
#define MFW_SIM_CHANGE     4
#define MFW_SIM_ENABLE     5
#define MFW_SIM_DISABLE    6
#define MFW_SIM_LOCKED     7
#define MFW_SIM_BLOCKED    8
#define MFW_SIM_REMOVED    9



/* definition of SIM operation mode in E_SIM_STATUS event */

#define MFW_SIM_NO_OPERATION    0
#define MFW_SIM_ADN_ENABLED     1
#define MFW_SIM_FDN_ENABLED     2
#define MFW_SIM_ADN_BDN_ENABLED 5
#define MFW_SIM_FDN_BDN_ENABLED 6

/* definition of SIM status in E_SIM_STATUS event */

#define MFW_SIM_PIN_REQ      1
#define MFW_SIM_PUK_REQ      2
#define MFW_SIM_PIN2_REQ     3
#define MFW_SIM_PUK2_REQ     4
#define MFW_SIM_INVALID_CARD 5
#define MFW_SIM_NO_SIM_CARD  6
#define MFW_SIM_NO_PIN       7
#define MFW_SIM_SUCCESS      8
#define MFW_SIM_FAILURE      9
#ifdef SIM_PERS
	#define MFW_SIM_NLOCK_REQ		10
	#define MFW_SIM_NSLOCK_REQ	11
	#define MFW_SIM_SPLOCK_REQ	12
	#define MFW_SIM_CLOCK_REQ		13
	#define MFW_SIM_PLOCK_REQ		14
	#define MFW_SIM_PLOCK_ERR		15
	#define MFW_SIM_PLOCK_OK		16
	#define MFW_MEPD_INVALID		17 //x0pleela 23 Aug, 2006 DR: OMAPS00091250
	#define MFW_SIM_PBLOCK_REQ	18 //x0pleela 25 Sep, 2006 ER: OMAPS00095524
#endif
#define MFW_SIM_NO_DISABLE	10  /*MC CONQ-5578, PIN disabling forbidden*/
//x0012849: Jagannatha  26 May, 2006  ER: OMAPS00079607 -Support AOC in CPHS
 #ifdef FF_CPHS
#define MFW_SIM_NO_AOC		11 
#endif
/* Shashi Shekar B.S. DR: OMAPS00045909, Improve IMEI control mechanism */
#define MFW_IMEI_NOT_VALID	20  


#define MFW_SIM_PIN1         1
#define MFW_SIM_PUK1         2
#define MFW_SIM_PIN2         3
#define MFW_SIM_PUK2         4
#define MFW_SIM_UNKNOWN      0

#define MFW_SIM_NLOCK        1
#define MFW_SIM_SPLOCK       2
#define MFW_SIM_NSLOCK       3
#define MFW_SIM_CLOCK        4
#define MFW_SIM_PLOCK        5
#define MFW_SIM_UNLOCK_ERR   6
#ifdef SIM_PERS
#define MFW_SIM_FC 7
#define MFW_SIM_FCM 8

//x0pleela 20 July, 2006 ER: OMAPS00087586, OMAPS00087587

#define MFW_SIM_MKEY	9				//Master Unlocking during bootup
#define MFW_SIM_MKEYM	10				//Master Unlocking through menu
#define MFW_MASTER_UNLOCK_ACTIVE 1 	//Master unlock enabled
#define MFW_MASTER_UNLOCK_DEACTIVE 0	//Master unlock disabled


 //x0pleela 25 Sep, 2006 ER: OMAPS00095524
 #define MFW_SIM_PBLOCK        11			//Blocked Network Type

#endif

//x0pleela 27 Apr, 2006  DR: OMAPS00067919

#ifdef SIM_PERS
typedef enum
{
  SIMP_NONE,
  SIMP_MENU,
  SIMP_BOOTUP  
}T_MFW_SIMP_CLCK_FLAG;

#endif

/*
 * SIM Parameter
 */
typedef union
{
  T_MFW_SIM_STATUS status;
  T_MFW_READ_CALLBACK callback;
} T_MFW_SIM_PARA;

#ifdef SIM_PERS
extern int C_KEY_REQ;
#endif

int       sim_init                 (void); 
MfwHnd    sim_create               (MfwHnd hWin, MfwEvt event, MfwCb cbfunc);
MfwRes    sim_delete               (MfwHnd h);
void      sim_verify_pin           (UBYTE pin_id, char *pin);
void      sim_unblock_pin          (UBYTE pin_id, char *puk, char *newpin);
void      sim_change_pin           (UBYTE pin_id, UBYTE *alt_pin, UBYTE *new_pin);
T_MFW      sim_disable_pin          (UBYTE *pin);/*SPR 2145, now returns status*/
T_MFW      sim_enable_pin           (UBYTE *pin);/*SPR 2145, now returns status*/
void      sim_exit                 (void);
int       sim_pin_count            (UBYTE pin_id);
int 	SimHasPin				(U8 pin_id);
void      sim_pin_status           (T_MFW_SIM_PIN_STATUS *status);
T_MFW     sim_serv_table_check     (UBYTE serv_num);
int       sim_check_sim_Plock      (void);
int       sim_check_sim_Nlock      (void);
int       sim_check_sim_SPlock     (void);
int       sim_check_sim_NSlock     (void);
int       sim_check_sim_Clock      (void);
MfwRes    sim_configuration        (UBYTE *phase, UBYTE *serv, UBYTE *slen,
                                    UBYTE *lang, UBYTE *llen,
                                    T_MFW_AOC_ACCESS *access);
void      sim_save_pref_lang       (UBYTE *lang, UBYTE len);
T_MFW     sim_unlock_sim_lock      (UBYTE type, UBYTE *passwd);
void      sim_activate             (void);
UBYTE   * sim_get_imsi             (void);
UBYTE     sim_simlock_ok           (void);

void mfwSimRestartPinEntry(void);
//xashmic 9 Sep 2006, OMAPS00092732
void sim_enable(void);
void sim_disable(void);

/* 
	Ciphering
*/

// CPRImode :
#define MFW_SIM_CPRI_NO_SHOW      0
#define MFW_SIM_CPRI_SHOW        	1

//Callback function
typedef void (* CallbackCPRI)(UBYTE, UBYTE);  

//Initialize the ciphering indication
EXTERN UBYTE sim_init_CPRS (CallbackCPRI func, UBYTE CPRImode );
//TISH, patch for ASTec32515, modified by Jinshu Wang, 2007-06-15
//start
EXTERN void sim_invalid_ind(void);
//end
//x0pleela 03 Aug, 2006 ER: OMAPS00087586, OMAPS00087587
#ifdef SIM_PERS
//Set Simp_Busy_State to either TRUE or FALSE based on the ACI's busy error
void mfw_simlock_set_busy_state( UBYTE state );
//Get the current value of Simp_Busy_State
UBYTE mfw_simlock_get_busy_state( void );
#endif

#endif