eas_report.c revision 7df30109963092559d3760c0661a020f9daf1030
1/*----------------------------------------------------------------------------
2 *
3 * File:
4 * eas_report.c
5 *
6 * Contents and purpose:
7 * This file contains the debug message handling routines for the EAS library.
8 * These routines should be modified as needed for your system.
9 *
10 * Copyright 2005 Sonic Network Inc.
11
12 * Licensed under the Apache License, Version 2.0 (the "License");
13 * you may not use this file except in compliance with the License.
14 * You may obtain a copy of the License at
15 *
16 *      http://www.apache.org/licenses/LICENSE-2.0
17 *
18 * Unless required by applicable law or agreed to in writing, software
19 * 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