1 /** \file report.h 2 * \brief Report module API 3 * 4 * \see report.c 5 */ 6 /**************************************************************************** 7 **+-----------------------------------------------------------------------+** 8 **| |** 9 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |** 10 **| All rights reserved. |** 11 **| |** 12 **| Redistribution and use in source and binary forms, with or without |** 13 **| modification, are permitted provided that the following conditions |** 14 **| are met: |** 15 **| |** 16 **| * Redistributions of source code must retain the above copyright |** 17 **| notice, this list of conditions and the following disclaimer. |** 18 **| * Redistributions in binary form must reproduce the above copyright |** 19 **| notice, this list of conditions and the following disclaimer in |** 20 **| the documentation and/or other materials provided with the |** 21 **| distribution. |** 22 **| * Neither the name Texas Instruments nor the names of its |** 23 **| contributors may be used to endorse or promote products derived |** 24 **| from this software without specific prior written permission. |** 25 **| |** 26 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |** 27 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |** 28 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |** 29 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |** 30 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |** 31 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |** 32 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |** 33 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |** 34 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |** 35 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |** 36 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |** 37 **| |** 38 **+-----------------------------------------------------------------------+** 39 ****************************************************************************/ 40 41 /***************************************************************************/ 42 /* */ 43 /* MODULE: report.h */ 44 /* PURPOSE: Report module internal header API */ 45 /* */ 46 /***************************************************************************/ 47 #ifndef __REPORT_H__ 48 #define __REPORT_H__ 49 50 #include "osTIType.h" 51 #include "commonTypes.h" 52 #include "osApi.h" 53 #include "utils.h" 54 55 /* report handle */ 56 57 #define MAX_STRING_LEN 128 58 59 typedef struct 60 { 61 TI_HANDLE hOs; 62 tiUINT8 SeverityTable[WLAN_MAX_SEVERITIES]; 63 tiUINT8 ModuleTable[WLAN_MAX_LOG_MODULES]; 64 char moduleDesc[WLAN_MAX_LOG_MODULES][MAX_STRING_LEN]; 65 } report_t; 66 67 68 /* The report mechanism is like that: 69 Each module ahas a report flag. Each severity has a severity flag. 70 Only if bits are enabled, the message is printed */ 71 /* The modules which have their report flag enable are indicated by a bit map in the reportModule 72 variable contained in the report handle*/ 73 /* The severities which have are enabled are indicated by a bit map in the reportSeverity 74 variable contained in the report handle*/ 75 76 #ifdef REPORT_LOG 77 78 79 #define WLAN_REPORT_INIT(hReport, module, msg) \ 80 do { if (hReport && (((report_t *)hReport)->SeverityTable[WLAN_SEVERITY_INIT]) && (((report_t *)hReport)->ModuleTable[module])) \ 81 { os_report ("$B%c%s,INIT:", ((char)module + 'A'), ((report_t *)hReport)->moduleDesc[module]); os_report msg; } } while(0) 82 #define WLAN_REPORT_INFORMATION(hReport, module, msg) \ 83 do { if (hReport && (((report_t *)hReport)->SeverityTable[WLAN_SEVERITY_INFORMATION]) && (((report_t *)hReport)->ModuleTable[module])) \ 84 { os_report ("$C%c%s,INFORMATION:", ((char)module + 'A'), ((report_t *)hReport)->moduleDesc[module]); os_report msg; } } while(0) 85 #define WLAN_REPORT_WARNING(hReport, module, msg) \ 86 do { if (hReport && ((report_t *)hReport)->SeverityTable[WLAN_SEVERITY_WARNING]) \ 87 { os_report ("$D%c%s,WARNING:", ((char)module + 'A'), ((report_t *)hReport)->moduleDesc[module]); os_report msg; } } while(0) 88 #define WLAN_REPORT_ERROR(hReport, module, msg) \ 89 do { if (hReport && ((report_t *)hReport)->SeverityTable[WLAN_SEVERITY_ERROR]) \ 90 { os_report ("$E%c%s,ERROR:", ((char)module + 'A'), ((report_t *)hReport)->moduleDesc[module]); os_report msg; } } while(0) 91 #define WLAN_REPORT_FATAL_ERROR(hReport, module, msg) \ 92 do { if (hReport && (((report_t *)hReport)->SeverityTable[WLAN_SEVERITY_FATAL_ERROR]) && (((report_t *)hReport)->ModuleTable[module])) \ 93 { os_report ("$F%c%s,FATAL ERROR:", ((char)module + 'A'), ((report_t *)hReport)->moduleDesc[module]); os_report msg; } } while(0) 94 #define WLAN_REPORT_SM(hReport, module, msg) \ 95 do { if (hReport && ((report_t *)hReport)->SeverityTable[WLAN_SEVERITY_SM]) \ 96 { os_report ("$G%c%s,SM:", ((char)module + 'A'), ((report_t *)hReport)->moduleDesc[module]); os_report msg; } } while(0) 97 #define WLAN_REPORT_CONSOLE(hReport, module, msg) \ 98 do { if (hReport && (((report_t *)hReport)->SeverityTable[WLAN_SEVERITY_CONSOLE]) && (((report_t *)hReport)->ModuleTable[module])) \ 99 { os_report ("$H%c%s,CONSOLE:", ((char)module + 'A'), ((report_t *)hReport)->moduleDesc[module]); os_report msg; } } while(0) 100 #define WLAN_REPORT_DEBUG_RX(hReport, msg) \ 101 do { if (hReport && ((report_t *)hReport)->SeverityTable[WLAN_SEVERITY_DEBUG_RX]) \ 102 { os_report ("$AA,DEBUG RX:"); os_report msg; } } while(0) 103 #define WLAN_REPORT_DEBUG_TX(hReport, msg) \ 104 do { if (hReport && ((report_t *)hReport)->SeverityTable[WLAN_SEVERITY_DEBUG_TX]) \ 105 { os_report ("$AA,DEBUG TX:"); os_report msg; } } while(0) 106 #define WLAN_REPORT_DEBUG_CONTROL(hReport, msg) \ 107 do { if (hReport && ((report_t *)hReport)->SeverityTable[WLAN_SEVERITY_DEBUG_CONTROL]) \ 108 { os_report ("$AA,DEBUG CONTROL:"); os_report msg; } } while(0) 109 #define WLAN_REPORT_GWSI_RECORDING(hReport, msg) \ 110 do { if (hReport && ((report_t *)hReport)->SeverityTable[WLAN_SEVERITY_GWSI_RECORDING]) \ 111 { os_report ("$AA,GWSI RECORDING:"); os_report msg; } } while(0) 112 #define WLAN_REPORT_HEX_INFORMATION(hReport, module, data, datalen) \ 113 do { if (hReport && (((report_t *)hReport)->SeverityTable[WLAN_SEVERITY_INFORMATION]) && (((report_t *)hReport)->ModuleTable[module])) \ 114 { HexDumpData(data, datalen); } } while(0) 115 #define WLAN_REPORT_MSDU_INFORMATION(hReport, module, pMsdu, title) \ 116 do { if (hReport && (((report_t *)hReport)->SeverityTable[WLAN_SEVERITY_INFORMATION]) && (((report_t *)hReport)->ModuleTable[module])) \ 117 { msduContentDump(pMsdu, title); } } while(0) 118 #define WLAN_OS_REPORT(msg) \ 119 do { os_report("$AA"); os_report msg;} while(0) 120 121 #ifdef INIT_MESSAGES 122 #define WLAN_INIT_REPORT(msg) \ 123 do { os_report("$AA"); os_report msg;} while(0) 124 #else 125 #define WLAN_INIT_REPORT(msg) 126 #endif 127 128 #else /* REPORT_LOG */ 129 130 131 /* NOTE: Keep a dummy report function call to treat compilation warnings */ 132 133 134 #define WLAN_REPORT_INIT(hReport,module,msg) \ 135 do { if (hReport == NULL) { } } while (0) 136 #define WLAN_REPORT_INFORMATION(hReport,module,msg) \ 137 do { if (hReport == NULL) { } } while (0) 138 #define WLAN_REPORT_WARNING(hReport,module,msg) \ 139 do { if (hReport == NULL) { } } while (0) 140 #define WLAN_REPORT_ERROR(hReport,module,msg) \ 141 do { if (hReport == NULL) { } } while (0) 142 #define WLAN_REPORT_FATAL_ERROR(hReport,module,msg) \ 143 do { if (hReport == NULL) { } } while (0) 144 #define WLAN_REPORT_SM(hReport,module,msg) \ 145 do { if (hReport == NULL) { } } while (0) 146 #define WLAN_REPORT_CONSOLE(hReport,module,msg) \ 147 do { if (hReport == NULL) { } } while (0) 148 #define WLAN_REPORT_HEX_INFORMATION(hReport,module,data,datalen) \ 149 do { if (hReport == NULL) { } } while (0) 150 #define WLAN_REPORT_DEBUG_RX(hReport,msg) \ 151 do { if (hReport == NULL) { } } while (0) 152 #define WLAN_REPORT_DEBUG_TX(hReport,msg) \ 153 do { if (hReport == NULL) { } } while (0) 154 #define WLAN_REPORT_DEBUG_CONTROL(hReport,msg) \ 155 do { if (hReport == NULL) { } } while (0) 156 #define WLAN_REPORT_GWSI_RECORDING(hReport,msg) \ 157 do { if (hReport == NULL) { } } while (0) 158 #define WLAN_REPORT_MSDU_INFORMATION(hReport,module,pMsdu,title) \ 159 do { if (hReport == NULL) { } } while (0) 160 #define WLAN_OS_REPORT(msg) \ 161 do { } while (0) 162 #define WLAN_INIT_REPORT(msg) \ 163 do { } while (0) 164 165 #endif /* REPORT_LOG */ 166 167 168 /* report module prototypes */ 169 TI_HANDLE report_create (TI_HANDLE hOs); 170 TI_STATUS report_config (TI_HANDLE hReport, TI_HANDLE hOs, reportInitParams_t * init_params); 171 TI_STATUS report_unLoad (TI_HANDLE hReport); 172 173 void report_setReportModule (TI_HANDLE hReport, tiUINT8 module_index); 174 void report_clearReportModule (TI_HANDLE hReport, tiUINT8 module_index); 175 void report_getReportModuleTable (TI_HANDLE hReport, tiUINT8 *pModules); 176 void report_setReportModuleTable (TI_HANDLE hReport, tiUINT8 *pModules); 177 void report_setReportSeverity (TI_HANDLE hReport, tiUINT8 severity_index); 178 void report_clearReportSeverity (TI_HANDLE hReport, tiUINT8 severity_index); 179 void report_getReportSeverityTable (TI_HANDLE hReport, tiUINT8 *pSeverities); 180 void report_setReportSeverityTable (TI_HANDLE hReport, tiUINT8 *pSeverities); 181 TI_STATUS report_setParam (TI_HANDLE hReport, whalParamInfo_t *pParam); 182 TI_STATUS report_getParam (TI_HANDLE hReport, whalParamInfo_t *pParam); 183 void report_dummy (const char* fmt, ...); 184 185 #endif /* __REPORT_H__ */ 186