FreeCalypso > hg > fc-tourmaline
view cdg-hybrid/cdginc/p_8010_137_nas_include.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 | 35f7a1dc9f7d |
children |
line wrap: on
line source
/* +--------------------------------------------------------------------------+ | PROJECT : PROTOCOL STACK | | FILE : p_8010_137_nas_include.h | | SOURCE : "sap\8010_137_nas_include.pdf" | | LastModified : "2004-06-09" | | IdAndVersion : "8010.137.02.017" | | SrcFileTime : "Thu Nov 29 09:28:24 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 : NAS * COMPATIBILITY_DEFINES : NO * ALWAYS_ENUM_IN_VAL_FILE: YES * ENABLE_GROUP: NO * CAPITALIZE_TYPENAME: NO */ #ifndef P_8010_137_NAS_INCLUDE_H #define P_8010_137_NAS_INCLUDE_H #define CDG_ENTER__P_8010_137_NAS_INCLUDE_H #define CDG_ENTER__FILENAME _P_8010_137_NAS_INCLUDE_H #define CDG_ENTER__P_8010_137_NAS_INCLUDE_H__FILE_TYPE CDGINC #define CDG_ENTER__P_8010_137_NAS_INCLUDE_H__LAST_MODIFIED _2004_06_09 #define CDG_ENTER__P_8010_137_NAS_INCLUDE_H__ID_AND_VERSION _8010_137_02_017 #define CDG_ENTER__P_8010_137_NAS_INCLUDE_H__SRC_FILE_TIME _Thu_Nov_29_09_28_24_2007 #include "CDG_ENTER.h" #undef CDG_ENTER__P_8010_137_NAS_INCLUDE_H #undef CDG_ENTER__FILENAME #include "p_8010_137_nas_include.val" /* * typedef between var and valtab enums */ #ifndef __T_NAS_nsapi__ #define __T_NAS_nsapi__ typedef T_NAS_VAL_nsapi T_NAS_nsapi; #endif #ifndef __T_NAS_pri_nsapi__ #define __T_NAS_pri_nsapi__ typedef T_NAS_VAL_nsapi T_NAS_pri_nsapi; #endif #ifndef __T_NAS_dti_direction__ #define __T_NAS_dti_direction__ typedef T_NAS_VAL_dti_direction T_NAS_dti_direction; #endif #ifndef __T_NAS_dti_conn__ #define __T_NAS_dti_conn__ typedef T_NAS_VAL_dti_conn T_NAS_dti_conn; #endif #ifndef __T_NAS_hcomp__ #define __T_NAS_hcomp__ typedef T_NAS_VAL_hcomp T_NAS_hcomp; #endif #ifndef __T_NAS_dcomp__ #define __T_NAS_dcomp__ typedef T_NAS_VAL_dcomp T_NAS_dcomp; #endif #ifndef __T_NAS_ppp_hc__ #define __T_NAS_ppp_hc__ typedef T_NAS_VAL_ppp_hc T_NAS_ppp_hc; #endif #ifndef __T_NAS_sync_event__ #define __T_NAS_sync_event__ typedef T_NAS_VAL_sync_event T_NAS_sync_event; #endif #ifndef __T_NAS_ti__ #define __T_NAS_ti__ typedef T_NAS_VAL_ti T_NAS_ti; #endif #ifndef __T_NAS_ch_type__ #define __T_NAS_ch_type__ typedef T_NAS_VAL_ch_type T_NAS_ch_type; #endif #ifndef __T_NAS_ch_mode__ #define __T_NAS_ch_mode__ typedef T_NAS_VAL_ch_mode T_NAS_ch_mode; #endif #ifndef __T_NAS_k_ms_iwf__ #define __T_NAS_k_ms_iwf__ typedef T_NAS_VAL_k_ms_iwf T_NAS_k_ms_iwf; #endif #ifndef __T_NAS_k_iwf_ms__ #define __T_NAS_k_iwf_ms__ typedef T_NAS_VAL_k_iwf_ms T_NAS_k_iwf_ms; #endif #ifndef __T_NAS_pt__ #define __T_NAS_pt__ typedef T_NAS_VAL_pt T_NAS_pt; #endif #ifndef __T_NAS_p0__ #define __T_NAS_p0__ typedef T_NAS_VAL_p0 T_NAS_p0; #endif #ifndef __T_NAS_p1__ #define __T_NAS_p1__ typedef T_NAS_VAL_p1 T_NAS_p1; #endif #ifndef __T_NAS_p2__ #define __T_NAS_p2__ typedef T_NAS_VAL_p2 T_NAS_p2; #endif #ifndef __T_NAS_rate__ #define __T_NAS_rate__ typedef T_NAS_VAL_rate T_NAS_rate; #endif #ifndef __T_NAS_ack_flg__ #define __T_NAS_ack_flg__ typedef T_NAS_VAL_ack_flg T_NAS_ack_flg; #endif #ifndef __T_NAS_tft_pf_valid_bits__ #define __T_NAS_tft_pf_valid_bits__ typedef T_NAS_VAL_tft_pf_valid_bits T_NAS_tft_pf_valid_bits; #endif #ifndef __T_NAS_org_entity__ #define __T_NAS_org_entity__ typedef T_NAS_VAL_org_entity T_NAS_org_entity; #endif #ifndef __T_NAS_reset__ #define __T_NAS_reset__ typedef T_NAS_VAL_reset T_NAS_reset; #endif #ifndef __T_NAS_pkt_flow_id__ #define __T_NAS_pkt_flow_id__ typedef T_NAS_VAL_pkt_flow_id T_NAS_pkt_flow_id; #endif #ifndef __T_NAS_dti_neighbor__ #define __T_NAS_dti_neighbor__ /* * DTI neighbor entity name * CCDGEN:WriteStruct_Count==1295 */ typedef struct { U8 name[NAS_SIZE_ENTITY_NAME]; /*< 0: 6> DTI entity neighbor name */ U8 _align0; /*< 6: 1> alignment */ U8 _align1; /*< 7: 1> alignment */ } T_NAS_dti_neighbor; #endif #ifndef __T_NAS_comp_params__ #define __T_NAS_comp_params__ /* * Header compression parameters * CCDGEN:WriteStruct_Count==1296 */ typedef struct { U8 hcomp; /*< 0: 1> T_NAS_hcomp, Header compression used/requested; Header compression used/requested */ U8 dcomp; /*< 1: 1> T_NAS_dcomp, Data compression used/requested; Data compression used/requested */ U8 ppp_hc; /*< 2: 1> T_NAS_ppp_hc, header compression of PPP connection; header compression of PPP connection */ U8 msid; /*< 3: 1> max slot identifier; max slot identifier */ } T_NAS_comp_params; #endif #ifndef __T_NAS_ch_info__ #define __T_NAS_ch_info__ /* * Channel using mode * CCDGEN:WriteStruct_Count==1297 */ typedef struct { U8 ch_type; /*< 0: 1> T_NAS_ch_type, Channel Type */ U8 ch_mode; /*< 1: 1> T_NAS_ch_mode, Channel Mode */ U8 _align0; /*< 2: 1> alignment */ U8 _align1; /*< 3: 1> alignment */ } T_NAS_ch_info; #endif #ifndef __T_NAS_ipv4_addr__ #define __T_NAS_ipv4_addr__ /* * IPv4 Address Type * CCDGEN:WriteStruct_Count==1298 */ typedef struct { U8 a4[NAS_SIZE_IPv4_ADDR]; /*< 0: 4> IPv4 Address Values */ } T_NAS_ipv4_addr; #endif #ifndef __T_NAS_ipv6_addr__ #define __T_NAS_ipv6_addr__ /* * IPv6 Address Type * CCDGEN:WriteStruct_Count==1299 */ typedef struct { U8 a6[NAS_SIZE_IPv6_ADDR]; /*< 0: 16> IPv6 Address Values */ } T_NAS_ipv6_addr; #endif #ifndef __T_NAS_ip_address__ #define __T_NAS_ip_address__ /* * IP Address * CCDGEN:WriteStruct_Count==1300 */ typedef union { U32 ip_not_present; /*< 0: 4> IP address not present */ T_NAS_ipv4_addr ipv4_addr; /*< 0: 4> IPv4 Address Type */ T_NAS_ipv6_addr ipv6_addr; /*< 0: 16> IPv6 Address Type */ } T_NAS_ip_address; #endif #ifndef __T_NAS_ip__ #define __T_NAS_ip__ /* * IP Address structure * CCDGEN:WriteStruct_Count==1301 */ typedef struct { T_NAS_ctrl_ip_address ctrl_ip_address; /*< 0: 4> (enum=32bit) controller for union */ T_NAS_ip_address ip_address; /*< 4: 16> IP Address */ } T_NAS_ip; #endif #ifndef __T_NAS_rlp_config__ #define __T_NAS_rlp_config__ /* * RLP configuration parameters * CCDGEN:WriteStruct_Count==1302 */ typedef struct { U16 k_ms_iwf; /*< 0: 2> T_NAS_k_ms_iwf, window size ms -> iwf */ U16 k_iwf_ms; /*< 2: 2> T_NAS_k_iwf_ms, window size iwf -> ms */ U8 t1; /*< 4: 1> acknowledge timer */ U8 t2; /*< 5: 1> reply delay */ U8 n2; /*< 6: 1> maximum number of retransmission attempts */ U8 pt; /*< 7: 1> T_NAS_pt, type of data compression */ U8 p0; /*< 8: 1> T_NAS_p0, v.42bis data compression direction */ U8 _align0; /*< 9: 1> alignment */ U16 p1; /*< 10: 2> T_NAS_p1, v.42bis number of possible codewords */ U8 p2; /*< 12: 1> T_NAS_p2, v.42bis maximum encodable string length */ U8 _align1; /*< 13: 1> alignment */ U8 _align2; /*< 14: 1> alignment */ U8 _align3; /*< 15: 1> alignment */ } T_NAS_rlp_config; #endif #ifndef __T_NAS_tft_ipv4_src_addr_mask__ #define __T_NAS_tft_ipv4_src_addr_mask__ /* * IPv4 source address and subnet mask * CCDGEN:WriteStruct_Count==1303 */ typedef struct { U8 tft_ipv4_addr[NAS_SIZE_IPv4_ADDR]; /*< 0: 4> source address */ U8 tft_ipv4_mask[NAS_SIZE_IPv4_ADDR]; /*< 4: 4> subnet mask */ } T_NAS_tft_ipv4_src_addr_mask; #endif #ifndef __T_NAS_tft_ipv6_src_addr_mask__ #define __T_NAS_tft_ipv6_src_addr_mask__ /* * IPv6 source address and subnet mask * CCDGEN:WriteStruct_Count==1304 */ typedef struct { U8 tft_ipv6_addr[NAS_SIZE_IPv6_ADDR]; /*< 0: 16> source address */ U8 tft_ipv6_mask[NAS_SIZE_IPv6_ADDR]; /*< 16: 16> subnet mask */ } T_NAS_tft_ipv6_src_addr_mask; #endif #ifndef __T_NAS_tft_src_port_range__ #define __T_NAS_tft_src_port_range__ /* * source port range * CCDGEN:WriteStruct_Count==1305 */ typedef struct { U16 low_limit; /*< 0: 2> low limit */ U16 high_limit; /*< 2: 2> high limit */ } T_NAS_tft_src_port_range; #endif /* * destination port range * CCDGEN:WriteStruct_Count==1306 */ #ifndef __T_NAS_tft_dest_port_range__ #define __T_NAS_tft_dest_port_range__ typedef T_NAS_tft_src_port_range T_NAS_tft_dest_port_range; #endif #ifndef __T_NAS_tft_tos_and_mask__ #define __T_NAS_tft_tos_and_mask__ /* * IPv4 type of service (or IPv6 traffic class) and mask * CCDGEN:WriteStruct_Count==1307 */ typedef struct { U8 tos_value; /*< 0: 1> type of service value */ U8 tos_mask; /*< 1: 1> type of service mask */ U8 _align0; /*< 2: 1> alignment */ U8 _align1; /*< 3: 1> alignment */ } T_NAS_tft_tos_and_mask; #endif #ifndef __T_NAS_tft_pf_ipv6__ #define __T_NAS_tft_pf_ipv6__ /* * packet filter component * CCDGEN:WriteStruct_Count==1308 */ typedef struct { U8 tft_next_hdr; /*< 0: 1> IPv6 next header */ U8 _align0; /*< 1: 1> alignment */ U8 _align1; /*< 2: 1> alignment */ U8 _align2; /*< 3: 1> alignment */ T_NAS_tft_tos_and_mask tft_tos_and_mask; /*< 4: 4> IPv4 type of service (or IPv6 traffic class) and mask */ T_NAS_tft_dest_port_range tft_dest_port_range; /*< 8: 4> destination port range */ T_NAS_tft_src_port_range tft_src_port_range; /*< 12: 4> source port range */ U32 tft_ipsec_spi; /*< 16: 4> IPSec security parameter index */ U32 tft_flow_label; /*< 20: 4> IPv6 flow label */ T_NAS_tft_ipv6_src_addr_mask tft_ipv6_src_addr_mask; /*< 24: 32> IPv6 source address and subnet mask */ } T_NAS_tft_pf_ipv6; #endif #ifndef __T_NAS_tft_pf_ipv4__ #define __T_NAS_tft_pf_ipv4__ /* * packet filter component * CCDGEN:WriteStruct_Count==1309 */ typedef struct { U8 tft_protocol; /*< 0: 1> IPv4 protocol number */ U8 _align0; /*< 1: 1> alignment */ U8 _align1; /*< 2: 1> alignment */ U8 _align2; /*< 3: 1> alignment */ T_NAS_tft_tos_and_mask tft_tos_and_mask; /*< 4: 4> IPv4 type of service (or IPv6 traffic class) and mask */ T_NAS_tft_dest_port_range tft_dest_port_range; /*< 8: 4> destination port range */ T_NAS_tft_src_port_range tft_src_port_range; /*< 12: 4> source port range */ U32 tft_ipsec_spi; /*< 16: 4> IPSec security parameter index */ T_NAS_tft_ipv4_src_addr_mask tft_ipv4_src_addr_mask; /*< 20: 8> IPv4 source address and subnet mask */ } T_NAS_tft_pf_ipv4; #endif #ifndef __T_NAS_tft_pf_entry__ #define __T_NAS_tft_pf_entry__ /* * TFT packet filter entry * CCDGEN:WriteStruct_Count==1310 */ typedef union { T_NAS_tft_pf_ipv4 tft_pf_ipv4; /*< 0: 28> packet filter component */ T_NAS_tft_pf_ipv6 tft_pf_ipv6; /*< 0: 56> packet filter component */ } T_NAS_tft_pf_entry; #endif #ifndef __T_NAS_tft_pf__ #define __T_NAS_tft_pf__ /* * packet filter * CCDGEN:WriteStruct_Count==1311 */ typedef struct { U8 tft_pf_id; /*< 0: 1> packet filter identifier */ U8 tft_pf_precedence; /*< 1: 1> packet filter precedence */ U8 tft_pf_valid_bits; /*< 2: 1> T_NAS_tft_pf_valid_bits, field precence bitfield */ U8 _align0; /*< 3: 1> alignment */ T_NAS_ctrl_tft_pf_entry ctrl_tft_pf_entry; /*< 4: 4> (enum=32bit) controller for union */ T_NAS_tft_pf_entry tft_pf_entry; /*< 8: 56> TFT packet filter entry */ } T_NAS_tft_pf; #endif #ifndef __T_NAS_tft__ #define __T_NAS_tft__ /* * Traffic Flow Template * CCDGEN:WriteStruct_Count==1312 */ typedef struct { U8 _align0; /*< 0: 1> alignment */ U8 _align1; /*< 1: 1> alignment */ U8 _align2; /*< 2: 1> alignment */ U8 c_tft_pf; /*< 3: 1> counter */ T_NAS_tft_pf *ptr_tft_pf; /*< 4: 4> pointer to packet filter */ } T_NAS_tft; #endif #ifndef __T_NAS_fac_inf__ #define __T_NAS_fac_inf__ /* * facility information * CCDGEN:WriteStruct_Count==1313 */ typedef struct { U16 l_fac; /*< 0: 2> facility length */ U16 o_fac; /*< 2: 2> facility offset */ U8 fac[NAS_FACILITY_LEN]; /*< 4:251> facility content */ U8 _align0; /*<255: 1> alignment */ } T_NAS_fac_inf; #endif #ifndef __T_NAS_ra_act_params__ #define __T_NAS_ra_act_params__ /* * facility information * CCDGEN:WriteStruct_Count==1314 */ typedef struct { U8 model; /*< 0: 1> RA transfer model */ U8 tra_rate; /*< 1: 1> Transmission rate */ U8 user_rate; /*< 2: 1> User rate */ U8 ndb; /*< 3: 1> Number data bits */ U8 nsb; /*< 4: 1> Number stop bits */ U8 _align0; /*< 5: 1> alignment */ U8 _align1; /*< 6: 1> alignment */ U8 _align2; /*< 7: 1> alignment */ } T_NAS_ra_act_params; #endif /* * End of substructure section, begin of primitive definition section */ #ifndef __T_NAS_EXPORT__ #define __T_NAS_EXPORT__ /* * * CCDGEN:WriteStruct_Count==1315 */ typedef struct { U8 ack_flg; /*< 0: 1> T_NAS_ack_flg, acknowledge flag */ U8 _align0; /*< 1: 1> alignment */ U16 bytes_per_prim; /*< 2: 2> bytes per primitive */ T_NAS_ch_info ch_info; /*< 4: 4> Channel using mode */ T_NAS_comp_params comp_params; /*< 8: 4> Header compression parameters */ U8 dti_direction; /*< 12: 1> T_NAS_dti_direction, direction of DTI connection */ U8 _align1; /*< 13: 1> alignment */ U8 _align2; /*< 14: 1> alignment */ U8 _align3; /*< 15: 1> alignment */ U32 dti_linkid; /*< 16: 4> DTI link identifier */ T_NAS_dti_neighbor dti_neighbor; /*< 20: 8> DTI neighbor entity name */ U32 error_rate; /*< 28: 4> error_rate */ T_NAS_ip ip; /*< 32: 20> IP Address structure */ T_NAS_ctrl_ip_address ctrl_ip_address; /*< 52: 4> (enum=32bit) controller for union */ T_NAS_ip_address ip_address; /*< 56: 16> IP Address */ U16 k_iwf_ms; /*< 72: 2> T_NAS_k_iwf_ms, window size iwf -> ms */ U16 k_ms_iwf; /*< 74: 2> T_NAS_k_ms_iwf, window size ms -> iwf */ U8 n2; /*< 76: 1> maximum number of retransmission attempts */ U8 _align4; /*< 77: 1> alignment */ U8 _align5; /*< 78: 1> alignment */ U8 _align6; /*< 79: 1> alignment */ T_NAS_ipv4_addr ipv4_addr; /*< 80: 4> IPv4 Address Type */ T_NAS_ipv6_addr ipv6_addr; /*< 84: 16> IPv6 Address Type */ U8 nsapi; /*<100: 1> T_NAS_nsapi, network layer service access point identifier */ U8 _align7; /*<101: 1> alignment */ U16 nsapi_set; /*<102: 2> set of network layer service access point identifiers */ U8 p0; /*<104: 1> T_NAS_p0, v.42bis data compression direction */ U8 _align8; /*<105: 1> alignment */ U16 p1; /*<106: 2> T_NAS_p1, v.42bis number of possible codewords */ U8 p2; /*<108: 1> T_NAS_p2, v.42bis maximum encodable string length */ U8 pri_nsapi; /*<109: 1> T_NAS_pri_nsapi, network layer service access point identifier */ U8 pt; /*<110: 1> T_NAS_pt, type of data compression */ U8 rate; /*<111: 1> T_NAS_rate, transmission rate */ T_NAS_rlp_config rlp_config; /*<112: 16> RLP configuration parameters */ U8 rlp_vers; /*<128: 1> rlp version number */ U8 sync_event; /*<129: 1> T_NAS_sync_event, event, received in the sync indication */ U8 t1; /*<130: 1> acknowledge timer */ U8 t2; /*<131: 1> reply delay */ T_NAS_tft tft; /*<132: 8> Traffic Flow Template */ T_NAS_tft_dest_port_range tft_dest_port_range; /*<140: 4> destination port range */ U32 tft_ipsec_spi; /*<144: 4> IPSec security parameter index */ T_NAS_tft_ipv4_src_addr_mask tft_ipv4_src_addr_mask; /*<148: 8> IPv4 source address and subnet mask */ T_NAS_tft_ipv6_src_addr_mask tft_ipv6_src_addr_mask; /*<156: 32> IPv6 source address and subnet mask */ T_NAS_tft_pf tft_pf; /*<188: 64> packet filter */ T_NAS_ctrl_tft_pf_entry ctrl_tft_pf_entry; /*<252: 4> (enum=32bit) controller for union */ T_NAS_tft_pf_entry tft_pf_entry; /*<256: 56> TFT packet filter entry */ T_NAS_tft_pf_ipv4 tft_pf_ipv4; /*<312: 28> packet filter component */ T_NAS_tft_pf_ipv6 tft_pf_ipv6; /*<340: 56> packet filter component */ T_NAS_tft_src_port_range tft_src_port_range; /*<396: 4> source port range */ T_NAS_tft_tos_and_mask tft_tos_and_mask; /*<400: 4> IPv4 type of service (or IPv6 traffic class) and mask */ U8 ti; /*<404: 1> T_NAS_ti, transaction identifier */ U8 _align9; /*<405: 1> alignment */ U8 _align10; /*<406: 1> alignment */ U8 _align11; /*<407: 1> alignment */ T_NAS_fac_inf fac_inf; /*<408:256> facility information */ U8 org_entity; /*<664: 1> T_NAS_org_entity, Originator of a request to MM */ U8 dti_conn; /*<665: 1> T_NAS_dti_conn, DTI connect */ U8 reset; /*<666: 1> T_NAS_reset, reset flag */ U8 _align12; /*<667: 1> alignment */ U32 octets_uplink; /*<668: 4> octets uplink */ U32 octets_downlink; /*<672: 4> octets downlink */ U32 packets_uplink; /*<676: 4> packets uplink */ U32 packets_downlink; /*<680: 4> packets downlink */ U8 pkt_flow_id; /*<684: 1> T_NAS_pkt_flow_id, packet flow identifier */ U8 _align13; /*<685: 1> alignment */ U8 _align14; /*<686: 1> alignment */ U8 _align15; /*<687: 1> alignment */ T_NAS_ra_act_params ra_act_params; /*<688: 8> facility information */ } T_NAS_EXPORT; #endif #include "CDG_LEAVE.h" #endif