FreeCalypso > hg > fc-tourmaline
view src/g23m-aci/aci/cmh_sat.h @ 303:f76436d19a7a default tip
!GPRS config: fix long-standing AT+COPS chance hanging bug
There has been a long-standing bug in FreeCalypso going back years:
sometimes in the AT command bring-up sequence of an ACI-only MS,
the AT+COPS command would produce only a power scan followed by
cessation of protocol stack activity (only L1 ADC traces), instead
of the expected network search sequence. This behaviour was seen
in different FC firmware versions going back to Citrine, and seemed
to follow some law of chance, not reliably repeatable.
This bug has been tracked down and found to be specific to !GPRS
configuration, stemming from our TCS2/TCS3 hybrid and reconstruction
of !GPRS support that was bitrotten in TCS3.2/LoCosto version.
ACI module psa_mms.c, needed only for !GPRS, was missing in the TCS3
version and had to be pulled from TCS2 - but as it turns out,
there is a new field in the MMR_REG_REQ primitive that needs to be
set correctly, and that psa_mms.c module is the place where this
initialization needed to be added.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 08 Jun 2023 08:23:37 +0000 |
parents | fa8dc04885d8 |
children |
line wrap: on
line source
/* +----------------------------------------------------------------------------- | Project : GSM-PS (6147) | Modul : CMH +----------------------------------------------------------------------------- | 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 command handler of the | SIM application toolkit ( SAT ) +----------------------------------------------------------------------------- */ #ifdef SIM_TOOLKIT #ifndef CMH_SAT_H #define CMH_SAT_H /*==== CONSTANTS ==================================================*/ #define SAT_REDIAL (0x80) /* flag SAT redial condition */ #define SAT_REDIAL_ECCBE (0x40) /* Flag "Envelope Call Control * Always Sent To SIM" * bit enabled Condition */ #define SAT_GPRS_INV_CAUSE 0 #ifdef FF_SAT_E typedef enum { SAT_GPRS_ACT = 0, SAT_GPRS_DEACT, SAT_GPRS_ATT_FAILED, SAT_GPRS_ACT_FAILED, SAT_GPRS_SUSPEND, SAT_GPRS_RESUME } T_SAT_GPRS_CB_STAT; #endif /* FF_SAT_E */ /*==== TYPES ======================================================*/ typedef struct { SHORT cId; T_CLPTY_PRM clpty; T_ussd_string ussd_str; } T_SAT_PND_SETUP; typedef struct { T_addr addr; T_subaddr sub_addr; BUF_cap_cnf_parms ccp;/* Capability configuration params added to redial structure */ } T_RDL_CC_ENV; /*==== PROTOTYPES =================================================*/ EXTERN SHORT cmhSAT_STKCmdCnf ( void ); EXTERN SHORT cmhSAT_STKCmdInd ( void ); EXTERN SHORT cmhSAT_STKUsrNtfy ( void ); #ifdef TI_PS_FF_AT_P_CMD_CUST EXTERN SHORT cmhSAT_Cust1StkCmdInd ( void ); #endif /* TI_PS_FF_AT_P_CMD_CUST */ EXTERN void cmhCC_SatDTMFsent ( SHORT cId ); EXTERN T_ACI_RETURN cmhSAT_CalCntrlBySIM ( SHORT cId ); EXTERN T_ACI_RETURN cmhSAT_SSCntrlBySIM ( T_CLPTY_PRM *cldPty, UBYTE own ); EXTERN T_ACI_RETURN cmhSAT_USSDCntrlBySIM ( T_sat_ussd *ussd, UBYTE own ); EXTERN T_ACI_RETURN cmhSAT_DatDwnLdCB ( UBYTE* cbMsg, SHORT cbLen ); EXTERN T_ACI_RETURN cmhSAT_MoSmCntr ( T_rp_addr sc_addr, T_tp_da dest_addr, UBYTE owner); EXTERN void cmhCC_SatDTMFsent ( SHORT cId ); EXTERN T_ACI_RETURN cmhSAT_EventDwn ( UBYTE event, SHORT callId, T_CC_INITIATER actionSrc ); EXTERN BOOL cmhSAT_ResCalCntrlBySIM( UBYTE* resId, void *ccRes ); EXTERN BOOL cmhSAT_ResSSCntrlBySIM ( UBYTE* resId, void *ccRes ); EXTERN BOOL cmhSAT_ResUSSDCntrlBySIM ( UBYTE* resId, void *ccRes ); EXTERN BOOL cmhSAT_ResSMCntrlBySIM ( UBYTE* resId, void *ccRes ); /* ACI-SPR-18200: added aci_events_only parameter */ EXTERN BOOL cmhSAT_setupEvent_Test ( T_SETUP_EVENT *set_event, BOOL *aci_events_only ); /* ACI-SPR-18200: Function to copy unproc events to MMI */ EXTERN BOOL cmhSAT_copyUnprocEvents ( UBYTE* eventList, UBYTE eventListLen, UBYTE oldEventListLen); EXTERN void cmhSAT_setupEvent_Perform ( void ); EXTERN BOOL cmhSAT_setupCall ( T_SETUP_CALL * cal ); EXTERN BOOL cmhSAT_sendSS ( T_SEND_SS * ss ); EXTERN BOOL cmhSAT_sendUSSD ( T_SEND_USSD * ussd ); EXTERN BOOL cmhSAT_sendDTMF ( T_SEND_DTMF *dtmf ); EXTERN BOOL cmhSAT_sendSM ( T_SEND_SM * sm ); EXTERN BOOL cmhSAT_runAt ( T_RUN_AT *run_at); EXTERN BOOL cmhSAT_launchBrowser ( T_LAUNCH_BROWSER* launchBrowser ); EXTERN BOOL cmhSAT_provLocalInfo ( void ); EXTERN void cmhSAT_UserRejCall ( UBYTE calStat ); EXTERN void cmhSAT_CallCncted ( void ); EXTERN UBYTE cmhSAT_NtwErr ( UBYTE cs ); EXTERN void cmhSAT_UserClear ( void ); EXTERN BOOL cmhSAT_ChckCmdDet ( void ); EXTERN LONG cmhSAT_ChckRedial ( SHORT cId, UBYTE v_dur, T_dur * dur ); EXTERN BOOL cmhSAT_UserAcptCall ( SHORT acptId, UBYTE srcId ); EXTERN BOOL cmhSAT_StartPendingCall( void ); EXTERN void cmhSAT_fillSetupPrm ( SHORT cId, T_addr* adr, T_subaddr *sub ); EXTERN void cmhSAT_fillSetupBC ( SHORT cId, UBYTE bearer_serv_1, UBYTE bearer_serv_2 ); /* EXTERN void cmhSAT_chkDTMF ( SHORT cId, T_addr* adr ); */ EXTERN void cmhSAT_ResCapCode ( USHORT cause, T_MNCC_bcconf* bc1, T_MNCC_bcconf2* bc2 ); EXTERN void cmhSAT_ResCapDecode ( USHORT cause, T_MNCC_bcpara* bc1, T_MNCC_bcpara* bc2); EXTERN BOOL cmhSAT_SetupCalAfterCCRes ( UBYTE ownNotSAT, SHORT cId, UBYTE CCres); EXTERN BOOL cmhSAT_CheckSetEventResp ( void ); #ifdef FF_SAT_E EXTERN BOOL cmhSAT_CloseChannel ( void ); EXTERN BOOL cmhSAT_SendData ( void ); EXTERN BOOL cmhSAT_GetChannelStatus ( void ); EXTERN BOOL cmhSAT_OpenChannelReq ( T_OPEN_CHANNEL *opchCmd ); EXTERN void cmhSAT_storeCSDPrms ( T_OPEN_CHANNEL *opchCmd ); EXTERN void cmhSAT_storeGPRSPrms ( T_OPEN_CHANNEL *opchCmd ); EXTERN void cmhSAT_cleanupOpChnPrms ( void ); EXTERN void cmhSAT_OpChnResetCnctFlag( void ); EXTERN void cmhSAT_OpChnFailed ( UBYTE cause, T_ACI_SAT_TERM_RESP *resp_data ); EXTERN void cmhSAT_OpChnAlert ( SHORT cId ); EXTERN BOOL cmhSAT_OpChnChkTmpProblem( void ); EXTERN void cmhSAT_OpChnUDPActiveCsd (T_ACI_RETURN result); EXTERN void cmhSAT_OpChnUDPConfCsd (T_ACI_RETURN result); EXTERN void cmhSAT_OpChnUDPDeactCsd (T_ACI_RETURN result); EXTERN void cmhSAT_OpBIPChnOpen (UBYTE bipConn, UBYTE chnId); EXTERN void cmhSAT_OpChnCnct (UBYTE dtiConn, UBYTE chnId); EXTERN void cmhSAT_OpChnClose (UBYTE bipConn, UBYTE chnId); EXTERN void cmhSAT_OpChnCSDDown (SHORT cId, UBYTE tpl ); #ifdef GPRS EXTERN void cmhSAT_OpChnGPRSDeact ( void ); #endif /* GPRS */ EXTERN BOOL cmhSAT_OpChnChckCSD (UBYTE tpl); EXTERN void cmhSAT_OpChnSIMFail (UBYTE dtiConn, UBYTE bipConn, UBYTE chnId); EXTERN void cmhSAT_OpChnSIMCnctReq (UBYTE unit); EXTERN void cmhSAT_OpChnChckBear (void); #ifdef DTI EXTERN void cmhSAT_OpChnSetPPP (UBYTE chnType); EXTERN void cmhSAT_OpChnUDPActivateGprs( void ); #endif EXTERN void cmhSAT_OpChnStatEvnt ( void ); EXTERN BOOL cmhSAT_OpChnGPRSPend ( SHORT cid, UBYTE opchStat ); EXTERN void cmhSAT_OpChnGPRSStat (T_SAT_GPRS_CB_STAT stat, UBYTE cause); EXTERN void cmhSAT_OpChnUDPConfGprs (void); EXTERN void cmhSAT_OpChnUDPDeactGprs (void); EXTERN void cmhSAT_UserRejCntxt ( void ); EXTERN BOOL cmhSAT_UserAcptCntxt ( UBYTE srcId ); EXTERN void cmhSAT_cnvrtAPN2NetworkAdr( UBYTE *apn, UBYTE c_apn, UBYTE *dom_name ); #endif /* SAT E */ EXTERN void cmhSAT_CBMDestroyList ( void ); /*==== EXPORT =====================================================*/ #ifdef CMH_SATF_C GLOBAL T_ENT_STAT satEntStat; GLOBAL T_SAT_PND_SETUP satPndSetup; /* GLOBAL T_CC_DTMF_PRM satDtmfBuf; */ GLOBAL T_RDL_CC_ENV satRdlCCEnv; /* Used to store the CC Envelope when Envelope call control bit is enabled. */ GLOBAL T_MNSMS_SUBMIT_REQ *sat_mnsms_submit_req; #else EXTERN T_ENT_STAT satEntStat; EXTERN T_SAT_PND_SETUP satPndSetup; /* EXTERN T_CC_DTMF_PRM satDtmfBuf; */ EXTERN T_RDL_CC_ENV satRdlCCEnv; EXTERN T_MNSMS_SUBMIT_REQ *sat_mnsms_submit_req; #endif /* CMH_SATF_C */ #endif /* CMH_SAT_H */ #endif /* #ifdef SIM_TOOLKIT */ /*==== EOF =======================================================*/