/* * debug.c * * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * Neither the name Texas Instruments nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /** \file reportReplvl.c * \brief Report level implementation * * \see reportReplvl.h */ /***************************************************************************/ /* */ /* MODULE: reportReplvl.c */ /* PURPOSE: Report level implementation */ /* */ /***************************************************************************/ #include "tidef.h" #include "debug.h" #include "connDebug.h" #include "siteMgrDebug.h" #include "dataCtrlDbg.h" #include "rsnDbg.h" #include "osApi.h" #include "report.h" #include "context.h" #include "timer.h" #include "qosMngrDbg.h" #include "PowerMgrDebug.h" #include "roamingMgrDebug.h" #include "scanCncnDbg.h" #include "ScanMngrDbg.h" #include "scrDbg.h" #include "SoftGeminiDbg.h" #include "HealthMonitorDbg.h" #include "smeDebug.h" #include "DrvMainModules.h" #include "TWDriver.h" #include "fwdriverdebug.h" #include "MibDbg.h" #include "TwIfDebug.h" #include "tracebuf_api.h" /* Following are the modules numbers */ typedef enum { GENERAL_DEBUG = 0, TEST_ASSOC_MODULE_PARAM = 1, TEST_UTILS_MODULE_PARAM = 2, TEST_RX_TX_DATA_MODULE_PARAM = 3, TEST_CTRL_DATA_MODULE_PARAM = 4, TEST_SITE_MGR_MODULE_PARAM = 5, TEST_CONN_MODULE_PARAM = 6, TEST_RSN_MODULE_PARAM = 7, TEST_TWD_MODULE_PARAM = 8, TEST_QOS_MNGR_MODULE_PARAM = 10, TEST_MEASUREMENT_MODULE_PARAM = 11, TEST_POWER_MGR_MODULE_PARAM = 12, TEST_HAL_CTRL_BUFFER_PARAM = 13, TEST_SCAN_CNCN_MODULE_PARAM = 14, TEST_SCAN_MNGR_MODULE_PARAM = 15, TEST_ROAMING_MNGR_PARAM = 16, TEST_SCR_PARAM = 17, TEST_SG_PARAM = 18, TEST_SME_PARAM = 19, TEST_HEALTH_MONITOR_PARAM = 20, TEST_MIB_DEBUG_PARAM = 21, TEST_FW_DEBUG_PARAM = 22, TEST_TWIF_DEBUG_PARAM = 23, /* last module - DO NOT TOUCH! */ NUMBER_OF_TEST_MODULES } testModuleParam_e; #define MAX_PARAM_TYPE (NUMBER_OF_TEST_MODULES - 1) /* Utils debug functions */ #define DBG_UTILS_PRINT_HELP 0 #define DBG_UTILS_PRINT_CONTEXT_INFO 1 #define DBG_UTILS_PRINT_TIMER_MODULE_INFO 2 #define DBG_UTILS_PRINT_TRACE_BUFFER 3 /* General Parameters Structure */ typedef struct { TI_UINT32 paramType; TI_UINT32 value; } testParam_t; extern void measurementDebugFunction(TI_HANDLE hMeasurementMgr, TI_HANDLE hSwitchChannel, TI_HANDLE hRegulatoryDomain, TI_UINT32 funcType, void *pParam); static void printMenue(void); static void utilsDebugFunction (TStadHandlesList *pStadHandles, TI_UINT32 funcType, void *pParam); static void printUtilsDbgFunctions (void); /****************************************************************** * FUNCTIONS IMPLEMENTATION * *******************************************************************/ /** * \fn debugFunction * \brief The debug functions dispatcher * * Decode from the debug functionNumber the relevant module and call its debug * function with the provided parameters. * The functionNumber parameter is composed as follows: * Module Number = functionNumber / 100 * Specific Functionc = functionNumber % 100 * * \note * \param pStadHandles - Pointer to the STAD modules handles * \param functionNumber - The module and function numbers composed in a decimal number * \param pParam - The function parameters (optional). * \return * \sa */ TI_STATUS debugFunction(TStadHandlesList *pStadHandles, TI_UINT32 functionNumber, void *pParam) { TI_UINT32 moduleNumber; moduleNumber = functionNumber / 100; if (moduleNumber > MAX_PARAM_TYPE) return PARAM_MODULE_NUMBER_INVALID; switch (moduleNumber) { case GENERAL_DEBUG: printMenue(); break; case TEST_ASSOC_MODULE_PARAM: break; case TEST_UTILS_MODULE_PARAM: utilsDebugFunction (pStadHandles, functionNumber % 100, pParam); break; case TEST_RX_TX_DATA_MODULE_PARAM: if( functionNumber < 350) rxTxDebugFunction(pStadHandles->hTxCtrl, functionNumber % 100, pParam); else rxTxDebugFunction(pStadHandles->hRxData, functionNumber % 100, pParam); break; case TEST_CTRL_DATA_MODULE_PARAM: ctrlDebugFunction(pStadHandles->hCtrlData, functionNumber % 100, pParam); break; case TEST_SITE_MGR_MODULE_PARAM: siteMgrDebugFunction(pStadHandles->hSiteMgr, pStadHandles, functionNumber % 100, pParam); break; case TEST_CONN_MODULE_PARAM: connDebugFunction(pStadHandles->hConn, functionNumber % 100, pParam); break; case TEST_RSN_MODULE_PARAM: rsnDebugFunction(pStadHandles->hRsn, functionNumber % 100, pParam); break; case TEST_TWD_MODULE_PARAM: TWD_Debug (pStadHandles->hTWD, functionNumber % 100, pParam); break; case TEST_QOS_MNGR_MODULE_PARAM: qosMngrDebugFunction(pStadHandles->hQosMngr, functionNumber % 100, pParam); break; case TEST_MEASUREMENT_MODULE_PARAM: measurementDebugFunction (pStadHandles->hMeasurementMgr, pStadHandles->hSwitchChannel, pStadHandles->hRegulatoryDomain, functionNumber % 100, pParam); break; case TEST_POWER_MGR_MODULE_PARAM: powerMgrDebugFunction(pStadHandles->hPowerMgr, functionNumber % 100, pParam); break; case TEST_SCAN_CNCN_MODULE_PARAM: scanConcentratorDebugFunction( pStadHandles->hScanCncn, pStadHandles->hTWD ,functionNumber % 100, pParam ); break; case TEST_SCAN_MNGR_MODULE_PARAM: scanMngrDebugFunction( pStadHandles->hScanMngr, functionNumber % 100, pParam, pStadHandles->hSiteMgr, pStadHandles->hCtrlData ); break; case TEST_ROAMING_MNGR_PARAM: roamingMgrDebugFunction(pStadHandles->hRoamingMngr, functionNumber % 100, pParam); break; case TEST_SCR_PARAM: scrDebugFunction( pStadHandles->hSCR, functionNumber % 100, pParam ); break; case TEST_SG_PARAM: SoftGeminiDebugFunction( pStadHandles->hSoftGemini, functionNumber % 100, pParam ); break; case TEST_SME_PARAM: smeDebugFunction( pStadHandles->hSme, functionNumber % 100, pParam ); break; case TEST_HEALTH_MONITOR_PARAM: healthMonitorDebugFunction (pStadHandles, functionNumber % 100, pParam); break; case TEST_MIB_DEBUG_PARAM: MibDebugFunction(pStadHandles->hTWD, functionNumber % 100, pParam); break; case TEST_FW_DEBUG_PARAM: FWDebugFunction(pStadHandles->hDrvMain, pStadHandles->hOs, pStadHandles->hTWD, pStadHandles->hMlmeSm, pStadHandles->hTxMgmtQ, pStadHandles->hTxCtrl, functionNumber % 100, pParam/*yael , packetNum*/); break; case TEST_TWIF_DEBUG_PARAM: twifDebugFunction (pStadHandles->hTWD, functionNumber % 100, pParam); break; default: WLAN_OS_REPORT(("Invalid debug function module number: %d\n\n", moduleNumber)); break; } return TI_OK; } static void printMenue(void) { WLAN_OS_REPORT((" Debug main menu (p <num>)\n")); WLAN_OS_REPORT(("-----------------------------\n")); WLAN_OS_REPORT(("Association 100\n")); WLAN_OS_REPORT(("Utils 200\n")); WLAN_OS_REPORT(("Tx 300\n")); WLAN_OS_REPORT(("Rx 350\n")); WLAN_OS_REPORT(("Ctrl 400\n")); WLAN_OS_REPORT(("SiteMgr 500\n")); WLAN_OS_REPORT(("Connection 600\n")); WLAN_OS_REPORT(("Rsn 700\n")); WLAN_OS_REPORT(("Hal Ctrl 800\n")); WLAN_OS_REPORT(("QOS 1000\n")); WLAN_OS_REPORT(("Measurement 1100\n")); WLAN_OS_REPORT(("PowerMgr 1200\n")); WLAN_OS_REPORT(("HAL Ctrl Buffer 1300\n")); WLAN_OS_REPORT(("Scan concentrator 1400\n")); WLAN_OS_REPORT(("Scan Manager 1500\n")); WLAN_OS_REPORT(("Roaming Manager 1600\n")); WLAN_OS_REPORT(("SCR 1700\n")); WLAN_OS_REPORT(("Soft Gemini 1800\n")); WLAN_OS_REPORT(("SME 1900\n")); WLAN_OS_REPORT(("Health Monitor 2000\n")); WLAN_OS_REPORT(("MIB 2100\n")); WLAN_OS_REPORT(("FW Debug 2200\n")); WLAN_OS_REPORT(("TwIf 2300\n")); } /** * \fn utilsDebugFunction * \brief Utils debug function * * \param pDrvMain - handle to the DrvMain object.\n * \param funcType - the specific debug function.\n * \param pParam - parameters for the debug function.\n */ static void utilsDebugFunction (TStadHandlesList *pStadHandles, TI_UINT32 funcType, void *pParam) { switch (funcType) { case DBG_UTILS_PRINT_HELP: printUtilsDbgFunctions (); break; case DBG_UTILS_PRINT_CONTEXT_INFO: context_Print (pStadHandles->hContext); break; case DBG_UTILS_PRINT_TIMER_MODULE_INFO: tmr_PrintModule (pStadHandles->hTimer); break; case DBG_UTILS_PRINT_TRACE_BUFFER: /* tb_printf(); */ break; default: WLAN_OS_REPORT(("utilsDebugFunction(): Invalid function type: %d\n", funcType)); break; } } /** * \fn printUtilsDbgFunctions * \brief Prints Utils debug menu * */ static void printUtilsDbgFunctions (void) { WLAN_OS_REPORT((" Utils Debug Functions \n")); WLAN_OS_REPORT(("---------------------------\n")); WLAN_OS_REPORT(("200 - Print the Utils Debug Help\n")); WLAN_OS_REPORT(("201 - Print Context module info\n")); WLAN_OS_REPORT(("202 - Print Timer module info\n")); WLAN_OS_REPORT(("203 - Print the trace buffer\n")); }