FreeCalypso > hg > fc-tourmaline
view cdg-hybrid/cdginc/p_gmmrr.val @ 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 | 35f7a1dc9f7d |
children |
line wrap: on
line source
/* +--------------------------------------------------------------------------+ | PROJECT : PROTOCOL STACK | | FILE : p_gmmrr.val | | SOURCE : "sap\gmmrr.pdf" | | LastModified : "2003-09-02" | | IdAndVersion : "8441.101.03.025" | | SrcFileTime : "Thu Nov 29 09:42:28 2007" | | Generated by CCDGEN_2.5.5A on Fri Oct 14 21:41:52 2016 | | !!DO NOT MODIFY!!DO NOT MODIFY!!DO NOT MODIFY!! | +--------------------------------------------------------------------------+ */ /* PRAGMAS * PREFIX : NONE * COMPATIBILITY_DEFINES : NO (require PREFIX) * ALWAYS_ENUM_IN_VAL_FILE: NO * ENABLE_GROUP: NO * CAPITALIZE_TYPENAME: NO */ #ifndef P_GMMRR_VAL #define P_GMMRR_VAL #define CDG_ENTER__P_GMMRR_VAL #define CDG_ENTER__FILENAME _P_GMMRR_VAL #define CDG_ENTER__P_GMMRR_VAL__FILE_TYPE CDGINC #define CDG_ENTER__P_GMMRR_VAL__LAST_MODIFIED _2003_09_02 #define CDG_ENTER__P_GMMRR_VAL__ID_AND_VERSION _8441_101_03_025 #define CDG_ENTER__P_GMMRR_VAL__SRC_FILE_TIME _Thu_Nov_29_09_42_28_2007 #include "CDG_ENTER.h" #undef CDG_ENTER__P_GMMRR_VAL #undef CDG_ENTER__FILENAME /* * Value constants for VAL_old_tlli */ #define GMMRR_TLLI_INVALID (0xffffffff)/* TLLI invalid (see GSM 3.03) */ /* * Value constants for VAL_service_state */ #define GMMRR_SERVICE_NONE (0x0) /* No service */ #define GMMRR_SERVICE_LIMITED (0x1) /* Limited service */ #define GMMRR_SERVICE_FULL (0x2) /* Full service */ #define GMMRR_SERVICE_UNKNOWN (0x3) /* Service unknown */ /* * Value constants for VAL_net_mode */ #define GMMRR_NET_MODE_I (0x0) /* Network operation mode I, only one Paging channel for both: PCCCH or CCCH */ #define GMMRR_NET_MODE_II (0x1) /* Network operation mode II, Paging only on CCCH */ #define GMMRR_NET_MODE_III (0x2) /* Network operation mode III, Paging on CCCH for CS and either on CCCH or on PCCCH for GPRS, if PCCH allocated in the cell */ /* * Value constants for VAL_standby_cause */ #define GMMRR_TIMEOUT_OF_T3314 (0x1) /* GMM enters state STANDBY because of timeout of READY timer T3314 */ #define GMMRR_RESET_OF_T3314 (0x2) /* GMM enters state STANDBY because GMM receives a message witrh timer_value 0 */ #define GMMRR_FORCE_TO_STANDBY (0x3) /* GMM receives a message indicating FORCE TO STANDBY */ /* * Value constants for VAL_old_ptmsi */ #define GMMRR_TMSI_INVALID (0xffffffff)/* P-TMSI or TMSI invalid (see GSM 3.03) */ /* * Value constants for VAL_v_mid */ #define V_MID_NOT_PRES (0x0) /* not present */ #define V_MID_PRES (0x1) /* present */ /* * Value constants for VAL_id_type */ #define TYPE_NO_ID (0x0) /* no identity */ #define TYPE_IMSI (0x1) /* IMSI */ #define TYPE_TMSI (0x4) /* TMSI */ /* * Value constants for VAL_response */ #define VAL_RESPONSE___DEF (0x0) /* The call is confirmed */ #define GMMRR_CS_PAGE_REJ (0x0) /* The call is rejected */ #define GMMRR_CS_PAGE_CNF (0x1) /* The call is confirmed */ /* * Value constants for VAL_page_id */ #define VAL_PAGE_ID___DEF (0x0) /* P-TMSI */ #define GMMRR_IMSI (0x0) /* IMSI */ #define GMMRR_PTMSI (0x1) /* P-TMSI */ /* * Value constants for VAL_mobile_class */ #define VAL_MOBILE_CLASS___DEF (0x0) /* Combined GPRS attach */ #define GMMRR_CLASS_A (0x1) /* Combined GPRS */ #define GMMRR_CLASS_B (0x2) /* GPRS and GSM */ #define GMMRR_CLASS_BC (0x3) /* Combined GPRS if possible, otherwise GSM only */ #define GMMRR_CLASS_BG (0x4) /* Combined GPRS if possible, otherwise GPRS only */ #define GMMRR_CLASS_CC (0x5) /* reserved. (GSM-only) */ #define GMMRR_CLASS_CG (0x6) /* GPRS-only */ /* * Value constants for VAL_susp_gprs */ #define VAL_SUSP_GPRS___DEF (0x0) /* Suspend GPRS */ #define GMMRR_NOT_SUSP_GPRS (0x0) /* Do not suspend GPRS */ #define GMMRR_SUSP_GPRS (0x1) /* Suspend GPRS */ /* * Value constants for VAL_split_pg_cycle */ #define GMMRR_NO_DRX (0x2c0) /* Non DRX mode */ /* * Value constants for VAL_lac */ #define VAL_LAC___DEF (0x0) /* lac */ #define GMMRR_LA_INVALID (0xfffe) /* la invalid */ /* * Value constants for VAL_rac */ #define GMMRR_RAC_INVALID (0xff) /* routing area code invalid */ /* * Value constants for VAL_gmmrr_non_drx_timer */ #define DRX_NO (0x0) /* no non-DRX mode after transfer state */ #define DRX_1_SEC (0x1) /* max. 1 sec non-DRX mode after transfer */ #define DRX_2_SEC (0x2) /* max. 2 sec non-DRX mode after transfer */ #define DRX_4_SEC (0x3) /* max. 4 sec non-DRX mode after transfer */ #define DRX_8_SEC (0x4) /* max. 8 sec non-DRX mode after transfer */ #define DRX_16_SEC (0x5) /* max. 16 sec non-DRX mode after transfer */ #define DRX_32_SEC (0x6) /* max. 32 sec non-DRX mode after transfer */ #define DRX_64_SEC (0x7) /* max. 64 sec non-DRX mode after transfer */ /* * Value constants for VAL_gmmrr_susp_cause */ #define GMMRR_ABNORMAL_RELEASE (0x0) /* GRR should release immediately the running TBF */ #define GMMRR_NORMAL_RELEASE (0x1) /* GRR should wait until TBF is released */ /* * Value constants for VAL_spgc_ccch_supp */ #define GMMRR_SPGC_CCCH_SUPP_NO (0x0) /* Split paging cycle on CCCH is not supported by the mobile station */ #define GMMRR_SPGC_CCCH_SUPP_YES (0x1) /* Split paging cycle on CCCH is supported by the mobile station */ /* * Value constants for VAL_cu_cause */ #define GMMRR_RA_DEFAULT (0x0) /* GRR should not perform Cell Update Access */ #define GMMRR_RA_CU (0x1) /* GRR should perforn Random Access with cause Cell Update */ /* * Value constants for VAL_rt */ #define RT_GSM (0x0) /* GSM */ #define RT_GPRS (0x1) /* GSM/GPRS */ #define RT_EDGE (0x2) /* GSM/GPRS/EDGE */ #define RT_UMTS_FDD (0x3) /* UMTS FDD */ /* * user defined constants */ #define MAX_DIGITS (0x10) #define SIZE_MCC (0x3) #define SIZE_MNC (0x3) #include "CDG_LEAVE.h" #endif