FreeCalypso > hg > fc-magnetite
view src/aci2/aci/gaci_cmh.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 : | Modul : +----------------------------------------------------------------------------- | 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 : GPRS Command handler interface definitions. +----------------------------------------------------------------------------- */ #ifndef GACI_CMH_H #define GACI_CMH_H /*==== MACROS =====================================================*/ #define GPRS_EVENT_REPORTING_BUFFER_SIZE 10 /*==== DEFINES ====================================================*/ /* the maximum length of strings to describe the PDP typ, PDP address, APN and L2P */ #define MAX_PDP_TYPE_LEN 7 #define MAX_APN_LEN 103 #define MAX_DNS_LEN 15 #define MAX_USER_LEN 63 /* this is a common value for Routers etc... */ #define MAX_PWD_LEN 63 #define MAX_PDP_ADDR_LEN 21 #if defined (FF_PKTIO) OR defined (FF_TCP_IP) || defined(FF_GPF_TCPIP) OR defined (FF_PSI) #define MAX_L2P_LENGTH 6 #else /* FF_PKTIO || FF_TCP_IP || FF_GPF_TCPIP OR FF_PSI */ #define MAX_L2P_LENGTH 4 #endif /* FF_PKTIO || FF_TCP_IP || FF_GPF_TCPIP OR FF_PSI */ typedef enum /* CGDCONT command d_comp */ { GPRS_CID_OMITTED = 0, /* value is omitted */ GPRS_CID_1, /* PDP data compression off (default) */ GPRS_CID_2, /* PDP data compression on */ #if defined (FF_PKTIO) OR defined (FF_PSI) GPRS_CID_3, GPRS_CID_4, GPRS_CID_5, GPRS_CID_6, #endif /* FF_PKTIO OR FF_PSI */ GPRS_CID_INVALID /* invalid value */ } T_GPRS_CID; #define INVALID_CID GPRS_CID_OMITTED #if defined (FF_PKTIO) OR defined (FF_PSI) #define MAX_CID GPRS_CID_6 #else /* FF_PKTIO OR FF_PSI */ #define MAX_CID GPRS_CID_2 #endif /* FF_PKTIO OR FF_PSI */ #define MAX_CID_PLUS_EINS GPRS_CID_INVALID /*==== TYPES ======================================================*/ #define GPRS_QOS_OMITTED 0 typedef struct { UBYTE preced; UBYTE delay; UBYTE relclass; UBYTE peak; UBYTE mean; } T_QOS; typedef char T_PDP_ADDRESS [MAX_PDP_ADDR_LEN]; typedef char T_PDP_TYPE [MAX_PDP_TYPE_LEN]; typedef char T_APN [MAX_APN_LEN]; typedef char T_L2P [MAX_L2P_LENGTH]; typedef struct { T_APN apn; T_PDP_TYPE pdp_type; T_PDP_ADDRESS pdp_addr; SHORT d_comp; SHORT h_comp; T_QOS qos; T_QOS min_qos; } T_GPRS_CONT_REC; /*---- Types of -----------------------------------------*/ typedef enum /* CGDCONT command d_comp */ { CGDCONT_D_COMP_OMITTED = -1, /* value is omitted */ CGDCONT_D_COMP_OFF, /* PDP data compression off (default) */ CGDCONT_D_COMP_ON, /* PDP data compression on */ CGDCONT_D_COMP_INVALID /* invalid value */ } T_CGDCONT_D_COMP; typedef enum /* CGDCONT command h_comp */ { CGDCONT_H_COMP_OMITTED = -1, /* value is omitted */ CGDCONT_H_COMP_OFF, /* PDP header compression off (default) */ CGDCONT_H_COMP_ON, /* PDP header compression on */ CGDCONT_H_COMP_INVALID /* invalid value */ } T_CGDCONT_H_COMP; typedef enum /* CGATT command state */ { CGATT_STATE_OMITTED = -1, /* value is omitted */ CGATT_STATE_DETACHED, /* GPRS detached */ CGATT_STATE_ATTACHED, /* GPRS attached */ CGATT_STATE_INVALID /* invalid value */ } T_CGATT_STATE; typedef enum /* CGACT command state */ { CGACT_STATE_OMITTED = -1, /* value is omitted */ CGACT_STATE_DEACTIVATED, /* PDP context detached */ CGACT_STATE_ACTIVATED, /* PDP context attached */ CGACT_STATE_INVALID /* invalid value */ } T_CGACT_STATE; typedef enum /* CGAUTO command n */ { CGAUTO_N_OMITTED = -1, /* value is omitted */ CGAUTO_N_GPRS_RES_OFF, /* turn off automatic response for GPRS only */ CGAUTO_N_GPRS_RES_ON, /* turn on automatic response for GPRS only */ CGAUTO_N_MCM_GPRS_ONLY, /* modem compabitbility mode, GPRS only */ CGAUTO_N_MCM_GPRS_CSC, /* modem compabitbility mode, GPRS and circuit switched calls (default) */ CGAUTO_N_INVALID /* invalid value */ } T_CGAUTO_N; typedef enum /* CGANS command response */ { CGANS_RESPONSE_OMITTED = -1, /* value is omitted */ CGANS_RESPONSE_REJECT, /* reject the request */ CGANS_RESPONSE_ACCEPT, /* accept and request that the PDP context be activated */ CGANS_RESPONSE_INVALID /* invalid value */ } T_CGANS_RESPONSE; typedef enum /* CGANS command response */ { CGCLASS_CLASS_OMITTED = -1, /* value is omitted */ CGCLASS_CLASS_A, /* mobile class A (highest) */ CGCLASS_CLASS_B, /* mobile class B (if necessary consider NET III) */ CGCLASS_CLASS_CG, /* mobile class CG (GPRS only mode) */ CGCLASS_CLASS_CC, /* mobile class CC (circuit switched only mode - lowest) */ CGCLASS_CLASS_MAX /* invalid value */ } T_CGCLASS_CLASS; typedef enum /* CGANS command response */ { PERCENT_CGCLASS_OMITTED = -1, /* value is omitted */ PERCENT_CGCLASS_A, /* mobile class A (highest) */ PERCENT_CGCLASS_B, /* mobile class B */ PERCENT_CGCLASS_BG, /* mobile class BG */ PERCENT_CGCLASS_BC, /* mobile class BC */ PERCENT_CGCLASS_BX, /* mobile class BX */ PERCENT_CGCLASS_CG, /* mobile class CG (GPRS only mode) */ PERCENT_CGCLASS_CC, /* mobile class CC (circuit switched only mode - lowest) */ PERCENT_CGCLASS_MAX /* invalid value */ } T_PERCENT_CGCLASS; typedef enum /* CGEREP command mode */ { CGEREP_MODE_OMITTED = -1, /* value is omitted */ CGEREP_MODE_BUFFER, /* buffer unsolicited result codes */ CGEREP_MODE_DICARD_RESERVED, /* discard unsolicited result codes when MT-TE link is reserved */ CGEREP_MODE_BUFFER_RESERVED, /* buffer unsolicited result codes in the MT when MT-TE link is reserved */ CGEREP_MODE_INVALID /* invalid value */ } T_CGEREP_MODE; typedef enum /* CGEREP command bfr */ { CGEREP_BFR_OMITTED = -1, /* value is omitted */ CGEREP_BFR_CLEAR, /* buffer unsolicited result codes */ CGEREP_BFR_FLUSH, /* discard unsolicited result codes when MT-TE link is reserved */ CGEREP_BFR_INVALID /* invalid value */ } T_CGEREP_BFR; typedef enum /* CGREG command read stat */ { CGREG_STAT_NOT_PRESENT = -1, /* not present, last state is not indicated */ CGREG_STAT_NOT_REG, /* not registered, no searching */ CGREG_STAT_REG_HOME, /* registered, home network */ CGREG_STAT_SEARCHING, /* not registered, but searching */ CGREG_STAT_REG_DEN, /* registration denied */ CGREG_STAT_UNKN, /* unknown */ CGREG_STAT_REG_ROAM /* registered, roaming */ } T_CGREG_STAT; typedef enum /* %CGREG command read stat */ { P_CGREG_STAT_NOT_PRESENT = -1, /* not present, last state is not indicated */ P_CGREG_STAT_NOT_REG, /* not registered, no searching */ P_CGREG_STAT_REG_HOME, /* registered, home network */ P_CGREG_STAT_SEARCHING, /* not registered, but searching */ P_CGREG_STAT_REG_DEN, /* registration denied */ P_CGREG_STAT_UNKN, /* unknown */ P_CGREG_STAT_REG_ROAM, /* registered, roaming */ P_CGREG_STAT_LIMITED, /* limited service */ P_CGREG_STAT_GSM_CALL, /* GSM call is active */ P_CGREG_STAT_NO_CELL, /* no cell available */ P_CGREG_STAT_TRY_TO_UPDATE /* next attempt to update MS */ } T_P_CGREG_STAT; typedef enum /* CGSMS command service */ { CGSMS_SERVICE_OMITTED = -1, /* value is omitted */ CGSMS_SERVICE_GPRS, /* GPRS */ CGSMS_SERVICE_CS, /* circuit switched */ CGSMS_SERVICE_GPRS_PREFERRED, /* GPRS preferred */ CGSMS_SERVICE_CS_PREFERRED, /* circuit switched preferred */ CGSMS_SERVICE_INVALID /* invalid value */ } T_CGSMS_SERVICE; typedef enum /* CGAATT command automatic attach mode */ { CGAATT_ATTACH_MODE_OMITTED = -1, /* value is omitted */ CGAATT_ATTACH_MODE_AUTOMATIC, /* automatic attach */ CGAATT_ATTACH_MODE_MANUAL, /* manual attach */ CGAATT_ATTACH_MODE_INVALID /* invalid value */ } T_CGAATT_ATTACH_MODE; typedef enum /* CGAATT command automatic detach after context deactivation */ { CGAATT_DETACH_MODE_OMITTED = -1, /* value is omitted */ CGAATT_DETACH_MODE_ON, /* on */ CGAATT_DETACH_MODE_OFF, /* off */ CGAATT_DETACH_MODE_INVALID /* invalid value */ } T_CGAATT_DETACH_MODE; /*---- Types for event reporting-----------------------------------*/ typedef enum /* Defined events for GPRS event reporting */ { CGEREP_EVENT_INVALID = -1, /* reserved value */ CGEREP_EVENT_REJECT, /* network request context activation */ CGEREP_EVENT_NW_REACT, /* network requested context reactivation */ CGEREP_EVENT_NW_DEACT, /* network forced context deactivation */ CGEREP_EVENT_ME_DEACT, /* mobile equipment forced context deactivation */ CGEREP_EVENT_NW_DETACH, /* network forced detach */ CGEREP_EVENT_ME_DETACH, /* mobile equipment forced detach */ CGEREP_EVENT_NW_CLASS, /* network forced class change */ CGEREP_EVENT_ME_CLASS, /* mobile equipment forced class change */ CGEREP_EVENT_NW_ACT, /* network requested context activation */ CGEREP_EVENT_ME_ACT /* mobile equipment initiated context activation */ } T_CGEREP_EVENT; typedef struct /* parameter of unsolicited event: REJECT */ { T_PDP_TYPE pdp_type; T_PDP_ADDRESS pdp_addr; } T_EVENT_REJECT; typedef struct /* parameter of unsolicited event: NW REACT, NW DEACT, ME DEACT */ { T_PDP_TYPE pdp_type; T_PDP_ADDRESS pdp_addr; SHORT cid; } T_EVENT_ACT; typedef union { T_EVENT_REJECT reject; T_EVENT_ACT act; T_CGCLASS_CLASS mobile_class; } T_CGEREP_EVENT_REP_PARAM; /*---- %CGPCO -----------------------------------------------------*/ #define ACI_PCO_MAX_LEN 251 #define ACI_PCO_CONTENTMASK_AUTH 0x00000001 #define ACI_PCO_CONTENTMASK_DNS1 0x00000002 #define ACI_PCO_CONTENTMASK_DNS2 0x00000004 #define ACI_PCO_CONFIG_PROT_PPP 0 #define ACI_PCO_AUTH_PROT_PAP 0xc023 #define ACI_PCO_PAP_OVERHEAD 9 #define ACI_PCO_IPCP_OVERHEAD 7 #define ACI_PCO_PAP_AUTH_REQ 0x01 #define ACI_PCO_IPCP_PROT_MSB 0x80 #define ACI_PCO_IPCP_PROT_LSB 0x21 #define ACI_PCO_IPCP_CONF_REQ 0x01 #define ACI_PCO_IPCP_CONF_ACK 0x02 #define ACI_PCO_IPCP_CONF_NAK 0x03 #define ACI_PCO_IPCP_TYPE_IP 3 #define ACI_PCO_IPCP_TYPE_DNS1 129 #define ACI_PCO_IPCP_TYPE_DNS2 131 #define ACI_PCO_IPCP_LENGTH_IP 6 #define ACI_PCO_IPCP_LENGTH_DNS1 6 #define ACI_PCO_IPCP_LENGTH_DNS2 6 typedef enum { CGPCO_FORMAT_HEX = 0, CGPCO_FORMAT_ASCII }T_ACI_CGPCO_FORMAT; typedef enum { CGPCO_MODE_SET_PCO = 0, CGPCO_MODE_QUERY_PCO }T_ACI_CGPCO_MODE; /*==== PROTOTYPES =================================================*/ /*** set commands ***/ EXTERN T_ACI_RETURN sAT_PercentCGPCO (T_ACI_CMD_SRC srcId, SHORT cid, USHORT protocol, CHAR *user, CHAR *pwd,CHAR *dns1, CHAR *dns2); EXTERN T_ACI_RETURN qAT_PercentCGPCO ( UBYTE srcId, ULONG * gateway, ULONG * dns1,ULONG * dns2, USHORT cid); EXTERN T_ACI_RETURN sAT_PlusCGDCONT ( T_ACI_CMD_SRC srcId, SHORT cid, T_GPRS_CONT_REC *inputCtxt); EXTERN T_ACI_RETURN sAT_PlusCGQREQ ( T_ACI_CMD_SRC srcId, SHORT cid ,T_QOS *qos); EXTERN T_ACI_RETURN sAT_PlusCGQMIN ( T_ACI_CMD_SRC srcId, SHORT cid ,T_QOS *qos); EXTERN T_ACI_RETURN sAT_PlusCGATT ( T_ACI_CMD_SRC srcId, T_CGATT_STATE state ); EXTERN T_ACI_RETURN sAT_PlusCGACT ( T_ACI_CMD_SRC srcId, T_CGACT_STATE state, SHORT *cids ); EXTERN T_ACI_RETURN sAT_PlusCGDATA ( T_ACI_CMD_SRC srcId, char *L2P, SHORT *cids ); EXTERN T_ACI_RETURN sAT_PlusCGPADDR ( T_ACI_CMD_SRC srcId, SHORT *cids, T_PDP_ADDRESS *pdp_adress ); EXTERN T_ACI_RETURN sAT_PlusCGAUTO ( T_ACI_CMD_SRC srcId, T_CGAUTO_N n ); EXTERN T_ACI_RETURN sAT_PlusCGANS ( T_ACI_CMD_SRC srcId, SHORT response, char *l2p, SHORT cid ); EXTERN T_ACI_RETURN sAT_PlusCGCLASS ( T_ACI_CMD_SRC srcId, T_CGCLASS_CLASS m_class ); EXTERN T_ACI_RETURN sAT_PlusCGEREP ( T_ACI_CMD_SRC srcId, T_CGEREP_MODE mode, T_CGEREP_BFR bfr ); EXTERN T_ACI_RETURN sAT_PlusCGSMS ( T_ACI_CMD_SRC srcId, T_CGSMS_SERVICE service ); EXTERN T_ACI_RETURN sAT_PercentCGAATT ( T_ACI_CMD_SRC srcId, T_CGAATT_ATTACH_MODE att_m, T_CGAATT_DETACH_MODE det_m ); EXTERN T_ACI_RETURN sAT_PercentCGMM ( T_ACI_CMD_SRC srcId, UBYTE cipher_on, UBYTE tlli_handling ); EXTERN T_ACI_RETURN sAT_PercentSNCNT( T_ACI_CMD_SRC srcId, BOOL reset_counter ); EXTERN T_ACI_RETURN sAT_PercentCGPPP( T_ACI_CMD_SRC srcId, T_ACI_PPP_PROT protocol ); EXTERN T_ACI_RETURN sAT_PercentCGCLASS ( T_ACI_CMD_SRC srcId, T_PERCENT_CGCLASS m_class ); EXTERN T_ACI_RETURN qAT_PercentCGPPP( T_ACI_CMD_SRC srcId, T_ACI_PPP_PROT *protocol ); /*** read commands ***/ EXTERN T_ACI_RETURN qAT_PlusCGDCONT ( T_ACI_CMD_SRC srcId, T_GPRS_CONT_REC (*Ctxt)[MAX_CID_PLUS_EINS], SHORT *cid ); EXTERN T_ACI_RETURN qAT_PlusCGQREQ ( T_ACI_CMD_SRC srcId, T_QOS **qos, SHORT *cid); EXTERN T_ACI_RETURN qAT_PlusCGQMIN ( T_ACI_CMD_SRC srcId, T_QOS **qos, SHORT *cid); EXTERN T_ACI_RETURN qAT_PlusCGATT ( T_ACI_CMD_SRC srcId, T_CGATT_STATE *state ); EXTERN T_ACI_RETURN qAT_PlusCGACT ( T_ACI_CMD_SRC srcId, BOOL *states, SHORT *cid ); EXTERN T_ACI_RETURN qAT_PlusCGAUTO ( T_ACI_CMD_SRC srcId, T_CGAUTO_N *n); EXTERN T_ACI_RETURN qAT_PlusCGCLASS ( T_ACI_CMD_SRC srcId, T_CGCLASS_CLASS *m_class ); EXTERN T_ACI_RETURN qAT_PlusCGEREP ( T_ACI_CMD_SRC srcId, T_CGEREP_MODE *mode, T_CGEREP_BFR *bfr ); EXTERN T_ACI_RETURN qAT_PlusCGREG ( T_ACI_CMD_SRC srcId, T_CGREG_STAT *stat, USHORT *lac, USHORT *ci ); EXTERN T_ACI_RETURN qAT_PercentCGREG( T_ACI_CMD_SRC srcId, T_P_CGREG_STAT *stat, USHORT *lac, USHORT *ci ); EXTERN T_ACI_RETURN qAT_PlusCGSMS ( T_ACI_CMD_SRC srcId, T_CGSMS_SERVICE *service ); EXTERN T_ACI_RETURN qAT_PercentCGAATT ( T_ACI_CMD_SRC srcId, T_CGAATT_ATTACH_MODE *att_m, T_CGAATT_DETACH_MODE *det_m ); EXTERN T_ACI_RETURN qAT_PercentCGCLASS ( T_ACI_CMD_SRC srcId, T_PERCENT_CGCLASS *m_class, T_PERCENT_CGCLASS *currentClass ); /*** test commands ***/ EXTERN T_ACI_RETURN tAT_PlusCGPADDR ( T_ACI_CMD_SRC srcId, SHORT *cids); EXTERN T_ACI_RETURN tAT_PlusCGSMS ( T_ACI_CMD_SRC srcId, SHORT *service_list); /*--------------- extension mechansim ----------------------------*/ /*--------------- constants --------------------------------------*/ /*--------------- configuration ----------------------------------*/ /*--------------- Extension Handler -> AT Interpreter ------------*/ /*--------------- AT Interpreter -> Extension Handler ------------*/ /*------- call-backs for MMI --------------------------------------*/ #ifdef CMH_F_C /*lint -save -e18 */ /* Turn off Lint errors for this "construct" */ EXTERN void rAT_PlusCGACT ( void ); EXTERN void rAT_PlusCGDATA ( void ); EXTERN void rAT_PlusCGANS ( void ); EXTERN void rAT_PlusCGEREP ( void ); EXTERN void rAT_PlusCGREG ( void ); EXTERN void rAT_changedQOS ( void ); EXTERN void rAT_PercentSNCNT ( void ); EXTERN void rAT_PercentCGREG ( void ); EXTERN void rAT_PercentCGEV ( void ); /*lint -restore */ #else EXTERN void rAT_PlusCGACT ( SHORT link_id ); EXTERN void rAT_PlusCGDATA ( SHORT link_id ); EXTERN void rAT_PlusCGANS ( SHORT link_id ); EXTERN void rAT_PlusCGEREP ( T_CGEREP_EVENT event, T_CGEREP_EVENT_REP_PARAM *param ); EXTERN void rAT_PlusCGREG ( T_CGREG_STAT stat, USHORT lac, USHORT ci ); EXTERN void rAT_changedQOS ( SHORT cid, T_QOS *qos ); EXTERN void rAT_PercentSNCNT ( UBYTE c_id, ULONG octets_uplink, ULONG octets_downlink, ULONG packets_uplink, ULONG packets_downlink ); EXTERN void rAT_PercentCGREG ( T_P_CGREG_STAT stat, USHORT lac, USHORT ci, BOOL bActiveContext ); EXTERN void rAT_PercentCGEV ( T_CGEREP_EVENT event, T_CGEREP_EVENT_REP_PARAM *param ); #endif /*--------------- call-backs for AT CI ----------------------------*/ #ifdef CMH_F_C /*lint -save -e18 */ /* Turn off Lint errors for this "construct" */ EXTERN void rCI_PlusCGACT ( void ); EXTERN void rCI_PlusCGDATA ( void ); EXTERN void rCI_PlusCGANS ( void ); EXTERN void rCI_PlusCGEREP ( void ); EXTERN void rCI_PlusCGREG ( void ); EXTERN void rCI_changedQOS ( void ); EXTERN void rCI_PercentSNCNT ( void ); EXTERN void rCI_PercentCGREG ( void ); EXTERN void rCI_PercentCGEV ( void ); /*lint -restore */ #else EXTERN void rCI_PlusCGACT ( SHORT link_id ); EXTERN void rCI_PlusCGDATA ( SHORT link_id ); EXTERN void rCI_PlusCGANS ( SHORT link_id ); EXTERN void rCI_PlusCGEREP ( T_CGEREP_EVENT event, T_CGEREP_EVENT_REP_PARAM *param ); EXTERN void rCI_PlusCGREG ( T_CGREG_STAT stat, USHORT lac, USHORT ci ); EXTERN void rCI_changedQOS ( SHORT cid, T_QOS *qos ); EXTERN void rCI_PercentSNCNT ( UBYTE c_id, ULONG octets_uplink, ULONG octets_downlink, ULONG packets_uplink, ULONG packets_downlink ); EXTERN void rCI_PercentCGREG ( T_P_CGREG_STAT stat, USHORT lac, USHORT ci, BOOL bActiveContext ); EXTERN void rCI_PercentCGEV ( T_CGEREP_EVENT event, T_CGEREP_EVENT_REP_PARAM *param ); #endif #endif /*==== EOF ========================================================*/