| /*---------------------------------------------------------------------------- |
| * |
| * 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 */ |
| |