⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gsm.h

📁 是一个手机功能的模拟程序
💻 H
📖 第 1 页 / 共 2 页
字号:
                                   D_SDU(D)     = &((D)->sdu);\
                                   D_SDU_LEN(D) = (BSIZE_##M);\
                                   D_SDU_OFF(D) = ENCODE_OFFSET;\
                                   xxxNotify(ACT_PALLOC_MSG,VSI_CALLER,__FILE__,__LINE__,D2P(D))

#define  PALLOC_SDU(D,T,N)         T_##T  *D    = (T_##T*)P2D(P_ALL_SDU(T_##T,N));\
                                   D_OPC(D)     = (T);\
                                   D_OPC2(D)    = 0;\
                                   D_LEN(D)     = SIZ(T_##T);\
                                   D_SDU(D)     = &((D)->sdu);\
                                   D_SDU_LEN(D) = (N);\
                                   D_SDU_OFF(D) = ENCODE_OFFSET;\
                                   xxxNotify(ACT_PALLOC_SDU,VSI_CALLER,__FILE__,__LINE__,D2P(D))

#define  PREUSE(D0,D,T)            T_##T  *D    = (T_##T*)P2D_AC(D2P(D0),T);\
                                   D_OPC(D)     = (T);\
                                   D_OPC2(D)    = 0;\
                                   D_LEN(D)     = SIZ(T_##T);\
                                   D_SDU(D)     = 0;\
                                   xxxNotify(ACT_REUSE,VSI_CALLER,__FILE__,__LINE__,D2P(D))

#define  PREUSE_MSG(D,T,M)         T_##T  *D    = (T_##T*)P2D_AC(D2P(D0),T);\
                                   D_OPC(D)     = (T);\
                                   D_OPC2(D)    = 0;\
                                   D_LEN(D)     = SIZ(T_##T);\
                                   D_SDU(D)     = &((D)->sdu);\
                                   D_SDU_LEN(D) = (BSIZE_##M);\
                                   D_SDU_OFF(D) = ENCODE_OFFSET;\
                                   xxxNotify(ACT_PREUSE_MSG,VSI_CALLER,__FILE__,__LINE__,D2P(D))

#define  PREUSE_SDU(D,T,N)         T_##T  *D    = (T_##T*)P2D_AC(D2P(D0),T);\
                                   USHORT BSIZE_##N;\
                                   D_OPC(D)     = (T);\
                                   D_OPC2(D)    = 0;\
                                   D_LEN(D)     = SIZ(T_##T);\
                                   D_SDU(D)     = &((D)->sdu);\
                                   D_SDU_LEN(D) = (N);\
                                   D_SDU_OFF(D) = ENCODE_OFFSET;\
                                   xxxNotify(ACT_PREUSE_SDU,VSI_CALLER,__FILE__,__LINE__,D2P(D))

#define  PFREE(D)                  { void *z=(void*)D2P(D);\
                                   vsi_c_free(VSI_CALLER (void **)&z);\
                                   xxxNotify(ACT_PFREE,VSI_CALLER,__FILE__,__LINE__,D2P(D)); }

#define  PSEND(E,D)                PTRACE_OUT(D_OPC(D));\
                                   vsi_c_send (VSI_CALLER hComm##E, D2P(D), (T_VSI_CSIZE) PSIZE(D));\
                                   xxxNotify(ACT_PSEND,VSI_CALLER,__FILE__,__LINE__,D2P(D))

#define  PPASS(D0,D,T)             T_##T  *D    = (T_##T*)P2D_AC(D2P(D0),T);\
                                   D_OPC(D)     = (T);\
                                   xxxNotify(ACT_PPASS,VSI_CALLER,__FILE__,__LINE__,D2P(D))

#define  PACCESS(D)                xxxNotify(ACT_PACCESS,VSI_CALLER,__FILE__,__LINE__,D2P(D))


#endif /* NEW_FRAME */

/*
 * to achieve backward compatibility
 */
#if defined (NEW_FRAME)
#define PSENDX(A,B) PSEND(hComm##A,B)
#else
#define PSENDX PSEND
#endif


#define  PRETRIEVE                 /* NOT DEFINED YET */


#define  MCAST(D,T)                MSG_CAST(D,T_##T)
#define  PCAST(P,D,T)              T_##T  *D    = (T_##T*)P2D_AC(P,T);\
                                   P_OPC(P)=T;\
                                   xxxNotify(ACT_PCAST,VSI_CALLER,__FILE__,__LINE__,D2P(D))

#define  PCOPY(DEST,SOURCE)        memcpy(DEST,SOURCE,PSIZE(SOURCE)-sizeof(T_PRIM_HEADER))

/*** trace primitive, trace state ***/

#ifndef NEW_FRAME

#ifdef NTRACE

  #define SET_STATE(PROCESS,STATE)    ENTITY_DATA->state[PROCESS] = STATE
  #define GET_STATE(PROCESS)          ENTITY_DATA->state[PROCESS]

  #define PTRACE_IN(OPC)
  #define PTRACE_OUT(OPC)

#else

  #define SET_STATE(PROCESS,STATE)\
                ENTITY_DATA->state[PROCESS] =\
                vsi_o_strace (VSI_CALLER\
                              PROCESS_NAME[PROCESS],\
                              PROCESS##_NAME [ ENTITY_DATA->state[PROCESS] ],\
                              PROCESS##_NAME [              STATE          ],\
                                                            STATE              )

  #define GET_STATE(PROCESS)\
                vsi_o_strace (VSI_CALLER\
                              PROCESS_NAME[PROCESS],\
                              PROCESS##_NAME [ ENTITY_DATA->state[PROCESS] ],\
                                                            NULL            ,\
                                               ENTITY_DATA->state[PROCESS]     )

  #define PTRACE_IN(OPC)              vsi_o_ptrace (VSI_CALLER OPC, 0)
  #define PTRACE_OUT(OPC)             vsi_o_ptrace (VSI_CALLER OPC, 1)

#endif

#endif /* NEW_FRAME */
/*
 * Timer, Jump Table, Configuration
 */

#ifdef OPTION_TIMER
#define TSTART(i,h,v) tim_start_timer(i,h,v)
#else
#define TSTART(i,h,v) vsi_t_start(VSI_CALLER h,v)
#endif

#ifdef OPTION_RELATIVE
#define JUMP(a)  (a+offset)
#else
#define JUMP(a) (a)
#endif

#ifdef OPTION_SET_CONFIG_ONLY
#define GET_CONFIG(s,i)
#else
#define GET_CONFIG(s,i) pei_get_config(s,i)
#endif

/* Cause Concept (begin) */
/* 
 * For a definition of the cause concept please refer to document number
 * 8443.711, named in February 2002 "cause_concept.doc"
 */

/* definitions for calling the macros */
/* DefinedBy bit */
#define DEFBY_STD    0
#define DEFBY_CONDAT 1
/* OriginatingSide bit */
#define ORIGSIDE_NET 0
#define ORIGSIDE_MS  1
/* 
 * note that OriginatingEntity definitions are in the SAP GSMCOM, which is a 
 * central (pseudo) SAP and the definitions are referenced in the using 
 * "real" SAPs, like e.g. MNSS SAP for the originating entity SS
 */

/* need to decide whether to mask ORIGIN_ENTITY (max. 6 bits) in the following macro */
#define CAUSE_MAKE(DEFINED_BY, ORIGIN_SIDE, ORIGIN_ENTITY, CAUSE_VALUE) \
          (USHORT)(((CAUSE_VALUE) & 0x00FF) |\
          ((DEFINED_BY)    << 15) |\
          ((ORIGIN_SIDE)   << 14) |\
          ((ORIGIN_ENTITY) <<  8))

/* Get the cause value without the originating entity */
#define GET_CAUSE_VALUE(cause)          (UBYTE)((cause) & 0xFF)

/* Get the entity originating the cause */
#define GET_CAUSE_ORIGIN_ENTITY(cause)  (UBYTE)(((cause) >> 8) & 0x3F)

/* Get the DefinedBy bit */
#define GET_CAUSE_DEFBY(cause)  (UBYTE)((cause) >> 15)

/* Get the OriginatingSide bit */
#define GET_CAUSE_ORIGSIDE(cause)  (UBYTE)(((cause) >> 14) & 0x01)

/* Determine if a cause is invalid */
#define IS_CAUSE_INVALID(cause)   (((cause) & 0x80FF) EQ 0x80FF)

/* Cause Concept (end) */


/*==== TYPES ======================================================*/
#if defined (_TMS470) && defined (NWARN)
typedef struct
{
  UBYTE           x [MAX_PSTRUCT_LEN
                     + (
                         L3_CODING_OFFSET
                         + MAX_BITSTREAM_LEN
                        ) / 8 + 1
                    ];
} T_PARAMETER;

typedef struct
{
  T_PRIM_HEADER   custom;
  T_PARAMETER     data;
} T_PRIM;
#else
typedef struct
{
  T_PRIM_HEADER   custom;
  UBYTE           data [MAX_PSTRUCT_LEN
                     + (
                         L3_CODING_OFFSET
                         + MAX_BITSTREAM_LEN
                        ) / 8 + 1
                    ];
} T_PRIM;
#endif

/*==== EXPORT =====================================================*/


/*
 *  Testmobile
 */
/*
 * DB: not yet used. (2000-11-22)
#define FF_TESTMOBILE
*/


/*
 * Multithreading
 */



#ifdef OPTION_MULTITHREAD
  #if defined (ENTITY_CST)
    #define _ENTITY_PREFIXED(N) cst_##N
  #elif defined (ENTITY_ACI)
    #define _ENTITY_PREFIXED(N) aci_##N
  #elif defined (ENTITY_MFW)
    #define _ENTITY_PREFIXED(N) aci_##N
  #elif defined (ENTITY_MMI)
    #define _ENTITY_PREFIXED(N) aci_##N
  #elif defined (ENTITY_SMI)
    #define _ENTITY_PREFIXED(N) aci_##N
  #elif defined (ENTITY_SIM)
    #define _ENTITY_PREFIXED(N) sim_##N
  #elif defined (ENTITY_PL)
    #define _ENTITY_PREFIXED(N) pl_##N
  #elif defined (ENTITY_L1)
    #define _ENTITY_PREFIXED(N) l1_##N
  #elif defined (ENTITY_CC)
    #define _ENTITY_PREFIXED(N) cc_##N
  #elif defined (ENTITY_SS)
    #define _ENTITY_PREFIXED(N) ss_##N
  #elif defined (ENTITY_SMS)
    #define _ENTITY_PREFIXED(N) sms_##N
  #elif defined (ENTITY_MM)
    #define _ENTITY_PREFIXED(N) mm_##N
  #elif defined (ENTITY_RR)
    #define _ENTITY_PREFIXED(N) rr_##N
  #elif defined (ENTITY_DL)
    #define _ENTITY_PREFIXED(N) dl_##N
  #elif defined (ENTITY_L2R)
    #define _ENTITY_PREFIXED(N) l2r_##N
  #elif defined (ENTITY_TRA)
    #define _ENTITY_PREFIXED(N) tra_##N
  #elif defined (ENTITY_RLP)
    #define _ENTITY_PREFIXED(N) rlp_##N
  #elif defined (ENTITY_T30)
    #define _ENTITY_PREFIXED(N) t30_##N
  #elif defined (ENTITY_FAD)
    #define _ENTITY_PREFIXED(N) fad_##N
  #elif defined (ENTITY_RA)
    #define _ENTITY_PREFIXED(N) ra_##N
  #elif defined (ENTITY_WAP)
    #define _ENTITY_PREFIXED(N) wap_##N
  #elif defined (ENTITY_UDP)
    #define _ENTITY_PREFIXED(N) udp_##N
  #elif defined (ENTITY_IP)
    #define _ENTITY_PREFIXED(N) ip_##N
  #elif defined (ENTITY_RRLP)
    #define _ENTITY_PREFIXED(N) rrlp_##N
  #elif defined (ENTITY_PPP)
    #define _ENTITY_PREFIXED(N) ppp_##N
  #elif defined (ENTITY_BTI)
    #define _ENTITY_PREFIXED(N) bti_##N
  #elif defined (ENTITY_L1)
    #ifdef NEW_FRAME
      #include "ofe.h"
    #endif
  #elif defined (ENTITY_TAP)
    #define _ENTITY_PREFIXED(N) tap_##N
  #elif defined (ENTITY_PCO)
    #define _ENTITY_PREFIXED(N) pco_##N
  #elif defined (ENTITY_PAN)
    #define _ENTITY_PREFIXED(N) pan_##N
  #elif defined (ENTITY_TST)
    #define _ENTITY_PREFIXED(N) tst_##N
  #endif
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -