summaryrefslogtreecommitdiff
path: root/wl1271/stad/src/Sta_Management/ScanCncnApp.c
diff options
context:
space:
mode:
Diffstat (limited to 'wl1271/stad/src/Sta_Management/ScanCncnApp.c')
-rw-r--r--wl1271/stad/src/Sta_Management/ScanCncnApp.c378
1 files changed, 0 insertions, 378 deletions
diff --git a/wl1271/stad/src/Sta_Management/ScanCncnApp.c b/wl1271/stad/src/Sta_Management/ScanCncnApp.c
deleted file mode 100644
index 57998fb..0000000
--- a/wl1271/stad/src/Sta_Management/ScanCncnApp.c
+++ /dev/null
@@ -1,378 +0,0 @@
-/*
- * ScanCncnApp.c
- *
- * Copyright(c) 1998 - 2010 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 ScanCncnApp.c
- * \brief Scan concentrator application scan module implementation
- *
- * \see ScanCncn.h, ScanCncn.c
- */
-
-
-#define __FILE_ID__ FILE_ID_77
-#include "ScanCncnPrivate.h"
-#include "ScanCncn.h"
-#include "ScanCncnOsSm.h"
-#include "EvHandler.h"
-#include "report.h"
-#include "GenSM.h"
-#include "scanResultTable.h"
-#include "sme.h"
-#include "smeApi.h"
-
-/**
- * \fn scanCncnApp_SetParam
- * \brief Parses and executes a set param command
- *
- * Parses and executes a set param command (start/stop one-shot/periodic/OS scan)
- *
- * \param hScanCncn - handle to the scan concentrator object
- * \param pParam - the param to set
- * \return operation status (OK / NOK / PARAM_NOT_SUPPORTED)
- * \sa scanCncnApp_GetParam
- */
-TI_STATUS scanCncnApp_SetParam (TI_HANDLE hScanCncn, paramInfo_t *pParam)
-{
- TScanCncn *pScanCncn = (TScanCncn*)hScanCncn;
- TI_UINT32 uCurrentTimeStamp;
-
- TRACE1(pScanCncn->hReport, REPORT_SEVERITY_INFORMATION , "scanCncnApp_SetParam: recevived request of type 0x%x\n", pParam->paramType);
-
- switch (pParam->paramType)
- {
- case SCAN_CNCN_START_APP_SCAN:
-
- /* verify that scan is not currently running */
- if (pScanCncn->eCurrentRunningAppScanClient != SCAN_SCC_NO_CLIENT)
- {
- TRACE1(pScanCncn->hReport, REPORT_SEVERITY_WARNING, "scanCncnApp_SetParam: trying to start app one-shot scan when client %d is currently running!\n", pScanCncn->eCurrentRunningAppScanClient);
- /* Scan was not started successfully, send a scan complete event to the user */
- return TI_NOK;
- }
-
- /* set one-shot scan as running app scan client */
- pScanCncn->eCurrentRunningAppScanClient = SCAN_SCC_APP_ONE_SHOT;
-
- /* Perform aging process before the scan */
- scanResultTable_PerformAging(pScanCncn->hScanResultTable);
-
- /* start the scan */
- if (SCAN_CRS_SCAN_RUNNING !=
- scanCncn_Start1ShotScan (hScanCncn, SCAN_SCC_APP_ONE_SHOT, pParam->content.pScanParams))
- {
- /* Scan was not started successfully, mark that no app scan is running */
- pScanCncn->eCurrentRunningAppScanClient = SCAN_SCC_NO_CLIENT;
- return TI_NOK;
- }
- break;
-
- case SCAN_CNCN_STOP_APP_SCAN:
- /* verify that scan is currently running */
- if (pScanCncn->eCurrentRunningAppScanClient != SCAN_SCC_NO_CLIENT)
- {
- scanCncn_StopScan (hScanCncn, SCAN_SCC_APP_ONE_SHOT);
- }
- break;
-
- case SCAN_CNCN_START_PERIODIC_SCAN:
- /* verify that scan is not currently running */
- if (SCAN_SCC_NO_CLIENT != pScanCncn->eCurrentRunningAppScanClient)
- {
- TRACE1(pScanCncn->hReport, REPORT_SEVERITY_WARNING, "scanCncnApp_SetParam: trying to start app periodic scan when client %d is currently running!\n", pScanCncn->eCurrentRunningAppScanClient);
- /* Scan was not started successfully, send a scan complete event to the user */
- return TI_NOK;
- }
-
- /* set one-shot scan as running app scan client */
- pScanCncn->eCurrentRunningAppScanClient = SCAN_SCC_APP_PERIODIC;
-
- /* Perform aging process before the scan */
- scanResultTable_PerformAging(pScanCncn->hScanResultTable);
-
- /* start the scan */
- if (SCAN_CRS_SCAN_RUNNING !=
- scanCncn_StartPeriodicScan (hScanCncn, SCAN_SCC_APP_PERIODIC, pParam->content.pPeriodicScanParams))
- {
- TRACE0(pScanCncn->hReport, REPORT_SEVERITY_CONSOLE , "Scan was not started. Verify scan parametrs or SME mode\n");
- WLAN_OS_REPORT (("Scan was not started. Verify scan parametrs or SME mode\n"));
-
- /* Scan was not started successfully, mark that no app scan is running */
- pScanCncn->eCurrentRunningAppScanClient = SCAN_SCC_NO_CLIENT;
- return TI_NOK;
- }
- break;
-
- case SCAN_CNCN_STOP_PERIODIC_SCAN:
- /* verify that scan is currently running */
- if (pScanCncn->eCurrentRunningAppScanClient != SCAN_SCC_NO_CLIENT)
- {
- scanCncn_StopPeriodicScan (hScanCncn, SCAN_SCC_APP_PERIODIC);
- }
- break;
-
- case SCAN_CNCN_BSSID_LIST_SCAN_PARAM:
- /* check if OID scans are enabled in the registry */
- if (0 == pScanCncn->tInitParams.uMinimumDurationBetweenOsScans)
- {
- TRACE0(pScanCncn->hReport, REPORT_SEVERITY_INFORMATION , "scanCncnApp_SetParam: received OS scan request when OS scans are disabled, quitting...\n");
- return TI_NOK;
- }
-
- /* check if the last OID scan didn't start at a shorter duration than the configured minimum */
- uCurrentTimeStamp = os_timeStampMs (pScanCncn->hOS);
- if ( (uCurrentTimeStamp - pScanCncn->uOSScanLastTimeStamp) <
- (pScanCncn->tInitParams.uMinimumDurationBetweenOsScans * 1000) ) /*converted to ms */
- {
- TRACE3(pScanCncn->hReport, REPORT_SEVERITY_INFORMATION , "scanCncnApp_SetParam: last OID scan performed at: %d, now is: %d, min duration is: %d, too early for another scan!\n", pScanCncn->uOSScanLastTimeStamp, uCurrentTimeStamp, pScanCncn->tInitParams.uMinimumDurationBetweenOsScans);
- return TI_NOK;
- }
-
- /* check that no other scan is currently running */
- if (SCAN_SCC_NO_CLIENT != pScanCncn->eCurrentRunningAppScanClient)
- {
- TRACE1(pScanCncn->hReport, REPORT_SEVERITY_ERROR , "scanCncnApp_SetParam: received OS scan request when client %d is currently running!\n", pScanCncn->eCurrentRunningAppScanClient);
- return TI_NOK;
- }
-
- /* set one-shot scan as running app scan client */
- pScanCncn->eCurrentRunningAppScanClient = SCAN_SCC_APP_ONE_SHOT;
-
- /* mark that an OID scan process has started */
- pScanCncn->bOSScanRunning = TI_TRUE;
- pScanCncn->uOSScanLastTimeStamp = uCurrentTimeStamp;
- TRACE0(pScanCncn->hReport, REPORT_SEVERITY_INFORMATION , "scanCncnApp_SetParam: starting OID scan process...\n");
-
- if(0 != pParam->content.pScanParams->desiredSsid.len)
- {
- pScanCncn->tOsScanParams.desiredSsid.len = pParam->content.pScanParams->desiredSsid.len;
- os_memoryCopy(pScanCncn->hOS, pScanCncn->tOsScanParams.desiredSsid.str, pParam->content.pScanParams->desiredSsid.str, pParam->content.pScanParams->desiredSsid.len);
- }
- else
- {
- pScanCncn->tOsScanParams.desiredSsid.len = 0;
- pScanCncn->tOsScanParams.desiredSsid.str[ 0 ] = '\0'; /* broadcast scan */
- }
-
- pScanCncn->tOsScanParams.scanType = pParam->content.pScanParams->scanType;
-
- /* and actually start the scan */
- genSM_Event (pScanCncn->hOSScanSm, SCAN_CNCN_OS_SM_EVENT_START_SCAN, hScanCncn);
-
- break;
-
- case SCAN_CNCN_SET_SRA:
- scanResultTable_SetSraThreshold(pScanCncn->hScanResultTable, pParam->content.uSraThreshold);
- break;
-
- case SCAN_CNCN_SET_RSSI:
- pScanCncn->tInitParams.nRssiThreshold = pParam->content.nRssiThreshold;
- break;
-
- default:
- TRACE1(pScanCncn->hReport, REPORT_SEVERITY_ERROR , "scanCncnApp_SetParam: unrecognized param type :%d\n", pParam->paramType);
- return PARAM_NOT_SUPPORTED;
- }
-
- return TI_OK;
-}
-
-/**
- * \fn scanCncnApp_GetParam
- * \brief Parses and executes a get param command
- *
- * Parses and executes a get param command (get BSSID list)
- *
- * \param hScanCncn - handle to the scan concentrator object
- * \param pParam - the param to get
- * \return operation status (OK / NOK / PARAM_NOT_SUPPORTED)
- * \sa scanCncnApp_SetParam
- */
-TI_STATUS scanCncnApp_GetParam (TI_HANDLE hScanCncn, paramInfo_t *pParam)
-{
- TScanCncn *pScanCncn = (TScanCncn*)hScanCncn;
-
- TRACE1(pScanCncn->hReport, REPORT_SEVERITY_INFORMATION , "scanCncnApp_GetParam: received request of type %d\n", pParam->paramType);
-
- switch (pParam->paramType)
- {
-
- case SCAN_CNCN_NUM_BSSID_IN_LIST_PARAM:
- /* retrieve the number of BSSID's in the scan result table*/
- pParam->paramLength = sizeof(TI_UINT32);
- pParam->content.uNumBssidInList = scanResultTable_GetNumOfBSSIDInTheList (pScanCncn->hScanResultTable);
- break;
-
- case SCAN_CNCN_BSSID_LIST_SIZE_PARAM:
- /* retrieves the size to allocate for the app scan result taBle BBSID list (see next code) */
- pParam->paramLength = sizeof(TI_UINT32);
- pParam->content.uBssidListSize = scanResultTable_CalculateBssidListSize (pScanCncn->hScanResultTable, TI_TRUE);
- break;
-
- case SCAN_CNCN_BSSID_LIST_PARAM:
- /* retrieve the app scan result table */
- return scanResultTable_GetBssidList (pScanCncn->hScanResultTable, pParam->content.pBssidList,
- &pParam->paramLength, TI_TRUE);
-
- case SCAN_CNCN_BSSID_RATE_LIST_PARAM:
- /* retrieve supported rates list equivalent to the supported rates list
- in the scan result table, but is extended to include 11n rates as well*/
- return scanResultTable_GetBssidSupportedRatesList (pScanCncn->hScanResultTable, pParam->content.pRateList,
- &pParam->paramLength);
-
- default:
- TRACE1(pScanCncn->hReport, REPORT_SEVERITY_ERROR , "scanCncnApp_GetParam: unrecognized param type :%d\n", pParam->paramType);
- return PARAM_NOT_SUPPORTED;
- }
-
- return TI_OK;
-}
-
-/**
- * \fn scanCncn_AppScanResultCB
- * \brief Scan result callback for application scan
- *
- * Scan result callback for application scan
- *
- * \param hScanCncn - handle to the scan concentrator object
- * \param status - the scan result status (scan complete, result received etc.)
- * \param frameInfo - a pointer to the structure holding all frame related info (in case a frame was received)
- * \param SPSStatus - a bitmap indicating on which channels scan was attempted (valid for SPS scan only!)
- * \return None
- */
-void scanCncn_AppScanResultCB (TI_HANDLE hScanCncn, EScanCncnResultStatus status,
- TScanFrameInfo* frameInfo, TI_UINT16 SPSStatus)
-{
- TScanCncn *pScanCncn = (TScanCncn*)hScanCncn;
- TI_UINT32 statusData;
-
- /* Since in Manual Mode the app and the SME use the same table
- * there is no need to forward data to SME */
-
- switch (status)
- {
- case SCAN_CRS_RECEIVED_FRAME:
- /* Save the result in the app scan result table */
- if (TI_OK != scanResultTable_UpdateEntry (pScanCncn->hScanResultTable, frameInfo->bssId, frameInfo))
- {
- TRACE0(pScanCncn->hReport, REPORT_SEVERITY_WARNING , "scanCncn_AppScanResultCB, scanResultTable_UpdateEntry() failed\n");
- }
- break;
-
- case SCAN_CRS_SCAN_COMPLETE_OK:
-
- TRACE1(pScanCncn->hReport, REPORT_SEVERITY_INFORMATION , "scanCncn_AppScanResultCB, received scan complete with status :%d\n", status);
-
- /* if OS scan is running */
- if (TI_TRUE == pScanCncn->bOSScanRunning)
- {
- /* send a scan complete event to the OS scan SM. It will stabliza the table when needed */
- genSM_Event (pScanCncn->hOSScanSm, SCAN_CNCN_OS_SM_EVENT_SCAN_COMPLETE, hScanCncn);
- }
- else
- {
- /* move the scan result table to stable state */
- scanResultTable_SetStableState (pScanCncn->hScanResultTable);
-
- /* mark that no app scan is running */
- pScanCncn->eCurrentRunningAppScanClient = SCAN_SCC_NO_CLIENT;
- /*
- * The scan was finished, send a scan complete event to the user
- * (regardless of why the scan was completed)
- */
- statusData = SCAN_STATUS_COMPLETE; /* Completed status */
- EvHandlerSendEvent (pScanCncn->hEvHandler, IPC_EVENT_SCAN_COMPLETE, (TI_UINT8 *)&statusData, sizeof(TI_UINT32));
- }
- break;
-
- case SCAN_CRS_SCAN_STOPPED:
-
- TRACE1(pScanCncn->hReport, REPORT_SEVERITY_INFORMATION , "scanCncn_AppScanResultCB, received scan complete with status :%d\n", status);
-
- /* if OS scan is running */
- if (TI_TRUE == pScanCncn->bOSScanRunning)
- {
- /* send a scan complete event to the OS scan SM. It will stabliza the table when needed */
- genSM_Event (pScanCncn->hOSScanSm, SCAN_CNCN_OS_SM_EVENT_SCAN_COMPLETE, hScanCncn);
- }
- else
- {
- /* move the scan result table to stable state */
- scanResultTable_SetStableState (pScanCncn->hScanResultTable);
-
- /* mark that no app scan is running */
- pScanCncn->eCurrentRunningAppScanClient = SCAN_SCC_NO_CLIENT;
- /*
- * The scan was finished, send a scan complete event to the user
- * (regardless of why the scan was completed)
- */
- statusData = SCAN_STATUS_STOPPED; /* Stopped status */
- EvHandlerSendEvent (pScanCncn->hEvHandler, IPC_EVENT_SCAN_COMPLETE, (TI_UINT8 *)&statusData, sizeof(TI_UINT32));
- }
- break;
-
- case SCAN_CRS_TSF_ERROR:
- case SCAN_CRS_SCAN_RUNNING:
- case SCAN_CRS_SCAN_FAILED:
- case SCAN_CRS_SCAN_ABORTED_HIGHER_PRIORITY:
- case SCAN_CRS_SCAN_ABORTED_FW_RESET:
-
- TRACE1(pScanCncn->hReport, REPORT_SEVERITY_INFORMATION , "scanCncn_AppScanResultCB, received scan complete with status :%d\n", status);
-
- /* if OS scan is running */
- if (TI_TRUE == pScanCncn->bOSScanRunning)
- {
- /* send a scan complete event to the OS scan SM. It will stabliza the table when needed */
- genSM_Event (pScanCncn->hOSScanSm, SCAN_CNCN_OS_SM_EVENT_SCAN_COMPLETE, hScanCncn);
- }
- else
- {
- /* move the scan result table to stable state */
- scanResultTable_SetStableState (pScanCncn->hScanResultTable);
-
- /* mark that no app scan is running */
- pScanCncn->eCurrentRunningAppScanClient = SCAN_SCC_NO_CLIENT;
- /*
- * The scan was finished, send a scan complete event to the user
- * (regardless of why the scan was completed)
- */
- statusData = SCAN_STATUS_FAILED; /* Failed status */
- EvHandlerSendEvent (pScanCncn->hEvHandler, IPC_EVENT_SCAN_COMPLETE, (TI_UINT8 *)&statusData, sizeof(TI_UINT32));
- }
- break;
-
- case SCAN_CRS_NUM_OF_RES_STATUS:
- default:
- TRACE1(pScanCncn->hReport, REPORT_SEVERITY_ERROR , "scanCncn_AppScanResultCB, received erroneuos scan result with status :%d\n", status);
- break;
- }
-}
-