FreeCalypso > hg > fc-tourmaline
view cdg-hybrid/sap/dcm.pdf @ 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
;******************************************************************************** ;*** File : dcm.pdf ;*** Creation : Wed Mar 11 09:57:42 CST 2009 ;*** XSLT Processor : Apache Software Foundation / http://xml.apache.org/xalan-j / supports XSLT-Ver: 1 ;*** Copyright : (c) Texas Instruments AG, Berlin Germany 2002 ;******************************************************************************** ;*** Document Type : Service Access Point Specification ;*** Document Name : dcm ;*** Document No. : 8462.101.03.001 ;*** Document Date : 2003-09-03 ;*** Document Status: BEING_PROCESSED ;*** Document Author: STW ;******************************************************************************** PRAGMA SRC_FILE_TIME "Thu Nov 29 09:39:32 2007" PRAGMA LAST_MODIFIED "2003-09-03" PRAGMA ID_AND_VERSION "8462.101.03.001" CONST CDCM_APN_MAX_LEN 100 ; Maximum length of an access point name CONST CDCM_PHONE_NR_LEN 84 ; Maximum length of a CSD phone number CONST CDCM_PDP_MAX_LEN 20 ; Maximum length of PDP address CONST CDCM_GATE_MAX_LEN 20 ; Maximum length of gateway address CONST CDCM_USER_MAX_LEN 25 ; Maximum length of user name CONST CDCM_PASSWORD_MAX_LEN 25 ; Maximum length of password CONST CDCM_DNS_MAX_LEN 20 ; Maximum length of DNS addresses VALTAB VAL_bearer_select VAL 1 DCM_SOCK_BEARER_ANY "DCM will decide which connection type to be used" VAL 2 DCM_SOCK_BEARER_GPRS "Use a GPRS context as bearer, DCM will decide which GPRS settings to be used" VAL 3 DCM_SOCK_BEARER_GSM "Use GSM data connection as bearer DCM will decide which GSM settings to be used" VAL 4 DCM_SOCK_BEARER_USE_PROFILE "Use a specific data account for this connection" VAL 5 DCM_SOCK_BEARER_AS_SPECIFIED "Use the data account information which is which is delivered within this signal" VALTAB VAL_authtype VAL 1 DCM_SOCK_AUTH_PAP "PAP authentification protocol" VAL 2 DCM_SOCK_AUTH_CHAP "CHAP authentification protocol !!! NOT SUPPORTED" VAL 3 DCM_SOCK_AUTH_NO "No authentication" VALTAB VAL_result VAL 0 DCM_RET_OK "The action has been performed successfully." VAL 1 DCM_RET_NOT_READY "The command can not be processed now." VAL 2 DCM_RET_ALREADY_ACTIVATED "Connection refused because already actuvated." VAL 3 DCM_RET_UNKNOWN_EVENT "Unknown receipt event." VAL 4 DCM_RET_INVALID_PARAMETER "A parameter is wrong." VAL 5 DCM_RET_CMD_PENDING "There is a pending command yet." VAL 6 DCM_RET_PS_CONN_BROKEN "Loose of bearer connection." VAR api_instance "The api_instance value returned by sock_api_initialize()." L VAR bearer_handle "Bearer handle" S VAR bearer_select "Bearer type" M VAL @p_dcm - VAL_bearer_select@ VAR authtype "Authentication type" S VAL @p_dcm - VAL_authtype@ VAR profile_number "Profile ID for bearer selection" S VAR bearer_handle "Systemwide bearer handle" S VAR app_handle "Comm handle of application" S VAR bearer_type "Used bearer type" B VAR apn_valid "Flag for apn validation" B VAR apn "Access Point Name" B VAR phone_number_valid "Flag for phone number validation" B VAR phone_number "CSD dial up phone number" B VAR user_id_valid "Flag for user ID validation" B VAR user_id "User ID" B VAR password_valid "Flag for password validation" B VAR password "Password" B VAR cid "GPRS context ID" S VAR ip_address "Used IP address" L VAR dns1 "First domain name server" L VAR dns2 "Second domain name server" L VAR gateway "Gateway address" L VAR auth_type "Type of authentication" S VAR data_compr "Flag for data compression" B VAR header_compr "Flag for header compression" B VAR precedence "GPRS precedence class" S VAR delay "GPRS delay class" S VAR reliability "GPRS reliability class" S VAR peak_throughput "GPRS peak throughput" S VAR mean_throughput "GPRS mean throughput" S VAR shareable "Flag for sharing requested bearer conn" B VAR result "Result of the operation" M VAL @p_dcm - VAL_result@ VAR dcm_err "Error value" M COMP dcm_info_conn "Connection information" { bearer_handle ; Systemwide bearer handle app_handle ; Comm handle of application bearer_type ; Used bearer type apn_valid ; Flag for apn validation apn [CDCM_APN_MAX_LEN + 1] ; Access Point Name phone_number_valid ; Flag for phone number validation phone_number [CDCM_PHONE_NR_LEN + 1] ; CSD dial up phone number user_id_valid ; Flag for user ID validation user_id [CDCM_USER_MAX_LEN + 1] ; User ID password_valid ; Flag for password validation password [CDCM_PASSWORD_MAX_LEN + 1] ; Password cid ; GPRS context ID ip_address ; Used IP address dns1 ; First domain name server dns2 ; Second domain name server gateway ; Gateway address auth_type ; Type of authentication data_compr ; Flag for data compression header_compr ; Flag for header compression precedence ; GPRS precedence class delay ; GPRS delay class reliability ; GPRS reliability class peak_throughput ; GPRS peak throughput mean_throughput ; GPRS mean throughput shareable ; Flag for sharing requested bearer conn } ; DCM_OPEN_CONN_REQ 0x8000401C ; DCM_OPEN_CONN_CNF 0x8000001C ; DCM_CLOSE_CONN_REQ 0x8001401C ; DCM_CLOSE_CONN_CNF 0x8001001C ; DCM_GET_CURRENT_CONN_REQ 0x8002401C ; DCM_GET_CURRENT_CONN_CNF 0x8002001C ; DCM_ERROR_IND 0x8003001C PRIM DCM_OPEN_CONN_REQ 0x8000401C { api_instance ; Api instance bearer_select ; Bearer type profile_number ; profile number dcm_info_conn ; Paramater used for bearer connection } PRIM DCM_OPEN_CONN_CNF 0x8000001C { result ; Result of the operation bearer_handle ; Bearer handle } PRIM DCM_CLOSE_CONN_REQ 0x8001401C { api_instance ; Api instance bearer_handle ; Beare handle } PRIM DCM_CLOSE_CONN_CNF 0x8001001C { result ; Result of the operation } PRIM DCM_GET_CURRENT_CONN_REQ 0x8002401C { api_instance ; Api instance bearer_handle ; Beare handle } PRIM DCM_GET_CURRENT_CONN_CNF 0x8002001C { result ; Result of the operation dcm_info_conn ; Connection information } PRIM DCM_ERROR_IND 0x8003001C { dcm_err ; Error value result ; Result of the operation }