/*---------------------------------------------------------------------------- * * 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 #include #include #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} */ 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} */ 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} */ 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 */