OSDN Git Service

original
[gb-231r1-is01/GB_2.3_IS01.git] / system / wlan / ti / wilink_6_1 / Test / scrDbg.c
diff --git a/system/wlan/ti/wilink_6_1/Test/scrDbg.c b/system/wlan/ti/wilink_6_1/Test/scrDbg.c
new file mode 100644 (file)
index 0000000..6890975
--- /dev/null
@@ -0,0 +1,282 @@
+/*
+ * scrDbg.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  scrDbg.c
+ *  \brief This file include the SCR debug module implementation
+ *
+ *  \see   scrDbg.h, scrApi.h
+ */
+
+
+#include "tidef.h"
+#include "scrDbg.h"
+#include "osApi.h"
+#include "report.h"
+
+#define MAX_DESC_LENGTH     50
+
+char clientDesc[ SCR_CID_NO_CLIENT + 1 ][ MAX_DESC_LENGTH ] = 
+{
+    "SCR_CID_APP_SCAN",
+    "SCR_CID_DRIVER_FG_SCAN",
+    "SCR_CID_CONT_SCAN",
+    "SCR_CID_XCC_MEASURE",
+    "SCR_CID_BASIC_MEASURE",
+    "SCR_CID_CONNECT",
+    "SCR_CID_IMMED_SCAN",
+    "SCR_CID_SWITCH_CHAN",
+    "SCR_CID_NUM_OF_CLIENTS",
+    "SCR_CID_NO_CLIENT"
+};
+
+char requestStatusDesc[ 4 ][ MAX_DESC_LENGTH ] = 
+{
+    "SCR_CRS_RUN",
+    "SCR_CRS_PEND",
+    "SCR_CRS_ABORT",
+    "SCR_CRS_FW_RESET"
+};
+
+char pendReasonDesc[ SCR_PR_NONE + 1 ][ MAX_DESC_LENGTH ] = 
+{
+    "SCR_PR_OTHER_CLIENT_ABORTING",
+    "SCR_PR_OTHER_CLIENT_RUNNING",
+    "SCR_PR_DIFFERENT_GROUP_RUNNING",
+    "SCR_PR_NONE"
+};
+
+char groupDesc[ SCR_GID_NUM_OF_GROUPS ][ MAX_DESC_LENGTH ] =
+{
+    "SCR_GID_IDLE",
+    "SCR_GID_DRV_SCAN",
+    "SCR_GID_APP_SCAN",
+    "SCR_GID_CONNECT",
+    "SCR_GID_CONNECTED",
+    "SCR_GID_ROAMING"
+};
+
+char stateDesc[ SCR_CS_ABORTING + 1 ][ MAX_DESC_LENGTH ] = 
+{
+    "SCR_CS_IDLE",
+    "SCR_CS_PENDING",
+    "SCR_CS_RUNNING",
+    "SCR_CS_ABORTING"
+};
+
+char modeDesc[ SCR_MID_NUM_OF_MODES][ MAX_DESC_LENGTH ] = 
+{
+    "SCR_MID_NORMAL",
+    "SCR_MID_SG",
+};
+
+char resourceDesc[ SCR_RESOURCE_NUM_OF_RESOURCES ][ MAX_DESC_LENGTH ]=
+{
+    "SCR_RESOURCE_SERVING_CHANNEL",
+    "SCR_RESOURCE_PERIODIC_SCAN"
+};
+
+/**
+ * \\n
+ * \date 01-May-2005\n
+ * \brief Main SCR debug function
+ *
+ * Function Scope \e Public.\n
+ * \param hScr - handle to the SCR object.\n
+ * \param funcType - the specific debug function.\n
+ * \param pParam - parameters for the debug function.\n
+ */
+void scrDebugFunction( TI_HANDLE hScr, TI_UINT32 funcType, void *pParam )
+{
+    switch (funcType)
+    {
+    case DBG_SCR_PRINT_HELP:
+        printScrDbgFunctions();
+        break;
+
+    case DBG_SCR_CLIENT_REQUEST_SERVING_CHANNEL:
+        requestAsClient( hScr, *((EScrClientId*)pParam), SCR_RESOURCE_SERVING_CHANNEL );  
+        break;
+
+    case DBG_SCR_CLIENT_RELEASE_SERVING_CHANNEL:
+        releaseAsClient( hScr, *((EScrClientId*)pParam), SCR_RESOURCE_SERVING_CHANNEL );  
+        break;
+
+    case DBG_SCR_CLIENT_REQUEST_PERIODIC_SCAN:
+        requestAsClient( hScr, *((EScrClientId*)pParam), SCR_RESOURCE_PERIODIC_SCAN ); 
+        break;
+
+    case DBG_SCR_CLIENT_RELEASE_PERIODIC_SCAN:
+        releaseAsClient( hScr, *((EScrClientId*)pParam), SCR_RESOURCE_PERIODIC_SCAN ); 
+        break;
+
+    case DBG_SCR_SET_GROUP:
+        changeGroup( hScr, *((EScrGroupId*)pParam) );
+        break;
+
+    case DBG_SCR_PRINT_OBJECT:
+        printSCRObject( hScr );
+        break;
+
+    case DBG_SCR_SET_MODE:
+        changeMode(hScr, *((EScrModeId*)pParam));
+        break;
+
+    default:
+        WLAN_OS_REPORT(("Invalid function type in SCR debug function: %d\n", funcType));
+        break;
+    }
+}
+
+/**
+ * \\n
+ * \date 01-May-2005\n
+ * \brief Prints SCR debug menu
+ *
+ * Function Scope \e Public.\n
+ */
+void printScrDbgFunctions(void)
+{
+    WLAN_OS_REPORT(("   SCR Debug Functions   \n"));
+    WLAN_OS_REPORT(("-------------------------\n"));
+    WLAN_OS_REPORT(("1700 - Print the SCR Debug Help\n"));
+    WLAN_OS_REPORT(("1701 <client> - Request SCR as one shot scan (set client 0-7).\n"));
+    WLAN_OS_REPORT(("1702 <client> - Release SCR as one shot scan (set client 0-7).\n"));
+    WLAN_OS_REPORT(("1703 <client> - Request SCR as periodic scan (set client 0-7).\n"));
+    WLAN_OS_REPORT(("1704 <client> - Release SCR as periodic scan (set client 0-7).\n"));
+    WLAN_OS_REPORT(("1705 - Change SCR group\n"));
+    WLAN_OS_REPORT(("1706 - Print SCR object\n"));
+    WLAN_OS_REPORT(("1707 - Change SCR mode\n"));
+}
+
+/**
+ * \\n
+ * \date 29-March-2005\n
+ * \brief Request the SCR with a given client ID.\n
+ *
+ * Function Scope \e Public.\n
+ * \param hScr - handle to the SCR object.\n
+ * \param client - the client to request as.\n\
+ * \param eResource - the requested resource.\n
+ */
+void requestAsClient( TI_HANDLE hScr, EScrClientId client, EScrResourceId eResource )
+{
+    EScePendReason pendReason;
+    EScrClientRequestStatus requestStatus;
+
+    requestStatus = scr_clientRequest( hScr, client, eResource, &pendReason );
+    WLAN_OS_REPORT(("Resource %s was requested as client %s, result %s, pend reason %s\n",
+                    resourceDesc[ eResource ], clientDesc[ client ], requestStatusDesc[ requestStatus ],
+                    pendReasonDesc[ pendReason ]));
+}
+
+/**
+ * \\n
+ * \date 01-May-2005\n
+ * \brief Stops continuous scan process.\n
+ *
+ * Function Scope \e Public.\n
+ * \param hScr - handle to the SCR object.\n
+ * \param client - the client to release as.\n
+ * \param eResource - the released resource.\n
+ */
+void releaseAsClient( TI_HANDLE hScr, EScrClientId client, EScrResourceId eResource )
+{
+    scr_clientComplete( hScr, client, eResource );
+    WLAN_OS_REPORT(("Resource %s was released as client %s\n",
+                    resourceDesc[ eResource ], clientDesc[ client ]));
+}
+
+/**
+ * \\n
+ * \date 01-May-2005\n
+ * \brief Change the SCR group.\n
+ *
+ * Function Scope \e Public.\n
+ * \param hScr - handle to the SCR object.\n
+ * \param group - the group to change to.\n
+ */
+void changeGroup( TI_HANDLE hScr, EScrGroupId group )
+{
+    scr_setGroup( hScr, group );
+    WLAN_OS_REPORT(("SCR group was changed to %s\n",
+                    groupDesc[ group ]));
+}
+
+/**
+ * \\n
+ * \date 23-Nov-2005\n
+ * \brief Change the SCR mode.\n
+ *
+ * Function Scope \e Public.\n
+ * \param hScr - handle to the SCR object.\n
+ * \param mode - the mode to change to.\n
+ */
+void changeMode( TI_HANDLE hScr, EScrModeId mode )
+{
+    scr_setMode( hScr, mode );
+    WLAN_OS_REPORT(("SCR mode was changed to %s\n",
+                    modeDesc[ mode ]));
+}
+/**
+ * \\n
+ * \date 15-June-2005\n
+ * \brief Prints the SCR object.\n
+ *
+ * Function Scope \e Public.\n
+ * \param hScr - handle to the SCR object.\n
+ */
+void printSCRObject( TI_HANDLE hScr )
+{
+#ifdef REPORT_LOG
+    TScr* pScr = (TScr*)hScr;
+    int i;
+
+    WLAN_OS_REPORT( ("SCR current group:%s, mode: %s, serving channel owner:%s, periodic scan owner: %s "
+                     "within request:%s\n", 
+                     groupDesc[ pScr->currentGroup ],modeDesc[ pScr->currentMode ],
+                     clientDesc[ pScr->runningClient[ SCR_RESOURCE_SERVING_CHANNEL ] ],
+                     clientDesc[ pScr->runningClient[ SCR_RESOURCE_PERIODIC_SCAN ] ],
+                     (TI_TRUE == pScr->statusNotficationPending ? "Yes" : "No" )) );
+    
+    WLAN_OS_REPORT( ("%-22s %-15s %-15s %-15s %-15s\n", "Client", "State (SC)", "State (PS)", "Pend Reason (SC)", "Pend Reason (PS)") );
+    WLAN_OS_REPORT( ("----------------------------------------------------------------------\n"));
+    for ( i = 0; i < SCR_CID_NUM_OF_CLIENTS; i++ )
+    {
+        WLAN_OS_REPORT( ("%-22s %-15s %-15s %-15s %-15s \n",
+                         clientDesc[ i ], stateDesc[ pScr->clientArray[ i ].state[ SCR_RESOURCE_SERVING_CHANNEL ] ], 
+                         stateDesc[ pScr->clientArray[ i ].state[ SCR_RESOURCE_PERIODIC_SCAN ] ],
+                         pendReasonDesc[ pScr->clientArray[ i ].currentPendingReason[ SCR_RESOURCE_SERVING_CHANNEL ] ],
+                         pendReasonDesc[ pScr->clientArray[ i ].currentPendingReason[ SCR_RESOURCE_PERIODIC_SCAN ] ]) );
+    }
+#endif
+}