OSDN Git Service

original
[gb-231r1-is01/Gingerbread_2.3.3_r1_IS01.git] / hardware / ti / wlan / wl1271 / stad / src / Sta_Management / scr.h
1 /*
2  * scr.h
3  *
4  * Copyright(c) 1998 - 2009 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  scr.h
35  *  \brief This file includes internal (private) definitions to the SCR module
36  *
37  *  \see   scrApi.h, scr.c
38  */
39
40
41 #ifndef __SCR_H__
42 #define __SCR_H__
43
44 #include "scrApi.h"
45
46 /*
47  ***********************************************************************
48  *  Constant definitions.
49  ***********************************************************************
50  */
51
52  /*
53  ***********************************************************************
54  *  Enums.
55  ***********************************************************************
56  */
57
58 /** \enum EScrClientState 
59  * \brief enumerates the different states a client may be in .\n
60  */
61 typedef enum
62 {
63     SCR_CS_IDLE = 0,    /**< client is idle */
64     SCR_CS_PENDING,     /**< client is pending to use the channel */
65     SCR_CS_RUNNING,     /**< client is using the channel */
66     SCR_CS_ABORTING     /**< 
67                          * client was using the channel, but was aborted, 
68                          * and complete notification is expected.
69                          */
70 } EScrClientState;
71
72
73 /*
74  ***********************************************************************
75  *  Typedefs.
76  ***********************************************************************
77  */
78
79 /*
80  ***********************************************************************
81  *  Structure definitions.
82  ***********************************************************************
83  */
84
85 /** \struct TScrClient
86  * \brief This structure contains information for a specific client
87  */
88 typedef struct
89 {
90     EScrClientState     state[ SCR_RESOURCE_NUM_OF_RESOURCES ];     /**< the client current state, per resource */
91     TScrCB              clientRequestCB;                            /**< the client's callback function */
92     TI_HANDLE           ClientRequestCBObj;                         /**< the client's object */
93     EScePendReason      currentPendingReason[ SCR_RESOURCE_NUM_OF_RESOURCES ];
94                                                                     /**< 
95                                                                      * the reason why this client is pending
96                                                                      * (if at all)
97                                                                      */
98 } TScrClient;
99
100 /** \struct TScr
101  * \brief This structure contains the SCR object data
102  */
103 typedef struct
104 {
105     TI_HANDLE               hOS;                                    /**< a handle to the OS object */
106     TI_HANDLE               hReport;                                /**< a handle to the report object */
107     TI_BOOL                 statusNotficationPending;               /**< 
108                                                                      * whether the SCR is in the process of  
109                                                                      * notifying a status change to a client
110                                                                      * (used to solve re-entrance problem)
111                                                                      */
112     EScrClientId            runningClient[ SCR_RESOURCE_NUM_OF_RESOURCES ];
113                                                                     /**< 
114                                                                      * The index of the current running client 
115                                                                      * (SCR_CID_NO_CLIENT if none), per resource
116                                                                      */
117     EScrGroupId             currentGroup;                           /**< the current group */
118     EScrModeId              currentMode;                            /**< the current mode */
119     TScrClient              clientArray[ SCR_CID_NUM_OF_CLIENTS ];  /**< array holding all clients' info */
120 } TScr;
121
122
123 /*
124  ***********************************************************************
125  *  External functions definitions
126  ***********************************************************************
127  */
128 /**
129  * \\n
130  * \date 01-Dec-2004\n
131  * \brief Searches the client database for a client with matching state, from startFrom to endAt\n
132  *
133  * Function Scope \e Private.\n
134  * \param hScr - handle to the SCR object.\n
135  * \param requiredState - the state to match.\n
136  * \param eResource - the resource to macth.\n
137  * \param startFrom - the highest priority to begin searching from.\n
138  * \param endAt - the lowest priority to include in the search.\n
139  * \return the client ID if found, SCR_CID_NO_CLIENT if not found.\n
140  */
141 EScrClientId scrFindHighest( TI_HANDLE hScr,
142                              EScrClientState requiredState,
143                              EScrResourceId eResource,
144                              TI_UINT32 startFrom,
145                              TI_UINT32 endAt );
146
147 #endif /* __SCR_H__ */