/*----------------------------------------------------------------------------
*
* File:
* eas_report.c
*
* Contents and purpose:
* This file contains the debug message handling routines for the EAS library.
* These routines should be modified as needed for your system.
*
* Copyright 2005 Sonic Network Inc.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*----------------------------------------------------------------------------
* Revision Control:
* $Revision: 659 $
* $Date: 2007-04-24 13:36:35 -0700 (Tue, 24 Apr 2007) $
*----------------------------------------------------------------------------
*/
#ifdef _lint
#include "lint_stdlib.h"
#else
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#endif
#include "eas_report.h"
static int severityLevel = 9999;
/* debug file */
static FILE *debugFile = NULL;
int flush = 0;
#ifndef _NO_DEBUG_PREPROCESSOR
/* structure should have an #include for each error message header file */
S_DEBUG_MESSAGES debugMessages[] =
{
#ifndef UNIFIED_DEBUG_MESSAGES
#include "eas_config_msgs.h"
#include "eas_host_msgs.h"
#include "eas_hostmm_msgs.h"
#include "eas_math_msgs.h"
#include "eas_midi_msgs.h"
#include "eas_mixer_msgs.h"
#include "eas_pcm_msgs.h"
#include "eas_public_msgs.h"
#include "eas_smf_msgs.h"
#include "eas_wave_msgs.h"
#include "eas_voicemgt_msgs.h"
#ifdef _FM_SYNTH
#include "eas_fmsynth_msgs.h"
#include "eas_fmengine_msgs.h"
#endif
#ifdef _WT_SYNTH
#include "eas_wtsynth_msgs.h"
#include "eas_wtengine_msgs.h"
#endif
#ifdef _ARM_TEST_MAIN
#include "arm_main_msgs.h"
#endif
#ifdef _EAS_MAIN
#include "eas_main_msgs.h"
#endif
#ifdef _EAS_MAIN_IPC
#include "eas_main_ipc_msgs.h"
#endif
#ifdef _METRICS_ENABLED
#include "eas_perf_msgs.h"
#endif
#ifdef _COMPRESSOR_ENABLED
#include "eas_compressor_msgs.h"
#endif
#ifdef _ENHANCER_ENABLED
#include "eas_enhancer_msgs.h"
#endif
#ifdef _WOW_ENABLED
#include "eas_wow_msgs.h"
#endif
#ifdef _SMAF_PARSER
#include "eas_smaf_msgs.h"
#endif
#ifdef _OTA_PARSER
#include "eas_ota_msgs.h"
#endif
#ifdef _IMELODY_PARSER
#include "eas_imelody_msgs.h"
#endif
#ifdef _WAVE_PARSER
#include "eas_wavefile_msgs.h"
#endif
#if defined(_CMX_PARSER) || defined(_MFI_PARSER)
#include "eas_cmf_msgs.h"
#endif
#if defined(_CMX_PARSER) || defined(_MFI_PARSER) || defined(_WAVE_PARSER)
#include "eas_imaadpcm_msgs.h"
#endif
#else
#include "eas_debugmsgs.h"
#endif
/* denotes end of error messages */
{ 0,0,0 }
};
/*----------------------------------------------------------------------------
* EAS_ReportEx()
*
* This is the error message handler. The default handler outputs error
* messages to stdout. Modify this as needed for your system.
*----------------------------------------------------------------------------
*/
void EAS_ReportEx (int severity, unsigned long hashCode, int serialNum, ...)
{
va_list vargs;
int i;
/* check severity level */
if (severity > severityLevel)
return;
/* find the error message and output to stdout */
/*lint -e{661} we check for NULL pointer - no fence post error here */
for (i = 0; debugMessages[i].m_pDebugMsg; i++)
{
if ((debugMessages[i].m_nHashCode == hashCode) &&
(debugMessages[i].m_nSerialNum == serialNum))
{
/*lint -e{826} <allow variable args> */
va_start(vargs, serialNum);
if (debugFile)
{
vfprintf(debugFile, debugMessages[i].m_pDebugMsg, vargs);
if (flush)
fflush(debugFile);
}
else
{
vprintf(debugMessages[i].m_pDebugMsg, vargs);
}
va_end(vargs);
return;
}
}
printf("Unrecognized error: Severity=%d; HashCode=%lu; SerialNum=%d\n", severity, hashCode, serialNum);
} /* end EAS_ReportEx */
#else
/*----------------------------------------------------------------------------
* EAS_Report()
*
* This is the error message handler. The default handler outputs error
* messages to stdout. Modify this as needed for your system.
*----------------------------------------------------------------------------
*/
void EAS_Report (int severity, const char *fmt, ...)
{
va_list vargs;
/* check severity level */
if (severity > severityLevel)
return;
/*lint -e{826} <allow variable args> */
va_start(vargs, fmt);
if (debugFile)
{
vfprintf(debugFile, fmt, vargs);
if (flush)
fflush(debugFile);
}
else
{
vprintf(fmt, vargs);
}
va_end(vargs);
} /* end EAS_Report */
/*----------------------------------------------------------------------------
* EAS_ReportX()
*
* This is the error message handler. The default handler outputs error
* messages to stdout. Modify this as needed for your system.
*----------------------------------------------------------------------------
*/
void EAS_ReportX (int severity, const char *fmt, ...)
{
va_list vargs;
/* check severity level */
if (severity > severityLevel)
return;
/*lint -e{826} <allow variable args> */
va_start(vargs, fmt);
if (debugFile)
{
vfprintf(debugFile, fmt, vargs);
if (flush)
fflush(debugFile);
}
else
{
vprintf(fmt, vargs);
}
va_end(vargs);
} /* end EAS_ReportX */
#endif
/*----------------------------------------------------------------------------
* EAS_SetDebugLevel()
*
* Sets the level for debug message output
*----------------------------------------------------------------------------
*/
void EAS_SetDebugLevel (int severity)
{
severityLevel = severity;
} /* end EAS_SetDebugLevel */
/*----------------------------------------------------------------------------
* EAS_SetDebugFile()
*
* Redirect debugger output to the specified file.
*----------------------------------------------------------------------------
*/
void EAS_SetDebugFile (void *file, int flushAfterWrite)
{
debugFile = (FILE*) file;
flush = flushAfterWrite;
} /* end EAS_SetDebugFile */