• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * scanMngrApi.h
3  *
4  * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
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
16  *    distribution.
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.
20  *
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.
32  */
33 
34 /** \file  scanMngrApi.h
35  *  \brief This file include public definitions for the scan manager module, comprising its API.
36  *
37  *  \see   scanMngr.c, scanMngr.h, scanMngrTypes.h
38  */
39 
40 
41 #ifndef __SCAN_MNGR_API_H__
42 #define __SCAN_MNGR_API_H__
43 
44 #include "scanMngrTypes.h"
45 #include "bssTypes.h"
46 #include "ScanCncn.h"
47 #include "DrvMainModules.h"
48 
49 
50 /*
51  ***********************************************************************
52  *  Constant definitions.
53  ***********************************************************************
54  */
55 
56 #define SCANNING_OPERATIONAL_MODE_MANUAL   0
57 #define SCANNING_OPERATIONAL_MODE_AUTO 	   1
58 
59 
60 /*
61  ***********************************************************************
62  *  Enums.
63  ***********************************************************************
64  */
65 /** \enum scan_mngrResultStatus_e
66  *
67  * \brief Scan Manager Result Status
68  *
69  * \par Description
70  * Enumerates the possible Scan result statuses.
71  * Returned as a response to an immediate scan request.
72  *
73  * \sa
74  */
75  typedef enum
76 {
77 /*	0	*/	SCAN_MRS_SCAN_COMPLETE_OK, 		                	/**< Scan was completed successfully 						*/
78 /*	1	*/	SCAN_MRS_SCAN_RUNNING,                              /**< Scan was started successfully and is now running 		*/
79 /*	2	*/	SCAN_MRS_SCAN_NOT_ATTEMPTED_ALREADY_RUNNING,        /**< scan was not attempted because it is already running 	*/
80 /*	3	*/	SCAN_MRS_SCAN_NOT_ATTEMPTED_EMPTY_POLICY,            /**<
81 																* Scan was not attempted because the policy defines
82 																* NULL scan type
83 																*/
84 /*	4	*/	SCAN_MRS_SCAN_NOT_ATTEMPTED_NO_CHANNLES_AVAILABLE, 	/**<
85 																* Scan was not attempted because no channels are
86 																* available for scan, according to the defined policy.
87 																*/
88 /*	5	*/	SCAN_MRS_SCAN_FAILED,                             	/**< Scan failed to start 									*/
89 /*	6	*/	SCAN_MRS_SCAN_STOPPED,                              /**< Scan was stopped by caller 							*/
90 /*	7	*/	SCAN_MRS_SCAN_ABORTED_FW_RESET,                     /**< Scan was aborted due to recovery 						*/
91 /*	8	*/	SCAN_MRS_SCAN_ABORTED_HIGHER_PRIORITY               /**< Scan was aborted due to a higher priority client 		*/
92 
93 } scan_mngrResultStatus_e;
94 
95 typedef enum {
96     CONNECTION_STATUS_CONNECTED =0,
97     CONNECTION_STATUS_NOT_CONNECTED
98 } scanMngr_connStatus_e;
99 
100 
101 
102 
103 /*
104  ***********************************************************************
105  *  Typedefs.
106  ***********************************************************************
107  */
108 
109 /*
110  ***********************************************************************
111  *  Structure definitions.
112  ***********************************************************************
113  */
114 
115 typedef struct  {
116 	TI_UINT8               	numOfChannels;                                  /**< Number of channels to scan */
117     TScanChannelEntry      	channelEntry[ MAX_NUMBER_OF_CHANNELS_PER_SCAN ]; /**< Channel data array, actual size according to the above field. */
118 } channelList_t;
119 
120 typedef struct _BssListEx_t
121 {
122     bssList_t   *pListOfAPs;
123     TI_BOOL      scanIsRunning;
124 } BssListEx_t;
125 
126 
127 /*
128  ***********************************************************************
129  *  External data definitions.
130  ***********************************************************************
131  */
132 /*
133  ***********************************************************************
134  *  External functions definitions
135  ***********************************************************************
136  */
137 /**
138  * \brief  Creates the scan manager object
139  *
140  * \param hScanMngr - handle to the OS object
141  * \return Handle to the Scan Manager Object on Success, NULL otherwise
142  *
143  * \par Description
144  * Creates (allocates) the scan manager object and its database
145  *
146  * \sa
147  */
148 TI_HANDLE scanMngr_create( TI_HANDLE hOS );
149 /**
150  * \brief  Initializes the scan manager
151  *
152  * \param  pStadHandles  - The driver modules handles
153  * \return void
154  *
155  * \par Description
156  * Initializes the scan manager object with other object handlers called by the driver core logic,
157  * and creates Scan Manager Timer
158  *
159  * \sa	scanMngr_unload
160  */
161 void scanMngr_init (TStadHandlesList *pStadHandles);
162 /**
163  * \brief  Unloads the scan manager object
164  *
165  * \param hScanMngr - Handle to the scan manager object to unload
166  * \return void
167  *
168  * \par Description
169  * Frees the memory allocated by the scan manager.
170  * The function is called as part of the unloading process of the driver.
171  *
172  * \sa
173  */
174 void scanMngr_unload( TI_HANDLE hScanMngr );
175 /**
176  * \brief  Starts an immediate scan operation
177  *
178  * \param hScanMngr 		- handle to the scan manager object
179  * \param pNeighborAPsOnly 	- Indicates whether to scan only neighbor APs (or all channels defined by the policy)
180  * 							  TI_TRUE if scan for neighbor APs only, TI_FALSE if scan on all channels
181  * \return  Scan Result Status
182  *
183  * \par Description
184  *
185  * \sa	scanMngr_create
186  */
187 scan_mngrResultStatus_e scanMngr_startImmediateScan( TI_HANDLE hScanMngr, TI_BOOL bNeighborAPsOnly );
188 /**
189  * \brief  Stops the immediate scan operation
190  *
191  * \param hScanMngr - handle to the scan manager object
192  * \return  void
193  *
194  * \par Description
195  *
196  * \sa
197  */
198 void scanMngr_stopImmediateScan( TI_HANDLE hScanMngr );
199 /**
200  * \brief  Starts the continuous scan timer
201  *
202  * \param hScanMngr 		- Handle to the scan manager object
203  * \param currentBSS 		- BSSID of the AP to which the STA is connected
204  * \param currentBSSBand 	- Band of the AP to which the STA is connected
205  * \return  void
206  *
207  * \par Description
208  * Starts the continuous scan process performed by the scan manager.
209  * It is called by the roaming manager when an STA connection is established
210  *
211  * \sa
212  */
213 void scanMngr_startContScan( TI_HANDLE hScanMngr, TMacAddr* currentBSS, ERadioBand currentBSSBand );
214 /**
215  * \brief  Stops the continuous scan timer
216  *
217  * \param hScanMngr 		- Handle to the scan manager object
218  * \return  void
219  *
220  * \par Description
221  * Stops the continues scan performed by the scan manager.
222  * It is called by the roaming manager when the STA disconnects
223  *
224  * \sa
225  */
226 void scanMngr_stopContScan( TI_HANDLE hScanMngr );
227 /**
228  * \brief  Returns the currently available BSS list
229  *
230  * \param hScanMngr 		- Handle to the scan manager object
231  * \return  Pointer to BSS list
232  *
233  * \par Description
234  * Used by the roaming manager to obtain the scan manager BSS list.
235  *
236  * \sa
237  */
238 bssList_t *scanMngr_getBSSList( TI_HANDLE hScanMngr );
239 /**
240  * \brief  Sets the neighbor APs
241  *
242  * \param hScanMngr 		- Handle to the scan manager object
243  * \param neighborAPList 	- Pointer to the neighbor AP list
244  * \return  void
245  *
246  * \par Description
247  * Used by the roaming manager to set a list of neighbor APs for the scan manager,
248  * which are then given priority over policy channels in the discovery phase
249  *
250  * \sa
251  */
252 void scanMngr_setNeighborAPs( TI_HANDLE hScanMngr, neighborAPList_t* neighborAPList );
253 /**
254  * \brief  Change quality level (normal / deteriorating)
255  *
256  * \param hScanMngr 	- Handle to the scan manager object
257  * \param bLowQuality 	- TI_TRUE if quality is deteriorating, TI_FALSE if quality is normal
258  * \return  void
259  *
260  * \par Description
261  * Used by the roaming manager to set the scan interval used by the scan manager,
262  * according to the current AP quality level
263  *
264  * \sa
265  */
266 void scanMngr_qualityChangeTrigger( TI_HANDLE hScanMngr, TI_BOOL bLowQuality );
267 /**
268  * \brief  Change quality level (normal / deteriorating)
269  *
270  * \param hScanMngr 	- Handle to the scan manager object
271  * \param macAddress 	- MAC address of the new AP (to which the STA is currently connected to)
272  * \param band 			- Band of the new AP (to which the STA is currently connected to)
273  * \return  void
274  *
275  * \par Description
276  * Used by the roaming manager to notify the scan manager that roaming is complete.
277  * This is done so that the scan manager does not attempt to discover the current AP,
278  * in case it is also a neighbor AP
279  *
280  * \sa
281  */
282 void scanMngr_handoverDone( TI_HANDLE hScanMngr, TMacAddr* macAddress, ERadioBand band );
283 /**
284  * \brief	Get Scan Manager Parameters
285  *
286  * \param hScanMngr - Handle to the scan manager object
287  * \param pParam 	- Pointer to get Parameter
288  * \return  TI_OK if the parameter got successfully, TI_NOK otherwise
289  *
290  * \par Description
291  * Parses and executes a get parameter command
292  *
293  * \sa
294  */
295 TI_STATUS scanMngr_getParam( TI_HANDLE hScanMngr, paramInfo_t *pParam );
296 /**
297  * \brief  Set Scan Manager Parameters
298  *
299  * \param hScanMngr - Handle to the scan manager object
300  * \param pParam 	- Pointer to set Parameter
301  * \return  TI_OK if the parameter was set successfully, TI_NOK otherwise
302  *
303  * \par Description
304  * Called when the user configures scan parameters. It parses and executes a set parameter command
305  *
306  * \sa
307  */
308 TI_STATUS scanMngr_setParam( TI_HANDLE hScanMngr, paramInfo_t *pParam );
309 
310 
311 
312 
313 
314 /********** New APIs added for EMP manual scan support ******/
315 
316 void scanMngr_startManual(TI_HANDLE hScanMngr);
317 
318 void scanMngr_stopManual(TI_HANDLE hScanMngr);
319 
320 TI_STATUS scanMngr_setManualScanChannelList (TI_HANDLE  hScanMngr, channelList_t* pChannelList);
321 
322 EScanCncnResultStatus scanMngr_Start1ShotScan (TI_HANDLE hScanMngr, EScanCncnClient eClient);
323 
324 TI_STATUS scanMngr_immediateScanComplete(TI_HANDLE hScanMngr, scan_mngrResultStatus_e scanCmpltStatus);
325 
326 TI_STATUS scanMngr_reportImmediateScanResults(TI_HANDLE hScanMngr, scan_mngrResultStatus_e scanCmpltStatus);
327 
328 TI_STATUS scanMngr_startContinuousScanByApp (TI_HANDLE hScanMngr, channelList_t* pChannelList);
329 
330 TI_STATUS scanMngr_stopContinuousScanByApp (TI_HANDLE hScanMngr);
331 
332 void scanMngr_SetDefaults (TI_HANDLE hScanMngr, TRoamScanMngrInitParams *pInitParams);
333 
334 /********** New APIs added for EMP manual scan support ******/
335 
336 
337 #ifdef TI_DBG
338 /**
339  * \brief  Print scan policy
340  *
341  * \param scanPolicy 	- scan policy to print
342  * \return void
343  *
344  * \par Description
345  *
346  * \sa
347  */
348 void scanMngrTracePrintScanPolicy( TScanPolicy* scanPolicy );
349 /**
350  * \brief  Print scan manager statistics
351  *
352  * \param hScanMngr - handle to the scan manager object.\n
353  * \return void
354  *
355  * \par Description
356  *
357  * \sa
358  */
359 void scanMngr_statsPrint( TI_HANDLE hScanMngr );
360 /**
361  * \brief  Reset scan manager statistics
362  *
363  * \param hScanMngr - handle to the scan manager object.\n
364  * \return void
365  *
366  * \par Description
367  *
368  * \sa
369  */
370 void scanMngr_statsReset( TI_HANDLE hScanMngr );
371 /**
372  * \brief  Print Neighbor AP list
373  *
374  * \param hScanMngr - handle to the scan manager object.\n
375  * \return void
376  *
377  * \par Description
378  *
379  * \sa
380  */
381 void scanMngrDebugPrintNeighborAPList( TI_HANDLE hScanMngr );
382 /**
383  * \brief  Prints all data in the scan manager object
384  *
385  * \param hScanMngr - handle to the scan manager object.\n
386  * \return void
387  *
388  * \par Description
389  *
390  * \sa
391  */
392 void scanMngrDebugPrintObject( TI_HANDLE hScanMngr );
393 
394 #endif /* TI_DBG */
395 
396 #endif /* __SCAN_MNGR_API_H__ */
397