4 * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
11 * * Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * * Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in
15 * the documentation and/or other materials provided with the
17 * * Neither the name Texas Instruments nor the names of its
18 * contributors may be used to endorse or promote products derived
19 * from this software without specific prior written permission.
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 /** \file CmdDispatcher.c
36 * \brief The CmdDispatcher module. Handles user commbands dispatching to the driver modules.
38 * \see CmdDispatcher.h
41 #define __FILE_ID__ FILE_ID_47
47 #include "siteMgrApi.h"
49 #include "SoftGeminiApi.h"
50 #include "roamingMngrApi.h"
51 #include "qosMngr_API.h"
52 #include "PowerMgr_API.h"
54 #include "scanMngrApi.h"
55 #include "regulatoryDomainApi.h"
56 #include "measurementMgrApi.h"
59 #include "DrvMainModules.h"
60 #include "CmdDispatcher.h"
61 #include "healthMonitor.h"
62 #include "currBssApi.h"
63 #ifdef XCC_MODULE_INCLUDED
68 /* Set/get params function prototype */
69 typedef TI_STATUS (*TParamFunc) (TI_HANDLE handle, paramInfo_t *pParam);
79 /* The module's object */
82 /* Other modules handles */
97 TI_HANDLE hRegulatoryDomain;
98 TI_HANDLE hMeasurementMgr;
99 TI_HANDLE hRoamingMngr;
100 TI_HANDLE hSoftGemini;
103 TI_HANDLE hHealthMonitor;
106 #ifdef XCC_MODULE_INCLUDED
110 /* Table of params set/get functions */
111 TParamAccess paramAccessTable[MAX_PARAM_MODULE_NUMBER];
114 TStadHandlesList *pStadHandles; /* Save modules list pointer just for the debug functions */
120 /* Internal functions prototypes */
121 static void cmdDispatch_ConfigParamsAccessTable (TCmdDispatchObj *pCmdDispatch);
122 static TI_STATUS cmdDispatch_SetTwdParam (TI_HANDLE hCmdDispatch, paramInfo_t *pParam);
123 static TI_STATUS cmdDispatch_GetTwdParam (TI_HANDLE hCmdDispatch, paramInfo_t *pParam);
126 static TI_STATUS cmdDispatch_DebugFuncSet (TI_HANDLE hCmdDispatch, paramInfo_t *pParam);
127 static TI_STATUS cmdDispatch_DebugFuncGet (TI_HANDLE hCmdDispatch, paramInfo_t *pParam); /*yael - this function is not in use*/
133 * \fn cmdDispatch_Create
134 * \brief Create the module
136 * Create the Command-Dispatcher module
139 * \param hOs - Handle to the Os Abstraction Layer
140 * \return Handle to the allocated module (NULL if failed)
143 TI_HANDLE cmdDispatch_Create (TI_HANDLE hOs)
145 TCmdDispatchObj *pCmdDispatch;
147 /* allocate CmdDispatcher module */
148 pCmdDispatch = os_memoryAlloc (hOs, (sizeof(TCmdDispatchObj)));
152 WLAN_OS_REPORT(("Error allocating the CmdDispatcher Module\n"));
156 /* Reset CmdDispatcher module */
157 os_memoryZero (hOs, pCmdDispatch, (sizeof(TCmdDispatchObj)));
159 pCmdDispatch->hOs = hOs;
161 return (TI_HANDLE)pCmdDispatch;
166 * \fn cmdDispatch_Init
167 * \brief Save modules handles and fill the configuration table
169 * Save other modules handles, and fill the configuration table
170 * with the Get/Set functions.
173 * \param pStadHandles - The driver modules handles
177 void cmdDispatch_Init (TStadHandlesList *pStadHandles)
179 TCmdDispatchObj *pCmdDispatch = (TCmdDispatchObj *)(pStadHandles->hCmdDispatch);
181 /* Save modules handles */
182 pCmdDispatch->hReport = pStadHandles->hReport;
183 pCmdDispatch->hAuth = pStadHandles->hAuth;
184 pCmdDispatch->hAssoc = pStadHandles->hAssoc;
185 pCmdDispatch->hRxData = pStadHandles->hRxData;
186 pCmdDispatch->hTxCtrl = pStadHandles->hTxCtrl;
187 pCmdDispatch->hCtrlData = pStadHandles->hCtrlData;
188 pCmdDispatch->hSiteMgr = pStadHandles->hSiteMgr;
189 pCmdDispatch->hConn = pStadHandles->hConn;
190 pCmdDispatch->hRsn = pStadHandles->hRsn;
191 pCmdDispatch->hSme = pStadHandles->hSme;
192 pCmdDispatch->hScanCncn = pStadHandles->hScanCncn;
193 pCmdDispatch->hScanMngr = pStadHandles->hScanMngr;
194 pCmdDispatch->hMlmeSm = pStadHandles->hMlmeSm;
195 pCmdDispatch->hRegulatoryDomain = pStadHandles->hRegulatoryDomain;
196 pCmdDispatch->hMeasurementMgr = pStadHandles->hMeasurementMgr;
197 pCmdDispatch->hRoamingMngr = pStadHandles->hRoamingMngr;
198 pCmdDispatch->hSoftGemini = pStadHandles->hSoftGemini;
199 pCmdDispatch->hQosMngr = pStadHandles->hQosMngr;
200 pCmdDispatch->hPowerMgr = pStadHandles->hPowerMgr;
201 pCmdDispatch->hHealthMonitor = pStadHandles->hHealthMonitor;
202 pCmdDispatch->hTWD = pStadHandles->hTWD;
203 pCmdDispatch->hCurrBss = pStadHandles->hCurrBss;
204 #ifdef XCC_MODULE_INCLUDED
205 pCmdDispatch->hXCCMngr = pStadHandles->hXCCMngr;
209 pCmdDispatch->pStadHandles = pStadHandles; /* Save modules list pointer just for the debug functions */
212 /* Fill the configuration table with the Get/Set functions */
213 cmdDispatch_ConfigParamsAccessTable (pCmdDispatch);
218 * \fn cmdDispatch_Destroy
219 * \brief Destroy the module object
221 * Destroy the module object.
224 * \param hCmdDispatch - The object
225 * \return TI_OK - Unload succesfull, TI_NOK - Unload unsuccesfull
228 TI_STATUS cmdDispatch_Destroy (TI_HANDLE hCmdDispatch)
230 TCmdDispatchObj *pCmdDispatch = (TCmdDispatchObj *)hCmdDispatch;
232 /* Free the module object */
233 os_memoryFree (pCmdDispatch->hOs, pCmdDispatch, sizeof(TCmdDispatchObj));
240 * \fn cmdDispatch_ConfigParamsAccessTable
241 * \brief Fill the configuration table with the Get/Set functions
243 * Called in the configuration phase by the driver, performs the following:
244 * - for each module that supply a Get/Set services to his parameters,
245 * fill the corresponding entry in the params access table with the following:
248 * - Handle to the module
249 * This table is used when Getting/Setting a parameter from the OS abstraction layer.
252 * \param pCmdDispatch - The object
256 static void cmdDispatch_ConfigParamsAccessTable (TCmdDispatchObj *pCmdDispatch)
258 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(AUTH_MODULE_PARAM) - 1].set = auth_setParam;
259 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(AUTH_MODULE_PARAM) - 1].get = auth_getParam;
260 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(AUTH_MODULE_PARAM) - 1].handle = pCmdDispatch->hAuth;
262 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(ASSOC_MODULE_PARAM) - 1].set = assoc_setParam;
263 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(ASSOC_MODULE_PARAM) - 1].get = assoc_getParam;
264 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(ASSOC_MODULE_PARAM) - 1].handle = pCmdDispatch->hAssoc;
266 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(RX_DATA_MODULE_PARAM) - 1].set = rxData_setParam;
267 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(RX_DATA_MODULE_PARAM) - 1].get = rxData_getParam;
268 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(RX_DATA_MODULE_PARAM) - 1].handle = pCmdDispatch->hRxData;
270 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(TX_CTRL_MODULE_PARAM) - 1].set = txCtrlParams_setParam;
271 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(TX_CTRL_MODULE_PARAM) - 1].get = txCtrlParams_getParam;
272 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(TX_CTRL_MODULE_PARAM) - 1].handle = pCmdDispatch->hTxCtrl;
274 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CTRL_DATA_MODULE_PARAM) - 1].set = ctrlData_setParam;
275 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CTRL_DATA_MODULE_PARAM) - 1].get = ctrlData_getParam;
276 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CTRL_DATA_MODULE_PARAM) - 1].handle = pCmdDispatch->hCtrlData;
278 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SITE_MGR_MODULE_PARAM) - 1].set = siteMgr_setParam;
279 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SITE_MGR_MODULE_PARAM) - 1].get = siteMgr_getParam;
280 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SITE_MGR_MODULE_PARAM) - 1].handle = pCmdDispatch->hSiteMgr;
282 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CONN_MODULE_PARAM) - 1].set = conn_setParam;
283 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CONN_MODULE_PARAM) - 1].get = conn_getParam;
284 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CONN_MODULE_PARAM) - 1].handle = pCmdDispatch->hConn;
286 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(RSN_MODULE_PARAM) - 1].set = (TParamFunc)rsn_setParam;
287 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(RSN_MODULE_PARAM) - 1].get = (TParamFunc)rsn_getParam;
288 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(RSN_MODULE_PARAM) - 1].handle = pCmdDispatch->hRsn;
290 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(TWD_MODULE_PARAM) - 1].set = cmdDispatch_SetTwdParam;
291 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(TWD_MODULE_PARAM) - 1].get = cmdDispatch_GetTwdParam;
292 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(TWD_MODULE_PARAM) - 1].handle = (TI_HANDLE)pCmdDispatch;
294 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(REPORT_MODULE_PARAM) - 1].set = (TParamFunc)report_SetParam;
295 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(REPORT_MODULE_PARAM) - 1].get = (TParamFunc)report_GetParam;
296 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(REPORT_MODULE_PARAM) - 1].handle = pCmdDispatch->hReport;
298 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SME_MODULE_PARAM) - 1].set = sme_SetParam;
299 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SME_MODULE_PARAM) - 1].get = sme_GetParam;
300 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SME_MODULE_PARAM) - 1].handle = pCmdDispatch->hSme;
302 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_CNCN_PARAM) - 1].set = scanCncnApp_SetParam;
303 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_CNCN_PARAM) - 1].get = scanCncnApp_GetParam;
304 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_CNCN_PARAM) - 1].handle = pCmdDispatch->hScanCncn;
306 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_MNGR_PARAM) - 1].set = scanMngr_setParam;
307 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_MNGR_PARAM) - 1].get = scanMngr_getParam;
308 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SCAN_MNGR_PARAM) - 1].handle = pCmdDispatch->hScanMngr;
310 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MLME_SM_MODULE_PARAM) - 1].set = mlme_setParam;
311 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MLME_SM_MODULE_PARAM) - 1].get = mlme_getParam;
312 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MLME_SM_MODULE_PARAM) - 1].handle = pCmdDispatch->hMlmeSm;
314 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(REGULATORY_DOMAIN_MODULE_PARAM) - 1].set = regulatoryDomain_setParam;
315 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(REGULATORY_DOMAIN_MODULE_PARAM) - 1].get = regulatoryDomain_getParam;
316 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(REGULATORY_DOMAIN_MODULE_PARAM) - 1].handle = pCmdDispatch->hRegulatoryDomain;
318 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MEASUREMENT_MODULE_PARAM) - 1].set = measurementMgr_setParam;
319 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MEASUREMENT_MODULE_PARAM) - 1].get = measurementMgr_getParam;
320 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MEASUREMENT_MODULE_PARAM) - 1].handle = pCmdDispatch->hMeasurementMgr;
322 #ifdef XCC_MODULE_INCLUDED
323 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(XCC_MANAGER_MODULE_PARAM) - 1].set = XCCMngr_setParam;
324 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(XCC_MANAGER_MODULE_PARAM) - 1].get = XCCMngr_getParam;
325 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(XCC_MANAGER_MODULE_PARAM) - 1].handle = pCmdDispatch->hXCCMngr;
328 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(ROAMING_MANAGER_MODULE_PARAM) - 1].set = roamingMngr_setParam;
329 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(ROAMING_MANAGER_MODULE_PARAM) - 1].get = roamingMngr_getParam;
330 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(ROAMING_MANAGER_MODULE_PARAM) - 1].handle = pCmdDispatch->hRoamingMngr;
332 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SOFT_GEMINI_PARAM) - 1].set = SoftGemini_setParam;
333 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SOFT_GEMINI_PARAM) - 1].get = SoftGemini_getParam;
334 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(SOFT_GEMINI_PARAM) - 1].handle = pCmdDispatch->hSoftGemini;
336 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(QOS_MANAGER_PARAM) - 1].set = qosMngr_setParams;
337 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(QOS_MANAGER_PARAM) - 1].get = qosMngr_getParams;
338 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(QOS_MANAGER_PARAM) - 1].handle = pCmdDispatch->hQosMngr;
340 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(POWER_MANAGER_PARAM) - 1].set = powerMgr_setParam;
341 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(POWER_MANAGER_PARAM) - 1].get = powerMgr_getParam;
342 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(POWER_MANAGER_PARAM) - 1].handle = pCmdDispatch->hPowerMgr;
345 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MISC_MODULE_PARAM) - 1].set = cmdDispatch_DebugFuncSet;
346 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MISC_MODULE_PARAM) - 1].get = cmdDispatch_DebugFuncGet; /*yael - this function is not in use*/
347 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(MISC_MODULE_PARAM) - 1].handle = (TI_HANDLE)pCmdDispatch;
350 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(HEALTH_MONITOR_MODULE_PARAM) - 1].set = healthMonitor_SetParam;
351 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(HEALTH_MONITOR_MODULE_PARAM) - 1].get = healthMonitor_GetParam;
352 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(HEALTH_MONITOR_MODULE_PARAM) - 1].handle = pCmdDispatch->hHealthMonitor;
354 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CURR_BSS_MODULE_PARAM) - 1].set = currBSS_setParam;
355 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CURR_BSS_MODULE_PARAM) - 1].get = currBSS_getParam;
356 pCmdDispatch->paramAccessTable[GET_PARAM_MODULE_NUMBER(CURR_BSS_MODULE_PARAM) - 1].handle = pCmdDispatch->hCurrBss;
361 * \fn cmdDispatch_SetParam
362 * \brief Set a driver parameter
364 * Called by the OS abstraction layer in order to set a parameter in the driver.
365 * If the parameter can not be set from outside the driver it returns a failure status.
366 * The parameters is set to the module that uses as its father in the system
367 * (refer to the file paramOut.h for more explanations).
370 * \param hCmdDispatch - The object
371 * \param param - The parameter information
372 * \return result of parameter setting
375 TI_STATUS cmdDispatch_SetParam (TI_HANDLE hCmdDispatch, void *param)
377 TCmdDispatchObj *pCmdDispatch = (TCmdDispatchObj *)hCmdDispatch;
378 paramInfo_t *pParam = (paramInfo_t *)param;
379 TI_UINT32 moduleNumber;
381 moduleNumber = GET_PARAM_MODULE_NUMBER(pParam->paramType);
383 if (moduleNumber > MAX_PARAM_MODULE_NUMBER)
385 return PARAM_MODULE_NUMBER_INVALID;
388 if ((pCmdDispatch->paramAccessTable[moduleNumber - 1].set == 0) ||
389 (pCmdDispatch->paramAccessTable[moduleNumber - 1].get == 0) ||
390 (pCmdDispatch->paramAccessTable[moduleNumber - 1].handle == 0))
392 WLAN_OS_REPORT(("cmdDispatch_SetParam(): NULL pointers!!!, return, ParamType=0x%x\n", pParam->paramType));
396 TRACE2(pCmdDispatch->hReport, REPORT_SEVERITY_INFORMATION , "cmdDispatch_SetParam(): ParamType=0x%x, ModuleNumber=0x%x\n", pParam->paramType, moduleNumber);
398 return pCmdDispatch->paramAccessTable[moduleNumber - 1].set(pCmdDispatch->paramAccessTable[moduleNumber - 1].handle, pParam);
403 * \fn cmdDispatch_GetParam
404 * \brief Get a driver parameter
406 * Called by the OS abstraction layer in order to get a parameter the driver.
407 * If the parameter can not be get from outside the driver it returns a failure status.
408 * The parameter is get from the module that uses as its father in the system
409 * (refer to the file paramOut.h for more explanations).
412 * \param hCmdDispatch - The object
413 * \param param - The parameter information
414 * \return result of parameter getting
417 TI_STATUS cmdDispatch_GetParam (TI_HANDLE hCmdDispatch, void *param)
419 TCmdDispatchObj *pCmdDispatch = (TCmdDispatchObj *) hCmdDispatch;
420 paramInfo_t *pParam = (paramInfo_t *) param;
421 TI_UINT32 moduleNumber;
424 moduleNumber = GET_PARAM_MODULE_NUMBER(pParam->paramType);
426 if (moduleNumber > MAX_PARAM_MODULE_NUMBER)
428 return PARAM_MODULE_NUMBER_INVALID;
431 if ((pCmdDispatch->paramAccessTable[moduleNumber - 1].set == 0) ||
432 (pCmdDispatch->paramAccessTable[moduleNumber - 1].get == 0) ||
433 (pCmdDispatch->paramAccessTable[moduleNumber - 1].handle == 0))
435 WLAN_OS_REPORT(("cmdDispatch_GetParam(): NULL pointers!!!, return, ParamType=0x%x\n", pParam->paramType));
439 TRACE2(pCmdDispatch->hReport, REPORT_SEVERITY_INFORMATION , "cmdDispatch_GetParam(): ParamType=0x%x, ModuleNumber=0x%x\n", pParam->paramType, moduleNumber);
441 status = pCmdDispatch->paramAccessTable[moduleNumber - 1].get(pCmdDispatch->paramAccessTable[moduleNumber - 1].handle, pParam);
448 * \fn cmdDispatch_SetTwdParam / cmdDispatch_GetParam
449 * \brief Set/Get a TWD parameter
451 * Set/Get a TWD parameter.
454 * \param hCmdDispatch - The object
455 * \param param - The parameter information
456 * \return parameter set/get result
459 static TI_STATUS cmdDispatch_SetTwdParam (TI_HANDLE hCmdDispatch, paramInfo_t *pParam)
461 TCmdDispatchObj *pCmdDispatch = (TCmdDispatchObj *)hCmdDispatch;
463 pParam->paramType &= ~(SET_BIT | GET_BIT | TWD_MODULE_PARAM | ASYNC_PARAM | ALLOC_NEEDED_PARAM);
465 return TWD_SetParam (pCmdDispatch->hTWD, (TTwdParamInfo *)pParam);
468 static TI_STATUS cmdDispatch_GetTwdParam (TI_HANDLE hCmdDispatch, paramInfo_t *pParam)
470 TCmdDispatchObj *pCmdDispatch = (TCmdDispatchObj *)hCmdDispatch;
472 pParam->paramType &= ~(SET_BIT | GET_BIT | TWD_MODULE_PARAM | ASYNC_PARAM | ALLOC_NEEDED_PARAM);
474 return TWD_GetParam (pCmdDispatch->hTWD, (TTwdParamInfo *)pParam);
481 * \fn cmdDispatch_DebugFuncSet / cmdDispatch_DebugFuncGet
482 * \brief Set/Get a debug function parameter
484 * Set/Get a debug function parameter.
487 * \param hCmdDispatch - The object
488 * \param param - The parameter information
489 * \return parameter set/get result
495 static TI_STATUS cmdDispatch_DebugFuncSet (TI_HANDLE hCmdDispatch, paramInfo_t *pParam)
497 TCmdDispatchObj *pCmdDispatch = (TCmdDispatchObj *)hCmdDispatch;
499 if (hCmdDispatch == NULL || pParam == NULL)
504 switch (pParam->paramType)
506 case DEBUG_ACTIVATE_FUNCTION:
507 debugFunction (pCmdDispatch->pStadHandles,
508 *(TI_UINT32*)&pParam->content,
509 (void*)((TI_UINT32*)&pParam->content + 1));
512 TRACE1(pCmdDispatch->hReport, REPORT_SEVERITY_ERROR, "cmdDispatch_DebugFuncSet bad param=%X\n", pParam->paramType);
520 /*yael - this function is not in use*/
521 static TI_STATUS cmdDispatch_DebugFuncGet (TI_HANDLE hCmdDispatch, paramInfo_t *pParam)
523 if (hCmdDispatch == NULL || pParam == NULL)
528 /*yael - no use for that function */