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