view src/aci2/mfw/mfw_gprs.h @ 662:8cd8fd15a095

SIM speed enhancement re-enabled and made configurable TI's original code supported SIM speed enhancement, but Openmoko had it disabled, and OM's disabling of speed enhancement somehow caused certain SIM cards to start working which didn't work before (OM's bug #666). Because our FC community is much smaller in year 2020 than OM's community was in their day, we are not able to find one of those #666-affected SIMs, thus the real issue they had encountered remains elusive. Thus our solution is to re-enable SIM speed enhancement and simply wait for if and when someone runs into a #666-affected SIM once again. We provide a SIM_allow_speed_enhancement global variable that allows SIM speed enhancement to be enabled or disabled per session, and an /etc/SIM_spenh file in FFS that allows it to enabled or disabled on a non-volatile basis. SIM speed enhancement is now enabled by default.
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 24 May 2020 05:02:28 +0000
parents 93999a60b835
children
line wrap: on
line source

/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417)         $Workfile:: mfw_gprs.h      $|
| $Author: KGT                          $Revision:: 1               $|
| CREATED: 13.02.2001                   $Modtime::  13.02.2001      $|
| STATE  : code                                                      |
+--------------------------------------------------------------------+

   MODULE  : MFW_GPRS

   PURPOSE : This modul contains definition needed for the GPRS 
             management in MFW.
             
   $History: Mfw_gprs.h

	Feb 24, 2006 REF:DR OMAPS00068976 x0035544
	Description: GPRS attach icon - MMI follow up issue of OMAPS00051034
	solution: Added the structure variable p_reg_State to the union and named it
	as Reg_state. This structure stores the network registration status information
	given by qAT_percentCREG().
	
	15/05/2003 - SPR#1983 - SH - Updated to latest from 1.6.3 version.

   $End
*/

#ifndef DEF_MFW_GPRS_HEADER
#define DEF_MFW_GPRS_HEADER


/* GPRS events -----------------------------------------------------*/
#define E_MFW_GPRS_S_CNTXT       0x00000001
#define E_MFW_GPRS_S_ATT         0x00000002
#define E_MFW_GPRS_S_ACT         0x00000004
#define E_MFW_GPRS_R_ACT         0x00000008
#define E_MFW_GPRS_S_DATA        0x00000010
#define E_MFW_GPRS_R_DATA        0x00000020
#define E_MFW_GPRS_S_QOS         0x00000040
#define E_MFW_GPRS_R_QOS         0x00000080
#define E_MFW_GPRS_S_QOS_MIN     0x00000100
#define E_MFW_GPRS_S_CLASS       0x00000200
#define E_MFW_GPRS_S_PDPADDR     0x00000400
#define E_MFW_GPRS_S_AUTORESP    0x00000800
#define E_MFW_GPRS_S_ANS         0x00001000
#define E_MFW_GPRS_R_ANS         0x00002000
#define E_MFW_GPRS_S_EREP        0x00004000
#define E_MFW_GPRS_R_EREP_RJ     0x00008000
#define E_MFW_GPRS_R_EREP_ATT    0x00010000
#define E_MFW_GPRS_R_EREP_ACT    0x00020000
#define E_MFW_GPRS_R_EREP_DEACT  0x00040000
#define E_MFW_GPRS_R_EREP_CLASS  0x00080000
#define E_MFW_GPRS_R_REG         0x00200000
#define E_MFW_GPRS_S_SMSSERV     0x00400000
#define E_MFW_GPRS_OK            0x00800000
#define E_MFW_GPRS_ERROR         0x01000000
#define E_MFW_GPRS_CONNECT       0x02000000
#define E_MFW_GPRS_ERR_CONNECT   0x04000000
#define E_MFW_GPRS_COUNTER			0x08000000

#define E_MFW_GPRS_ALL_EVENTS		0x0FFFFFFF


/* GPRS Parameter --------------------------------------------------*/

/* Data Counter */
typedef struct
{
	UBYTE c_id;
	ULONG octets_uplink;				/* No. of bytes transferred in uplink */
	ULONG octets_downlink;				/* No. of bytes transferred in downlink */
	ULONG packets_uplink;				/* No. of packets transferred in uplink */
	ULONG packets_downlink;				/* No. of packets transferred in uplink */
} T_MFW_GPRS_COUNTER;

/* Structure to store cell reselection information. */
typedef struct
{
	T_CGREG_STAT stat;
	USHORT       lac; 
	USHORT       ci;
} T_MFW_GPRS_CELL_STRUCT;

typedef struct
{
	T_P_CGREG_STAT stat;
	USHORT       lac; 
	USHORT       ci;
} T_MFW_GPRS_CELL_STRUCT_P;

typedef struct        
{
#ifdef FF_2TO1_PS
  U8                     id;           /* context id                  */
  T_PDP_CONTEXT_INTERNAL data;         /* context data                */
#else
  USHORT               id;           /* context id                  */
  T_GPRS_CONT_REC      data;         /* context data                */
#endif
  BOOL                 activated;    /* context mode                */
  char                 *L2P;          /* layer 2 protocol            */
} T_MFW_GPRS_CONTEXT;

typedef struct        
{
  USHORT               *ids;         /* context ids                 */
  BOOL                 state;        /* activation state            */
} T_MFW_GPRS_CNTXT_ACT;

typedef struct        
{
  USHORT              *ids;          /* context ids                 */
  char                *L2P;          /* layer 2 protocol            */
} T_MFW_GPRS_CNTXT_L2P;

typedef struct        
{
  T_CGEREP_MODE        mode;         /* event reporting mode        */
  T_CGEREP_BFR         bfr;          /* effect control on buffered events */
} T_MFW_GPRS_EVENTREP;

typedef struct
{
  T_MFW_GPRS_CONTEXT   *contexts;    /* list of defined contexts    */
  USHORT               numContexts;  /* number of defined contexts  */
  T_CGATT_STATE           attached;    /* Now T_CGATT_STATE instead of BOOL*/
  BOOL                 autoResponse; /* auto response mode          */
  T_MFW_GPRS_EVENTREP  eventRep;     /* event reporting             */
  T_CGCLASS_CLASS      tclass;        /* GPRS class mode             */
//x0035544 Feb 23, 2006 DR:OMAPS00068976
  union
  	{
  T_CGREG_STAT         regState;     /* network registration state  */
  T_P_CGREG_STAT	p_reg_State;/* present network registration state  */
  	}Reg_state;
  T_CGSMS_SERVICE      SMSService;   /* service to use for SMS      */
  USHORT               link_id;      /* link identifier for data transfer  */
  T_MFW_GPRS_COUNTER	counter;	/* Data uplink/downlink counter */
  USHORT				lac;		/* Location area code */
  USHORT				ci;			/* Cell id */
} T_MFW_GPRS_DATA;

typedef union
{
  SHORT                cID;
  T_MFW_GPRS_CONTEXT   context;
  T_MFW_GPRS_CNTXT_ACT contextAct;
  T_MFW_GPRS_CNTXT_L2P contextL2P;
  BOOL                 mode;
  T_CGATT_STATE			attached; /* Now T_CGATT_STATE instead of BOOL*/
  T_CGCLASS_CLASS      tclass;
  T_MFW_GPRS_EVENTREP  eventRep;
  T_EVENT_REJECT       erepReject;
  T_EVENT_ACT          erepAct;
  T_MFW_GPRS_CELL_STRUCT cell;	/* Cell reselection data */
  T_CGSMS_SERVICE      service;
  USHORT               link_id;
  T_ACI_AT_CMD         cmdId;
  T_MFW_GPRS_COUNTER	counter;	/* Data uplink/downlink counter */
} T_MFW_GPRS_PARA;


/* MFW Control Block for GPRS --------------------------------------*/
typedef struct
{
  T_MFW_EVENT          emask;          /* events of interest        */
  T_MFW_EVENT          event;          /* current event             */
  T_MFW_CB             handler;        /* callback handler          */
  T_MFW_GPRS_DATA      data;           /* GPRS data                 */
} T_MFW_GPRS;



/* MFW internal functions ------------------------------------------*/

void      gprs_init   ( void );

void      gprs_exit   ( void );

T_MFW_HND gprs_create ( T_MFW_HND   hWin,
                        T_MFW_EVENT event,
                        T_MFW_CB    cbfunc );

T_MFW_RES gprs_delete ( T_MFW_HND   h );

int       gprsCommand ( U32         cmd, 
                        void        *h ); 

void      gprs_signal ( T_MFW_EVENT event, 
                        void        *para );

void      gprs_ok(T_ACI_AT_CMD cmdId);
void      gprs_error(T_ACI_AT_CMD cmdId, T_ACI_CME_ERR err);
void      gprs_connect(SHORT cId);
void      gprs_err_connect(SHORT cId);

/* MMI-MFW Interface Functions -------------------------------------*/

#ifndef FF_2TO1_PS
T_MFW_RES gprs_definePDPContext ( SHORT           cid, 
                                  T_GPRS_CONT_REC *inputCtxt );

T_MFW_RES gprs_setQOS           ( SHORT           cid ,
                                  T_QOS           *inputQos );

T_MFW_RES gprs_setQOSMin        ( SHORT           cid ,
                                  T_QOS           *inputQos);

T_MFW_RES gprs_attach           ( T_CGATT_STATE   state);
/* SPR#1983 - SH - Added function to cancel CGATT command */
T_MFW_RES gprs_attach_abort(void);

T_MFW_RES gprs_contextActivation( T_CGACT_STATE   state, 
                                   SHORT           *cids);

T_MFW_RES gprs_setData          ( char            *L2P, 
                                  SHORT           *cids);

T_MFW_RES gprs_showPDPAddress   ( SHORT           *cids, 
                                  T_PDP_ADDRESS   *pdp_address);
#else
T_MFW_RES gprs_definePDPContext ( SHORT           cid, 
                                  T_PDP_CONTEXT   *inputCtxt );

T_MFW_RES gprs_setQOS           ( SHORT           cid ,
                                  T_PS_qos           *inputQos );

T_MFW_RES gprs_setQOSMin        ( SHORT           cid ,
                                  T_PS_qos           *inputQos);

T_MFW_RES gprs_attach           ( T_CGATT_STATE   state);
/* SPR#1983 - SH - Added function to cancel CGATT command */
T_MFW_RES gprs_attach_abort(void);

T_MFW_RES gprs_contextActivation( T_CGACT_STATE   state, 
                                   SHORT           *cids);

T_MFW_RES gprs_setData          ( char            *L2P, 
                                  SHORT           *cids);

T_MFW_RES gprs_showPDPAddress   ( SHORT           *cids, 
                                  T_NAS_ip   *pdp_address);
#endif

T_MFW_RES gprs_setAutoResponse  ( T_CGAUTO_N      mode);

T_MFW_RES gprs_ManualResponse   ( USHORT          response, 
                                  char            *l2p, 
                                  SHORT           cid);

T_MFW_RES gprs_setClass         ( T_CGCLASS_CLASS m_class);

T_MFW_RES gprs_setEventReporting( T_CGEREP_MODE   mode, 
                                  T_CGEREP_BFR    bfr);

T_MFW_RES gprs_setServiceSMS    ( T_CGSMS_SERVICE service);

T_CGSMS_SERVICE gprs_getServiceSMS(void);

/* Interface for SNCNT command */
T_MFW_RES gprs_counter(BOOL reset_counter);

/* SPR#1983 - SH - Added function to cancel SNCNT command */
T_MFW_RES gprs_counter_abort(void);

T_CGREG_STAT gprs_status(void);
//x0035544 Feb 23, 2006 DR:OMAPS00068976
/* Added function to querry and update the gprs status */
T_P_CGREG_STAT p_gprs_status(void);

/* ACI callback functions ------------------------------------------*/

void rAT_PlusCGACT  ( SHORT link_id );
                    /* link_id: Link identifier              */

void rAT_PlusCGDATA ( SHORT link_id );
                    /* link_id: Link identifier              */

void rAT_PlusCGANS  ( SHORT link_id );
                    /* link_id: Link identifier              */

void rAT_PlusCGEREP ( T_CGEREP_EVENT            event, 
                      T_CGEREP_EVENT_REP_PARAM *param );
                    /* event  : GPRS event                        
                       param  : event parameter              */
void rAT_PercentCGEV ( T_CGEREP_EVENT event,
                      T_CGEREP_EVENT_REP_PARAM *param );
                    /* event  : GPRS event                        
                       param  : event parameter              */

void rAT_PlusCGREG  ( T_CGREG_STAT stat, 
                      USHORT       lac, 
                      USHORT       ci );
                    /* stat   : indicates the current registration 
                       lac    : two byte location area code         
                       ci     : two byte cell ID             */
                       
// ADDED BY RAVI - ACI CHANGES - 5-10-2005
void rAT_PercentCGREG  ( T_P_CGREG_STAT stat,
                      USHORT       lac,
                      USHORT       ci,
					  BOOL         bActiveContext );	
//                      BOOL         bActiveContext );
                    /* stat   : indicates the current registration
                       lac    : two byte location area code
                       ci     : two byte cell ID             
             bActiveContext   : boolean: shows wether a PDP context is 
                                         established or not*/

#ifdef FF_2TO1_PS
void rAT_changedQOS ( U8 cid, 
                      T_PS_qos *qos );
                     /* cid    : context id                   
                        *qos   : quality of service profile   */
#else 
void rAT_changedQOS ( SHORT cid, 
                      T_QOS *qos );   
                     /* cid    : context id                   
                        *qos   : quality of service profile   */

#endif

// END ADDITION BY RAVI - 5-10-2005
GLOBAL void rAT_PercentSNCNT ( UBYTE c_id,
                               ULONG octets_uplink,
                               ULONG octets_downlink,
                               ULONG packets_uplink,
                               ULONG packets_downlink );

#endif