diff src/g23m-gsm/sim/sim.h @ 104:27a4235405c6

src/g23m-gsm: import from LoCosto source
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 04 Oct 2016 18:24:05 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/g23m-gsm/sim/sim.h	Tue Oct 04 18:24:05 2016 +0000
@@ -0,0 +1,1201 @@
+/* 
++----------------------------------------------------------------------------- 
+|  Project :  GSM-PS (6302)
+|  Modul   :  SIM
++----------------------------------------------------------------------------- 
+|  Copyright 2002 Texas Instruments Berlin, AG 
+|                 All rights reserved. 
+| 
+|                 This file is confidential and a trade secret of Texas 
+|                 Instruments Berlin, AG 
+|                 The receipt of or possession of this file does not convey 
+|                 any rights to reproduce or disclose its contents or to 
+|                 manufacture, use, or sell anything it may describe, in 
+|                 whole, or in part, without the specific written consent of 
+|                 Texas Instruments Berlin, AG. 
++----------------------------------------------------------------------------- 
+|  Purpose :  Definitions for the Protocol Stack Entity
+|             SIM Application.
++----------------------------------------------------------------------------- 
+*/ 
+
+#ifndef SIM_H
+#define SIM_H
+
+#include <stdlib.h>
+#include <stdio.h>
+#ifdef TI_PS_HCOMM_CHANGE
+#include "cl_hComm_handle.h"
+#endif
+
+/*==== CONSTANTS ==================================================*/
+#if defined (_SIMULATION_)
+#define SIM_TOOLKIT
+#endif
+
+#ifdef SIM_TOOLKIT
+  #if defined (FF_WAP) OR defined (_SIMULATION_)
+    #define FF_SAT_C
+  #endif /* FF_WAP */
+#endif /* SIM_TOOLKIT */
+
+#ifdef FF_SAT_E
+#include "dti.h"
+#endif
+
+
+#ifdef TI_PS_OP_VSI_NO_CALL_ID
+#define TIMER_START(C,I,T)         vsi_t_start_nc(I,T)
+#define TIMER_PSTART(C,I,T,R)      vsi_t_pstart_nc(I,T,R)
+#define TIMER_STOP(C,I)            vsi_t_stop_nc(I)
+#define TIMER_STATUS(C,I,T)        vsi_t_status_nc(I,T)
+#define SUSPEND_SELF(C,T)          vsi_t_sleep_nc(T)
+#define SYSTEM_TIME(C,T)           vsi_t_time_nc(T)               
+#else /* TI_PS_OP_VSI_NO_CALL_ID */
+#define TIMER_START(C,I,T)         vsi_t_start(C,I,T)
+#define TIMER_PSTART(C,I,T,R)      vsi_t_pstart(C,I,T,R)
+#define TIMER_STOP(C,I)            vsi_t_stop(C,I)
+#define TIMER_STATUS(C,I,T)        vsi_t_status(C,I,T)
+#define SUSPEND_SELF(C,T)          vsi_t_sleep(C,T)
+#define SYSTEM_TIME(C,T)           vsi_t_time(C,T)               
+#endif /* TI_PS_OP_VSI_NO_CALL_ID */
+
+
+/*
+ * To read 255 bytes the SIM driver shall not append SW1, SW2
+ * to the end of the data. To be backward compatible, the
+ * following define is used. One of both definitions must be used
+ * depending on the SIM driver capabilities.
+ */
+//#define SIM_TI_DRV_X_BYTES  2   //  SIM driver adds SW1, SW2 to response!
+#define SIM_TI_DRV_X_BYTES  0     //  SIM driver does not add SW1, SW2 to response!
+
+#define NO_ALLOCATED              0
+#define ALLOCATED                 1
+#define ALLOCATED_AND_DEACTIVATED 2
+#define ALLOCATED_AND_ACTIVATED   3
+
+#define NO_BDN_SIM                0
+#define BDN_ENABLED               1
+#define BDN_DISABLED              2
+
+#define NO_FDN_SIM                0
+#define FDN_ENABLED               1
+#define FDN_DISABLED              2
+
+#define ABSOLUT_READING       0
+#define SIM_TPDU_HEADER_LEN   5
+
+/* parameterblocks */
+
+/* #define MAX_IMSI                9  moved to SAP SIM */
+#define MAX_KC_N                (MAX_KC+1) /* = 9 (SAP SIM) */
+/* #define MAX_PREF_PLMN           96 moved to SAP SIM */
+#define MAX_BCCH_INFO           16
+#define MAX_ACCESS_CONTROL      2
+#define MAX_FORB_PLMN           12
+#define MAX_LOC_INFO            11
+#define MAX_SIM_CHARGE          2
+#define MAX_OP_MODE             1
+
+#define MAX_PIN                 8
+#define MAX_UNBLOCKING_KEY      8
+#define MAX_ICC_IDENTIF         10
+
+#define VFY_CHV1                1   // verify PIN 1
+#define VFY_CHV2                2   // verify PIN 2
+#define UNBL_CHV1               0   // unblock PIN 1
+#define UNBL_CHV2               2   // unblock PIN 2
+
+/*
+ * Access conditions
+ */
+#define LRP_NONE                0
+#define LRP_PIN_1               (PHASE_2_PIN_1)   // 1
+#define LRP_PIN_2               (PHASE_2_PIN_2)   // 2
+#define LRP_PUK_1               (PHASE_2_PUK_1)   // 3
+#define LRP_PUK_2               (PHASE_2_PUK_2)   // 4
+#define LRP_NEVER               5
+
+#define PIN_1                   LRP_PIN_1
+#define PIN_2                   LRP_PIN_2
+#define ALWAYS                  LRP_NONE
+#define NEVER                   0xF
+#define PIN_1_OR_2              10
+
+#define ACCESS_READ             0
+#define ACCESS_UPDATE           1
+#define ACCESS_INCREASE         2
+#define ACCESS_REHABILITATE     3
+#define ACCESS_INVALIDATE       4
+
+#define LINEAR_FIXED            1
+
+#define SIM_TIMER               0
+
+/*
+#ifdef SIM_TOOLKIT
+  #define MAX_SAT_TIMER         8
+  #define NUM_OF_SIM_TIMERS    (MAX_SAT_TIMER + 1)
+#else
+  #define NUM_OF_SIM_TIMERS     1
+#endif
+*/
+
+#ifdef FF_SAT_E
+/*
+ * timer definitions
+ * index 0    app_sim_timeout()
+ * index 1..8 SAT timer
+ * index 9    BIP timer
+ */
+#define MAX_SAT_TIMER                 8
+#define NUM_OF_SIM_TIMERS       (MAX_SAT_TIMER + 2)
+#define SIM_BIP_TIMER           (MAX_SAT_TIMER + 1)
+/*
+ * states of DTI connection
+ */
+#define SIM_DTI_CONNECTION_CLOSED     1
+#define SIM_DTI_CONNECTION_BIND       2
+#define SIM_DTI_CONNECTION_SETUP      3
+#define SIM_DTI_CONNECTION_OPEN       4
+/*
+ * states of DTI RX direction
+ */
+#define SIM_DTI_RX_IDLE               5
+#define SIM_DTI_RX_READY              6
+/*
+ * states of DTI TX direction
+ */
+#define SIM_DTI_TX_IDLE               7
+#define SIM_DTI_TX_READY              8
+/*
+ * states of BIP channel
+ */
+#define SIM_BIP_CLOSED                9
+#define SIM_BIP_OPEN                 10
+#define SIM_BIP_CONNECTED            11
+/*
+ * states of BIP RX direction
+ */
+#define SIM_BIP_RX_IDLE              12
+#define SIM_BIP_RX_DATA              13
+/*
+ * states of BIP TX direction
+ */
+#define SIM_BIP_TX_IDLE              14
+#define SIM_BIP_TX_STORE             15
+#define SIM_BIP_TX_SEND              16
+/*
+ * states of BIP release timer
+ */
+#define SIM_BIP_TIMER_DISCONNECTED   18
+#define SIM_BIP_TIMER_NOT_USED       19
+#define SIM_BIP_TIMER_SUSPENDED      20
+#define SIM_BIP_TIMER_STOPPED        21
+#define SIM_BIP_TIMER_START          22
+/*
+ * CCD analysis states
+ */
+#define SIM_CCD_OK                   23
+#define SIM_CCD_RETURN               24
+#define SIM_CCD_DISCARD              25
+/*
+ * initial state for connection qualifier (no status change requested)
+ */
+#define SIM_DTI_CONN_OFF              0
+/*
+ * maximum nuber of bytes in Channel Data element in Termina Response message
+ * message structure:
+ * Command Details:     5 bytes
+ * Device Identities:   4 bytes
+ * Result:              3 bytes (without additional result)
+ * Channel Data:        3 bytes overhead
+ * Channel Data Length: 3 bytes
+ *                    ---------
+ *                     18 bytes
+ * maximum length for any data sent to SIM is 255!
+ */
+#define SIM_TERM_RESP_MAX_CHANNEL_DATA  (255 - 18)
+/*
+ * transmit descriptor size
+ */
+#define SIM_BIP_TX_DESC_SIZE        (100 - sizeof(T_desc2))
+/*
+ * qualifier bits of SEND DATA message
+ */
+#define SIM_QLF_SEND_DATA_1                           0x01
+/*
+ * Definition whether a shared CCD buffer shall be used
+ */
+#define SHARED_CCD_BUF
+
+#elif defined (SIM_TOOLKIT) /* else if FF_SAT_E */
+    #define MAX_SAT_TIMER         8
+    #define NUM_OF_SIM_TIMERS    (MAX_SAT_TIMER + 2)
+  #else /* SIM_TOOLKIT */
+    #define NUM_OF_SIM_TIMERS     2
+#endif
+
+#define SLEEP_TIMER (NUM_OF_SIM_TIMERS - 1) 
+
+#define MAX_STK_LENGTH       80
+
+#ifdef TI_PS_UICC_CHIPSET_15
+#define UICC_READER_ID 0x01
+#endif
+
+/* These are the only two peer second level standard defined DF's supported now.
+   When more second level DF's are getting handled, this macro needs to be 
+   adapted  */
+#define SIM_IS_PEER_LEVEL2_DF(df1,df2) \
+          ((df1 EQ SIM_DF_MEXE AND df2 EQ SIM_DF_SOLSA) || \
+           (df1 EQ SIM_DF_SOLSA AND df2 EQ SIM_DF_MEXE) )
+
+/* These are the only three second level standard defined DF's supported now.
+   When more second level DF's are getting handled, this macro needs to be 
+   adapted  */
+#define SIM_IS_DF_LEVEL2_UNDER_DF_LEVEL1(df_level2, df_level1) \
+          ((df_level2 EQ SIM_DF_MEXE AND \
+              (df_level1 EQ SIM_DF_GSM || df_level1 EQ SIM_DF_1800))  || \
+           (df_level2 EQ SIM_DF_SOLSA AND \
+              (df_level1 EQ SIM_DF_GSM || df_level1 EQ SIM_DF_1800)) || \
+           (df_level2 EQ SIM_DF_GRAPHICS AND df_level1 EQ SIM_DF_TELECOM) )
+
+#define SIM_SYNC_AWAIT_MM_READ   1
+#define SIM_SYNC_AWAIT_MMI_READ  2
+
+/*
++********************************************************************+
+| Moved from sim_stk.c - for CQ 34109 under feature flag SIM_TOOLKIT |
++********************************************************************+
+*/
+
+#ifdef SIM_TOOLKIT
+
+#define STK_REFRESH                      0x01
+#define STK_MORE_TIME                    0x02
+#define STK_POLL_INTERVALL               0x03
+#define STK_POLLING_OFF                  0x04
+#define STK_SETUP_EVENT_LIST             0x05
+
+#define STK_SET_UP_CALL                  0x10
+#define STK_SEND_SS                      0x11
+#define STK_SEND_USSD                    0x12
+#define STK_SEND_SMS                     0x13
+#define STK_SEND_DTMF                    0x14
+#define STK_LAUNCH_BROWSER               0x15
+
+#define STK_PLAY_TONE                    0x20
+#define STK_DISPLAY_TEXT                 0x21
+#define STK_GET_INKEY                    0x22
+#define STK_GET_INPUT                    0x23
+#define STK_SELECT_ITEM                  0x24
+#define STK_SET_UP_MENU                  0x25
+#define STK_PROVIDE_LOCAL_INFO           0x26
+#define STK_TIMER_MANAGEMENT             0x27
+#define STK_SETUP_IDLE_TEXT              0x28
+
+#define STK_RUN_AT_CMD                   0x34
+#define STK_LANGUAGE_NOTIFICATION        0x35
+
+#ifdef FF_SAT_E
+#define STK_OPEN_CHANNEL                 0x40
+#define STK_CLOSE_CHANNEL                0x41
+#define STK_RECEIVE_DATA                 0x42
+#define STK_SEND_DATA                    0x43
+#define STK_GET_CHANNEL_STAT             0x44
+#endif /* FF_SAT_E */
+
+#define STK_COMPREHENSION_REQUIRED       0x80
+
+#define STK_COMMAND_DETAILS_TAG          0x01
+#define STK_COMMAND_DETAILS_LEN             3
+
+#define STK_DEVICE_IDENTITY_TAG          0x02
+#define STK_DEVICE_IDENTITY_LEN             2
+
+#define STK_RESULT_TAG                   0x03
+
+#define STK_DURATION_TAG                 0x04
+#define STK_DURATION_LEN                    2
+
+#define STK_ALPHA_IDENTITY_TAG           0x05
+#define STK_ALPHA_IDENTITY_LEN              1
+                                         
+#define STK_FILE_LIST_TAG                0x12
+#define STK_FILE_LIST_LEN                   1
+
+#define STK_EVENT_LIST_TAG               0x19
+#define STK_EVENT_LIST_LEN                  1
+
+#define STK_ICON_IDENTITY_TAG            0x1E
+#define STK_ICON_IDENTITY_LEN               2
+
+#define STK_TIMER_ID_TAG                 0x24
+#define STK_TIMER_ID_LEN                    1
+
+#define STK_TIMER_VALUE_TAG              0x25
+#define STK_TIMER_VALUE_LEN                 3
+
+#define STK_CHANNEL_DATA_TAG             0x36
+#define STK_CHANNEL_DATA_LEN                1
+
+#define STK_CHANNEL_DATA_LGTH_TAG        0x37
+#define STK_CHANNEL_DATA_LGTH_LEN           1
+
+#define STK_PROACTIVE_SIM_COMMAND_TAG    0xD0
+#define STK_TIMER_EXPIRATION_TAG         0xD7
+
+#define STK_RES_SUCCESS                  0x00
+#define STK_RES_SUCC_PART_COMPR          0x01
+#define STK_RES_SUCC_MISS_INFO           0x02
+#define STK_RES_SUCC_ADD_EF_READ         0x03
+#define STK_RES_SUCC_SESSION_END         0x10
+
+#define STK_RES_BUSY_ME                  0x20
+#define STK_RES_BUSY_NW                  0x21
+#define STK_RES_BUSY_TIMER_STATE         0x24
+
+#define STK_RES_ERR_NO_SUPPORT           0x30
+#define STK_RES_ERR_CMD_TYPE             0x31
+#define STK_RES_ERR_CMD_DATA             0x32
+#define STK_RES_ERR_CMD_NR               0x33
+#define STK_RES_ERR_MISS_VALUE           0x36
+
+#define STK_RES_EXT_DEF                  0x00
+#define STK_RES_EXT_BUSY_CALL            0x02
+#define STK_RES_EXT_NO_SERVICE           0x04
+#define STK_RES_SUCC_LIMITED_SERVICE     0x06
+
+#define STK_MAX_EXP_TAG                  12   /* >= any max_tag entry */
+
+#define item_of(_x_) (sizeof(_x_)/sizeof(_x_[0]))
+#define BCD2INT(_x_) ((_x_&0xF)*10+(_x_>>4))
+#define INT2BCD(_x_) (((_x_%10)<<4)|((_x_/10)&0xF))
+
+#define STK_TP12_CLASS_E    (SAT_TP12_OPEN_CHANNEL | SAT_TP12_CLOSE_CHANNEL\
+                             | SAT_TP12_RECEIVE_DATA | SAT_TP12_SEND_DATA\
+                             | SAT_TP12_GET_CHANNEL_STAT)
+
+/*
+ *  Added for the purpose of checking service mode got from Common Library
+ */
+#define NO_SERVICE                     (0x0)      /* no service available           */
+#define LIMITED_SERVICE                (0x1)      /* Limited service available      */
+#define FULL_SERVICE                   (0x2)      /* Full service available         */
+
+#endif /* SIM_TOOLKIT */
+
+#ifdef GPRS
+/*
+ * provision of PCM definition as long as they are missing in L1
+ */
+#ifndef EF_LOCGPRS_ID
+#define EF_LOCGPRS_ID   "LOCGPRS"       /* Location Inf. (GPRS)     */
+typedef struct EFlocgprs        /* GPRS Location information        */
+{
+  UBYTE ptmsi[4];
+  UBYTE ptmsi_signature[3];
+  UBYTE rai[6];
+  UBYTE ra_status;
+} EF_LOCGPRS;
+
+#define SIZE_EF_LOCGPRS sizeof (EF_LOCGPRS)
+#define NR_EF_LOCGPRS   1
+#endif
+
+#ifndef EF_KCGPRS_ID
+#define EF_KCGPRS_ID    "KCGPRS"        /* Ciphering Key (GPRS)     */
+typedef struct EFkcgprs         /* GPRS Ciphering key               */
+{
+  UBYTE kc[8];
+  UBYTE cksn;
+} EF_KCGPRS;
+
+#define SIZE_EF_KCGPRS sizeof (EF_KCGPRS)
+#define NR_EF_KCGPRS   1
+#endif
+
+#ifndef EF_IMSIGPRS_ID
+#define EF_IMSIGPRS_ID  "IMSIGPRS"      /* IMSI check for GPRS      */
+typedef struct EFimsigprs       /* International Subscriber Id      */
+{
+  UBYTE len;
+  UBYTE IMSI[8];
+} EF_IMSIGPRS;
+
+#define SIZE_EF_IMSIGPRS sizeof (EF_IMSIGPRS)
+#define NR_EF_IMSIGPRS   1
+#endif
+#endif
+
+/*==== TYPES ======================================================*/
+
+/* CHIPCARD RESPONSES */
+
+typedef struct {
+    UBYTE filler1[4];
+    UBYTE fileid[2];
+    UBYTE filler1a[6];
+    UBYTE length;
+    UBYTE characteristics;
+    UBYTE filler2[4];
+    UBYTE pinstatus;
+    UBYTE unbstatus;
+    UBYTE pin2status;
+    UBYTE unb2status;
+    UBYTE sw1, sw2;           // needed by SIM_GetResponse()
+} T_DIR_STATUS;
+#define SIM_MIN_DMF_ST_LEN 22 // Mimimum length for response of SELECT MF/DF
+
+typedef struct {
+    UBYTE  filler1[2];
+    UBYTE  field_size [2];
+    UBYTE  filler2[4];
+    UBYTE  access_1;
+    UBYTE  access_2;
+    UBYTE  access_3;
+    UBYTE  file_status;
+    UBYTE  filler4;
+    UBYTE  field_type;
+    UBYTE  record_length;
+    UBYTE  sw1, sw2;            // needed by SIM_GetResponse()
+} T_FIELD_STATUS;
+#define SIM_MIN_EF_ST_LEN 15    // Minimum length for response of SELECT EF
+
+typedef struct {
+    UBYTE sres[4];
+    UBYTE kc[8];
+    UBYTE sw1, sw2;             // needed by SIM_GetResponse()
+} T_SRES_KC;
+#define SIM_GSM_ALG_LEN 12      // Minimum length for response of RUN GSM ALG
+
+typedef struct {
+    BYTE res_incr[3];
+} T_RES_INCR;
+
+typedef struct {                // format of SAT timer value, given in
+  UBYTE hour;                   // hours,
+  UBYTE minute;                 // minutes and
+  UBYTE second;                 // seconds. Coding as for SCTS (GSM 03.40)
+  UBYTE active;                 // TRUE, if timer is running
+} T_SAT_TIMER;
+
+#ifdef FF_SAT_E 
+/*
+ * struct to transfer IP addresses and UDP ports between UDP and SIM
+ */
+typedef struct {
+  UBYTE src_ip[4];    /* source IP address in network byte order */
+  UBYTE des_ip[4];    /* destination IP address in network byte order */
+  UBYTE src_port[2];  /* source UDP port in network byte order */
+  UBYTE des_port[2];  /* destination UDP port in network byte order */
+} T_SRC_DES;
+#endif /* FF_SAT_E */
+
+/*
+ * Used for requesting location information from RR
+ */
+typedef struct
+{
+  UBYTE stk_class;
+  UBYTE stk_subclass;
+  UBYTE stk_type;
+  UBYTE stk_length;
+  UBYTE stk_parameter [MAX_STK_LENGTH];
+} stk_data_type;
+
+#if defined (SIM_TOOLKIT)
+typedef struct
+{
+  UBYTE          response[256];
+  stk_data_type  stk_data;
+}
+T_STK_POLL_DATA;
+
+/*
+ * Used for the processing of SIM Refresh in stk_proactive_polling() and
+ * stk_sim_refresh_user_res()
+ */
+typedef struct 
+{
+  UBYTE *tag2;                 /* File List. 3rd Tag in STK command */
+  SHORT fl_len;                /* File List Length   */
+  UBYTE *p_cmd;                /* STK command        */
+  SHORT cmd_len;               /* STK command length */
+  UBYTE res_code [2] ;                   
+  T_SIM_TOOLKIT_IND *sig_ptr;                   
+}T_CONTEXT_SWITCH;
+#endif
+
+
+typedef struct
+{
+  // General SIM Variables
+  ULONG          flags;                   // contains several flags for internal handling
+  USHORT         act_directory;           // last selected directory
+  USHORT         act_field;               // last selected elementary field
+  T_TIME         status_time;             // status poll time
+  USHORT         act_length;              // actual file or record length
+  USHORT         sim_data_len;            // response data len
+  USHORT         dir_status_len;          // size of directory status information
+  USHORT         remove_error;            // provides error code for SIM Remove
+  UBYTE          sim_phase;               // sim card phase
+  UBYTE          last_requested_pin_no;   // last requested pin number
+  UBYTE          act_access;              // actual access condition
+  UBYTE          max_record;              // records of actual file
+  UBYTE          field_type;              // of the last selected record
+  UBYTE          sw1;                     // last status code SW1 from SIM
+  UBYTE          sw2;                     // last status code SW2 from SIM
+  // SIM Toolkit Variables
+#ifdef SIM_TOOLKIT
+  UBYTE          sync_awaited;            /* Stores entities from which SYNC_REQ is awaited */
+  UBYTE          file_change_resp;        // tracks response to FILE CHANGE
+  T_CONTEXT_SWITCH *context_switch_ptr;   // Allows handling of SIM Refresh from different threads
+  SHORT          proactive_sim_data_len;
+  USHORT         stk_resp_len;
+  UBYTE          stk_response[16];        // save TERMINAL RESPONSE
+  UBYTE          stk_profile[MAX_STK_PRF];
+  UBYTE          trmst[MAX_TRMST];        // Terminal Support Table
+  USHORT         cell_identity;
+  T_loc_info     location_info;
+  T_SAT_TIMER    timer[MAX_SAT_TIMER];
+  UBYTE          sat_session;             /* SAT session started */
+  UBYTE          ext_sat_cmd;             /* indicator for external SAT commands */
+  UBYTE          term_resp_sent;          /* indicator if Terminal Response was sent */
+  UBYTE          idle_polling;            /* poll SIM in idle mode */
+  UBYTE          chk_sat_avail;           /* check SAT command to be fetched */
+#ifdef FF_SAT_E
+  UBYTE          dti_connection_state;    /* state of DTI connection */
+  UBYTE          dti_rx_state;            /* state of DTI reception */
+  UBYTE          dti_tx_state;            /* state of DTI transmission */
+  UBYTE          event_data_avail;        /* Data available event */
+  UBYTE          bip_ch_id;               /* BIP channel identifier */
+  UBYTE          bip_suspend;             /* BIP suspension state */
+  UBYTE          bip_state;               /* state of BIP channel */
+  UBYTE          bip_rx_state;            /* state of BIP reception */
+  UBYTE          bip_tx_state;            /* state of BIP transmission */
+  UBYTE          bip_timer_state;         /* state of BIP release timer */
+  UBYTE          bip_general_result;      /* general result code for on demand link */
+  UBYTE          bip_add_info_result;     /* additional information for on demand link */
+  UBYTE          con_type;                /* connection type */
+  USHORT         received_data_pos;       /* start of not yet delivered data */
+  DTI_HANDLE     hDTI;                    /* DTILIB handle */
+  T_TIME         bip_release_time;        /* BIP release time */
+  ULONG          link_id;                 /* DTI link identifer */
+  T_desc_list2   data_to_send;            /* DTI data to send */
+  T_desc_list2   prev_data_to_send;       /* last values of DTI data to send */
+  T_desc_list2   received_data;           /* received DTI data */
+  T_SRC_DES      udp_parameters;          /* ports and IP addresses for UDP */
+  T_SIM_DTI_REQ* sim_dti_req;             /* storage of SIM_DTI_REQ primitive */
+  T_SIM_BIP_REQ* sim_bip_req;             /* storage of SIM_BIP_REQ primitive */
+  T_SIM_BIP_CONFIG_REQ* sim_bip_config_req; /* storage of SIM_BIP_CONFIG_REQ primitive */
+  T_cmd_details  bip_rx_cmd_details;      /* command details for RX */
+  T_cmd_details  bip_tx_cmd_details;      /* command details for TX */
+  BUF_cmd_prms   bip_cmd_prms;            /* parameter buffer for RX and TX */
+#endif /* FF_SAT_E */
+  UBYTE          cust_mode;               /* Customer mode, rcvd in SIM_ACTIVATE_REQ */
+  UBYTE          user_confirmation_expected; /* confirmation for SIM REFRESH expected */
+#endif /* SIM_TOOLKIT */
+  // Windows Simulation Variables
+#if defined (_SIMULATION_)
+  USHORT         mode;
+#ifdef FF_DUAL_SIM
+  UBYTE          simu_sim_num;
+#endif /*FF_DUAL_SIM*/
+#endif /* _SIMULATION_ */
+#ifdef FF_DUAL_SIM
+  UBYTE          SIM_Selection;
+  USHORT         sim_num;
+#endif /*FF_DUAL_SIM*/
+} T_SIM_DATA;
+
+typedef struct
+{
+  UBYTE invers;
+  UBYTE atr_size;
+  UBYTE atr_data[MAX_SIM_ATR];
+}
+T_SIM_CARD;
+
+#if defined (SIM_TOOLKIT)
+typedef struct                          // simple TERMINAL RESPONSE without parameters
+{
+  UBYTE          cmd_tag;               // command details tag
+  UBYTE          cmd_len;               // command details length = 3
+  UBYTE          cmd_nr;                // command reference number
+  UBYTE          cmd_type;              // command type
+  UBYTE          cmd_qulf;              // command qualifier
+  UBYTE          dev_tag;               // device identities tag
+  UBYTE          dev_len;               // device identities length = 2
+  UBYTE          dev_src;               // source device identity
+  UBYTE          dev_dest;              // destination device identity
+  UBYTE          res_tag;               // result length tag
+  UBYTE          res_len;               // result length
+  UBYTE          res_gnrl;              // general result
+  UBYTE          res_add_info[1];       // additional information on result
+} T_SIM_TRSP_SIMPLE;
+#define SAT_TRSP_HEADER    9
+#define SAT_TRSP_MIN_RES  12
+#endif
+
+
+/*
+ * FLAGS
+ *
+ * The SIM entity contains several flags. To save RAM all flags
+ * are handled in a bit array.
+ *
+ * The following Macros are used
+ *
+ * SIM_SET_FLAG (bit)         sets the corresponding bit
+ * SIM_CLEAR_FLAG (bit)       clears the corresponding bit
+ * SIM_IS_FLAG_SET (bit)      checks whether the corresponding bit is set
+ * SIM_IS_FLAG_CLEARED (bit)  checks whether the corresponding bit is cleared
+ *
+ */
+#define SIM_SET_FLAG(bit)          (sim_data.flags |= (1UL<<bit))
+#define SIM_CLEAR_FLAG(bit)        (sim_data.flags &= ~(1UL<<bit))
+#define SIM_IS_FLAG_SET(bit)       (sim_data.flags & (1UL<<bit))
+#define SIM_IS_FLAG_CLEARED(bit)  ((sim_data.flags & (1UL<<bit)) EQ 0)
+/*
+ * The following flags are defined:
+ *
+ * ADN_SUPPORT_BY_SIM (bit 0)
+ * 1   The current SIM supports ADN
+ * 0   The current SIM doesn´t support ADN
+ */
+#define ADN_SUPPORT_BY_SIM 0
+/*
+ * FDN_SUPPORT_BY_SIM (bit 1)
+ * 1   The current SIM supports FDN
+ * 0   The current SIM doesn´t support FDN
+ */
+#define FDN_SUPPORT_BY_SIM 1
+/*
+ * BDN_SUPPORT_BY_SIM (bit 2)
+ * 1   The current SIM supports BDN
+ * 0   The current SIM doesn´t support BDN
+ */
+#define BDN_SUPPORT_BY_SIM 2
+/*
+ * FDN_SUPPORT_BY_MMI (bit 3)
+ * 1   The current MMI supports FDN
+ * 0   The current MMI doesn´t support FDN
+ */
+#define FDN_SUPPORT_BY_MMI 3
+/*
+ * BDN_SUPPORT_BY_SIM (bit 4)
+ * 1   The current MMI supports BDN
+ * 0   The current MMI doesn´t support BDN
+ */
+#define BDN_SUPPORT_BY_MMI 4
+/*
+ * CC_WITH_STK (bit 5)
+ * 1   The current MMI supports Call Control with SIM Toolkit
+ * 0   The current MMI supports Call Control with SIM Toolkit
+ */
+#define CC_WITH_STK 5
+/*
+ * SERVICE_2_SUPPORT (bit 6)
+ * 1   The current SIM supports service 2 (FDN)
+ * 0   The current SIM supports service 2 (FDN)
+ */
+#define SERVICE_2_SUPPORT 6
+/*
+ * SERVICE_3_SUPPORT (bit 7)
+ * 1   The current SIM supports service 3 (ADN)
+ * 0   The current SIM supports service 3 (ADN)
+ */
+#define SERVICE_3_SUPPORT 7
+/*
+ * SERVICE_4_SUPPORT (bit 8)
+ * 1   The current SIM supports service 4 (SMS Status)
+ * 0   The current SIM supports service 4 (SMS Status)
+ */
+#define SERVICE_4_SUPPORT 8
+/*
+ * SERVICE_7_SUPPORT (bit 9)
+ * 1   The current SIM supports service 7 (Preferred PLMN)
+ * 0   The current SIM supports service 7 (Preferred PLMN)
+ */
+#define SERVICE_7_SUPPORT 9
+/*
+ * SERVICE_26_SUPPORT (bit 10)
+ * 1   The current SIM supports service 26 (Data Download via SMS)
+ * 0   The current SIM supports service 26 (Data Download via SMS)
+ */
+#define SERVICE_26_SUPPORT 10
+/*
+ * SERVICE_31_SUPPORT (bit 11)
+ * 1   The current SIM supports service 31 (BDN)
+ * 0   The current SIM supports service 31 (BDN)
+ */
+#define SERVICE_31_SUPPORT 11
+/*
+ * GSM_DATAFIELD (bit 12)
+ * 1   The initial directory is DF 900
+ * 0   The initial directory is DF 1800
+ */
+#define GSM_DATAFIELD 12
+/*
+ * SIM_INSERT (bit 13)
+ * 1   SIM is inserted
+ * 0   SIM is not inserted
+ */
+#define SIM_INSERT 13
+/*
+ * MM_KNOWS_FROM_SIM (bit 14)
+ * 1   MM knows from the SIM card content
+ * 0   MM doesn´t know from the SIM card content
+ */
+#define MM_KNOWS_FROM_SIM 14
+/*
+ * SIM_PIN_FLAG (bit 15)
+ * 1   PIN entering is needed
+ * 0   PIN entering is not needed
+ */
+#define SIM_PIN_FLAG 15
+/*
+ * PRO_ACTIVE_SIM (bit 16)
+ * 1   The current SIM supports SIM Toolkit
+ * 0   The current SIM doesn't support SIM Toolkit
+ */
+#define PRO_ACTIVE_SIM 16
+/*
+ * ACTIVATION_STARTED (bit 17)
+ * 1   Activation started by MMI
+ * 0   Activation started by SIM driver
+ */
+#define ACTIVATION_STARTED 17
+/*
+ * CALL_ACTIVE (bit 18)
+ * 1   A call is active
+ * 0   No call is active
+ */
+#define CALL_ACTIVE 18
+/*
+ * SERVICE_1_SUPPORT (bit 19)
+ * 1   The current SIM supports service 1 (CHV1 disabling)
+ * 0   The current SIM doesn't support service 1
+ */
+#define SERVICE_1_SUPPORT 19
+/*
+ * SERVICE_35_SUPPORT (bit 20)
+ * 1   The current SIM supports service 35 (SM Status Report Storage)
+ * 0   The current SIM doesn't support service 35
+ */
+#define SERVICE_35_SUPPORT 20
+/*
+ * SERVICE_39_SUPPORT (bit 21)
+ * 1   Image files (icons) may exist on the SIM
+ * 0   no Image files exist on the SIM
+ */
+#define DF_GRAPHICS_EXISTENT 21
+/*
+ * SERVICE_40_SUPPORT (bit 21)
+ * 1   SOLSA files may exist on the SIM
+ * 0   no SOLSA files exist on the SIM
+ */
+#define DF_SOLSA_EXISTENT 22
+/*
+ * SERVICE_38_SUPPORT (bit 23)
+ * 1   The current SIM supports service 38 (GPRS Storage)
+ * 0   The current SIM doesn't support service X
+ */
+#define SERVICE_38_SUPPORT 23
+
+#ifdef REL99
+/*
+ * SERVICE_43_SUPPORT (bit 26)
+ * 1   The current SIM supports service 43 (user controlled PLMN Selector with Access Technology)
+ * 0   The current SIM supports service 43 (user controlled PLMN Selector with Access Technology)
+ */
+#define SERVICE_43_SUPPORT 26
+/*
+ * SERVICE_44_SUPPORT (bit 27)
+ * 1   The current SIM supports service 44 (Operator controlled PLMN Selector with Access Technology)
+ * 0   The current SIM supports service 44 (Operator controlled PLMN Selector with Access Technology)
+ */
+#define SERVICE_44_SUPPORT 27
+#endif /* REL99 */
+
+/*
+ * SERVICE_41_SUPPORT (bit 22)
+ * 1   ORANGE files may exist on the SIM
+ * 0   no ORANGE files exist on the SIM
+ */
+#define DF_ORANGE_EXISTENT 25
+/*
+ * Handling of SIM retry failure
+ * 1   SIM driver cannot recover from a communication problem even
+ *     after several retries of the last SIM command; SIM reset is
+ *     required
+ * 0   normal
+ */
+#define DRV_FAILED_RETRY 29
+/*
+ * Handling of Poll Interval
+ * 1   MS uses Test SIM or Test Network, Polling not restarted
+ * 0   normal, the last SIM access of any prcedure restarts Polling
+ * Setting 1 is compliant with test case 27.22.4.6 of GSM 11.10-4,
+ * Setting 0 is compliant with clause 11.2.1/11.2.8 in GSM 11.11
+ */
+#define TEST_MODE_POLLING 30
+/*
+ * Recognition of Test SIM
+ * 1   Bit 8 of Byte 1 of EF(AD) indicates a Test SIM
+ * 0   Bit 8 of Byte 1 of EF(AD) does not indicate a Test SIM
+ * This can be used to control the behaviour of the SIM Entity
+ */
+#define TEST_SIM_INSERTED 31
+
+/*==== EXPORT =====================================================*/
+
+#ifdef FF_SAT_E
+/*
+ * CCD decode buffer
+ */
+#ifdef OPTION_MULTITHREAD
+  #define _decodedMsg   _ENTITY_PREFIXED(_decodedMsg)
+#endif /* OPTION_MULTITHREAD */
+#ifdef SHARED_CCD_BUF
+#define CCD_START _decodedMsg = ccd_begin();
+#define CCD_END   ccd_end();
+#else /* SHARED_CCD_BUF */
+#define CCD_START
+#define CCD_END
+#endif /* else SHARED_CCD_BUF */
+
+#ifdef SIM_PEI_C
+#ifdef SHARED_CCD_BUF
+GLOBAL UBYTE* _decodedMsg;
+#else /* SHARED_CCD_BUF */
+GLOBAL UBYTE _decodedMsg[MAX_MSTRUCT_LEN_SAT];
+#endif  /* else SHARED_CCD_BUF */
+#else /* SIM_PEI_C */
+#ifdef SHARED_CCD_BUF
+EXTERN UBYTE* _decodedMsg;
+#else /* SHARED_CCD_BUF */
+EXTERN UBYTE _decodedMsg[MAX_MSTRUCT_LEN_SAT];
+#endif  /* else SHARED_CCD_BUF */
+#endif /* else SIM_PEI_C */
+#endif  /* FF_SAT_E */
+
+/*
+ * Prototypes SIM Driver
+ */
+GLOBAL void   SIM_Init                 (void (*insert)(T_SIM_CARD * p_atr),
+                                        void (*remove)(void));
+GLOBAL void   SIM_Initialize           (void);
+GLOBAL USHORT SIM_Register             (void (*insert)(T_SIM_CARD * p_atr),
+                                        void (*remove)(void));
+GLOBAL USHORT SIM_Reset                (T_SIM_CARD * p_atr);
+#ifdef _SIMULATION_
+#define SIM_Restart                    SIM_Reset
+#else
+GLOBAL USHORT SIM_Restart              (T_SIM_CARD * p_atr);
+#endif
+GLOBAL void   SIM_PowerOff             (void);
+#ifdef FF_DUAL_SIM
+GLOBAL USHORT SIM_SwitchDualSIM        (UBYTE sim_num);
+GLOBAL USHORT SIM_GetSIM               (void);
+#endif /*FF_DUAL_SIM*/
+GLOBAL USHORT SIM_ChangeCHV            (UBYTE      * result,
+                                        UBYTE      * oldCHV,
+                                        UBYTE      * newCHV,
+                                        UBYTE        chvType,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_DisableCHV           (UBYTE      * result,
+                                        UBYTE      * CHV,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_EnableCHV            (UBYTE      * result,
+                                        UBYTE      * CHV,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_GetResponse          (UBYTE      * result,
+                                        USHORT       len,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_Increase             (UBYTE      * result,
+                                        UBYTE      * dat,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_Invalidate           (UBYTE      * result,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_ReadBinary           (UBYTE      * result,
+                                        USHORT       offset,
+                                        USHORT       len,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_ReadRecord           (UBYTE      * result,
+                                        UBYTE        mode,
+                                        UBYTE        recNum,
+                                        USHORT       len,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_Rehabilitate         (UBYTE      * result,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_RunGSMAlgo           (UBYTE      * result,
+                                        UBYTE      * rand,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_Select               (USHORT       id,
+                                        UBYTE      * dat,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_Status               (UBYTE      * result,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_Status_Extended      (UBYTE      * result,
+                                        USHORT       len,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_UnblockCHV           (UBYTE      * result,
+                                        UBYTE      * unblockCHV,
+                                        UBYTE      * newCHV,
+                                        UBYTE        chvType,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_UpdateBinary         (UBYTE      * result,
+                                        UBYTE      * dat,
+                                        USHORT       offset,
+                                        USHORT       len,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_UpdateRecord         (UBYTE      * result,
+                                        UBYTE      * dat,
+                                        UBYTE        mode,
+                                        UBYTE        recNum,
+                                        USHORT       len,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_VerifyCHV            (UBYTE      * result,
+                                        UBYTE      * chv,
+                                        UBYTE        chvType,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_TerminalResponse     (UBYTE      * result,
+                                        UBYTE      * dat,
+                                        USHORT       len,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_TerminalProfile      (UBYTE      * result,
+                                        UBYTE      * data,
+                                        USHORT       length,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_Fetch                (UBYTE      * result,
+                                        USHORT       length,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_Envelope             (UBYTE      * result,
+                                        UBYTE      * dat,
+                                        USHORT       len,
+                                        USHORT     * size);
+GLOBAL USHORT SIM_XchTPDU              (UBYTE      * dat,
+                                        USHORT       trxLen,
+                                        UBYTE      * result,
+                                        USHORT       rcvLen,
+                                        USHORT     * rcvSize);
+GLOBAL void SIM_lock_cr17689(void);    /* force driver version supporting ATR provision */
+/*
+ * Prototypes Wrapping Functions
+ */
+GLOBAL UBYTE  FKT_check_pin_count      (UBYTE        count);
+GLOBAL USHORT FKT_convert_error        (USHORT       sw1sw2, USHORT       size);
+GLOBAL USHORT FKT_ChangeCHV            (UBYTE      * old_pin,
+                                        UBYTE      * new_pin,
+                                        UBYTE        pin_id);
+GLOBAL USHORT FKT_DisableCHV           (UBYTE      * pin);
+GLOBAL USHORT FKT_EnableCHV            (UBYTE      * pin);
+#ifndef TI_PS_UICC_CHIPSET_15
+GLOBAL USHORT FKT_GetResponse          (UBYTE      * data,
+                                        USHORT       len);
+#endif
+GLOBAL USHORT FKT_Increase             (UBYTE      * data);
+GLOBAL USHORT FKT_Invalidate           (void);
+GLOBAL USHORT FKT_ReadBinary           (UBYTE      * data,
+                                        USHORT       offset,
+                                        USHORT       len);
+GLOBAL USHORT FKT_ReadRecord           (UBYTE      * data,
+                                        UBYTE        mode,
+                                        USHORT       record,
+                                        USHORT       length);
+GLOBAL USHORT FKT_Rehabilitate         (void);
+GLOBAL USHORT FKT_RunGSMAlgo           (UBYTE      * rand, UBYTE      * data, USHORT       len);
+GLOBAL USHORT FKT_Select               (USHORT       id,
+                                        BOOL         path_info_present, T_path_info * path_info_ptr,
+                                        UBYTE      * data, USHORT  len);
+GLOBAL USHORT FKT_UnblockCHV           (UBYTE      * unblockCHV,
+                                        UBYTE      * new_CHV,
+                                        UBYTE        chvType);
+GLOBAL USHORT FKT_UpdateBinary         (UBYTE      * data,
+                                        USHORT       length,
+                                        USHORT       offset);
+GLOBAL USHORT FKT_UpdateRecord         (UBYTE      * data,
+                                        USHORT       length,
+                                        UBYTE        mode,
+                                        USHORT       record);
+GLOBAL USHORT FKT_VerifyCHV            (UBYTE      * pin,
+                                        UBYTE        pin_id);
+
+GLOBAL USHORT FKT_Status               (UBYTE      * pin_cnt,
+                                        UBYTE      * pin2_cnt,
+                                        UBYTE      * puk_cnt,
+                                        UBYTE      * puk2_cnt);
+GLOBAL USHORT FKT_TerminalResponse     (UBYTE      * data,
+                                        USHORT       length);
+GLOBAL USHORT FKT_TerminalProfile      (UBYTE      * data,
+                                        USHORT       length);
+GLOBAL USHORT FKT_Fetch                (UBYTE      * cmd,
+                                        USHORT       length);
+GLOBAL USHORT FKT_Envelope             (UBYTE      * data_out, UBYTE      * data_in,
+                                        USHORT       in_length,  USHORT       out_length);
+/*
+ * Prototypes Application
+ */
+
+GLOBAL void app_init_sim_data        (void);
+GLOBAL void app_sim_read_req         (T_SIM_READ_REQ           * sim_read_req);
+GLOBAL void app_sim_read_record_req  (T_SIM_READ_RECORD_REQ    * sim_read_record_req);
+GLOBAL void app_sim_update_req       (T_SIM_UPDATE_REQ         * sim_update_req);
+GLOBAL void app_sim_update_record_req(T_SIM_UPDATE_RECORD_REQ  * sim_update_record_req);
+GLOBAL void app_sim_increment_req    (T_SIM_INCREMENT_REQ      * sim_increment_req);
+GLOBAL void app_sim_verify_pin_req   (T_SIM_VERIFY_PIN_REQ     * sim_verify_pin_req);
+GLOBAL UBYTE app_sim_mm_insert_ind    (T_SIM_MMI_INSERT_IND     * sim_mmi_insert_ind);
+GLOBAL void app_sim_mmi_insert_ind   (T_SIM_MMI_INSERT_IND     * sim_mmi_insert_ind,
+                                            UBYTE                      func);
+GLOBAL void app_sim_sms_insert_ind   (void);
+GLOBAL void app_sim_change_pin_req   (T_SIM_CHANGE_PIN_REQ     * sim_change_pin_req);
+GLOBAL void app_sim_disable_pin_req  (T_SIM_DISABLE_PIN_REQ    * sim_disable_pin_req);
+GLOBAL void app_sim_enable_pin_req   (T_SIM_ENABLE_PIN_REQ     * sim_enable_pin_req);
+GLOBAL void app_sim_unblock_req      (T_SIM_UNBLOCK_REQ        * sim_unblock_req);
+GLOBAL void app_sim_auth_req         (T_SIM_AUTHENTICATION_REQ * sim_authentication_req);
+#ifndef TI_PS_UICC_CHIPSET_15
+GLOBAL void app_sim_insert (T_SIM_CARD *p_atr);
+#endif /*!TI_PS_UICC_CHIPSET_15*/
+GLOBAL void app_sim_remove           (void);
+GLOBAL void app_sim_timeout          (U16 timer);
+GLOBAL void app_sim_mm_update_req    (T_SIM_MM_UPDATE_REQ      * sim_mm_update_req);
+GLOBAL void app_sim_sync_req         (T_SIM_SYNC_REQ           * sim_sync_req);
+GLOBAL void app_sim_activate_req     (T_SIM_ACTIVATE_REQ       * sim_activate_req);
+GLOBAL void app_sim_access_req       (T_SIM_ACCESS_REQ         * sim_access_req);
+GLOBAL void app_sim_read_parameters  (void);
+GLOBAL void app_sim_phase            (void);
+GLOBAL void app_sim_card_error       (USHORT                     error);
+GLOBAL UBYTE app_sim_check_service    (UBYTE                      nr,
+                                            UBYTE                    * serv_table);
+GLOBAL void app_perform_profile_download (void);
+GLOBAL UBYTE app_fdn_bdn_procedures       (T_SIM_MMI_INSERT_IND * sim_mmi_insert_ind);
+GLOBAL UBYTE app_check_imsi_loci_validation (void);
+GLOBAL UBYTE app_bdn_capability_request     (void);
+GLOBAL UBYTE app_fdn_capability_request     (void);
+GLOBAL UBYTE app_rehabilitate_imsi_loci     (void);
+GLOBAL UBYTE app_get_fdn_status             (void);
+GLOBAL void app_start_status_timer         (BOOL condx);
+GLOBAL BOOL  app_check_access_conditions    (UBYTE proc,
+                                                  T_FIELD_STATUS *field_status);
+
+#define SERVICE(n,p) app_sim_check_service(n,p)
+
+EXTERN T_SIM_DATA sim_data;
+
+/*
+*  These Functions are only temporary valid and should replaced as soon as possible
+*/
+EXTERN UBYTE get_network_meas   (UBYTE * chan_list);
+EXTERN UBYTE get_bcch_chan_list (stk_data_type * out_stk_data);
+
+
+#ifdef SIM_TOOLKIT
+#ifdef TI_PS_FF_AT_P_CMD_CUST
+GLOBAL void stk_sim_refresh_user_res      (T_SIM_REFRESH_USER_RES * sim_refresh_user_res);
+#endif /* TI_PS_FF_AT_P_CMD_CUST */
+GLOBAL void stk_check_tp                  (UBYTE *out_prf,
+                                                 UBYTE *in_prf,
+                                                 USHORT len);
+GLOBAL void stk_perform_profile_download  (void);
+GLOBAL void stk_proactive_polling         (void);
+GLOBAL void stk_stop_all_sat_timers       (void);
+GLOBAL void stk_init_sim_data             (void);
+#ifdef FF_SAT_E
+GLOBAL void stk_dti_connection_opened     (void);
+GLOBAL void stk_dti_connection_closed     (void);
+GLOBAL void stk_dti_data_received         (T_DTI2_DATA_IND* dti_data_ind);
+GLOBAL void stk_dti_tx_buffer_full        (void);
+GLOBAL void stk_dti_tx_buffer_ready       (void);
+GLOBAL UBYTE stk_dti_bip_send_data         (T_sdu* message);
+
+GLOBAL void stk_udp_bind_cnf              (T_UDP_BIND_CNF* udp_bind_cnf);
+GLOBAL void stk_udp_closeport_cnf         (T_UDP_CLOSEPORT_CNF* udp_closeport_cnf);
+GLOBAL void stk_udp_error_ind             (T_UDP_ERROR_IND* udp_error_ind);
+GLOBAL void stk_udp_shutdown_ind          (T_UDP_SHUTDOWN_IND* udp_shutdown_ind);
+
+GLOBAL void stk_sim_dti_req               (T_SIM_DTI_REQ* sim_dti_req);
+GLOBAL void stk_sim_bip_req               (T_SIM_BIP_REQ* sim_bip_req);
+GLOBAL void stk_sim_bip_config_req        (T_SIM_BIP_CONFIG_REQ* sim_bip_config_req);
+GLOBAL void stk_sim_eventlist_req         (T_SIM_EVENTLIST_REQ* sim_eventlist_req);
+#endif /* FF_SAT_E */
+GLOBAL void stk_sim_toolkit_res           (T_SIM_TOOLKIT_RES * sim_toolkit_res);
+GLOBAL void stk_sim_toolkit_req           (T_SIM_TOOLKIT_REQ * sim_toolkit_req);
+GLOBAL void stk_file_update_res           (T_SIM_FILE_UPDATE_RES * file_update_res);
+GLOBAL void stk_timeout (USHORT index);
+#endif /* SIM_TOOLKIT */
+
+#if defined (GPRS)
+GLOBAL void gprs_gmm_insert_ind           (T_SIM_MM_INSERT_IND *sim_mm_insert_ind);
+GLOBAL void gprs_sim_gmm_update_req       (T_SIM_GMM_UPDATE_REQ *sim_gmm_update_req);
+GLOBAL       BOOL gprs_check_pcm_data           (T_imsi_field *sim_imsi);
+#endif
+
+/*
+* for test cases only
+*/
+#if defined _SIMULATION_ && defined FF_SAT_E
+EXTERN USHORT csf_sim_pei_timeout (USHORT index);
+#endif /* _SIMULATION &&_FF_SAT_E */
+
+
+/*
+ * If all entities are linked into one module this definitions
+ * prefixes the global data with the enity name
+ */
+
+
+#ifdef TI_PS_HCOMM_CHANGE
+#ifdef OPTION_MULTITHREAD
+#ifdef FF_SAT_E
+  #define hCommUDP        _ENTITY_PREFIXED(hCommUDP)
+#endif /* FF_SAT_E */
+#if defined (GPRS)
+  #define hCommGMM        _ENTITY_PREFIXED(hCommGMM)
+#endif /* GPRS */
+#endif /* OPTION_MULTITHREAD */
+
+#ifdef FF_SAT_E
+EXTERN T_HANDLE hCommUDP;                /* UDP  Communication       */
+#endif /* FF_SAT_E */
+#if defined (GPRS)
+#define GMM hCommGMM
+EXTERN T_HANDLE hCommGMM;                /* SMS  Communication       */
+#endif /* GPRS */
+EXTERN T_HANDLE sim_handle;
+
+#else
+#ifdef OPTION_MULTITHREAD
+  #define hCommSMS        _ENTITY_PREFIXED(hCommSMS)
+  #define hCommMM         _ENTITY_PREFIXED(hCommMM)
+  #define hCommMMI        _ENTITY_PREFIXED(hCommMMI)
+#ifdef FF_SAT_E
+  #define hCommUDP        _ENTITY_PREFIXED(hCommUDP)
+#endif /* FF_SAT_E */
+#ifdef _SIMULATION_
+  #define hCommSIM        _ENTITY_PREFIXED(hCommSIM)
+#endif
+#if defined (GPRS)
+  #define hCommGMM        _ENTITY_PREFIXED(hCommGMM)
+#endif /* GPRS */
+#endif /* OPTION_MULTITHREAD */
+EXTERN T_HANDLE hCommMM;                 /* MM   Communication       */
+EXTERN T_HANDLE hCommMMI;                /* MMI  Communication       */
+EXTERN T_HANDLE hCommSMS;                /* SMS  Communication       */
+#ifdef FF_SAT_E
+EXTERN T_HANDLE hCommUDP;                /* UDP  Communication       */
+#endif /* FF_SAT_E */
+#ifdef _SIMULATION_
+EXTERN T_HANDLE hCommSIM;                /* TEST CASES: TAP Communication */
+#endif
+#if defined (GPRS)
+#define GMM hCommGMM
+EXTERN T_HANDLE hCommGMM;                /* SMS  Communication       */
+#endif /* GPRS */
+EXTERN T_HANDLE sim_handle;
+#endif /* TI_PS_HCOMM_CHANGE */
+
+#endif /* !SIM_H */