FreeCalypso > hg > fc-magnetite
comparison src/condat2/com/include/gsm.h @ 3:93999a60b835
src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Mon, 26 Sep 2016 00:29:36 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 2:c41a534f33c6 | 3:93999a60b835 |
|---|---|
| 1 /* | |
| 2 +----------------------------------------------------------------------------- | |
| 3 | Project : GSM-PS (6147) | |
| 4 | Modul : GSM | |
| 5 +----------------------------------------------------------------------------- | |
| 6 | Copyright 2002 Texas Instruments Berlin, AG | |
| 7 | All rights reserved. | |
| 8 | | |
| 9 | This file is confidential and a trade secret of Texas | |
| 10 | Instruments Berlin, AG | |
| 11 | The receipt of or possession of this file does not convey | |
| 12 | any rights to reproduce or disclose its contents or to | |
| 13 | manufacture, use, or sell anything it may describe, in | |
| 14 | whole, or in part, without the specific written consent of | |
| 15 | Texas Instruments Berlin, AG. | |
| 16 +----------------------------------------------------------------------------- | |
| 17 | Purpose : Definition of global constants, types, and macros | |
| 18 | for the GSM Protocol Stack | |
| 19 +----------------------------------------------------------------------------- | |
| 20 */ | |
| 21 | |
| 22 #ifndef GSM_H | |
| 23 #define GSM_H | |
| 24 | |
| 25 #ifndef CCONST_CDG | |
| 26 #include "mconst.cdg" /* MAX_BITSTREAM_LEN */ | |
| 27 #endif /* CCONST_CDG */ | |
| 28 #ifndef PCONST_CDG | |
| 29 #include "pconst.cdg" /* MAX_PSTRUCT_LEN */ | |
| 30 #endif /* PCONST_CDG */ | |
| 31 | |
| 32 /*==== CONSTANTS ==================================================*/ | |
| 33 | |
| 34 #define MAX_2_PRM 1 | |
| 35 #define MAX_4_PRM 3 | |
| 36 #define MAX_8_PRM 7 | |
| 37 #define MAX_16_PRM 15 | |
| 38 #define MAX_32_PRM 31 | |
| 39 | |
| 40 #define PRM_MASK 0x00FF /* protocol primitive mask*/ | |
| 41 #define OPC_MASK 0xFF00 /* entity mask */ | |
| 42 #define SYS_MASK 0x8000 /* system primitive mask */ | |
| 43 | |
| 44 #define SYS_CONFIG_REQ 0xF000 | |
| 45 | |
| 46 #define L3_CODING_OFFSET 32 /* coding offset in bits */ | |
| 47 | |
| 48 /* | |
| 49 * Not Present Value | |
| 50 */ | |
| 51 | |
| 52 #define NOT_PRESENT_8BIT 0xFF | |
| 53 #define NOT_PRESENT_CHAR (CHAR)0xFF | |
| 54 #define NOT_PRESENT_16BIT 0xFFFF | |
| 55 #define NOT_PRESENT_32BIT 0xFFFFFFFFL | |
| 56 #define INVALID_ADDRESS 0xFFFFFFFFL | |
| 57 #define SET_NOT_PRESENT(A) (A) = (sizeof ((A)) EQ 1)\ | |
| 58 ? NOT_PRESENT_8BIT\ | |
| 59 : (sizeof ((A)) EQ 2)\ | |
| 60 ? NOT_PRESENT_16BIT\ | |
| 61 : NOT_PRESENT_32BIT | |
| 62 | |
| 63 #define IS_PRESENT(A) ((A) NEQ ((sizeof ((A)) EQ 1)\ | |
| 64 ? NOT_PRESENT_8BIT\ | |
| 65 : (sizeof ((A)) EQ 2)\ | |
| 66 ? NOT_PRESENT_16BIT\ | |
| 67 : NOT_PRESENT_32BIT)) /* VK 09-12-96 */ | |
| 68 | |
| 69 #ifndef NEW_FRAME | |
| 70 /* | |
| 71 * Static Configurations | |
| 72 */ | |
| 73 | |
| 74 #ifndef TC_FUNC | |
| 75 #define TC_FUNC 1 | |
| 76 #endif | |
| 77 | |
| 78 #ifdef TRACE_FKT | |
| 79 #define TRACE_FUNCTION(a) vsi_o_trace(VSI_CALLER TC_FUNC,a); | |
| 80 #else | |
| 81 // China change HM 6.07.00, one of this commented out | |
| 82 #define TRACE_FUNCTION(a) | |
| 83 //#define TRACE_FUNCTION(a) vsi_o_mtrace(a); | |
| 84 #endif | |
| 85 | |
| 86 #ifndef TC_EVE | |
| 87 #define TC_EVE 2 | |
| 88 #endif | |
| 89 | |
| 90 #ifdef TRACE_EVE | |
| 91 #define TRACE_EVENT(a) vsi_o_trace(VSI_CALLER TC_EVENT,a); | |
| 92 #else | |
| 93 #define TRACE_EVENT(a) | |
| 94 #endif | |
| 95 | |
| 96 #ifndef TC_ERROR | |
| 97 #define TC_ERROR 4 | |
| 98 #endif | |
| 99 #ifdef TRACE_ERR | |
| 100 #define TRACE_ERROR(a) vsi_o_trace(VSI_CALLER TC_ERROR,a); | |
| 101 #else | |
| 102 #define TRACE_ERROR(a) | |
| 103 #endif | |
| 104 | |
| 105 #ifndef TC_PRIM | |
| 106 #define TC_PRIM 8 | |
| 107 #endif | |
| 108 | |
| 109 #ifdef TRACE_PRIM | |
| 110 #define TRACE_PRIMITIVE(a) vsi_o_trace(VSI_CALLER TC_PRIM,a); | |
| 111 #else | |
| 112 #define TRACE_PRIMITIVE(a) | |
| 113 #endif | |
| 114 | |
| 115 #ifndef TC_SYSTEM | |
| 116 #define TC_SYSTEM 16 | |
| 117 #endif | |
| 118 | |
| 119 /* | |
| 120 * Assert wrapper | |
| 121 */ | |
| 122 | |
| 123 #if defined NDEBUG | |
| 124 #define TRACE_ASSERT(e) ((void)0) | |
| 125 #else | |
| 126 #ifdef SHARED_VSI | |
| 127 #define TRACE_ASSERT(e) if ( !(e) ) vsi_o_assert("",#e,__FILE__,__LINE__) | |
| 128 #else | |
| 129 #define TRACE_ASSERT(e) if ( !(e) ) vsi_o_assert(#e,__FILE__,__LINE__) | |
| 130 #endif | |
| 131 #endif | |
| 132 | |
| 133 #ifdef assert | |
| 134 #undef assert | |
| 135 #endif | |
| 136 #define assert TRACE_ASSERT | |
| 137 | |
| 138 #endif /* NEW_FRAME */ | |
| 139 | |
| 140 /* | |
| 141 * Memory Management(I) | |
| 142 */ | |
| 143 | |
| 144 #ifdef OPTION_REF | |
| 145 #define FREE_BUFFER(p) vsi_c_free(VSI_CALLER (void **)&p) | |
| 146 #define NEW_BUFFER(p,s) T_PRIM *p = vsi_c_new(VSI_CALLER (T_VSI_CSIZE)((s)+sizeof(T_PRIM_HEADER))) | |
| 147 #else | |
| 148 #define FREE_BUFFER(p) | |
| 149 #define NEW_BUFFER(p,s) UBYTE buf_##p [(s)+sizeof(T_PRIM_HEADER)]; T_PRIM *p=(T_PRIM*)p1 | |
| 150 #endif | |
| 151 | |
| 152 #if !defined (_TMS470) | |
| 153 #define Sprintf sprintf | |
| 154 #else | |
| 155 int sprintf( char *buffer, const char *format, ... ); | |
| 156 #endif | |
| 157 | |
| 158 #ifndef NEW_FRAME | |
| 159 | |
| 160 #ifdef _TMS470 | |
| 161 #define SET_PRIM_OPCODE(P,O) P->custom.opc = O; P->custom.opc2 = 0 | |
| 162 #else | |
| 163 #define SET_PRIM_OPCODE(P,O) P->custom.opc = O | |
| 164 #endif | |
| 165 | |
| 166 #ifdef OPTION_LENGTH | |
| 167 #define SEND_PRIM(E,P,O,T) SET_PRIM_OPCODE (P,O); vsi_c_send (VSI_CALLER hComm##E, P, sizeof(T_PRIM_HEADER) + sizeof (T)) | |
| 168 #define SEND_PRIM_0(E,P,O) SET_PRIM_OPCODE (P,O); vsi_c_send (VSI_CALLER hComm##E, P, sizeof(T_PRIM_HEADER)) | |
| 169 #define SEND_PRIM_SDU(E,P,O,T,L) SET_PRIM_OPCODE (P,O); vsi_c_send (VSI_CALLER hComm##E, P, (T_VSI_CSIZE) (sizeof(T_PRIM_HEADER) + sizeof (T) + (L) - SDU_TRAIL)) | |
| 170 #else | |
| 171 #define SEND_PRIM(E,P,O,T) SET_PRIM_OPCODE (P,O); vsi_c_send (VSI_CALLER hComm##E, P, sizeof(T_PRIM_HEADER) + sizeof (T)) | |
| 172 #define SEND_PRIM_0(E,P,O) SET_PRIM_OPCODE (P,O); vsi_c_send (VSI_CALLER hComm##E, P, sizeof(T_PRIM_HEADER)) | |
| 173 #define SEND_PRIM_SDU(E,P,O,T,L) SET_PRIM_OPCODE (P,O); vsi_c_send (VSI_CALLER hComm##E, P, (T_VSI_CSIZE) (sizeof(T_PRIM_HEADER) + sizeof (T) + (L) - SDU_TRAIL)) | |
| 174 #endif | |
| 175 | |
| 176 #endif /* NEW_FRAME */ | |
| 177 /* | |
| 178 * declares a pointer variable (D) of the type T | |
| 179 * and initialize it with the startaddress of the data part | |
| 180 * of the primitive P | |
| 181 */ | |
| 182 #ifndef ALLOC_CHECK | |
| 183 #if defined (_TMS470) AND defined (NWARN) | |
| 184 #define PRIM_ACCESS(P,S) &P->data | |
| 185 #else | |
| 186 #define PRIM_ACCESS(P,S) P->data | |
| 187 #endif | |
| 188 #else | |
| 189 #define PRIM_ACCESS(P,S) vsi_c_access(VSI_CALLER P,S) | |
| 190 #endif | |
| 191 | |
| 192 #define PRIM_CAST(P,D,T) T *D = (T *) PRIM_ACCESS (P, sizeof (T)) | |
| 193 | |
| 194 /* | |
| 195 * declares a pointer variable (D) of the type T and | |
| 196 * initialize it with the start address of the global declared | |
| 197 * buffer _decodedMsg[] wich contains the decoded message | |
| 198 * structure before encoding or after decoding the message | |
| 199 * with CCD. | |
| 200 */ | |
| 201 | |
| 202 #define MSG_CAST(D,T) T *D = (T *) _decodedMsg | |
| 203 /* | |
| 204 * Memory Management(II) | |
| 205 */ | |
| 206 | |
| 207 #ifndef NEW_FRAME | |
| 208 | |
| 209 #if defined (_TMS470) AND defined (NWARN) | |
| 210 #define P2D(P) (&(P)->data) | |
| 211 #else | |
| 212 #define P2D(P) ((P)->data) | |
| 213 #endif | |
| 214 #define D2P(D) ((T_PRIM*)((T_PRIM_HEADER*)(D)-1)) | |
| 215 | |
| 216 #ifdef ALLOC_CHECK | |
| 217 #define P2D_AC(P,T) PRIM_ACCESS(P,sizeof(T)) | |
| 218 #else | |
| 219 #define P2D_AC(P,T) P2D(P) | |
| 220 #endif | |
| 221 | |
| 222 #define PRIM_TO_DATA P2D | |
| 223 #define DATA_TO_PRIM D2P | |
| 224 | |
| 225 #define P_OPC(P) (P)->custom.opc | |
| 226 #define P_OPC2(P) (P)->custom.opc2 | |
| 227 #define P_LEN(P) (P)->custom.len | |
| 228 #define P_TID(P) (P)->custom.tid | |
| 229 #define P_SDU(P) (P)->custom.sdu | |
| 230 | |
| 231 #define D_OPC(D) P_OPC(D2P(D)) | |
| 232 #define D_OPC2(D) P_OPC2(D2P(D)) | |
| 233 #define D_LEN(D) P_LEN(D2P(D)) | |
| 234 #define D_TID(D) P_TID(D2P(D)) | |
| 235 #define D_SDU(D) P_SDU(D2P(D)) | |
| 236 | |
| 237 #define D_SDU_LEN(D) D_SDU(D)->l_buf | |
| 238 #define D_SDU_OFF(D) D_SDU(D)->o_buf | |
| 239 | |
| 240 #define BITS_PER_BYTE 8 | |
| 241 #define BYTELEN(BITLEN) ((BITLEN)<=0?0:((((BITLEN)-1)/BITS_PER_BYTE)+1)) | |
| 242 | |
| 243 #define PRIM_SIZE(D) (sizeof(T_PRIM_HEADER)+sizeof(*(D))) | |
| 244 #define PRIM_SIZE_SDU(D) (PRIM_SIZE(D)+BYTELEN((D)->sdu.o_buf+(D)->sdu.l_buf)) | |
| 245 | |
| 246 #define PSIZE(D) (D_LEN(D)+((D_SDU(D)==0)?0:(BYTELEN(D_SDU_LEN(D)+D_SDU_OFF(D))-SDU_TRAIL))) | |
| 247 | |
| 248 #define SIZ(T) (sizeof(T_PRIM_HEADER)+sizeof(T)) | |
| 249 | |
| 250 #define SIZ_SDU(T,M) (SIZ(T)+BYTELEN((M)+ENCODE_OFFSET)-SDU_TRAIL) | |
| 251 | |
| 252 #define P_ALL(T) (T_PRIM *) vsi_c_new(VSI_CALLER (T_VSI_CSIZE)SIZ(T) ) | |
| 253 #define P_ALL_SDU(T,M) (T_PRIM *) vsi_c_new(VSI_CALLER (T_VSI_CSIZE)SIZ_SDU(T,M)) | |
| 254 | |
| 255 #endif /* NEW_FRAME */ | |
| 256 | |
| 257 #define OFFSETOF(P,C) ((char*)&(P->C) - (char*)P) | |
| 258 | |
| 259 #ifdef NTRACE | |
| 260 #define xxxNotify(A,B,C,D,E) | |
| 261 #else | |
| 262 #define xxxNotify(A,B,C,D,E) /* not used yet */ | |
| 263 #endif | |
| 264 | |
| 265 | |
| 266 #define ACT_PALLOC 0x01 | |
| 267 #define ACT_PALLOC_SDU 0x02 | |
| 268 #define ACT_PALLOC_MSG 0x03 | |
| 269 #define ACT_PREUSE 0x04 | |
| 270 #define ACT_PREUSE_SDU 0x05 | |
| 271 #define ACT_PREUSE_MSG 0x06 | |
| 272 #define ACT_PFREE 0x07 | |
| 273 #define ACT_PSEND 0x08 | |
| 274 #define ACT_PSTORE 0x09 | |
| 275 #define ACT_PRETRIEVE 0x0A | |
| 276 #define ACT_PACCESS 0x0B | |
| 277 #define ACT_PPASS 0x0C | |
| 278 #define ACT_PCAST 0x0D | |
| 279 | |
| 280 /*** memory alloction ***/ | |
| 281 | |
| 282 | |
| 283 #ifndef NEW_FRAME | |
| 284 | |
| 285 #define PSENDX PSEND | |
| 286 | |
| 287 #define PALLOC(D,T) T_##T *D = (T_##T*)P2D(P_ALL(T_##T));\ | |
| 288 D_OPC(D) = (T);\ | |
| 289 D_OPC2(D) = 0;\ | |
| 290 D_LEN(D) = SIZ(T_##T);\ | |
| 291 D_SDU(D) = 0;\ | |
| 292 xxxNotify(ACT_PALLOC,VSI_CALLER,__FILE__,__LINE__,D2P(D)) | |
| 293 | |
| 294 #define PALLOC_MSG(D,T,M) T_##T *D = (T_##T*)P2D(P_ALL_SDU(T_##T,BSIZE_##M));\ | |
| 295 D_OPC(D) = (T);\ | |
| 296 D_OPC2(D) = 0;\ | |
| 297 D_LEN(D) = SIZ(T_##T);\ | |
| 298 D_SDU(D) = &((D)->sdu);\ | |
| 299 D_SDU_LEN(D) = (BSIZE_##M);\ | |
| 300 D_SDU_OFF(D) = ENCODE_OFFSET;\ | |
| 301 xxxNotify(ACT_PALLOC_MSG,VSI_CALLER,__FILE__,__LINE__,D2P(D)) | |
| 302 | |
| 303 #define PALLOC_SDU(D,T,N) T_##T *D = (T_##T*)P2D(P_ALL_SDU(T_##T,N));\ | |
| 304 D_OPC(D) = (T);\ | |
| 305 D_OPC2(D) = 0;\ | |
| 306 D_LEN(D) = SIZ(T_##T);\ | |
| 307 D_SDU(D) = &((D)->sdu);\ | |
| 308 D_SDU_LEN(D) = (N);\ | |
| 309 D_SDU_OFF(D) = ENCODE_OFFSET;\ | |
| 310 xxxNotify(ACT_PALLOC_SDU,VSI_CALLER,__FILE__,__LINE__,D2P(D)) | |
| 311 | |
| 312 #define PREUSE(D0,D,T) T_##T *D = (T_##T*)P2D_AC(D2P(D0),T);\ | |
| 313 D_OPC(D) = (T);\ | |
| 314 D_OPC2(D) = 0;\ | |
| 315 D_LEN(D) = SIZ(T_##T);\ | |
| 316 D_SDU(D) = 0;\ | |
| 317 xxxNotify(ACT_REUSE,VSI_CALLER,__FILE__,__LINE__,D2P(D)) | |
| 318 | |
| 319 #define PREUSE_MSG(D,T,M) T_##T *D = (T_##T*)P2D_AC(D2P(D0),T);\ | |
| 320 D_OPC(D) = (T);\ | |
| 321 D_OPC2(D) = 0;\ | |
| 322 D_LEN(D) = SIZ(T_##T);\ | |
| 323 D_SDU(D) = &((D)->sdu);\ | |
| 324 D_SDU_LEN(D) = (BSIZE_##M);\ | |
| 325 D_SDU_OFF(D) = ENCODE_OFFSET;\ | |
| 326 xxxNotify(ACT_PREUSE_MSG,VSI_CALLER,__FILE__,__LINE__,D2P(D)) | |
| 327 | |
| 328 #define PREUSE_SDU(D,T,N) T_##T *D = (T_##T*)P2D_AC(D2P(D0),T);\ | |
| 329 USHORT BSIZE_##N;\ | |
| 330 D_OPC(D) = (T);\ | |
| 331 D_OPC2(D) = 0;\ | |
| 332 D_LEN(D) = SIZ(T_##T);\ | |
| 333 D_SDU(D) = &((D)->sdu);\ | |
| 334 D_SDU_LEN(D) = (N);\ | |
| 335 D_SDU_OFF(D) = ENCODE_OFFSET;\ | |
| 336 xxxNotify(ACT_PREUSE_SDU,VSI_CALLER,__FILE__,__LINE__,D2P(D)) | |
| 337 | |
| 338 #define PFREE(D) { void *z=(void*)D2P(D);\ | |
| 339 vsi_c_free(VSI_CALLER (void **)&z);\ | |
| 340 xxxNotify(ACT_PFREE,VSI_CALLER,__FILE__,__LINE__,D2P(D)); } | |
| 341 | |
| 342 #define PSEND(E,D) PTRACE_OUT(D_OPC(D));\ | |
| 343 vsi_c_send (VSI_CALLER hComm##E, D2P(D), (T_VSI_CSIZE) PSIZE(D));\ | |
| 344 xxxNotify(ACT_PSEND,VSI_CALLER,__FILE__,__LINE__,D2P(D)) | |
| 345 | |
| 346 #define PPASS(D0,D,T) T_##T *D = (T_##T*)P2D_AC(D2P(D0),T);\ | |
| 347 D_OPC(D) = (T);\ | |
| 348 xxxNotify(ACT_PPASS,VSI_CALLER,__FILE__,__LINE__,D2P(D)) | |
| 349 | |
| 350 #define PACCESS(D) xxxNotify(ACT_PACCESS,VSI_CALLER,__FILE__,__LINE__,D2P(D)) | |
| 351 | |
| 352 | |
| 353 #endif /* NEW_FRAME */ | |
| 354 | |
| 355 /* | |
| 356 * to achieve backward compatibility | |
| 357 */ | |
| 358 #if defined (NEW_FRAME) | |
| 359 #define PSENDX(A,B) PSEND(hComm##A,B) | |
| 360 #else | |
| 361 #define PSENDX PSEND | |
| 362 #endif | |
| 363 | |
| 364 | |
| 365 #define PRETRIEVE /* NOT DEFINED YET */ | |
| 366 | |
| 367 | |
| 368 #define MCAST(D,T) MSG_CAST(D,T_##T) | |
| 369 #define PCAST(P,D,T) T_##T *D = (T_##T*)P2D_AC(P,T);\ | |
| 370 P_OPC(P)=T;\ | |
| 371 xxxNotify(ACT_PCAST,VSI_CALLER,__FILE__,__LINE__,D2P(D)) | |
| 372 | |
| 373 #define PCOPY(DEST,SOURCE) memcpy(DEST,SOURCE,PSIZE(SOURCE)-sizeof(T_PRIM_HEADER)) | |
| 374 | |
| 375 /*** trace primitive, trace state ***/ | |
| 376 | |
| 377 #ifndef NEW_FRAME | |
| 378 | |
| 379 #ifdef NTRACE | |
| 380 | |
| 381 #define SET_STATE(PROCESS,STATE) ENTITY_DATA->state[PROCESS] = STATE | |
| 382 #define GET_STATE(PROCESS) ENTITY_DATA->state[PROCESS] | |
| 383 | |
| 384 #define PTRACE_IN(OPC) | |
| 385 #define PTRACE_OUT(OPC) | |
| 386 | |
| 387 #else | |
| 388 | |
| 389 #define SET_STATE(PROCESS,STATE)\ | |
| 390 ENTITY_DATA->state[PROCESS] =\ | |
| 391 vsi_o_strace (VSI_CALLER\ | |
| 392 PROCESS_NAME[PROCESS],\ | |
| 393 PROCESS##_NAME [ ENTITY_DATA->state[PROCESS] ],\ | |
| 394 PROCESS##_NAME [ STATE ],\ | |
| 395 STATE ) | |
| 396 | |
| 397 #define GET_STATE(PROCESS)\ | |
| 398 vsi_o_strace (VSI_CALLER\ | |
| 399 PROCESS_NAME[PROCESS],\ | |
| 400 PROCESS##_NAME [ ENTITY_DATA->state[PROCESS] ],\ | |
| 401 NULL ,\ | |
| 402 ENTITY_DATA->state[PROCESS] ) | |
| 403 | |
| 404 #define PTRACE_IN(OPC) vsi_o_ptrace (VSI_CALLER OPC, 0) | |
| 405 #define PTRACE_OUT(OPC) vsi_o_ptrace (VSI_CALLER OPC, 1) | |
| 406 | |
| 407 #endif | |
| 408 | |
| 409 #endif /* NEW_FRAME */ | |
| 410 /* | |
| 411 * Timer, Jump Table, Configuration | |
| 412 */ | |
| 413 | |
| 414 #ifdef OPTION_TIMER | |
| 415 #define TSTART(i,h,v) tim_start_timer(i,h,v) | |
| 416 #else | |
| 417 #define TSTART(i,h,v) vsi_t_start(VSI_CALLER h,v) | |
| 418 #endif | |
| 419 | |
| 420 #ifdef OPTION_RELATIVE | |
| 421 #define JUMP(a) (a+offset) | |
| 422 #else | |
| 423 #define JUMP(a) (a) | |
| 424 #endif | |
| 425 | |
| 426 #ifdef OPTION_SET_CONFIG_ONLY | |
| 427 #define GET_CONFIG(s,i) | |
| 428 #else | |
| 429 #define GET_CONFIG(s,i) pei_get_config(s,i) | |
| 430 #endif | |
| 431 | |
| 432 /* Cause Concept (begin) */ | |
| 433 /* | |
| 434 * For a definition of the cause concept please refer to document number | |
| 435 * 8443.711, named in February 2002 "cause_concept.doc" | |
| 436 */ | |
| 437 | |
| 438 /* definitions for calling the macros */ | |
| 439 /* DefinedBy bit */ | |
| 440 #define DEFBY_STD 0 | |
| 441 #define DEFBY_CONDAT 1 | |
| 442 /* OriginatingSide bit */ | |
| 443 #define ORIGSIDE_NET 0 | |
| 444 #define ORIGSIDE_MS 1 | |
| 445 /* | |
| 446 * note that OriginatingEntity definitions are in the SAP GSMCOM, which is a | |
| 447 * central (pseudo) SAP and the definitions are referenced in the using | |
| 448 * "real" SAPs, like e.g. MNSS SAP for the originating entity SS | |
| 449 */ | |
| 450 | |
| 451 /* need to decide whether to mask ORIGIN_ENTITY (max. 6 bits) in the following macro */ | |
| 452 #define CAUSE_MAKE(DEFINED_BY, ORIGIN_SIDE, ORIGIN_ENTITY, CAUSE_VALUE) \ | |
| 453 (USHORT)(((CAUSE_VALUE) & 0x00FF) |\ | |
| 454 ((DEFINED_BY) << 15) |\ | |
| 455 ((ORIGIN_SIDE) << 14) |\ | |
| 456 ((ORIGIN_ENTITY) << 8)) | |
| 457 | |
| 458 /* Get the cause value without the originating entity */ | |
| 459 #define GET_CAUSE_VALUE(cause) (UBYTE)((cause) & 0xFF) | |
| 460 | |
| 461 /* Get the entity originating the cause */ | |
| 462 #define GET_CAUSE_ORIGIN_ENTITY(cause) (UBYTE)(((cause) >> 8) & 0x3F) | |
| 463 | |
| 464 /* Get the DefinedBy bit */ | |
| 465 #define GET_CAUSE_DEFBY(cause) (UBYTE)((cause) >> 15) | |
| 466 | |
| 467 /* Get the OriginatingSide bit */ | |
| 468 #define GET_CAUSE_ORIGSIDE(cause) (UBYTE)(((cause) >> 14) & 0x01) | |
| 469 | |
| 470 /* Determine if a cause is invalid */ | |
| 471 #define IS_CAUSE_INVALID(cause) (((cause) & 0x80FF) EQ 0x80FF) | |
| 472 | |
| 473 /* Cause Concept (end) */ | |
| 474 | |
| 475 | |
| 476 /*==== TYPES ======================================================*/ | |
| 477 #if defined (_TMS470) && defined (NWARN) | |
| 478 typedef struct | |
| 479 { | |
| 480 UBYTE x [MAX_PSTRUCT_LEN | |
| 481 + ( | |
| 482 L3_CODING_OFFSET | |
| 483 + MAX_BITSTREAM_LEN | |
| 484 ) / 8 + 1 | |
| 485 ]; | |
| 486 } T_PARAMETER; | |
| 487 | |
| 488 typedef struct | |
| 489 { | |
| 490 T_PRIM_HEADER custom; | |
| 491 T_PARAMETER data; | |
| 492 } T_PRIM; | |
| 493 #else | |
| 494 typedef struct | |
| 495 { | |
| 496 T_PRIM_HEADER custom; | |
| 497 UBYTE data [MAX_PSTRUCT_LEN | |
| 498 + ( | |
| 499 L3_CODING_OFFSET | |
| 500 + MAX_BITSTREAM_LEN | |
| 501 ) / 8 + 1 | |
| 502 ]; | |
| 503 } T_PRIM; | |
| 504 #endif | |
| 505 | |
| 506 /*==== EXPORT =====================================================*/ | |
| 507 | |
| 508 | |
| 509 | |
| 510 /* | |
| 511 * Multithreading | |
| 512 */ | |
| 513 | |
| 514 | |
| 515 | |
| 516 #ifdef OPTION_MULTITHREAD | |
| 517 #if defined (ENTITY_CST) | |
| 518 #define _ENTITY_PREFIXED(N) cst_##N | |
| 519 #elif defined (ENTITY_ACI) | |
| 520 #define _ENTITY_PREFIXED(N) aci_##N | |
| 521 #elif defined (ENTITY_MFW) | |
| 522 #define _ENTITY_PREFIXED(N) aci_##N | |
| 523 #elif defined (ENTITY_MMI) | |
| 524 #define _ENTITY_PREFIXED(N) aci_##N | |
| 525 #elif defined (ENTITY_SMI) | |
| 526 #define _ENTITY_PREFIXED(N) aci_##N | |
| 527 #elif defined (ENTITY_SIM) | |
| 528 #define _ENTITY_PREFIXED(N) sim_##N | |
| 529 #elif defined (ENTITY_PL) | |
| 530 #define _ENTITY_PREFIXED(N) pl_##N | |
| 531 #elif defined (ENTITY_L1) | |
| 532 #define _ENTITY_PREFIXED(N) l1_##N | |
| 533 #elif defined (ENTITY_CC) | |
| 534 #define _ENTITY_PREFIXED(N) cc_##N | |
| 535 #elif defined (ENTITY_SS) | |
| 536 #define _ENTITY_PREFIXED(N) ss_##N | |
| 537 #elif defined (ENTITY_ESIM) | |
| 538 #define _ENTITY_PREFIXED(N) esim_##N | |
| 539 #elif defined (ENTITY_SMS) | |
| 540 #define _ENTITY_PREFIXED(N) sms_##N | |
| 541 #elif defined (ENTITY_MM) | |
| 542 #define _ENTITY_PREFIXED(N) mm_##N | |
| 543 #elif defined (ENTITY_RR) | |
| 544 #define _ENTITY_PREFIXED(N) rr_##N | |
| 545 #elif defined (ENTITY_DL) | |
| 546 #define _ENTITY_PREFIXED(N) dl_##N | |
| 547 #elif defined (ENTITY_L2R) | |
| 548 #define _ENTITY_PREFIXED(N) l2r_##N | |
| 549 #elif defined (ENTITY_TRA) | |
| 550 #define _ENTITY_PREFIXED(N) tra_##N | |
| 551 #elif defined (ENTITY_RLP) | |
| 552 #define _ENTITY_PREFIXED(N) rlp_##N | |
| 553 #elif defined (ENTITY_T30) | |
| 554 #define _ENTITY_PREFIXED(N) t30_##N | |
| 555 #elif defined (ENTITY_FAD) | |
| 556 #define _ENTITY_PREFIXED(N) fad_##N | |
| 557 #elif defined (ENTITY_RA) | |
| 558 #define _ENTITY_PREFIXED(N) ra_##N | |
| 559 #elif defined (ENTITY_WAP) | |
| 560 #define _ENTITY_PREFIXED(N) wap_##N | |
| 561 #elif defined (ENTITY_UDP) | |
| 562 #define _ENTITY_PREFIXED(N) udp_##N | |
| 563 #elif defined (ENTITY_IP) | |
| 564 #define _ENTITY_PREFIXED(N) ip_##N | |
| 565 #elif defined (ENTITY_RRLP) | |
| 566 #define _ENTITY_PREFIXED(N) rrlp_##N | |
| 567 #elif defined (ENTITY_PPP) | |
| 568 #define _ENTITY_PREFIXED(N) ppp_##N | |
| 569 #elif defined (ENTITY_BTI) | |
| 570 #define _ENTITY_PREFIXED(N) bti_##N | |
| 571 #elif defined (ENTITY_L1) | |
| 572 #ifdef NEW_FRAME | |
| 573 #include "ofe.h" | |
| 574 #endif | |
| 575 #elif defined (ENTITY_TAP) | |
| 576 #define _ENTITY_PREFIXED(N) tap_##N | |
| 577 #elif defined (ENTITY_PCO) | |
| 578 #define _ENTITY_PREFIXED(N) pco_##N | |
| 579 #elif defined (ENTITY_PAN) | |
| 580 #define _ENTITY_PREFIXED(N) pan_##N | |
| 581 #elif defined (ENTITY_TST) | |
| 582 #define _ENTITY_PREFIXED(N) tst_##N | |
| 583 #elif defined (ENTITY_APP) | |
| 584 #define _ENTITY_PREFIXED(N) app_##N | |
| 585 #endif | |
| 586 #endif | |
| 587 | |
| 588 #endif |
