• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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