view cdg-hybrid/cdginc/p_rrgrr.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_rrgrr.val                                                    |
| SOURCE  : "sap\rrgrr.pdf"                                                |
| LastModified : "2003-11-19"                                              |
| IdAndVersion : "8441.112.03.031"                                         |
| SrcFileTime  : "Thu Nov 29 09:52: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_RRGRR_VAL
#define P_RRGRR_VAL


#define CDG_ENTER__P_RRGRR_VAL

#define CDG_ENTER__FILENAME _P_RRGRR_VAL
#define CDG_ENTER__P_RRGRR_VAL__FILE_TYPE CDGINC
#define CDG_ENTER__P_RRGRR_VAL__LAST_MODIFIED _2003_11_19
#define CDG_ENTER__P_RRGRR_VAL__ID_AND_VERSION _8441_112_03_031

#define CDG_ENTER__P_RRGRR_VAL__SRC_FILE_TIME _Thu_Nov_29_09_52_28_2007

#include "CDG_ENTER.h"

#undef CDG_ENTER__P_RRGRR_VAL

#undef CDG_ENTER__FILENAME

#include "p_mph.val"   /* Access values independent from the corresponding h-file. */


/*
 * Value constants for VAL_cause
 */
#define GPRS_NOT_SUPPORTED             (0x0)      /* Serving cell does not support GPRS */
#define GPRS_SUPPORTED                 (0x1)      /* Serving cell supports GPRS     */
#define GPRS_CELL_NOT_SUITABLE         (0x2)      /* for GRR-controlled cell reselection */

/*
 * Value constants for VAL_si_to_read
 */
#define UNSPECIFIED_SI                 (0x0)      /* Update of unspecified SI message or SI messages */
#define UPDATE_SI1                     (0x1)      /* Update of SI1 message          */
#define UPDATE_SI2_SI2BIS_OR_SI2TER    (0x2)      /* Update of SI2, SI2 bis or SI2 ter message */
#define UPDATE_SI3_SI4_SI7_OR_SI8      (0x3)      /* Update of SI3, SI4, SI7 or SI8 message */
#define UPDATE_SI9                     (0x4)      /* Update of SI9 message          */
#define COMPLETE_SI                    (0x5)      /* Read complete SI               */
#define UPDATE_SI13                    (0xff)     /* Update or read of SI13         */

/*
 * Value constants for VAL_si1_state
 */
#define SI1_NOT_SEND                   (0x0)      /* SI not send                    */
#define SI1_RECEIVED                   (0x1)      /* SI received                    */
#define SI1_NOT_RECEIVED               (0x2)      /* SI not received                */

/*
 * Value constants for VAL_si3_state
 */
#define SI3_NOT_SEND                   (0x0)      /* SI not send                    */
#define SI3_RECEIVED                   (0x1)      /* SI received                    */
#define SI3_NOT_RECEIVED               (0x2)      /* SI not received                */

/*
 * Value constants for VAL_si13_state
 */
#define SI13_NOT_SEND                  (0x0)      /* SI not send                    */
#define SI13_RECEIVED                  (0x1)      /* SI received                    */
#define SI13_NOT_RECEIVED              (0x2)      /* SI not received                */

/*
 * Value constants for VAL_pg_type
 */
#define RRGRR_IMSI                     (0x0)      /* MS is paged by IMSI            */
#define RRGRR_PTMSI                    (0x1)      /* MS is paged by PTMSI (GPRS TMSI) */

/*
 * Value constants for VAL_rr_est
 */
#define RR_EST_NOT_ALLOWED             (0x0)      /* RR establishment not allowed   */
#define RR_EST_ALLOWED                 (0x1)      /* RR establishment allowed       */

// VALTAB-FF: REL99 
// 
// Value constants for VAL_ecsc
// 
// #define ECS_FORBIDDEN                  (0x0)   /* Early classmark sending forbidden in the cell */
// #define ECS_ALLOWED                    (0x1)   /* Early classmark sending allowed in the cell */

/*
 * Value constants for VAL_susp_req
 */
#define SUSPENSION_REQ_NOT_NEEDED      (0x0)      /* RR need not send GPRS suspension request */
#define SUSPENSION_REQ_NEEDED          (0x1)      /* RR has to send GPRS suspension request */

/*
 * Value constants for VAL_r_bit
 */
#define CHAN_REQ_SENT_ONCE             (0x0)      /* MS has sent channel request only once */
#define CHAN_REQ_SENT_MORE             (0x1)      /* MS has sent channel request twice or more */

/*
 * Value constants for VAL_old_ptmsi
 */
#define RRGRR_PTMSI_INVALID            (0xffffffff)/* P-TMSI or TMSI invalid (see GSM 3.03) */

/*
 * Value constants for VAL_stop_cause
 */
#define CONTENTION_RESOLUTION_FAIL     (0x3)      /* Establishment fails due to contention resolution */
#define DL_ESTABLISHMENT_FAIL          (0x4)      /* Layer 2 establishment failure  */

/*
 * Value constants for VAL_arfcn
 */
#define RRGRR_INVALID_ARFCN            (0xffff)   /* Used to mark a channel number entry as invalid. */

/*
 * Value constants for VAL_sb_flag
 */
#define NO_SB_FOUND                    (0x0)      /* synchronisation burst not found */
#define SB_FOUND                       (0x1)      /* synchronisation burst found    */
#define SB_UNKNOWN                     (0x2)      /* status of synchronisation burst unknown */

/*
 * Value constants for VAL_bsic
 */
#define RRGRR_INVALID_BSIC             (0xff)     /* Used to identify a BSIC entry as invalid */

/*
 * Value constants for VAL_cr_type
 */
#define CR_NEW                         (0x0)      /* RR has to reselect the given cell */
#define CR_COMPLETE                    (0x1)      /* RR has to camp on this cell    */
#define CR_CONT                        (0x2)      /* Continue cell reselection.     */
#define CR_CS                          (0x3)      /* start cell selection process again */
#define CR_NEW_NOT_SYNCED              (0x4)      /* start cr for not syncd cell (ie. PCCO) */
#define CR_SUSPENDED_IDLE              (0x7c)     /* start idle procedures          */
#define CR_REQ_CANDIDATE               (0x7d)     /* inform GRR that is has to start a CR */
#define CR_NORMAL                      (0x7e)     /* Do not abort TBF               */
#define CR_ABNORMAL                    (0x7f)     /* Abort TBF                      */

/*
 * Value constants for VAL_sync_res
 */
#define SYNC_OK                        (0x0)      /* Synchronisation OK             */
#define SYNC_FAILED                    (0x1)      /* Synchronisation failed         */

/*
 * Value constants for VAL_cell_type
 */
#define SYNC_SCELL                     (0x0)      /* Synchronisation to serving cell */
#define SYNC_NCELL                     (0x1)      /* Synchronisation to neighbour cell */

/*
 * Value constants for VAL_pag_mode
 */
#define PAG_MODE_LAST_ONE              (0x0)      /* RR shall use the last page (before pag_Reorg) */
#define PAG_MODE_REORG                 (0x1)      /* RR shall use Paging reorg mode */
#define PAG_MODE_PTM_NP                (0x2)      /* RR shall use the NORMAL paging in packet transfer mode, start only CCCH */
#define PAG_MODE_PIM_NP                (0x3)      /* RR shall start only CCCH with REORG and change to NORMAL paging */
#define PAG_MODE_DEFAULT               (0xff)     /* RR shall use the default paging mode and goes to idle mode */

/*
 * Value constants for VAL_split_pg
 */
#define RRGRR_NO_DRX                   (0x2c0)    /* Non DRX mode                   */

/*
 * Value constants for VAL_rac
 */
#define RRGRR_RAC_INVALID              (0xff)     /* routing area code invalid      */

/*
 * Value constants for VAL_reconn_state
 */
#define RECONN_OK                      (0x0)      /* The reconnection to the 'old' channel was cuessful */
#define RECONN_LOW_FAIL                (0x1)      /* A Lower Layer Failure occured during the reconnection. */

/*
 * Value constants for VAL_reconn_cause
 */
#define RECONN_NORM_EVENT              (0x0)      /* Normal event                   */
#define RECONN_UNSPECIFIED             (0x1)      /* Abnormal release, unspecified  */
#define RECONN_CHN_UNACCEPTABLE        (0x2)      /* Abnormal release, channel unacceptable */
#define RECONN_TIMER_EXPIRED           (0x3)      /* Abnormal release, timer expired */
#define RECONN_NO_ACTIVITY             (0x4)      /* Abnormal release, no activity on the radio path */
#define RECONN_PREEMPTIVE              (0x5)      /* Preemptive release             */
#define RECONN_TA_OUT_OF_RANGE         (0x8)      /* Handover impossible, timing advance out of range */
#define RECONN_CHANNEL_MODE            (0x9)      /* Channel mode unacceptable      */
#define RECONN_FREQ_NOT_IMPL           (0xa)      /* Frequency not implemented      */
#define RECONN_CALL_CLEARED            (0x41)     /* Call already cleared           */
#define RECONN_INCORRECT_SEMANTIC      (0x5f)     /* Semantically incorrect message */
#define RECONN_INVALID_INFO            (0x60)     /* Invalid mandatory information  */
#define RECONN_UNKNWN_MSG_TYPE         (0x61)     /* Message type non-existent or not implemented */
#define RECONN_INCMPTBLE_MSG_TYPE      (0x62)     /* Message type not compatible with protocol state */
#define RECONN_COND_IE_ERROR           (0x64)     /* Conditional IE error           */
#define RECONN_NO_CELL_ALLOC           (0x65)     /* No cell allocation available   */
#define RECONN_PROT_UNSPECIFIED        (0x6f)     /* Protocol error unspecified     */

/*
 * Value constants for VAL_ident_type
 */
#define ID_IMSI                        (0x1)      /* Paged by IMSI                  */
#define ID_TMSI                        (0x4)      /* Paged by TMSI                  */
#define ID_PTMSI                       (0x8)      /* Paged by PTMSI                 */

/*
 * Value constants for VAL_report_type
 */
#define REP_TYPE_1                     (0x0)      /* synchronize to the 6 strongest carriers and provide their BSICs */
#define REP_TYPE_2                     (0x1)      /* synchronize to carriers in decreasing field strength until the BSICs for 6 carriers with allowed NCC are fully decoded */
#define REP_TYPE_3                     (0x2)      /* no synchronization, no BSICs are provided */
#define REP_TYPE_RES                   (0x3)      /* reserved, ignore request for measurement data in this version */

/*
 * Value constants for VAL_xmeas_cause
 */
#define EXT_MEAS_OK                    (0x0)      /* The results of the Extended Measurment procedure are valid. */
#define EXT_MEAS_RESET                 (0x1)      /* GRR has stopped the Extended Measurement procedure */
#define EXT_MEAS_LEAVE_IDLE            (0x2)      /* RR has entered a non-idle state and stopped the Extended Measurement procedure */

/*
 * Value constants for VAL_lac
 */
#define VAL_LAC___DEF                  (0x0)      /* lac                            */
#define RRGRR_LA_INVALID               (0xfffe)   /* la invalid                     */

/*
 * Value constants for VAL_v_stop_ccch
 */
#define DONT_STOP_CCCH                 (0x0)      /* Don't stop CCCH                */
#define STOP_CCCH                      (0x1)      /* Stop CCCH                      */
#define INVALID_MSG                    (0x2)      /* The message was not assigned to MS */
#define TASK_STOP_DUMMY_VALUE          (0x3)      /* Dummy value, only used for GRR internal purposes */

/*
 * Value constants for VAL_rxlev
 */
#define RRGRR_INVALID_RXLEV            (0x80)     /* receive signal strength level not present */

/*
 * Value constants for VAL_idx
 */
#define RRGRR_INVALID_IDX              (0xff)     /* index not present              */

/*
 * Value constants for VAL_state
 */
#define TASK_STATE_PIM                 (0x0)      /* Packet Idle Mode               */
#define TASK_STATE_PAM                 (0x1)      /* Packet Access Mode             */
#define TASK_STATE_PTM                 (0x2)      /* Packet Transfer Mode           */

/*
 * Value constants for VAL_cell_bar_access_2
 */
#define CBA_2_NORMAL                   (0x0)      /* Status for cell reselection is set to normal */
#define CBA_2_BARRED                   (0x1)      /* Status for cell reselection is set to barred */

/*
 * Value constants for VAL_exc_acc
 */
#define EXC_ACC_NORMAL                 (0x0)      /* Status for cell selection and reselection is set to normal */
#define EXC_ACC_LIMITED                (0x1)      /* The MS is only allowed to camp on the cell for limited service */

/*
 * Value constants for VAL_same_ra_as_serving_cell
 */
#define DIFFERENT_RA_AS_SCELL          (0x0)      /* The cell is in a routing area different from the serving cell */
#define SAME_RA_AS_SCELL               (0x1)      /* The cell is in the same routing area as the serving cell */

/*
 * Value constants for VAL_gprs_reselect_offset
 */
#define GPRS_RESEL_OFF_DEFAULT         (0x10)     /* Default value (0 dB)           */
#define GPRS_RESEL_OFF_INVALID         (0xff)     /* This value is used to indicate the absence of this parameter */

/*
 * Value constants for VAL_gprs_rxlev_access_min
 */
#define GPRS_RXLEV_ACCESS_MIN_INVALID  (0xff)     /* This value is used to indicate the absence of this parameter */

/*
 * Value constants for VAL_gprs_ms_txpwr_max_cch
 */
#define GPRS_MS_TXPWR_MAX_CCH_INVALID  (0xff)     /* This value is used to indicate the absence of this parameter */

/*
 * Value constants for VAL_gprs_temporary_offset
 */
#define GPRS_TEMPORARY_OFFSET_INVALID  (0xff)     /* This value is used to indicate the absence of this parameter */

/*
 * Value constants for VAL_gprs_penalty_time
 */
#define GPRS_PENALTY_TIME_INVALID      (0xff)     /* This value is used to indicate the absence of this parameter */

/*
 * Value constants for VAL_priority_class
 */
#define GPRS_PRIORITY_CLASS_INVALID    (0xff)     /* This value is used to indicate the absence of this parameter */

/*
 * Value constants for VAL_hcs_thr
 */
#define GPRS_HCS_THR_INVALID           (0xff)     /* This value is used to indicate the absence of this parameter */

/*
 * Value constants for VAL_si13_location
 */
#define SI13_LOC_BCCH_NORM             (0x0)      /* SYSTEM INFORMATION TYPE 13 message is sent on BCCH norm */
#define SI13_LOC_BCCH_EXT              (0x1)      /* SYSTEM INFORMATION TYPE 13 message is sent on BCCH ext */
#define SI13_LOC_INVALID               (0xff)     /* This value is used to indicate the absence of this parameter */

/*
 * Value constants for VAL_pbcch_location
 */
#define PBCCH_LOC_INVALID              (0xff)     /* This value is used to indicate the absence of this parameter */

/*
 * Value constants for VAL_psi1_repeat_period
 */
#define PSI1_RPT_PRD_INVALID           (0xff)     /* This value is used to indicate the absence of this parameter */

/*
 * Value constants for VAL_nc_mode
 */
#define NC2_NOT_USED                   (0x0)      /* allow cell reselection         */
#define NC2_USED                       (0x1)      /* inhibit cell reselection       */
#define NC_MODE_RESET                  (0x2)      /* NC is reset to default         */

/*
 * Value constants for VAL_meas_cause
 */
#define NC_STOP_MEAS                   (0x0)      /*  Stop the meas report          */
#define NC_START_MEAS                  (0x1)      /* Start Averaging of measurements */
#define NC_REPORT_MEAS                 (0x2)      /* get the meas report from RR    */

/*
 * Value constants for VAL_sync_type
 */
#define SYNC_INITIAL                   (0x0)      /* Sync request for new carrier   */
#define SYNC_RECONFIRM                 (0x1)      /* Reconfirm 10 sec Timer Expired */

/*
 * Value constants for VAL_rep_rate
 */
#define NORMAL_REP_RATE                (0x0)      /* Normal(SACCH)reporting rate    */
#define REDUCED_REP_RATE               (0x1)      /* Reduced reporting rate         */

/*
 * Value constants for Val_inv_bsic
 */
#define INV_BSIC_REPORTING_DISABLED    (0x0)      /* Invalid BSIC reporting not enabled */
#define INV_BSIC_REPORTING_ENABLED     (0x1)      /* Invalid BSIC reporting not enabled */

/*
 * Value constants for Val_scale_ord
 */
#define SCALE_0dB                      (0x0)      /* Scaling by 0dB                 */
#define SCALE_10dB                     (0x1)      /* Scaling by 10dB                */
#define SCALE_AUTO                     (0x2)      /* Automatic scaling              */

// VALTAB-FF: REL99 AND TI_PS_FF_EMR 
// 
// Value constants for Val_nco
// 
// VAL-FF: REL99 AND TI_PS_FF_EMR  
// #define NCO_NC0                        (0x0)   /* Values Item                    */
// VAL-FF: REL99 AND TI_PS_FF_EMR  
// #define NCO_NC1                        (0x1)   /* Values Item                    */
// VAL-FF: REL99 AND TI_PS_FF_EMR  
// #define NCO_NC2                        (0x2)   /* Values Item                    */
// VAL-FF: REL99 AND TI_PS_FF_EMR  
// #define NCO_RESET                      (0x3)   /* Values Item                    */
// VAL-FF: REL99 AND TI_PS_FF_EMR  
// #define NCO_EMPTY                      (0x4)   /* Values Item                    */

/* 
 * enum to UnionController task 
 * CCDGEN:WriteEnum_Count==455
 */
#ifndef __T_ctrl_task__
#define __T_ctrl_task__
typedef enum
{
  RR_TASK_1                      = 0x0,           
  LEAVE_PIM_PBCCH                = 0x1,           
  LEAVE_PAM_PBCCH                = 0x2,           
  LEAVE_PTM_PBCCH                = 0x3            
}T_ctrl_task;
#endif

/*
 * user defined constants
 */
#define RRGRR_MAX_ARFCN_NCELL_SYNC_REQ (0xc)      
#define RRGRR_MAX_ARFCN_EXT_MEAS       (0x40)     
// CONST-FF: !REL99 OR !TI_PS_FF_EMR  
#define RRGRR_MEAS_REP_LIST_SIZE       (0x7)      
#define RRGRR_BA_LIST_SIZE             (0x20)     
#define SIZE_MCC                       (0x3)      
#define SIZE_MNC                       (0x3)      
// CONST-FF: REL99 AND TI_PS_FF_EMR  
// #define RRGRR_MAX_RSLT_NCELL_SYNC_IND  (0xc)   
// CONST-FF: !REL99 OR !TI_PS_FF_EMR  
#define RRGRR_MAX_RSLT_NCELL_SYNC_IND  (0x6)      
// CONST-FF: REL99 AND TI_PS_FF_EMR  
// #define RRGRR_MEAS_REP_LIST_SIZE       (0x21)  
#define MAX_NUM_OF_RTD_VALUES          (0x3)      

#include "CDG_LEAVE.h"


#endif