Home | History | Annotate | Download | only in host_src
      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 
     41 static int severityLevel = 9999;
     42 
     43 /* debug file */
     44 static FILE *debugFile = NULL;
     45 int flush = 0;
     46 
     47 #ifndef _NO_DEBUG_PREPROCESSOR
     48 
     49 /* structure should have an #include for each error message header file */
     50 S_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 */
    144 void 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 */
    187 void 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 */
    217 void 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 
    248 void 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 */
    259 void EAS_SetDebugFile (void *file, int flushAfterWrite)
    260 {
    261     debugFile = (FILE*) file;
    262     flush = flushAfterWrite;
    263 } /* end EAS_SetDebugFile */
    264 
    265