view cdg-hybrid/cdginc/p_8010_153_cause_include.h @ 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_8010_153_cause_include.h                                     |
| SOURCE  : "sap\8010_153_cause_include.pdf"                               |
| LastModified : "2004-11-30"                                              |
| IdAndVersion : "8010.153.04.032"                                         |
| SrcFileTime  : "Thu Nov 29 09:29:16 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                 : CAUSE
 * COMPATIBILITY_DEFINES  : NO
 * ALWAYS_ENUM_IN_VAL_FILE: YES
 * ENABLE_GROUP: NO
 * CAPITALIZE_TYPENAME: NO
 */


#ifndef P_8010_153_CAUSE_INCLUDE_H
#define P_8010_153_CAUSE_INCLUDE_H


#define CDG_ENTER__P_8010_153_CAUSE_INCLUDE_H

#define CDG_ENTER__FILENAME _P_8010_153_CAUSE_INCLUDE_H
#define CDG_ENTER__P_8010_153_CAUSE_INCLUDE_H__FILE_TYPE CDGINC
#define CDG_ENTER__P_8010_153_CAUSE_INCLUDE_H__LAST_MODIFIED _2004_11_30
#define CDG_ENTER__P_8010_153_CAUSE_INCLUDE_H__ID_AND_VERSION _8010_153_04_032

#define CDG_ENTER__P_8010_153_CAUSE_INCLUDE_H__SRC_FILE_TIME _Thu_Nov_29_09_29_16_2007

#include "CDG_ENTER.h"

#undef CDG_ENTER__P_8010_153_CAUSE_INCLUDE_H

#undef CDG_ENTER__FILENAME


#include "p_8010_153_cause_include.val"


/*
 * typedef between var and valtab enums
 */
#ifndef __T_CAUSE_cc_cause__
#define __T_CAUSE_cc_cause__
typedef T_CAUSE_VAL_cc_cause T_CAUSE_cc_cause;
#endif

#ifndef __T_CAUSE_nwcc_cause__
#define __T_CAUSE_nwcc_cause__
typedef T_CAUSE_VAL_nwcc_cause T_CAUSE_nwcc_cause;
#endif

#ifndef __T_CAUSE_nwss_cause__
#define __T_CAUSE_nwss_cause__
typedef T_CAUSE_VAL_nwcc_cause T_CAUSE_nwss_cause;
#endif

#ifndef __T_CAUSE_dl_cause__
#define __T_CAUSE_dl_cause__
typedef T_CAUSE_VAL_dl_cause T_CAUSE_dl_cause;
#endif

#ifndef __T_CAUSE_l2r_cause__
#define __T_CAUSE_l2r_cause__
typedef T_CAUSE_VAL_l2r_cause T_CAUSE_l2r_cause;
#endif

#ifndef __T_CAUSE_llc_cause__
#define __T_CAUSE_llc_cause__
typedef T_CAUSE_VAL_llc_cause T_CAUSE_llc_cause;
#endif

#ifndef __T_CAUSE_mm_cause__
#define __T_CAUSE_mm_cause__
typedef T_CAUSE_VAL_mm_cause T_CAUSE_mm_cause;
#endif

#ifndef __T_CAUSE_nwmm_cause__
#define __T_CAUSE_nwmm_cause__
typedef T_CAUSE_VAL_nwmm_cause T_CAUSE_nwmm_cause;
#endif

#ifndef __T_CAUSE_ppp_cause__
#define __T_CAUSE_ppp_cause__
typedef T_CAUSE_VAL_ppp_cause T_CAUSE_ppp_cause;
#endif

#ifndef __T_CAUSE_rcm_cause__
#define __T_CAUSE_rcm_cause__
typedef T_CAUSE_VAL_rcm_cause T_CAUSE_rcm_cause;
#endif

#ifndef __T_CAUSE_rr_cause__
#define __T_CAUSE_rr_cause__
typedef T_CAUSE_VAL_rr_cause T_CAUSE_rr_cause;
#endif

#ifndef __T_CAUSE_nwrr_cause__
#define __T_CAUSE_nwrr_cause__
typedef T_CAUSE_VAL_nwrr_cause T_CAUSE_nwrr_cause;
#endif

#ifndef __T_CAUSE_rlp_cause__
#define __T_CAUSE_rlp_cause__
typedef T_CAUSE_VAL_rlp_cause T_CAUSE_rlp_cause;
#endif

#ifndef __T_CAUSE_rrc_cause__
#define __T_CAUSE_rrc_cause__
typedef T_CAUSE_VAL_rrc_cause T_CAUSE_rrc_cause;
#endif

#ifndef __T_CAUSE_nwrrc_cause__
#define __T_CAUSE_nwrrc_cause__
typedef T_CAUSE_VAL_nwrrc_cause T_CAUSE_nwrrc_cause;
#endif

#ifndef __T_CAUSE_sim_cause__
#define __T_CAUSE_sim_cause__
typedef T_CAUSE_VAL_sim_cause T_CAUSE_sim_cause;
#endif

#ifndef __T_CAUSE_sm_cause__
#define __T_CAUSE_sm_cause__
typedef T_CAUSE_VAL_sm_cause T_CAUSE_sm_cause;
#endif

#ifndef __T_CAUSE_nwsm_cause__
#define __T_CAUSE_nwsm_cause__
typedef T_CAUSE_VAL_nwsm_cause T_CAUSE_nwsm_cause;
#endif

#ifndef __T_CAUSE_sms_cause__
#define __T_CAUSE_sms_cause__
typedef T_CAUSE_VAL_sms_cause T_CAUSE_sms_cause;
#endif

#ifndef __T_CAUSE_nwsms_cp_cause__
#define __T_CAUSE_nwsms_cp_cause__
typedef T_CAUSE_VAL_nwsms_cp_cause T_CAUSE_nwsms_cp_cause;
#endif

#ifndef __T_CAUSE_nwsms_rp_cause__
#define __T_CAUSE_nwsms_rp_cause__
typedef T_CAUSE_VAL_nwsms_rp_cause T_CAUSE_nwsms_rp_cause;
#endif

#ifndef __T_CAUSE_nwsms_tp_cause__
#define __T_CAUSE_nwsms_tp_cause__
typedef T_CAUSE_VAL_nwsms_tp_cause T_CAUSE_nwsms_tp_cause;
#endif

#ifndef __T_CAUSE_sn_cause__
#define __T_CAUSE_sn_cause__
typedef T_CAUSE_VAL_sn_cause T_CAUSE_sn_cause;
#endif

#ifndef __T_CAUSE_upm_cause__
#define __T_CAUSE_upm_cause__
typedef T_CAUSE_VAL_upm_cause T_CAUSE_upm_cause;
#endif

#ifndef __T_CAUSE_rrlc_cause__
#define __T_CAUSE_rrlc_cause__
typedef T_CAUSE_VAL_rrlc_cause T_CAUSE_rrlc_cause;
#endif

#ifndef __T_CAUSE_value__
#define __T_CAUSE_value__
/*
 * Cause element containing result of operation
 * CCDGEN:WriteStruct_Count==1387
 */
typedef union
{
  U16                       nwmm_cause;               /*<  0:  2> T_CAUSE_nwmm_cause,  Cause element from network peer MM */
  U16                       nwrr_cause;               /*<  0:  2> T_CAUSE_nwrr_cause,  Cause element from GSM peer RR */
  U16                       nwrrc_cause;              /*<  0:  2> T_CAUSE_nwrrc_cause,  Cause element from UTRAN peer RRC */
  U16                       nwsm_cause;               /*<  0:  2> T_CAUSE_nwsm_cause,  Cause element from network peer SM */
  U16                       nwss_cause;               /*<  0:  2> T_CAUSE_nwss_cause,  Cause element containing result of a SS operation */
  U16                       nwsms_cp_cause;           /*<  0:  2> T_CAUSE_nwsms_cp_cause,  Cause element containing result of an SMS operation */
  U16                       nwsms_rp_cause;           /*<  0:  2> T_CAUSE_nwsms_rp_cause,  Cause element containing result of an SMS operation */
  U16                       nwsms_tp_cause;           /*<  0:  2> T_CAUSE_nwsms_tp_cause,  Cause element containing result of an SMS operation */
  U16                       upper_nw_cause;           /*<  0:  2> If ctrl_value is below is_from_nw the cause originates from NW. Do NOT use as real value of ctrl_value. */
  U16                       cc_cause;                 /*<  0:  2> T_CAUSE_cc_cause,  Cause element containing result of a CC operation */
  U16                       dl_cause;                 /*<  0:  2> T_CAUSE_dl_cause,  Cause element containing result of a DL operation */
  U16                       l2r_cause;                /*<  0:  2> T_CAUSE_l2r_cause,  Cause element containing result of a L2R operation */
  U16                       llc_cause;                /*<  0:  2> T_CAUSE_llc_cause,  Cause element containing result of a LLC operation */
  U16                       mm_cause;                 /*<  0:  2> T_CAUSE_mm_cause,  Cause element containing result of an MM operation */
  U16                       nwcc_cause;               /*<  0:  2> T_CAUSE_nwcc_cause,  Cause element containing result of a CC operation */
  U16                       ppp_cause;                /*<  0:  2> T_CAUSE_ppp_cause,  Cause element containing result of a PPP operation */
  U16                       rcm_cause;                /*<  0:  2> T_CAUSE_rcm_cause,  Cause element containing result of an RCM operation */
  U16                       rr_cause;                 /*<  0:  2> T_CAUSE_rr_cause,  Cause element containing result of an RR operation */
  U16                       rlp_cause;                /*<  0:  2> T_CAUSE_rlp_cause,  Cause element containing result of an RLP operation */
  U16                       rrc_cause;                /*<  0:  2> T_CAUSE_rrc_cause,  Cause element containing result of an RRC operation */
  U16                       sim_cause;                /*<  0:  2> T_CAUSE_sim_cause,  Cause element from SIM to ACI/SMS/MM */
  U16                       sm_cause;                 /*<  0:  2> T_CAUSE_sm_cause,  Cause element containing result of an SM operation */
  U16                       sms_cause;                /*<  0:  2> T_CAUSE_sms_cause,  Cause element containing result of an SMS operation */
  U16                       sn_cause;                 /*<  0:  2> T_CAUSE_sn_cause,  Cause element containing result of an SNDCP operation */
  U16                       upm_cause;                /*<  0:  2> T_CAUSE_upm_cause,  Cause element containing result of an UPM operation */
  U16                       upper_ue_cause;           /*<  0:  2> If ctrl_value is between is_from_nw and is_from_ue the cause originates from UE. Do NOT use as real value of ctrl_value. */
  U8                        rrlc_cause;               /*<  0:  1> T_CAUSE_rrlc_cause,  cause                         */
} T_CAUSE_value;
#endif

#ifndef __T_CAUSE_ps_cause__
#define __T_CAUSE_ps_cause__
/*
 * Cause element containing result of operation
 * CCDGEN:WriteStruct_Count==1388
 */
typedef struct
{
  T_CAUSE_ctrl_value        ctrl_value;               /*<  0:  4> (enum=32bit) controller for union                  */
  T_CAUSE_value             value;                    /*<  4:  2> Cause element containing result of operation       */
  U8                        _align0;                  /*<  6:  1> alignment                                          */
  U8                        _align1;                  /*<  7:  1> alignment                                          */
} T_CAUSE_ps_cause;
#endif


/*
 * End of substructure section, begin of primitive definition section
 */

#ifndef __T_CAUSE_EXPORT__
#define __T_CAUSE_EXPORT__
/*
 * 
 * CCDGEN:WriteStruct_Count==1389
 */
typedef struct
{
  T_CAUSE_ps_cause          ps_cause;                 /*<  0:  8> Cause element containing result of operation       */
} T_CAUSE_EXPORT;
#endif


#include "CDG_LEAVE.h"


#endif