view cdg-hybrid/cdginc/p_rr.val @ 268:f2e52cab0a73

abb_inth.c: check all interrupt causes, not just one The original code used if - else if - else if etc constructs, thus the first detected interrupt was the only one handled. However, Iota ITSTATREG is a clear-on-read register, thus if we only handle the first detected interrupt and skip checking the others, then the other interrupts will be lost, if more than one interrupt happened to occur in one ABB interrupt handling cycle - a form of rare race condition. Change the code to check all interrupts that were read in this cycle.
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 13 Jun 2021 18:17:53 +0000
parents 35f7a1dc9f7d
children
line wrap: on
line source

/*
+--------------------------------------------------------------------------+
| PROJECT : PROTOCOL STACK                                                 |
| FILE    : p_rr.val                                                       |
| SOURCE  : "sap\rr.pdf"                                                   |
| LastModified : "2003-02-04"                                              |
| IdAndVersion : "6147.107.97.108"                                         |
| SrcFileTime  : "Tue Jun 3 11:14:30 2008"                                 |
| 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_RR_VAL
#define P_RR_VAL


#define CDG_ENTER__P_RR_VAL

#define CDG_ENTER__FILENAME _P_RR_VAL
#define CDG_ENTER__P_RR_VAL__FILE_TYPE CDGINC
#define CDG_ENTER__P_RR_VAL__LAST_MODIFIED _2003_02_04
#define CDG_ENTER__P_RR_VAL__ID_AND_VERSION _6147_107_97_108

#define CDG_ENTER__P_RR_VAL__SRC_FILE_TIME _Tue_Jun_3_11_14_30_2008

#include "CDG_ENTER.h"

#undef CDG_ENTER__P_RR_VAL

#undef CDG_ENTER__FILENAME


/*
 * Value constants for VAL_abcs
 */
#define ABCS_NORM                      (0x0)      /* normal abort, MM->RR           */
#define ABCS_SIM_REM                   (0x1)      /* SIM remove, MM->RR             */

/*
 * Value constants for VAL_accc
 */

/*
 * Value constants for VAL_v_kc
 */
#define V_KC_NOT_PRES                  (0x0)      /* not present                    */
#define V_KC_PRES                      (0x1)      /* present                        */

/*
 * Value constants for VAL_v_bcch
 */
#define V_BCCH_NOT_PRES                (0x0)      /* not present                    */
#define V_BCCH_PRES                    (0x1)      /* present                        */

/*
 * Value constants for VAL_bcch
 */
#define BCCH_CH_NOT_INCL               (0x0)      /* channel is not included        */
#define BCCH_CH_INCL                   (0x1)      /* channel is included            */

/*
 * Value constants for VAL_ch_mode
 */
#define CHM_SIG_ONLY                   (0x0)      /* signalling only                */
#define CHM_SPEECH                     (0x1)      /* speech full rate or half rate version 1 */
#define CHM_SPEECH_V2                  (0x21)     /* speech full rate or half rate version 2 */
#define CHM_SPEECH_V3                  (0x41)     /* speech full rate or half rate version 3 */
#define CHM_DATA_9_6                   (0x3)      /* data 9.6 kBit/s                */
#define CHM_DATA_4_8                   (0xb)      /* data 4.8 kBit/s                */
#define CHM_DATA_2_4                   (0x13)     /* data 2.4 kBit/s                */
#define CHM_DATA_14_4                  (0xf)      /* data 2.4 kBit/s                */

/*
 * Value constants for VAL_ch_type
 */
#define CH_SDCCH                       (0x0)      /* SDCCH channel                  */
#define CH_TCH_F                       (0x1)      /* TCH Fullrate                   */
#define CH_TCH_H                       (0x2)      /* TCH Halfrate                   */

/*
 * Value constants for VAL_cksn
 */
#define CKSN_RES                       (0x7)      /* reserved                       */
#define CKSN_NOT_PRES                  (0xff)     /* not present                    */

/*
 * Value constants for VAL_ciph
 */
#define CIPH_OFF                       (0x0)      /* ciphering off                  */
#define CIPH_ON                        (0x1)      /* ciphering on                   */
#define CIPH_NOT_PRES                  (0xff)     /* not present                    */

/*
 * Value constants for VAL_estcs
 */
#define ESTCS_SERV_REQ_BY_MM           (0x400)    /* service requested by MM (Location updating or detach) */
#define ESTCS_EMRG_CAL                 (0x4a0)    /* emergency call                 */
#define ESTCS_CAL_REEST                (0x4c0)    /* call reestablishment           */
#define ESTCS_MOB_ORIG_SPCH_CAL_BY_CC  (0x4e0)    /* mobile originated speech call by CC */
#define ESTCS_MOB_ORIG_DATA_CAL_BY_CC  (0x4e1)    /* mobile originated data call by CC */
#define ESTCS_MOB_ORIG_DATA_CAL_BY_CC_HR_SUFF (0x4e2)/* mobile originated data call by CC, halfrate sufficient */
#define ESTCS_MOB_ORIG_CAL_BY_SS_SMS   (0x4f0)    /* mobile originated call by SS or SMS */

/*
 * Value constants for VAL_thplmn
 */
#define THPLMN_NO_HPLMN_SRCH           (0x0)      /* no HPLMN search                */

/*
 * Value constants for VAL_att
 */
#define ATT_NOT_ALLOW                  (0x0)      /* attach / detach not allowed    */
#define ATT_ALLOW                      (0x1)      /* attach / detach allowed        */

/*
 * Value constants for VAL_band
 */
#define BND_DMY_VAL                    (0xff)     /* dummy value needed by TAP      */

/*
 * Value constants for VAL_valid
 */
#define MM_INFO_NOT_PRES               (0x0)      /* information is not present     */
#define MM_INFO_PRES                   (0x1)      /* information is present         */

/*
 * Value constants for VAL_re
 */
#define RE_ALLOW                       (0x0)      /* re-establishment is allowed    */
#define RE_NOT_ALLOW                   (0x1)      /* re-establishment is not allowed */

/*
 * Value constants for VAL_t3212
 */
#define T3212_NO_PRD_UPDAT             (0x0)      /* no periodic updating           */

/*
 * Value constants for VAL_la
 */
#define LA_NOT_IN_FRBD_LST_INCL        (0x0)      /* not in forbidden list included */
#define LA_IN_FRBD_LST_INCL            (0x1)      /* in forbidden list included     */

/*
 * 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_m
 */
#define M_AUTO                         (0x0)      /* automatic mode                 */
#define M_MAN                          (0x1)      /* manual mode                    */

/*
 * Value constants for VAL_service
 */
#define NO_SERVICE                     (0x0)      /* no service available           */
#define LIMITED_SERVICE                (0x1)      /* Limited service available      */
#define FULL_SERVICE                   (0x2)      /* Full service available         */

/*
 * Value constants for VAL_v_op
 */
#define V_OP_NOT_PRES                  (0x0)      /* not present                    */
#define V_OP_PRES                      (0x1)      /* present                        */

/*
 * Value constants for VAL_func
 */
#define FUNC_LIM_SERV_ST_SRCH          (0x0)      /* limited service state search   */
#define FUNC_PLMN_SRCH                 (0x1)      /* PLMN search                    */
#define FUNC_NET_SRCH_BY_MMI           (0x2)      /* Net search by MMI              */
#define FUNC_ST_PWR_SCAN               (0x3)      /* Initiate power scan            */

/*
 * Value constants for VAL_ts
 */
#define TS_NO_AVAIL                    (0x0)      /* no test SIM card available     */
#define TS_AVAIL                       (0x1)      /* test SIM card available        */

/*
 * Value constants for VAL_sim_ins
 */
#define SIM_NO_INSRT                   (0x0)      /* no SIM inserted                */
#define SIM_INSRT                      (0x1)      /* SIM inserted                   */

/*
 * Value constants for VAL_plmn_avail
 */

/*
 * Value constants for VAL_v_plmn
 */
#define V_PLMN_NOT_PRES                (0x0)      /* not present                    */
#define V_PLMN_PRES                    (0x1)      /* present                        */

/*
 * Value constants for VAL_cause
 */
#define RRCS_NORM                      (0x300)    /* Normal event                   */
#define RRCS_ABNORM_UNSPEC             (0x301)    /* Abnormal release, unspecified  */
#define RRCS_ABNORM_CH_UNACC           (0x302)    /* Abnormal release, channel unacceptable */
#define RRCS_ABNORM_TIM_EXP            (0x303)    /* Abnormal release, timer expired */
#define RRCS_ABNORM_NO_ACTIVE          (0x304)    /* Abnormal release, no activity on the radio path */
#define RRCS_PREEM                     (0x305)    /* Preemptive release             */
#define RRCS_TIME_ADVANCE              (0x308)    /* Handover impossible, timing advance out of range */
#define RRCS_CHANNEL_MODE              (0x309)    /* Channel mode unacceptable      */
#define RRCS_FREQ_NOT_IMPL             (0x30a)    /* Frequency not implemented      */
#define RRCS_CAL_ALRED_CLR             (0x341)    /* Call already cleared           */
#define RRCS_INCORRECT_MSG             (0x35f)    /* Semantically incorrect message */
#define RRCS_INVALID_MANDATORY         (0x360)    /* Invalid mandatory information  */
#define RRCS_MSG_TYPE_NOT_IMPLEM       (0x361)    /* Message type non-existent or not implemented */
#define RRCS_MES_INCOMPAT              (0x362)    /* Message type not compatible with protocol state */
#define RRCS_INVALID_IE                (0x364)    /* Conditional IE error           */
#define RRCS_NO_CELL_ALLOCATION        (0x365)    /* No cell allocation available   */
#define RRCS_PROT_ERR_UNSPEC           (0x36f)    /* Protocol error, unspecified    */
#define RRCS_ABORT_CEL_SEL_FAIL        (0xc310)   /* Cell selection failed (RR_ABORT_IND) */
#define RRCS_ABORT_RAD_LNK_FAIL        (0xc311)   /* Radio link failure (RR_ABORT_IND) */
#define RRCS_DATA_LINK_FAIL            (0xc312)   /* Data link failure (RR_ABORT_IND / RR_RELEASE_IND) */
#define RRCS_ACCESS_BARRED             (0x8320)   /* Access barred because of access class control */
#define RRCS_RND_ACC_DELAY             (0x8321)   /* Random access is delayed (immediate assignment reject) */
#define RRCS_RND_ACC_FAIL              (0xc322)   /* Random access failed           */
#define RRCS_DL_EST_FAIL               (0xc323)   /* DL establishment failure       */
#define RRCS_MO_MT_COLL                (0xc324)   /* Collision MO with MT; MT has higher priority than MO */
#define RRCS_MM_ABORTED                (0xc325)   /* MM aborted the connection      */
#define RRCS_QUEUE_FULL                (0xc326)   /* Internal RR primitive queue full */
#define RRCS_T3122_RUNNING             (0xc327)   /* T3122 is still running, emergency calls only until expiry */
#define RRCS_INVALID_HOP_FREQ          (0xc328)   /* Frequency hopping in more than one frequency band */
#define RRCS_INT_NOT_PRESENT           (0xc3ff)   /* Internal release, release cause not present */
#define RRCS_ABORT_PTM                 (0xc400)   /* RR is in GPRS_PTM_BCCH, GPRS_PTM_PBCCH, GPRS_PAM_BCCH, GPRS_PAM_PBCCH states cannot handle RR_ACTIVATE__REQ */

/*
 * Value constants for VAL_sapi
 */
#define SAPI_0                         (0x0)      /* SAPI 0                         */
#define SAPI_3                         (0x3)      /* SAPI 3                         */

/*
 * Value constants for VAL_synccs
 */
#define SYNCCS_ACC_CLS_CHA             (0x8300)   /* access class changed           */
#define SYNCCS_T3122_TIM_OUT           (0x8301)   /* T3122 time-out                 */
#define SYNCCS_TMSI_CKSN_KC_INVAL      (0x8411)   /* TMSI, CKSN, Kc invalid         */
#define SYNCCS_TMSI_INVAL              (0x8412)   /* TMSI invalid                   */
#define SYNCCS_TMSI_CKSN_KC_INVAL_NO_PAG (0x8413) /* TMSI, CKSN, Kc invalid, no paging */
#define SYNCCS_LAI_NOT_ALLOW           (0x8414)   /* LAI not allowed                */
#define SYNCCS_LAI_ALLOW               (0x8415)   /* LAI allowed                    */
#define SYNCCS_LUP_RETRY               (0x8416)   /* Lup retry permission           */
#define SYNCCS_LIMITED_SERVICE         (0x8417)   /* RR is informed about limited service */
#define SYNCCS_BACK_FROM_DEDICATED     (0x8418)   /* RR has selected old cell after conn */
#define SYNCCS_SYS_INFO_CHANGE         (0x8419)   /* RR has detected a sysinfo change */
#define SYNCCS_ACCC                    (0x841a)   /* access class changed           */
#define SYNCCS_IDLE_SELECTION          (0x841b)   /* RR has selected the old cell   */
#define SYNCCS_LAI_NOT_ALLOW_FOR_ROAMING (0x841c) /* LAI not allowed for roaming    */
#define SYNCCS_EPLMN_LIST              (0x841d)   /* Changed EPLMN list available   */

/*
 * Value constants for VAL_cell_test
 */
#define CELL_TEST_DISABLE              (0x0)      /* cell test operation disable    */
#define CELL_TEST_ENABLE               (0x1)      /* cell test operation enable     */

/*
 * Value constants for VAL_gprs_indication
 */
#define GPRS_NO                        (0x0)      /* no GPRS mode                   */
#define GPRS_YES                       (0x1)      /* GPRS mode                      */

/*
 * Value constants for VAL_gprs_resumption
 */
#define GPRS_RESUMPTION_NOT_ACK        (0x0)      /* GPRS resumption not successfull */
#define GPRS_RESUMPTION_ACK            (0x1)      /* GPRS resumption successfull    */

/*
 * Value constants for VAL_check_hplmn
 */
#define CHECK_PLMN_NOT_PRES            (0x0)      /* not present                    */
#define CHECK_PLMN_PRES                (0x1)      /* present                        */

/*
 * user defined constants
 */
#define MAX_SDU_LEN                    (0x1)      
#define MAX_PLMN                       (0xc)      
#define MAX_DIGITS                     (0x10)     
#define SIZE_MCC                       (0x3)      
#define SIZE_MNC                       (0x3)      
#define RR_ORIGINATING_ENTITY          (0x3)      
#define SIZE_EPLMN                     (0x12)     
#define BA_BITMAP_SIZE                 (0x10)     
#define KC_STRING_SIZE                 (0x10)     

#include "CDG_LEAVE.h"


#endif