Home | History | Annotate | Download | only in utils
      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