| /* |
| * CmdDispatcher.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 CmdDispatcher.c |
| * \brief The CmdDispatcher module. Handles user commbands dispatching to the driver modules. |
| * |
| * \see CmdDispatcher.h |
| */ |
| |
| #define __FILE_ID__ FILE_ID_47 |
| #include "tidef.h" |
| #include "osApi.h" |
| #include "report.h" |
| #include "DrvMain.h" |
| #include "connApi.h" |
| #include "siteMgrApi.h" |
| #include "smeApi.h" |
| #include "SoftGeminiApi.h" |
| #include "roamingMngrApi.h" |
| #include "qosMngr_API.h" |
| #include "PowerMgr_API.h" |
| #include "ScanCncn.h" |
| #include "scanMngrApi.h" |
| #include "regulatoryDomainApi.h" |
| #include "measurementMgrApi.h" |
| #include "TWDriver.h" |
| #include "debug.h" |
| #include "DrvMainModules.h" |
| #include "CmdDispatcher.h" |
| #include "healthMonitor.h" |
| #include "currBssApi.h" |
| #ifdef XCC_MODULE_INCLUDED |
| #include "XCCMngr.h" |
| #endif |
| |
| |
| /* Set/get params function prototype */ |
| typedef TI_STATUS (*TParamFunc) (TI_HANDLE handle, paramInfo_t *pParam); |
| |
| typedef struct |
| { |
| TParamFunc set; |
| TParamFunc get; |
| TI_HANDLE handle; |
| |
| } TParamAccess; |
| |
| /* The module's object */ |
| typedef struct |
| { |
| /* Other modules handles */ |
| TI_HANDLE hOs; |
| TI_HANDLE hReport; |
| TI_HANDLE hAuth; |
| TI_HANDLE hAssoc; |
| TI_HANDLE hRxData; |
| TI_HANDLE hTxCtrl; |
| TI_HANDLE hCtrlData; |
| TI_HANDLE hSiteMgr; |
| TI_HANDLE hConn; |
| TI_HANDLE hRsn; |
| TI_HANDLE hSme; |
| TI_HANDLE hScanCncn; |
| TI_HANDLE hScanMngr; |
| TI_HANDLE hMlmeSm; |
| TI_HANDLE hRegulatoryDomain; |
| TI_HANDLE hMeasurementMgr; |
| TI_HANDLE hRoamingMngr; |
| TI_HANDLE hSoftGemini; |
| TI_HANDLE hQosMngr; |
| TI_HANDLE hPowerMgr; |
| TI_HANDLE hHealthMonitor; |
| TI_HANDLE hTWD; |
| TI_HANDLE hCurrBss; |
| #ifdef XCC_MODULE_INCLUDED |
| TI_HANDLE hXCCMngr; |
| #endif |
| |
| /* Table of params set/get functions */ |
| TParamAccess paramAccessTable[MAX_PARAM_MODULE_NUMBER]; |
| |
| #ifdef TI_DBG |
| TStadHandlesList *pStadHandles; /* Save modules list pointer just for the debug functions */ |
| #endif |
| |
| } TCmdDispatchObj; |
| |
| |
| /* Internal functions prototypes */ |
| static void cmdDispatch_ConfigParamsAccessTable (TCmdDispatchObj *pCmdDispatch); |
| static TI_STATUS cmdDispatch_SetTwdParam (TI_HANDLE hCmdDispatch, paramInfo_t *pParam); |
| static TI_STATUS cmdDispatch_GetTwdParam (TI_HANDLE hCmdDispatch, paramInfo_t *pParam); |
| |
| #ifdef TI_DBG |
| static TI_STATUS cmdDispatch_DebugFuncSet (TI_HANDLE hCmdDispatch, paramInfo_t *pParam); |
| static TI_STATUS cmdDispatch_DebugFuncGet (TI_HANDLE hCmdDispatch, paramInfo_t *pParam); /*yael - this function is not in use*/ |
| #endif |
| |
| |
| |
| /** |
| * \fn cmdDispatch_Create |
| * \brief Create the module |
| * |
| * Create the Command-Dispatcher module |
| * |
| * \note |
| * \param hOs - Handle to the Os Abstraction Layer |
| * \return Handle to the allocated module (NULL if failed) |
| * \sa |
| */ |
| TI_HANDLE cmdDispatch_Create (TI_HANDLE hOs) |
| { |
| TCmdDispatchObj *pCmdDispatch; |
| |
| /* allocate CmdDispatcher module */ |
| pCmdDispatch = os_memoryAlloc (hOs, (sizeof(TCmdDispatchObj))); |
| |
| if (!pCmdDispatch) |
| { |
| WLAN_OS_REPORT(("Error allocating the CmdDispatcher Module\n")); |
| return NULL; |
| } |
| |
| /* Reset CmdDispatcher module */ |
| os_memoryZero (hOs, pCmdDispatch, (sizeof(TCmdDispatchObj))); |
| |
| pCmdDispatch->hOs = hOs; |
| |
| return (TI_HANDLE)pCmdDispatch; |
| } |
| |
| |
| /** |
| * \fn cmdDispatch_Init |
| * \brief Save modules handles and fill the configuration table |
| * |
| * Save other modules handles, and fill the configuration table |
| * with the Get/Set functions. |
| * |
| * \note |
| * \param pStadHandles - The driver modules handles |
| * \return void |
| * \sa |
| */ |
| void cmdDispatch_Init (TStadHandlesList *pStadHandles) |
| { |
| TCmdDispatchObj *pCmdDispatch = (TCmdDispatchObj *)(pStadHandles->hCmdDispatch); |
| |
| /* Save modules handles */ |
| pCmdDispatch->hReport = pStadHandles->hReport; |
| pCmdDispatch->hAuth = pStadHandles->hAuth; |
| pCmdDispatch->hAssoc = pStadHandles->hAssoc; |
| pCmdDispatch->hRxData = pStadHandles->hRxData; |
| pCmdDispatch->hTxCtrl = pStadHandles->hTxCtrl; |
| pCmdDispatch->hCtrlData = pStadHandles->hCtrlData; |
| pCmdDispatch->hSiteMgr = pStadHandles->hSiteMgr; |
| pCmdDispatch->hConn = pStadHandles->hConn; |
| pCmdDispatch->hRsn = pStadHandles->hRsn; |
| pCmdDispatch->hSme = pStadHandles->hSme; |
| pCmdDispatch->hScanCncn = pStadHandles->hScanCncn; |
| pCmdDispatch->hScanMngr = pStadHandles->hScanMngr; |
| pCmdDispatch->hMlmeSm = pStadHandles->hMlmeSm; |
| pCmdDispatch->hRegulatoryDomain = pStadHandles->hRegulatoryDomain; |
| pCmdDispatch->hMeasurementMgr = pStadHandles->hMeasurementMgr; |
| pCmdDispatch->hRoamingMngr = pStadHandles->hRoamingMngr; |
| pCmdDispatch->hSoftGemini = pStadHandles->hSoftGemini; |
| pCmdDispatch->hQosMngr = pStadHandles->hQosMngr; |
| pCmdDispatch->hPowerMgr = pStadHandles->hPowerMgr; |
| pCmdDispatch->hHealthMonitor = pStadHandles->hHealthMonitor; |
| pCmdDispatch->hTWD = pStadHandles->hTWD; |
| pCmdDispatch->hCurrBss = pStadHandles->hCurrBss; |
| #ifdef XCC_MODULE_INCLUDED |
| pCmdDispatch->hXCCMngr = pStadHandles->hXCCMngr; |
| #endif |
| |
| #ifdef TI_DBG |
| pCmdDispatch->pStadHandles = pStadHandles; /* Save modules list pointer just for the debug functions */ |
| #endif |
| |
| /* Fill the configuration table with the Get/Set functions */ |
| cmdDispatch_ConfigParamsAccessTable (pCmdDispatch); |
| } |
| |
| |
| /** |
| * \fn cmdDispatch_Destroy |
| * \brief Destroy the module object |
| * |
| * Destroy the module object. |
| * |
| * \note |
| * \param hCmdDispatch - The object |
| * \return TI_OK - Unload succesfull, TI_NOK - Unload unsuccesfull |
| * \sa |
| */ |
| TI_STATUS cmdDispatch_Destroy (TI_HANDLE hCmdDispatch) |
| { |
| TCmdDispatchObj *pCmdDispatch = (TCmdDispatchObj *)hCmdDispatch; |
| |
| /* Free the module object */ |
| os_memoryFree (pCmdDispatch->hOs, pCmdDispatch, sizeof(TCmdDispatchObj)); |
| |
| return TI_OK; |
| } |
| |
| |
| /** |
| * \fn cmdDispatch_ConfigParamsAccessTable |
| * \brief Fill the configuration table with the Get/Set functions |
| * |
| * Called in the configuration phase by the driver, performs the following: |
| * - for each module that supply a Get/Set services to his parameters, |
| * fill the corresponding entry in the params access table with the following: |
| * - Get function |
| * - Set function |
| * - Handle to the module |
| * This table is used when Getting/Setting a parameter from the OS abstraction layer. |
| * |
| * \note |
| * \param pCmdDispatch - The object |
| * \return void |
| * \sa |
| */ |
| static void cmdDispatch_ConfigParamsAccessTable (TCmdDispatchObj *pCmdDispatch) |
| { |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(AUTH_MODULE_PARAM) - 1].set = auth_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(AUTH_MODULE_PARAM) - 1].get = auth_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(AUTH_MODULE_PARAM) - 1].handle = pCmdDispatch->hAuth; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(ASSOC_MODULE_PARAM) - 1].set = assoc_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(ASSOC_MODULE_PARAM) - 1].get = assoc_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(ASSOC_MODULE_PARAM) - 1].handle = pCmdDispatch->hAssoc; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(RX_DATA_MODULE_PARAM) - 1].set = rxData_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(RX_DATA_MODULE_PARAM) - 1].get = rxData_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(RX_DATA_MODULE_PARAM) - 1].handle = pCmdDispatch->hRxData; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(TX_CTRL_MODULE_PARAM) - 1].set = txCtrlParams_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(TX_CTRL_MODULE_PARAM) - 1].get = txCtrlParams_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(TX_CTRL_MODULE_PARAM) - 1].handle = pCmdDispatch->hTxCtrl; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CTRL_DATA_MODULE_PARAM) - 1].set = ctrlData_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CTRL_DATA_MODULE_PARAM) - 1].get = ctrlData_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CTRL_DATA_MODULE_PARAM) - 1].handle = pCmdDispatch->hCtrlData; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SITE_MGR_MODULE_PARAM) - 1].set = siteMgr_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SITE_MGR_MODULE_PARAM) - 1].get = siteMgr_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SITE_MGR_MODULE_PARAM) - 1].handle = pCmdDispatch->hSiteMgr; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CONN_MODULE_PARAM) - 1].set = conn_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CONN_MODULE_PARAM) - 1].get = conn_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CONN_MODULE_PARAM) - 1].handle = pCmdDispatch->hConn; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(RSN_MODULE_PARAM) - 1].set = (TParamFunc)rsn_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(RSN_MODULE_PARAM) - 1].get = (TParamFunc)rsn_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(RSN_MODULE_PARAM) - 1].handle = pCmdDispatch->hRsn; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(TWD_MODULE_PARAM) - 1].set = cmdDispatch_SetTwdParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(TWD_MODULE_PARAM) - 1].get = cmdDispatch_GetTwdParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(TWD_MODULE_PARAM) - 1].handle = (TI_HANDLE)pCmdDispatch; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(REPORT_MODULE_PARAM) - 1].set = (TParamFunc)report_SetParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(REPORT_MODULE_PARAM) - 1].get = (TParamFunc)report_GetParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(REPORT_MODULE_PARAM) - 1].handle = pCmdDispatch->hReport; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SME_MODULE_PARAM) - 1].set = sme_SetParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SME_MODULE_PARAM) - 1].get = sme_GetParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SME_MODULE_PARAM) - 1].handle = pCmdDispatch->hSme; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_CNCN_PARAM) - 1].set = scanCncnApp_SetParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_CNCN_PARAM) - 1].get = scanCncnApp_GetParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_CNCN_PARAM) - 1].handle = pCmdDispatch->hScanCncn; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_MNGR_PARAM) - 1].set = scanMngr_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_MNGR_PARAM) - 1].get = scanMngr_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_MNGR_PARAM) - 1].handle = pCmdDispatch->hScanMngr; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MLME_SM_MODULE_PARAM) - 1].set = mlme_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MLME_SM_MODULE_PARAM) - 1].get = mlme_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MLME_SM_MODULE_PARAM) - 1].handle = pCmdDispatch->hMlmeSm; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(REGULATORY_DOMAIN_MODULE_PARAM) - 1].set = regulatoryDomain_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(REGULATORY_DOMAIN_MODULE_PARAM) - 1].get = regulatoryDomain_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(REGULATORY_DOMAIN_MODULE_PARAM) - 1].handle = pCmdDispatch->hRegulatoryDomain; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MEASUREMENT_MODULE_PARAM) - 1].set = measurementMgr_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MEASUREMENT_MODULE_PARAM) - 1].get = measurementMgr_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MEASUREMENT_MODULE_PARAM) - 1].handle = pCmdDispatch->hMeasurementMgr; |
| |
| #ifdef XCC_MODULE_INCLUDED |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(XCC_MANAGER_MODULE_PARAM) - 1].set = XCCMngr_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(XCC_MANAGER_MODULE_PARAM) - 1].get = XCCMngr_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(XCC_MANAGER_MODULE_PARAM) - 1].handle = pCmdDispatch->hXCCMngr; |
| #endif |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(ROAMING_MANAGER_MODULE_PARAM) - 1].set = roamingMngr_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(ROAMING_MANAGER_MODULE_PARAM) - 1].get = roamingMngr_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(ROAMING_MANAGER_MODULE_PARAM) - 1].handle = pCmdDispatch->hRoamingMngr; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SOFT_GEMINI_PARAM) - 1].set = SoftGemini_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SOFT_GEMINI_PARAM) - 1].get = SoftGemini_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SOFT_GEMINI_PARAM) - 1].handle = pCmdDispatch->hSoftGemini; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(QOS_MANAGER_PARAM) - 1].set = qosMngr_setParams; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(QOS_MANAGER_PARAM) - 1].get = qosMngr_getParams; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(QOS_MANAGER_PARAM) - 1].handle = pCmdDispatch->hQosMngr; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(POWER_MANAGER_PARAM) - 1].set = powerMgr_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(POWER_MANAGER_PARAM) - 1].get = powerMgr_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(POWER_MANAGER_PARAM) - 1].handle = pCmdDispatch->hPowerMgr; |
| |
| #ifdef TI_DBG |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MISC_MODULE_PARAM) - 1].set = cmdDispatch_DebugFuncSet; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MISC_MODULE_PARAM) - 1].get = cmdDispatch_DebugFuncGet; /*yael - this function is not in use*/ |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MISC_MODULE_PARAM) - 1].handle = (TI_HANDLE)pCmdDispatch; |
| #endif |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(HEALTH_MONITOR_MODULE_PARAM) - 1].set = healthMonitor_SetParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(HEALTH_MONITOR_MODULE_PARAM) - 1].get = healthMonitor_GetParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(HEALTH_MONITOR_MODULE_PARAM) - 1].handle = pCmdDispatch->hHealthMonitor; |
| |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CURR_BSS_MODULE_PARAM) - 1].set = currBSS_setParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CURR_BSS_MODULE_PARAM) - 1].get = currBSS_getParam; |
| pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CURR_BSS_MODULE_PARAM) - 1].handle = pCmdDispatch->hCurrBss; |
| } |
| |
| |
| /** |
| * \fn cmdDispatch_SetParam |
| * \brief Set a driver parameter |
| * |
| * Called by the OS abstraction layer in order to set a parameter in the driver. |
| * If the parameter can not be set from outside the driver it returns a failure status. |
| * The parameters is set to the module that uses as its father in the system |
| * (refer to the file paramOut.h for more explanations). |
| * |
| * \note |
| * \param hCmdDispatch - The object |
| * \param param - The parameter information |
| * \return result of parameter setting |
| * \sa |
| */ |
| TI_STATUS cmdDispatch_SetParam (TI_HANDLE hCmdDispatch, void *param) |
| { |
| TCmdDispatchObj *pCmdDispatch = (TCmdDispatchObj *)hCmdDispatch; |
| paramInfo_t *pParam = (paramInfo_t *)param; |
| TI_UINT32 moduleNumber; |
| |
| moduleNumber = GET_PARAM_MODULE_NUMBER(pParam->paramType); |
| |
| if (moduleNumber > MAX_PARAM_MODULE_NUMBER) |
| { |
| return PARAM_MODULE_NUMBER_INVALID; |
| } |
| |
| if ((pCmdDispatch->paramAccessTable[moduleNumber - 1].set == 0) || |
| (pCmdDispatch->paramAccessTable[moduleNumber - 1].get == 0) || |
| (pCmdDispatch->paramAccessTable[moduleNumber - 1].handle == 0)) |
| { |
| WLAN_OS_REPORT(("cmdDispatch_SetParam(): NULL pointers!!!, return, ParamType=0x%x\n", pParam->paramType)); |
| return TI_NOK; |
| } |
| |
| TRACE2(pCmdDispatch->hReport, REPORT_SEVERITY_INFORMATION , "cmdDispatch_SetParam(): ParamType=0x%x, ModuleNumber=0x%x\n", pParam->paramType, moduleNumber); |
| |
| return pCmdDispatch->paramAccessTable[moduleNumber - 1].set(pCmdDispatch->paramAccessTable[moduleNumber - 1].handle, pParam); |
| } |
| |
| |
| /** |
| * \fn cmdDispatch_GetParam |
| * \brief Get a driver parameter |
| * |
| * Called by the OS abstraction layer in order to get a parameter the driver. |
| * If the parameter can not be get from outside the driver it returns a failure status. |
| * The parameter is get from the module that uses as its father in the system |
| * (refer to the file paramOut.h for more explanations). |
| * |
| * \note |
| * \param hCmdDispatch - The object |
| * \param param - The parameter information |
| * \return result of parameter getting |
| * \sa |
| */ |
| TI_STATUS cmdDispatch_GetParam (TI_HANDLE hCmdDispatch, void *param) |
| { |
| TCmdDispatchObj *pCmdDispatch = (TCmdDispatchObj *) hCmdDispatch; |
| paramInfo_t *pParam = (paramInfo_t *) param; |
| TI_UINT32 moduleNumber; |
| TI_STATUS status; |
| |
| moduleNumber = GET_PARAM_MODULE_NUMBER(pParam->paramType); |
| |
| if (moduleNumber > MAX_PARAM_MODULE_NUMBER) |
| { |
| return PARAM_MODULE_NUMBER_INVALID; |
| } |
| |
| if ((pCmdDispatch->paramAccessTable[moduleNumber - 1].set == 0) || |
| (pCmdDispatch->paramAccessTable[moduleNumber - 1].get == 0) || |
| (pCmdDispatch->paramAccessTable[moduleNumber - 1].handle == 0)) |
| { |
| WLAN_OS_REPORT(("cmdDispatch_GetParam(): NULL pointers!!!, return, ParamType=0x%x\n", pParam->paramType)); |
| return TI_NOK; |
| } |
| |
| TRACE2(pCmdDispatch->hReport, REPORT_SEVERITY_INFORMATION , "cmdDispatch_GetParam(): ParamType=0x%x, ModuleNumber=0x%x\n", pParam->paramType, moduleNumber); |
| |
| status = pCmdDispatch->paramAccessTable[moduleNumber - 1].get(pCmdDispatch->paramAccessTable[moduleNumber - 1].handle, pParam); |
| |
| return status; |
| } |
| |
| |
| /** |
| * \fn cmdDispatch_SetTwdParam / cmdDispatch_GetParam |
| * \brief Set/Get a TWD parameter |
| * |
| * Set/Get a TWD parameter. |
| * |
| * \note |
| * \param hCmdDispatch - The object |
| * \param param - The parameter information |
| * \return parameter set/get result |
| * \sa |
| */ |
| static TI_STATUS cmdDispatch_SetTwdParam (TI_HANDLE hCmdDispatch, paramInfo_t *pParam) |
| { |
| TCmdDispatchObj *pCmdDispatch = (TCmdDispatchObj *)hCmdDispatch; |
| |
| pParam->paramType &= ~(SET_BIT | GET_BIT | TWD_MODULE_PARAM | ASYNC_PARAM | ALLOC_NEEDED_PARAM); |
| |
| return TWD_SetParam (pCmdDispatch->hTWD, (TTwdParamInfo *)pParam); |
| } |
| |
| static TI_STATUS cmdDispatch_GetTwdParam (TI_HANDLE hCmdDispatch, paramInfo_t *pParam) |
| { |
| TCmdDispatchObj *pCmdDispatch = (TCmdDispatchObj *)hCmdDispatch; |
| |
| pParam->paramType &= ~(SET_BIT | GET_BIT | TWD_MODULE_PARAM | ASYNC_PARAM | ALLOC_NEEDED_PARAM); |
| |
| return TWD_GetParam (pCmdDispatch->hTWD, (TTwdParamInfo *)pParam); |
| } |
| |
| |
| |
| |
| /** |
| * \fn cmdDispatch_DebugFuncSet / cmdDispatch_DebugFuncGet |
| * \brief Set/Get a debug function parameter |
| * |
| * Set/Get a debug function parameter. |
| * |
| * \note |
| * \param hCmdDispatch - The object |
| * \param param - The parameter information |
| * \return parameter set/get result |
| * \sa |
| */ |
| |
| #ifdef TI_DBG |
| |
| static TI_STATUS cmdDispatch_DebugFuncSet (TI_HANDLE hCmdDispatch, paramInfo_t *pParam) |
| { |
| TCmdDispatchObj *pCmdDispatch = (TCmdDispatchObj *)hCmdDispatch; |
| |
| if (hCmdDispatch == NULL || pParam == NULL) |
| { |
| return TI_NOK; |
| } |
| |
| switch (pParam->paramType) |
| { |
| case DEBUG_ACTIVATE_FUNCTION: |
| debugFunction (pCmdDispatch->pStadHandles, |
| *(TI_UINT32*)&pParam->content, |
| (void*)((TI_UINT32*)&pParam->content + 1)); |
| break; |
| default: |
| TRACE1(pCmdDispatch->hReport, REPORT_SEVERITY_ERROR, "cmdDispatch_DebugFuncSet bad param=%X\n", pParam->paramType); |
| break; |
| } |
| return TI_OK; |
| } |
| |
| |
| |
| /*yael - this function is not in use*/ |
| static TI_STATUS cmdDispatch_DebugFuncGet (TI_HANDLE hCmdDispatch, paramInfo_t *pParam) |
| { |
| if (hCmdDispatch == NULL || pParam == NULL) |
| { |
| return TI_NOK; |
| } |
| |
| /*yael - no use for that function */ |
| |
| return TI_OK; |
| } |
| |
| #endif /* TI_DBG */ |
| |
| |