1/* 2 * report.h 3 * 4 * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 11 * * Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * * Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in 15 * the documentation and/or other materials provided with the 16 * distribution. 17 * * Neither the name Texas Instruments nor the names of its 18 * contributors may be used to endorse or promote products derived 19 * from this software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34 35/***************************************************************************/ 36/* */ 37/* MODULE: report.h */ 38/* PURPOSE: Report module internal header API */ 39/* */ 40/***************************************************************************/ 41#ifndef __REPORT_H__ 42#define __REPORT_H__ 43 44/** \file report.h 45 * \brief Report module API \n 46 * APIs which are used for reporting messages to the User while running. \n\n 47 * 48 * The report mechanism: Messages are reported per file and severity Level \n 49 * Therefore, each file has a report flag which indicate if reporting for that file is enabled, \n 50 * and each severity has a severity flag which indicate if reporting for that severity is enabled. \n 51 * Only if both flags are enabled, the message is printed. \n 52 * The report flags of all file are indicated in a bit map Table which is contained in the report module handle \n 53 * The report flags of all severities are indicated in a bit map Table which is contained in the report module handle \n 54 */ 55 56/* in order to work without the driver logger use that definition here 57 * #define PRINTF_ROLLBACK 58 */ 59 60#include "osApi.h" 61#include "commonTypes.h" 62 63#define MAX_STRING_LEN 32 64 65 66/*******************************/ 67/* Report Files IDs */ 68/*******************************/ 69 70typedef enum 71{ 72 FILE_ID_0 , /* timer */ 73 FILE_ID_1 , /* measurementMgr */ 74 FILE_ID_2 , /* measurementMgrSM */ 75 FILE_ID_3 , /* regulatoryDomain */ 76 FILE_ID_4 , /* requestHandler */ 77 FILE_ID_5 , /* SoftGemini */ 78 FILE_ID_6 , /* spectrumMngmntMgr */ 79 FILE_ID_7 , /* SwitchChannel */ 80 FILE_ID_8 , /* roamingMngr */ 81 FILE_ID_9 , /* scanMngr */ 82 FILE_ID_10 , /* admCtrlXCC */ 83 FILE_ID_11 , /* XCCMngr */ 84 FILE_ID_12 , /* XCCRMMngr */ 85 FILE_ID_13 , /* XCCTSMngr */ 86 FILE_ID_14 , /* rogueAp */ 87 FILE_ID_15 , /* TransmitPowerXCC */ 88 FILE_ID_16 , /* admCtrl */ 89 FILE_ID_17 , /* admCtrlNone */ 90 FILE_ID_18 , /* admCtrlWep */ 91 FILE_ID_19 , /* admCtrlWpa */ 92 FILE_ID_20 , /* admCtrlWpa2 */ 93 FILE_ID_21 , /* apConn */ 94 FILE_ID_22 , /* broadcastKey802_1x */ 95 FILE_ID_23 , /* broadcastKeyNone */ 96 FILE_ID_24 , /* broadcastKeySM */ 97 FILE_ID_25 , /* conn */ 98 FILE_ID_26 , /* connIbss */ 99 FILE_ID_27 , /* connInfra */ 100 FILE_ID_28 , /* keyDerive */ 101 FILE_ID_29 , /* keyDeriveAes */ 102 FILE_ID_30 , /* keyDeriveCkip */ 103 FILE_ID_31 , /* keyDeriveTkip */ 104 FILE_ID_32 , /* keyDeriveWep */ 105 FILE_ID_33 , /* keyParser */ 106 FILE_ID_34 , /* keyParserExternal */ 107 FILE_ID_35 , /* keyParserWep */ 108 FILE_ID_36 , /* mainKeysSm */ 109 FILE_ID_37 , /* mainSecKeysOnly */ 110 FILE_ID_38 , /* mainSecNull */ 111 FILE_ID_39 , /* mainSecSm */ 112 FILE_ID_40 , /* rsn */ 113 FILE_ID_41 , /* sme */ 114 FILE_ID_42 , /* smeSelect */ 115 FILE_ID_43 , /* smeSm */ 116 FILE_ID_44 , /* unicastKey802_1x */ 117 FILE_ID_45 , /* unicastKeyNone */ 118 FILE_ID_46 , /* unicastKeySM */ 119 FILE_ID_47 , /* CmdDispatcher */ 120 FILE_ID_48 , /* CmdHndlr */ 121 FILE_ID_49 , /* DrvMain */ 122 FILE_ID_50 , /* EvHandler */ 123 FILE_ID_51 , /* Ctrl */ 124 FILE_ID_52 , /* GeneralUtil */ 125 FILE_ID_53 , /* RateAdaptation */ 126 FILE_ID_54 , /* rx */ 127 FILE_ID_55 , /* TrafficMonitor */ 128 FILE_ID_56 , /* txCtrl */ 129 FILE_ID_57 , /* txCtrlParams */ 130 FILE_ID_58 , /* txCtrlServ */ 131 FILE_ID_59 , /* TxDataClsfr */ 132 FILE_ID_60 , /* txDataQueue */ 133 FILE_ID_61 , /* txMgmtQueue */ 134 FILE_ID_62 , /* txPort */ 135 FILE_ID_63 , /* assocSM */ 136 FILE_ID_64 , /* authSm */ 137 FILE_ID_65 , /* currBss */ 138 FILE_ID_66 , /* healthMonitor */ 139 FILE_ID_67 , /* mlmeBuilder */ 140 FILE_ID_68 , /* mlmeParser */ 141 FILE_ID_69 , /* mlmeSm */ 142 FILE_ID_70 , /* openAuthSm */ 143 FILE_ID_71 , /* PowerMgr */ 144 FILE_ID_72 , /* PowerMgrDbgPrint */ 145 FILE_ID_73 , /* PowerMgrKeepAlive */ 146 FILE_ID_74 , /* qosMngr */ 147 FILE_ID_75 , /* roamingInt */ 148 FILE_ID_76 , /* ScanCncn */ 149 FILE_ID_77 , /* ScanCncnApp */ 150 FILE_ID_78 , /* ScanCncnOsSm */ 151 FILE_ID_79 , /* ScanCncnSm */ 152 FILE_ID_80 , /* ScanCncnSmSpecific */ 153 FILE_ID_81 , /* scanResultTable */ 154 FILE_ID_82 , /* scr */ 155 FILE_ID_83 , /* sharedKeyAuthSm */ 156 FILE_ID_84 , /* siteHash */ 157 FILE_ID_85 , /* siteMgr */ 158 FILE_ID_86 , /* StaCap */ 159 FILE_ID_87 , /* systemConfig */ 160 FILE_ID_88 , /* templates */ 161 FILE_ID_89 , /* trafficAdmControl */ 162 FILE_ID_90 , /* CmdBld */ 163 FILE_ID_91 , /* CmdBldCfg */ 164 FILE_ID_92 , /* CmdBldCfgIE */ 165 FILE_ID_93 , /* CmdBldCmd */ 166 FILE_ID_94 , /* CmdBldCmdIE */ 167 FILE_ID_95 , /* CmdBldItr */ 168 FILE_ID_96 , /* CmdBldItrIE */ 169 FILE_ID_97 , /* CmdQueue */ 170 FILE_ID_98 , /* RxQueue */ 171 FILE_ID_99 , /* txCtrlBlk */ 172 FILE_ID_100 , /* txHwQueue */ 173 FILE_ID_101 , /* CmdMBox */ 174 FILE_ID_102 , /* eventMbox */ 175 FILE_ID_103 , /* fwDebug */ 176 FILE_ID_104 , /* FwEvent */ 177 FILE_ID_105 , /* HwInit */ 178 FILE_ID_106 , /* RxXfer */ 179 FILE_ID_107 , /* txResult */ 180 FILE_ID_108 , /* txXfer */ 181 FILE_ID_109 , /* MacServices */ 182 FILE_ID_110 , /* MeasurementSrv */ 183 FILE_ID_111 , /* measurementSrvDbgPrint */ 184 FILE_ID_112 , /* MeasurementSrvSM */ 185 FILE_ID_113 , /* PowerSrv */ 186 FILE_ID_114 , /* PowerSrvSM */ 187 FILE_ID_115 , /* ScanSrv */ 188 FILE_ID_116 , /* ScanSrvSM */ 189 FILE_ID_117 , /* TWDriver */ 190 FILE_ID_118 , /* TWDriverCtrl */ 191 FILE_ID_119 , /* TWDriverRadio */ 192 FILE_ID_120 , /* TWDriverTx */ 193 FILE_ID_121 , /* TwIf */ 194 FILE_ID_122 , /* SdioBusDrv */ 195 FILE_ID_123 , /* TxnQueue */ 196 FILE_ID_124 , /* WspiBusDrv */ 197 FILE_ID_125 , /* context */ 198 FILE_ID_126 , /* freq */ 199 FILE_ID_127 , /* fsm */ 200 FILE_ID_128 , /* GenSM */ 201 FILE_ID_129 , /* mem */ 202 FILE_ID_130 , /* queue */ 203 FILE_ID_131 , /* rate */ 204 FILE_ID_132 , /* report */ 205 FILE_ID_133 , /* stack */ 206 FILE_ID_134 , /* externalSec */ 207 FILE_ID_135 , /* roamingMngr_autoSM */ 208 FILE_ID_136 , /* roamingMngr_manualSM */ 209 210 FILE_ID_137 , /* cmdinterpretoid */ 211 REPORT_FILES_NUM /* Number of files with trace reports */ 212 213} EReportFiles; 214 215 216/************************************/ 217/* Report Severity values */ 218/************************************/ 219 220/** \enum EReportSeverity 221 * \brief Report Severity Types 222 * 223 * \par Description 224 * All available severity Levels of the events which are reported to user.\n 225 * 226 * \sa 227 */ 228typedef enum 229{ 230 REPORT_SEVERITY_INIT = 1, /**< Init Level (event happened during initialization) */ 231 REPORT_SEVERITY_INFORMATION = 2, /**< Information Level */ 232 REPORT_SEVERITY_WARNING = 3, /**< Warning Level */ 233 REPORT_SEVERITY_ERROR = 4, /**< Error Level (error accored) */ 234 REPORT_SEVERITY_FATAL_ERROR = 5, /**< Fatal-Error Level (fatal-error accored) */ 235 REPORT_SEVERITY_SM = 6, /**< State-Machine Level (event happened in State-Machine) */ 236 REPORT_SEVERITY_CONSOLE = 7, /**< Consol Level (event happened in Consol) */ 237 REPORT_SEVERITY_MAX = REPORT_SEVERITY_CONSOLE + 1 /**< Maximum number of report severity levels */ 238 239} EReportSeverity; 240 241/** \struct TReport 242 * \brief Report Module Object 243 * 244 * \par Description 245 * All the Databases and other parameters which are needed for reporting messages to user 246 * 247 * \sa 248 */ 249typedef struct 250{ 251 TI_HANDLE hOs; /**< Handle to Operating System Object */ 252 TI_UINT8 aSeverityTable[REPORT_SEVERITY_MAX]; /**< Severities Table: Table which holds for each severity level a flag which indicates whether the severity is enabled for reporting */ 253 char aSeverityDesc[REPORT_SEVERITY_MAX][MAX_STRING_LEN]; /**< Severities Descriptors Table: Table which holds for each severity a string of its name, which is used in severity's reported messages */ 254 TI_UINT8 aFileEnable[REPORT_FILES_NUM]; /**< Files table indicating per file if it is enabled for reporting */ 255 256#ifdef PRINTF_ROLLBACK 257 char aFileName[REPORT_FILES_NUM][MAX_STRING_LEN]; /**< Files names table inserted in the file's reported messages */ 258#endif 259 260} TReport; 261 262/** \struct TReportParamInfo 263 * \brief Report Parameter Information 264 * 265 * \par Description 266 * Struct which defines all the Databases and other parameters which are needed 267 * for reporting messages to user. 268 * The actual Content of the Report Parameter Could be one of the followed (held in union): 269 * Severety Table | Module Table | Enable/Disable indication of debug module usage 270 * 271 * \sa EExternalParam, ETwdParam 272 */ 273typedef struct 274{ 275 TI_UINT32 paramType; /**< The reported parameter type - one of External Parameters (which includes Set,Get, Module, internal number etc.) 276 * of Report Module. Used by user for Setting or Getting Report Module Paramters, for exaple Set/Get severety table 277 * to/from Report Module 278 */ 279 TI_UINT32 paramLength; /**< Length of reported parameter */ 280 281 union 282 { 283 TI_UINT8 aSeverityTable[REPORT_SEVERITY_MAX]; /**< Table which holds severity flag for every available LOG severity level. 284 * This flag indicates for each severity - whether it is enabled for Logging or not. 285 * User can Set/Get this Tabel 286 */ 287 TI_UINT8 aFileEnable[REPORT_FILES_NUM]; /**< Table which holds file flag for every available LOG file. 288 * This flag indicates for each file - whether it is enabled for Logging or not. 289 * User can Set/Get this Tabel 290 */ 291 TI_UINT32 uReportPPMode; /**< Used by user for Indicating if Debug Module should be enabled/disabled */ 292 293 } content; 294 295} TReportParamInfo; 296 297/** \struct TReportInitParams 298 * \brief Report Init Parameters 299 * 300 * \par Description 301 * Struct which defines all the Databases needed for init and set the defualts of the Report Module. 302 * 303 */ 304typedef struct 305{ 306 /* Note: The arrays sizes are aligned to 4 byte to avoid padding added by the compiler! */ 307 TI_UINT8 aSeverityTable[(REPORT_SEVERITY_MAX + 3) & ~3]; /**< Table in the size of all available LOG severity levels which indicates for each severity - whether it is enabled for Logging or not. */ 308 TI_UINT8 aFileEnable [(REPORT_FILES_NUM + 3) & ~3]; /**< Table in the size of all available LOG files which indicates for each file - whether it is enabled for Logging or not */ 309 310} TReportInitParams; 311 312 313 314/****************************/ 315/* report module Macros */ 316/****************************/ 317 318/* The report mechanism is like that: 319 Each file has a report flag. Each severity has a severity flag. 320 Only if bits are enabled, the message is printed */ 321/* The modules which have their report flag enable are indicated by a bit map in the reportModule 322 variable contained in the report handle*/ 323/* The severities which have are enabled are indicated by a bit map in the reportSeverity 324 variable contained in the report handle*/ 325/* general trace messages */ 326#ifndef PRINTF_ROLLBACK 327 328#define TRACE0(hReport, level, str) \ 329 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 330{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 0); } } while(0) 331 332#define TRACE1(hReport, level, str, p1) \ 333 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 334{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 1, (TI_UINT32)p1); } } while(0) 335 336#define TRACE2(hReport, level, str, p1, p2) \ 337 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 338{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 2, (TI_UINT32)p1, (TI_UINT32)p2); } } while(0) 339 340#define TRACE3(hReport, level, str, p1, p2, p3) \ 341 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 342{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 3, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3); } } while(0) 343 344#define TRACE4(hReport, level, str, p1, p2, p3, p4) \ 345 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 346{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 4, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4); } } while(0) 347 348#define TRACE5(hReport, level, str, p1, p2, p3, p4, p5) \ 349 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 350{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 5, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5); } } while(0) 351 352#define TRACE6(hReport, level, str, p1, p2, p3, p4, p5, p6) \ 353 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 354{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 6, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6); } } while(0) 355 356#define TRACE7(hReport, level, str, p1, p2, p3, p4, p5, p6, p7) \ 357 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 358{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 7, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7); } } while(0) 359 360#define TRACE8(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8) \ 361 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 362{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 8, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8); } } while(0) 363 364#define TRACE9(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9) \ 365 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 366{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 9, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8, (TI_UINT32)p9); } } while(0) 367 368#define TRACE10(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) \ 369 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 370{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 10, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8, (TI_UINT32)p9, (TI_UINT32)p10); } } while(0) 371 372#define TRACE11(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) \ 373 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 374{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 11, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8, (TI_UINT32)p9, (TI_UINT32)p10, (TI_UINT32)p11); } } while(0) 375 376#define TRACE12(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) \ 377 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 378{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 12, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8, (TI_UINT32)p9, (TI_UINT32)p10, (TI_UINT32)p11, (TI_UINT32)p12); } } while(0) 379 380#define TRACE13(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) \ 381 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 382{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 13, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8, (TI_UINT32)p9, (TI_UINT32)p10, (TI_UINT32)p11, (TI_UINT32)p12, (TI_UINT32)p13); } } while(0) 383 384#define TRACE14(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14) \ 385 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 386{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 14, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8, (TI_UINT32)p9, (TI_UINT32)p10, (TI_UINT32)p11, (TI_UINT32)p12, (TI_UINT32)p13, (TI_UINT32)p14); } } while(0) 387 388#define TRACE15(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15) \ 389 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 390{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 15, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8, (TI_UINT32)p9, (TI_UINT32)p10, (TI_UINT32)p11, (TI_UINT32)p12, (TI_UINT32)p13, (TI_UINT32)p14, (TI_UINT32)p15); } } while(0) 391 392#define TRACE16(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16) \ 393 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 394{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 16, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8, (TI_UINT32)p9, (TI_UINT32)p10, (TI_UINT32)p11, (TI_UINT32)p12, (TI_UINT32)p13, (TI_UINT32)p14, (TI_UINT32)p15, (TI_UINT32)p16); } } while(0) 395 396#define TRACE17(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17) \ 397 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 398{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 17, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8, (TI_UINT32)p9, (TI_UINT32)p10, (TI_UINT32)p11, (TI_UINT32)p12, (TI_UINT32)p13, (TI_UINT32)p14, (TI_UINT32)p15, (TI_UINT32)p16, (TI_UINT32)p17); } } while(0) 399 400#define TRACE18(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18) \ 401 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 402{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 18, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8, (TI_UINT32)p9, (TI_UINT32)p10, (TI_UINT32)p11, (TI_UINT32)p12, (TI_UINT32)p13, (TI_UINT32)p14, (TI_UINT32)p15, (TI_UINT32)p16, (TI_UINT32)p17, (TI_UINT32)p18); } } while(0) 403 404#define TRACE19(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19) \ 405 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 406{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 19, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8, (TI_UINT32)p9, (TI_UINT32)p10, (TI_UINT32)p11, (TI_UINT32)p12, (TI_UINT32)p13, (TI_UINT32)p14, (TI_UINT32)p15, (TI_UINT32)p16, (TI_UINT32)p17, (TI_UINT32)p18, (TI_UINT32)p19); } } while(0) 407 408#define TRACE20(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20) \ 409 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 410{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 20, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8, (TI_UINT32)p9, (TI_UINT32)p10, (TI_UINT32)p11, (TI_UINT32)p12, (TI_UINT32)p13, (TI_UINT32)p14, (TI_UINT32)p15, (TI_UINT32)p16, (TI_UINT32)p17, (TI_UINT32)p18, (TI_UINT32)p19, (TI_UINT32)p20); } } while(0) 411 412#define TRACE21(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21) \ 413 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 414{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 21, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8, (TI_UINT32)p9, (TI_UINT32)p10, (TI_UINT32)p11, (TI_UINT32)p12, (TI_UINT32)p13, (TI_UINT32)p14, (TI_UINT32)p15, (TI_UINT32)p16, (TI_UINT32)p17, (TI_UINT32)p18, (TI_UINT32)p19, (TI_UINT32)p20, (TI_UINT32)p21); } } while(0) 415 416#define TRACE22(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22) \ 417 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 418{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 22, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8, (TI_UINT32)p9, (TI_UINT32)p10, (TI_UINT32)p11, (TI_UINT32)p12, (TI_UINT32)p13, (TI_UINT32)p14, (TI_UINT32)p15, (TI_UINT32)p16, (TI_UINT32)p17, (TI_UINT32)p18, (TI_UINT32)p19, (TI_UINT32)p20, (TI_UINT32)p21, (TI_UINT32)p22); } } while(0) 419 420#define TRACE25(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25) \ 421 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 422{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 22, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8, (TI_UINT32)p9, (TI_UINT32)p10, (TI_UINT32)p11, (TI_UINT32)p12, (TI_UINT32)p13, (TI_UINT32)p14, (TI_UINT32)p15, (TI_UINT32)p16, (TI_UINT32)p17, (TI_UINT32)p18, (TI_UINT32)p19, (TI_UINT32)p20, (TI_UINT32)p21, (TI_UINT32)p22, (TI_UINT32)p23, (TI_UINT32)p24, (TI_UINT32)p25); } } while(0) 423 424#define TRACE31(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31) \ 425 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 426{ os_Trace((((TReport *)hReport)->hOs), level, __FILE_ID__, __LINE__, 22, (TI_UINT32)p1, (TI_UINT32)p2, (TI_UINT32)p3, (TI_UINT32)p4, (TI_UINT32)p5, (TI_UINT32)p6, (TI_UINT32)p7, (TI_UINT32)p8, (TI_UINT32)p9, (TI_UINT32)p10, (TI_UINT32)p11, (TI_UINT32)p12, (TI_UINT32)p13, (TI_UINT32)p14, (TI_UINT32)p15, (TI_UINT32)p16, (TI_UINT32)p17, (TI_UINT32)p18, (TI_UINT32)p19, (TI_UINT32)p20, (TI_UINT32)p21, (TI_UINT32)p22, (TI_UINT32)p23, (TI_UINT32)p24, (TI_UINT32)p25, (TI_UINT32)p26, (TI_UINT32)p27, (TI_UINT32)p28, (TI_UINT32)p29, (TI_UINT32)p30, (TI_UINT32)p31); } } while(0) 427 428 429#else /* PRINTF_ROLLBACK */ 430 431#define TRACE0(hReport, level, str) \ 432 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 433{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str); } } while(0) 434 435#define TRACE1(hReport, level, str, p1) \ 436 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 437{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1); } } while(0) 438 439#define TRACE2(hReport, level, str, p1, p2) \ 440 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 441{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2); } } while(0) 442 443#define TRACE3(hReport, level, str, p1, p2, p3) \ 444 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 445{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3); } } while(0) 446 447#define TRACE4(hReport, level, str, p1, p2, p3, p4) \ 448 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 449{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4); } } while(0) 450 451#define TRACE5(hReport, level, str, p1, p2, p3, p4, p5) \ 452 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 453{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5); } } while(0) 454 455#define TRACE6(hReport, level, str, p1, p2, p3, p4, p5, p6) \ 456 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 457{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6); } } while(0) 458 459#define TRACE7(hReport, level, str, p1, p2, p3, p4, p5, p6, p7) \ 460 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 461{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7); } } while(0) 462 463#define TRACE8(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8) \ 464 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 465{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8); } } while(0) 466 467#define TRACE9(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9) \ 468 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 469{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8, p9); } } while(0) 470 471#define TRACE10(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) \ 472 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 473{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); } } while(0) 474 475#define TRACE11(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) \ 476 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 477{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); } } while(0) 478 479#define TRACE12(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) \ 480 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 481{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); } } while(0) 482 483#define TRACE13(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) \ 484 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 485{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); } } while(0) 486 487#define TRACE14(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14) \ 488 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 489{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14); } } while(0) 490 491#define TRACE15(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15) \ 492 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 493{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15); } } while(0) 494 495#define TRACE16(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16) \ 496 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 497{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16); } } while(0) 498 499#define TRACE17(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17) \ 500 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 501{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17); } } while(0) 502 503#define TRACE18(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18) \ 504 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 505{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18); } } while(0) 506 507#define TRACE19(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19) \ 508 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 509{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19); } } while(0) 510 511#define TRACE20(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20) \ 512 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 513{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20); } } while(0) 514 515#define TRACE21(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21) \ 516 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 517{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21); } } while(0) 518 519#define TRACE22(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22) \ 520 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 521{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22); } } while(0) 522 523#define TRACE25(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25) \ 524 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 525{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25); } } while(0) 526 527#define TRACE31(hReport, level, str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30, p31) \ 528 do { if (hReport && (((TReport *)hReport)->aSeverityTable[level]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 529{ os_printf ("%s, %s:", ((TReport *)hReport)->aFileName[__FILE_ID__], ((TReport *)hReport)->aSeverityDesc[level]); os_printf (str, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p27, p27, p28, p29, p30, p31); } } while(0) 530 531#endif /* #ifdef PRINTF_ROLLBACK */ 532 533 534/****************************/ 535/* report module Macros */ 536/****************************/ 537 538/* The report mechanism is like that: 539Each file has a report flag. Each severity has a severity flag. 540Only if bits are enabled, the message is printed */ 541/* The modules which have their report flag enable are indicated by a bit map in the reportModule 542variable contained in the report handle*/ 543/* The severities which have are enabled are indicated by a bit map in the reportSeverity 544variable contained in the report handle*/ 545 546#ifdef REPORT_LOG 547 548/** \def WLAN_OS_REPORT 549* \brief Macro which writes a message to user via specific Operating System printf. 550* E.g. print is done using the relevant used OS printf method. 551*/ 552#define WLAN_OS_REPORT(msg) \ 553 do { os_printf msg;} while(0) 554 555 556#ifdef INIT_MESSAGES 557/** \def WLAN_INIT_REPORT 558* \brief Macro which writes a message to user via specific Operating System printf. 559* E.g. print is done using the relevant used OS printf method. 560*/ 561#define WLAN_INIT_REPORT(msg) \ 562 do { os_printf msg;} while(0) 563#else 564/** \def WLAN_INIT_REPORT 565* \brief Macro which writes a message to user via specific Operating System printf. 566* E.g. print is done using the relevant used OS printf method. 567*/ 568#define WLAN_INIT_REPORT(msg) 569#endif 570#define TRACE_INFO_HEX(hReport, data, datalen) \ 571 do { if (hReport && (((TReport *)hReport)->aSeverityTable[REPORT_SEVERITY_INFORMATION]) && (((TReport *)hReport)->aFileEnable[__FILE_ID__])) \ 572{ report_PrintDump (data, datalen); } } while(0) 573 574 575#else /* REPORT_LOG */ 576 577/* NOTE: Keep a dummy report function call to treat compilation warnings */ 578 579/** \def WLAN_OS_REPORT 580* \brief Dummy macro: Nothing is done 581*/ 582#define WLAN_OS_REPORT(msg) \ 583 do { } while (0) 584 585/** \def WLAN_INIT_REPORT 586* \brief Dummy macro: Nothing is done 587*/ 588#define WLAN_INIT_REPORT(msg) \ 589 do { } while (0) 590 591 592#define TRACE_INFO_HEX(hReport, data, datalen) \ 593 do { } while (0) 594 595#endif /* REPORT_LOG */ 596 597 598/****************************/ 599/* report module prototypes */ 600/****************************/ 601 602/** \brief Create Report Module Object 603 * \param hOs - OS module object handle 604 * \return Handle to the report module on success, NULL otherwise 605 * 606 * \par Description 607 * Report module creation function, called by the config mgr in creation phase \n 608 * performs the following: \n 609 * - Allocate the report handle 610 */ 611TI_HANDLE report_Create (TI_HANDLE hOs); 612/** \brief Set Report Module Defaults 613 * \param hReport - Report module object handle 614 * \param pInitParams - Pointer to Input Init Parameters 615 * \return TI_OK on success or TI_NOK on failure 616 * 617 * \par Description 618 * Report module configuration function, called by the config mgr in configuration phase \n 619 * performs the following: \n 620 * - Reset & init local variables 621 * - Resets all report modules bits 622 * - Resets all severities bits 623 * - Init the description strings * 624 */ 625TI_STATUS report_SetDefaults (TI_HANDLE hReport, TReportInitParams *pInitParams); 626/** \brief Unload Report Module 627 * \param hReport - Report module object handle 628 * \return TI_OK on success or TI_NOK on failure 629 * 630 * \par Description 631 * Report Module unload function, called by the config mgr in the unload phase \n 632 * performs the following: \n 633 * - Free all memory allocated by the module 634 */ 635TI_STATUS report_Unload (TI_HANDLE hReport); 636/** \brief Set Report Module 637 * \param hReport - Report module object handle 638 * \return TI_OK on success or TI_NOK on failure 639 * 640 * \par Description 641 * Enables the relevant module for reporting - according to the received module index 642 */ 643TI_STATUS report_SetReportModule (TI_HANDLE hReport, TI_UINT8 module_index); 644/** \brief Clear Report Module 645 * \param hReport - Report module object handle 646 * \param module_index - Index of file to be disable for reporting 647 * \return TI_OK on success or TI_NOK on failure 648 * 649 * \par Description 650 * Disables the relevant module for reporting - according to the received module index 651 */ 652TI_STATUS report_ClearReportModule (TI_HANDLE hReport, TI_UINT8 module_index); 653/** \brief Get Report files Table 654 * \param hReport - Report module object handle 655 * \param pFiles - Pointer to output files Table 656 * \return TI_OK on success or TI_NOK on failure 657 * 658 * \par Description 659 * Returns the Modules Table (the table which holds Modules reporting indication) held in Report Module Object 660 */ 661TI_STATUS report_GetReportFilesTable (TI_HANDLE hReport, TI_UINT8 *pFiles); 662/** \brief Set Report Files Table 663 * \param hReport - Report module object handle 664 * \param pFiles - Pointer to input files Table 665 * \return TI_OK on success or TI_NOK on failure 666 * 667 * \par Description 668 * Updates the Modules Table: copies the input Modules Table (the table which holds Modules reporting indication) 669 * to the Modules Table which is held in Report Module Object 670 */ 671TI_STATUS report_SetReportFilesTable (TI_HANDLE hReport, TI_UINT8 *pFiles); 672/** \brief Get Report Severity Table 673 * \param hReport - Report module object handle 674 * \param pSeverities - Pointer to input Severity Table 675 * \return TI_OK on success or TI_NOK on failure 676 * 677 * \par Description 678 * Returns the Severities Table (the table which holds Severities reporting indication) held in Report Module Object 679 */ 680TI_STATUS report_GetReportSeverityTable (TI_HANDLE hReport, TI_UINT8 *pSeverities); 681/** \brief Set Report Severity Table 682 * \param hReport - Report module object handle 683 * \param pSeverities - Pointer to input Severity Table 684 * \return TI_OK on success or TI_NOK on failure 685 * 686 * \par Description 687 * Updates the Severities Table: copies the input Severities Table (the table which holds Severities reporting indication) 688 * to the Severities Table which is held in Report Module Object 689 */ 690TI_STATUS report_SetReportSeverityTable (TI_HANDLE hReport, TI_UINT8 *pSeverities); 691/** \brief Set Report Parameters 692 * \param hReport - Report module object handle 693 * \param pParam - Pointer to input Report Parameters Information 694 * \return TI_OK on success or TI_NOK on failure 695 * 696 * \par Description 697 * Report set param function sets parameter/s to Report Module Object. 698 * Called by the following: 699 * - configuration Manager in order to set a parameter/s from the OS abstraction layer 700 * - Form inside the driver 701 */ 702TI_STATUS report_SetParam (TI_HANDLE hReport, TReportParamInfo *pParam); 703/** \brief Get Report Parameters 704 * \param hReport - Report module object handle 705 * \param pParam - Pointer to output Report Parameters Information 706 * \return TI_OK on success or TI_NOK on failure 707 * 708 * \par Description 709 * Report get param function gets parameter/s from Report Module Object. 710 * Called by the following: 711 * - configuration Manager in order to get a parameter/s from the OS abstraction layer 712 * - from inside the driver 713 */ 714TI_STATUS report_GetParam (TI_HANDLE hReport, TReportParamInfo *pParam); 715/** \brief Report Dump 716 * \param pBuffer - Pointer to input HEX buffer 717 * \param pString - Pointer to output string 718 * \param size - size of output string 719 * \return TI_OK on success or TI_NOK on failure 720 * 721 * \par Description 722 * Converts hex buffer to string buffer 723 * NOTE: 1. The caller has to make sure that the string size is at lease: ((Size * 2) + 1) 724 * 2. A string terminator is inserted into lase char of the string 725 */ 726TI_STATUS report_Dump (TI_UINT8 *pBuffer, char *pString, TI_UINT32 size); 727/** \brief Report Print Dump 728 * \param pData - Pointer to input data buffer 729 * \param datalen - size of input data buffer 730 * \return TI_OK on success or TI_NOK on failure 731 * 732 * \par Description 733 * Performs HEX dump of input Data buffer. Used for debug only! 734 */ 735TI_STATUS report_PrintDump (TI_UINT8 *pData, TI_UINT32 datalen); 736 737/** \brief Sets bRedirectOutputToLogger 738* \param value - True if to direct output to remote PC 739* \param hEvHandler - Event handler 740*/ 741void os_setDebugOutputToLogger(TI_BOOL value); 742 743 744#endif /* __REPORT_H__ */ 745 746 747