FreeCalypso > hg > fc-tourmaline
view src/g23m-gprs/grlc/grlc_ruf.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 : GPRS (8441) | Modul : GRLC +----------------------------------------------------------------------------- | 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 service RU. +----------------------------------------------------------------------------- */ #ifndef GRLC_RUF_H #define GRLC_RUF_H EXTERN void ru_init ( void ); EXTERN void ru_get_next_sdu ( void ); EXTERN USHORT ru_calc_rlc_data_size ( T_CODING_SCHEME cs_type_i, UBYTE ti_bit_i ); EXTERN USHORT ru_set_block_status ( T_CODING_SCHEME cs_type_i ); EXTERN T_CODING_SCHEME ru_get_cs_type ( USHORT bs_i ); EXTERN void ru_tbf_init ( void ); EXTERN void ru_send_mac_data_req ( UBYTE bsn_i ); EXTERN void ru_set_prim_queue ( BOOL cd_state_i ); EXTERN UBYTE ru_countdown_procedure ( UBYTE ret_blocks ); EXTERN void ru_update_vb ( void ); EXTERN void ru_calc_rlc_data_block ( UBYTE bsn_i ); EXTERN void ru_handle_n3102 ( T_PAN_CNT pan_cnt_i ); EXTERN UBYTE ru_calc_va ( void ); EXTERN void ru_ret_bsn ( void ); EXTERN void ru_change_of_cs ( T_CODING_SCHEME cs_type_i ); EXTERN USHORT ru_recalc_rlc_oct_cnt ( void ); EXTERN BOOL ru_contention_resolution ( void ); EXTERN void ru_delete_prims ( UBYTE last_bsn_i ); EXTERN BOOL ru_handle_n3104 ( void ); EXTERN void ru_send_control_block ( void ); EXTERN void ru_stall_ind ( void ); EXTERN void ru_new_data ( void ); EXTERN BOOL ru_within_window ( UBYTE bsn_i, UBYTE high_value_i,UBYTE low_value_i ); EXTERN void ru_check_pl_ret ( UBYTE rlc_blocks_sent_i ); EXTERN void ru_set_T3198 ( UBYTE bsn_i ); EXTERN void ru_send_ul_dummy_block ( void ); EXTERN void ru_handle_stall_ind ( void ); EXTERN void ru_reorg_l1 ( UBYTE sent_blks_i ); EXTERN void ru_del_prim_in_uack_mode (UBYTE rlc_blocks_sent_i); EXTERN void ru_handle_timers ( UBYTE rlc_blocks_sent_i); EXTERN UBYTE ru_set_next_bsn_ret ( void); EXTERN void ru_handle_nts (UBYTE rlc_blocks_sent_i); EXTERN void ru_handle_tbf_start_in_ptm ( UBYTE rlc_blocks_sent_i ); EXTERN void ru_switch_ul_buffer ( UBYTE rlc_blocks_sent_i ); EXTERN void ru_cgrlc_st_time_ind ( void ); EXTERN BOOL ru_ctrl_blk_selection_allowed(); EXTERN BOOL ru_peek_next_sdu(USHORT *sdu_len,UBYTE *active_prim,UBYTE *next_prim); EXTERN UBYTE ru_peek_for_ctrl_blk(); #endif /* !GRLC_RUF_H */