104
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 1 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 2 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 3 | Project : GSM-PS
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 4 | Modul : DL_TRC
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 5 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 6 | Copyright 2002 Texas Instruments Berlin, AG
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 7 | All rights reserved.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 8 |
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 9 | This file is confidential and a trade secret of Texas
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 10 | Instruments Berlin, AG
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 11 | The receipt of or possession of this file does not convey
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 12 | any rights to reproduce or disclose its contents or to
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 13 | manufacture, use, or sell anything it may describe, in
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 14 | whole, or in part, without the specific written consent of
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 15 | Texas Instruments Berlin, AG.
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 16 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 17 | Purpose : This Modul defines functions for tracing (only simulation)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 18 +-----------------------------------------------------------------------------
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 19 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 20
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 21 #ifndef DL_TRC_C
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 22 #define DL_TRC_C
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 23
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 24 #define ENTITY_DL
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 25
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 26
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 27 /*==== INCLUDES ===================================================*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 28 #if defined (NEW_FRAME)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 29
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 30 #include <stdio.h>
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 31 #include <stdarg.h>
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 32 #include <string.h>
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 33 #include "typedefs.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 34 #include "pconst.cdg"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 35 #include "vsi.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 36 #include "custom.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 37 #include "gsm.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 38 #include "mon_dl.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 39 #include "prim.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 40 #include "pei.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 41 #include "tok.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 42 #include "ccdapi.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 43 #include "dl.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 44
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 45 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 46
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 47 #include <stdio.h>
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 48 #include <stdarg.h>
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 49 #include <string.h>
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 50 #include "stddefs.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 51 #include "pconst.cdg"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 52 #include "custom.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 53 #include "gsm.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 54 #include "mon_dl.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 55 #include "prim.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 56 #include "vsi.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 57 #include "pei.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 58 #include "tok.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 59 #include "ccdapi.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 60 #include "dl.h"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 61
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 62 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 63
518
+ − 64 #include "dl_trc.h"
104
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 65
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 66 #if defined(DL_TRACE_WIN32)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 67
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 68 #define DL_TRC_DELAY() /* vsi_t_sleep (VSI_CALLER 1) */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 69
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 70 #define MY_ENTER_CRITICAL_SECTION(s) dl_trc_enter_critical_section(s)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 71 #define MY_LEAVE_CRITICAL_SECTION(s) dl_trc_leave_critical_section(s)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 72
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 73 LOCAL char local_buffer[300];
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 74 LOCAL int idx;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 75 #if defined (NEW_FRAME)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 76 LOCAL T_HANDLE sem_buf_acces;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 77 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 78 LOCAL T_VSI_SHANDLE sem_buf_acces;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 79 #endif
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 80
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 81 LOCAL const char * const FrameName[] =
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 82 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 83 "I", /* 0 I */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 84 "RR", /* 1 S */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 85 "RNR", /* 2 S */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 86 "REJ", /* 3 S */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 87 "SABM", /* 4 U */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 88 "DM", /* 5 U */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 89 "UI", /* 6 U */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 90 "DISC", /* 7 U */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 91 "UA", /* 8 U */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 92 "unknown"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 93 };
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 94 LOCAL const char * const ChannelType[] =
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 95 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 96 "?<", "SA", "SD", "FH", "FF", "?>"
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 97 };
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 98 enum frame_type_e
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 99 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 100 FT_I,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 101 FT_RR,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 102 FT_RNR,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 103 FT_REJ,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 104 FT_SABM,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 105 FT_DM,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 106 FT_UI,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 107 FT_DISC,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 108 FT_UA,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 109 FT_UNKNOWN
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 110 };
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 111
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 112
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 113 #if defined (NEW_FRAME)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 114 GLOBAL int dl_trc_enter_critical_section (T_HANDLE sem)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 115 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 116 GLOBAL int dl_trc_enter_critical_section (T_VSI_SHANDLE sem)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 117 #endif /* NEW_FRAME */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 118 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 119 idx++;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 120 if (idx > 1)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 121 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 122 sprintf (local_buffer, "idx=%d!", idx);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 123 TRACE_EVENT (local_buffer);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 124 vsi_t_sleep (VSI_CALLER 50);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 125 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 126
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 127 if (vsi_s_get (VSI_CALLER sem) NEQ VSI_OK)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 128 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 129 TRACE_EVENT ("dl_trc_enter_critical_section() semaphore error");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 130 return -1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 131 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 132 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 133 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 134 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 135 vsi_t_sleep (VSI_CALLER 1);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 136 TRACE_EVENT ("dl_trc_enter_critical_section()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 137 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 138 return 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 139 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 140 }/* endfunc dl_trc_enter_critical_section */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 141
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 142 #if defined (NEW_FRAME)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 143 GLOBAL int dl_trc_leave_critical_section (T_HANDLE sem)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 144 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 145 GLOBAL int dl_trc_leave_critical_section (T_VSI_SHANDLE sem)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 146 #endif /* NEW_FRAME */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 147 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 148 idx--;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 149 if (vsi_s_release (VSI_CALLER sem) NEQ VSI_OK)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 150 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 151 TRACE_EVENT ("dl_trc_leave_critical_section() semaphore error");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 152 return -1;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 153 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 154 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 155 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 156 /*
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 157 vsi_t_sleep (VSI_CALLER 1);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 158 TRACE_EVENT ("dl_trc_leave_critical_section()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 159 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 160 return 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 161 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 162 }/* endfunc dl_trc_leave_critical_section */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 163
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 164 GLOBAL void dl_trc_init ()
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 165 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 166 TRACE_FUNCTION ("dl_trc_init()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 167 idx = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 168 #ifdef NEW_FRAME
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 169 sem_buf_acces = vsi_s_open (VSI_CALLER "DL_TRC",1);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 170 #else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 171 sem_buf_acces = vsi_s_open (VSI_CALLER "DL_TRC");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 172 #endif /* NEW_FRAME */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 173
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 174 if (sem_buf_acces EQ VSI_ERROR)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 175 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 176 TRACE_FUNCTION ("open semaphore error \"sem_buf_acces\"");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 177 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 178 #if 1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 179 else if (!MY_ENTER_CRITICAL_SECTION (sem_buf_acces))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 180 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 181 TRACE_FUNCTION ("open semaphore \"sem_buf_acces\"");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 182 MY_LEAVE_CRITICAL_SECTION (sem_buf_acces);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 183 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 184 #endif /* 0|1 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 185 }/* endfunc dl_trc_init */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 186
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 187 GLOBAL void dl_trc_exit ()
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 188 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 189 TRACE_FUNCTION ("dl_trc_exit()");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 190 vsi_s_close (VSI_CALLER sem_buf_acces);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 191 }/* endfunc dl_trc_exit */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 192
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 193
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 194 GLOBAL void dl_trc_printf (char *fmt, ...)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 195 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 196 if (!MY_ENTER_CRITICAL_SECTION (sem_buf_acces))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 197 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 198 va_list vl;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 199 char *buf = local_buffer;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 200 va_start( vl, fmt ); /* Initialize variable arguments. */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 201 vsprintf (buf, fmt, vl);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 202 va_end ( vl ); /* Reset variable arguments. */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 203
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 204 DL_TRC_DELAY ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 205 TRACE_FUNCTION (buf);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 206 DL_TRC_DELAY ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 207 MY_LEAVE_CRITICAL_SECTION (sem_buf_acces);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 208 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 209 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 210
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 211 GLOBAL void dl_trc_print_array(unsigned char *pArray, int nLength)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 212 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 213 if (!MY_ENTER_CRITICAL_SECTION (sem_buf_acces))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 214 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 215 int n, o;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 216 char *buf = local_buffer;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 217
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 218 for (n = 0, o = 0; (n < nLength) AND (o < ((int)sizeof (local_buffer)) - 7); n++)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 219 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 220 o += sprintf (buf + o, "%02X ", *(pArray + n));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 221 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 222
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 223 if (n < nLength)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 224 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 225 o += sprintf (buf + o, "...");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 226 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 227
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 228 DL_TRC_DELAY ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 229 TRACE_FUNCTION (buf);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 230 DL_TRC_DELAY ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 231 MY_LEAVE_CRITICAL_SECTION (sem_buf_acces);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 232 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 233 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 234
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 235 GLOBAL void dl_trc_frame(unsigned char ch_type, unsigned char *pFrame, int direction)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 236 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 237 /* direction 0: down, 1: up */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 238
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 239 if (!MY_ENTER_CRITICAL_SECTION (sem_buf_acces))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 240 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 241 int o = 0, n, l, m;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 242 int frametype;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 243 int cmd = 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 244 int pf = ((*(pFrame + 1)) & 0x10) >> 4;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 245 char *buf = local_buffer;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 246
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 247 if (ch_type >= 5)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 248 ch_type = 5;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 249
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 250 if (((*pFrame) & (BTER_FORMAT_MASK)) EQ (SHORT_L2_HEADER_TYPE_1))
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 251 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 252 int len = ch_type EQ L2_CHANNEL_SACCH ? DL_N201_SACCH_Bter : DL_N201_DCCH_Bter;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 253
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 254 /* format type Bter */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 255 o += sprintf (buf+o, "--- %2s short PD: SAPI 0 ",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 256 ChannelType[ch_type]);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 257 o += sprintf (buf+o, "%2s %s %2s",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 258 direction ? " " : "<-", FrameName[FT_UI], direction ? "->" : " ");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 259 while (o < 60)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 260 buf[o++] = 0x20;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 261 o += sprintf (buf+o, " l=%-2u ", len);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 262 for (n = 0; n < len; n++)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 263 o += sprintf (buf+o, " %02X", *(pFrame + n));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 264 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 265 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 266 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 267 /* address field */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 268 cmd = ((*pFrame)&0x02) ? direction ? 0 : 1
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 269 : direction ? 1 : 0;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 270 o += sprintf (buf+o, "--- %2s %02X %02X %02X: SAPI %u %s ",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 271 ChannelType[ch_type],
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 272 *(pFrame + 0), *(pFrame + 1), *(pFrame + 2),
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 273 /*direction?"UL->":"<-DL",*/
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 274 ((*pFrame)&0x1f)>>2,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 275 cmd ? "cmd" : "rsp");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 276 /* control field */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 277 if ((*(pFrame + 1)) & 0x01)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 278 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 279 if (((*(pFrame + 1)) & 0x03) EQ 0x03)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 280 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 281 switch ((*(pFrame + 1)) & 0xef) /* unnumbered */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 282 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 283 case 0x2f: frametype = FT_SABM; break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 284 case 0x0f: frametype = FT_DM; break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 285 case 0x03: frametype = FT_UI; break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 286 case 0x43: frametype = FT_DISC; break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 287 case 0x63: frametype = FT_UA; break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 288 default: frametype = FT_UNKNOWN; break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 289 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 290 o += sprintf (buf+o, "%c %14s",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 291 pf ? (cmd ? 'P' : 'F') : ' ', "");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 292 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 293 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 294 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 295 switch ((*(pFrame + 1)) & 0x0f) /* supervisory */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 296 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 297 case 0x01: frametype = FT_RR; break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 298 case 0x05: frametype = FT_RNR; break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 299 case 0x09: frametype = FT_REJ; break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 300 default: frametype = FT_UNKNOWN; break;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 301 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 302 o += sprintf (buf+o, "%c %s=%u %7s",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 303 pf ? (cmd ? 'P' : 'F') : ' ',
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 304 direction ? "N(R)" : "n(r)",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 305 ((*(pFrame + 1)) & 0xe0) >> 5,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 306 "");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 307 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 308 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 309 else
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 310 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 311 frametype = FT_I;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 312 o += sprintf (buf+o, "%c %s=%u %s=%u ",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 313 pf ? (cmd ? 'P' : 'F') : ' ',
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 314 direction ? "N(R)" : "n(r)",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 315 ((*(pFrame + 1)) & 0xe0) >> 5,
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 316 direction ? "N(S)" : "n(s)",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 317 ((*(pFrame + 1)) & 0x0e) >> 1);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 318 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 319
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 320 o += sprintf (buf+o, "%2s %s %2s",
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 321 direction ? " " : "<-", FrameName[frametype], direction ? "->" : " ");
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 322
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 323 /* length field */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 324 l = (*(pFrame + 2)) >> 2;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 325 m = (*(pFrame + 2)) & 0x02;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 326 if (l OR m)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 327 {
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 328 while (o < 60)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 329 buf[o++] = 0x20;
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 330 o += sprintf (buf+o, "%c l=%-2u ", m ? 'M':' ', l);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 331
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 332 for (n = 0; (n < l) AND (n < 20); n++)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 333 o += sprintf (buf+o, " %02X", *(pFrame + 3 + n));
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 334 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 335 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 336
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 337 DL_TRC_DELAY ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 338 TRACE_FUNCTION (buf);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 339 DL_TRC_DELAY ();
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 340 MY_LEAVE_CRITICAL_SECTION (sem_buf_acces);
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 341 }
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 342 }/* endfunc dl_trc_frame */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 343 #endif /* DL_TRACE_WIN32 */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 344
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 345 #endif /* DL_TRC_C */
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
+ − 346