eas_report.c revision a8c89077d78769bf4840fa91609edc51fe2fa02d
19788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana/*----------------------------------------------------------------------------
29788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana *
39788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana * File:
49788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana * eas_report.c
59788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana *
69788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana * Contents and purpose:
79788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana * This file contains the debug message handling routines for the EAS library.
89788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana * These routines should be modified as needed for your system.
99788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana *
109788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana * Copyright 2005 Sonic Network Inc.
119788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana
129788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana * Licensed under the Apache License, Version 2.0 (the "License");
139788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana * you may not use this file except in compliance with the License.
149788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana * You may obtain a copy of the License at
159788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana *
169788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana *      http://www.apache.org/licenses/LICENSE-2.0
179788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana *
189788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana * Unless required by applicable law or agreed to in writing, software
199788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana * distributed under the License is distributed on an "AS IS" BASIS,
20 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 * See the License for the specific language governing permissions and
22 * limitations under the License.
23 *
24 *----------------------------------------------------------------------------
25 * Revision Control:
26 *   $Revision: 659 $
27 *   $Date: 2007-04-24 13:36:35 -0700 (Tue, 24 Apr 2007) $
28 *----------------------------------------------------------------------------
29*/
30
31#ifdef _lint
32#include "lint_stdlib.h"
33#else
34#include <stdlib.h>
35#include <stdio.h>
36#include <stdarg.h>
37#endif
38
39#include "eas_report.h"
40
41static int severityLevel = 9999;
42
43/* debug file */
44static FILE *debugFile = NULL;
45int flush = 0;
46
47#ifndef _NO_DEBUG_PREPROCESSOR
48
49/* structure should have an #include for each error message header file */
50S_DEBUG_MESSAGES debugMessages[] =
51{
52#ifndef UNIFIED_DEBUG_MESSAGES
53#include "eas_config_msgs.h"
54
55
56#include "eas_host_msgs.h"
57#include "eas_hostmm_msgs.h"
58#include "eas_math_msgs.h"
59#include "eas_midi_msgs.h"
60#include "eas_mixer_msgs.h"
61#include "eas_pcm_msgs.h"
62#include "eas_public_msgs.h"
63#include "eas_smf_msgs.h"
64#include "eas_wave_msgs.h"
65#include "eas_voicemgt_msgs.h"
66
67#ifdef _FM_SYNTH
68#include "eas_fmsynth_msgs.h"
69#include "eas_fmengine_msgs.h"
70#endif
71
72#ifdef _WT_SYNTH
73#include "eas_wtsynth_msgs.h"
74#include "eas_wtengine_msgs.h"
75#endif
76
77#ifdef _ARM_TEST_MAIN
78#include "arm_main_msgs.h"
79#endif
80
81#ifdef _EAS_MAIN
82#include "eas_main_msgs.h"
83#endif
84
85#ifdef _EAS_MAIN_IPC
86#include "eas_main_ipc_msgs.h"
87#endif
88
89#ifdef _METRICS_ENABLED
90#include "eas_perf_msgs.h"
91#endif
92
93#ifdef _COMPRESSOR_ENABLED
94#include "eas_compressor_msgs.h"
95#endif
96
97#ifdef _ENHANCER_ENABLED
98#include "eas_enhancer_msgs.h"
99#endif
100
101#ifdef _WOW_ENABLED
102#include "eas_wow_msgs.h"
103#endif
104
105#ifdef _SMAF_PARSER
106#include "eas_smaf_msgs.h"
107#endif
108
109#ifdef _OTA_PARSER
110#include "eas_ota_msgs.h"
111#endif
112
113#ifdef _IMELODY_PARSER
114#include "eas_imelody_msgs.h"
115#endif
116
117#ifdef _WAVE_PARSER
118#include "eas_wavefile_msgs.h"
119#endif
120
121#if defined(_CMX_PARSER) || defined(_MFI_PARSER)
122#include "eas_cmf_msgs.h"
123#endif
124
125#if defined(_CMX_PARSER) || defined(_MFI_PARSER) || defined(_WAVE_PARSER)
126#include "eas_imaadpcm_msgs.h"
127#endif
128
129#else
130#include "eas_debugmsgs.h"
131#endif
132
133/* denotes end of error messages */
134{ 0,0,0 }
135};
136
137/*----------------------------------------------------------------------------
138 * EAS_ReportEx()
139 *
140 * This is the error message handler. The default handler outputs error
141 * messages to stdout. Modify this as needed for your system.
142 *----------------------------------------------------------------------------
143*/
144void EAS_ReportEx (int severity, unsigned long hashCode, int serialNum, ...)
145{
146    va_list vargs;
147    int i;
148
149    /* check severity level */
150    if (severity > severityLevel)
151        return;
152
153    /* find the error message and output to stdout */
154    /*lint -e{661} we check for NULL pointer - no fence post error here */
155    for (i = 0; debugMessages[i].m_pDebugMsg; i++)
156    {
157        if ((debugMessages[i].m_nHashCode == hashCode) &&
158        (debugMessages[i].m_nSerialNum == serialNum))
159        {
160            /*lint -e{826} <allow variable args> */
161            va_start(vargs, serialNum);
162            if (debugFile)
163            {
164                vfprintf(debugFile, debugMessages[i].m_pDebugMsg, vargs);
165                if (flush)
166                    fflush(debugFile);
167            }
168            else
169            {
170                vprintf(debugMessages[i].m_pDebugMsg, vargs);
171            }
172            va_end(vargs);
173            return;
174        }
175    }
176    printf("Unrecognized error: Severity=%d; HashCode=%lu; SerialNum=%d\n", severity, hashCode, serialNum);
177} /* end EAS_ReportEx */
178
179#else
180/*----------------------------------------------------------------------------
181 * EAS_Report()
182 *
183 * This is the error message handler. The default handler outputs error
184 * messages to stdout. Modify this as needed for your system.
185 *----------------------------------------------------------------------------
186*/
187void EAS_Report (int severity, const char *fmt, ...)
188{
189    va_list vargs;
190
191    /* check severity level */
192    if (severity > severityLevel)
193        return;
194
195    /*lint -e{826} <allow variable args> */
196    va_start(vargs, fmt);
197    if (debugFile)
198    {
199        vfprintf(debugFile, fmt, vargs);
200        if (flush)
201            fflush(debugFile);
202    }
203    else
204    {
205        vprintf(fmt, vargs);
206    }
207    va_end(vargs);
208} /* end EAS_Report */
209
210/*----------------------------------------------------------------------------
211 * EAS_ReportX()
212 *
213 * This is the error message handler. The default handler outputs error
214 * messages to stdout. Modify this as needed for your system.
215 *----------------------------------------------------------------------------
216*/
217void EAS_ReportX (int severity, const char *fmt, ...)
218{
219    va_list vargs;
220
221    /* check severity level */
222    if (severity > severityLevel)
223        return;
224
225    /*lint -e{826} <allow variable args> */
226    va_start(vargs, fmt);
227    if (debugFile)
228    {
229        vfprintf(debugFile, fmt, vargs);
230        if (flush)
231            fflush(debugFile);
232    }
233    else
234    {
235        vprintf(fmt, vargs);
236    }
237    va_end(vargs);
238} /* end EAS_ReportX */
239#endif
240
241/*----------------------------------------------------------------------------
242 * EAS_SetDebugLevel()
243 *
244 * Sets the level for debug message output
245 *----------------------------------------------------------------------------
246*/
247
248void EAS_SetDebugLevel (int severity)
249{
250    severityLevel = severity;
251} /* end EAS_SetDebugLevel */
252
253/*----------------------------------------------------------------------------
254 * EAS_SetDebugFile()
255 *
256 * Redirect debugger output to the specified file.
257 *----------------------------------------------------------------------------
258*/
259void EAS_SetDebugFile (void *file, int flushAfterWrite)
260{
261    debugFile = (FILE*) file;
262    flush = flushAfterWrite;
263} /* end EAS_SetDebugFile */
264
265