1/*
2 * PowerSrv.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 powerSrv.h
35 *  \brief This is the Power Manager module private (internal).
36 *  \author Yaron Menashe
37 *  \date 27-Apr-2004
38 */
39
40/****************************************************************************
41 *                                                                          *
42 *   MODULE:  Power Manager                                                 *
43 *   PURPOSE: Power Manager Module private                                      *
44 *                                                                          *
45 ****************************************************************************/
46
47#ifndef _POWER_SRV_H_
48#define _POWER_SRV_H_
49
50#include "TWDriverInternal.h"
51#include "PowerSrv_API.h"
52
53/*#include "PowerSrvSM.h"*/
54
55/*****************************************************************************
56 **         Constants                                                       **
57 *****************************************************************************/
58
59
60/*****************************************************************************
61 **         Enumerations                                                    **
62 *****************************************************************************/
63
64
65
66
67
68/*new Power*/
69
70
71typedef enum
72{
73	DRIVER_MODE,
74	USER_MODE
75}powerSrvMode_e;
76
77typedef enum
78{
79	NEW_REQUEST,
80	PENDING_REQUEST,
81	RUNNING_REQUEST,
82	HANDLED_REQUEST
83}powerSrvRequestState_e;
84
85
86/*****************************************************************************
87 **         Typedefs                                                        **
88 *****************************************************************************/
89
90
91
92
93/*****************************************************************************
94 **         Structures                                                      **
95 *****************************************************************************/
96
97
98
99typedef struct
100{
101	powerSrvRequestState_e 		requestState;
102	powerSrvMode_e				requestMode;
103	E80211PsMode	            psMode;
104	TI_BOOL 						sendNullDataOnExit;
105	void* 						powerSaveCBObject;
106	powerSaveCmpltCB_t    		powerSrvCompleteCB;
107	powerSaveCmdResponseCB_t	powerSaveCmdResponseCB;
108}	powerSrvRequest_t;
109
110/** \struct powerSrv_t
111 * this structure contain the data of the PowerSrv object.
112 */
113
114
115typedef struct
116{
117	TI_HANDLE   			hPowerSrvSM;            /**<
118                                             					* Hnadle to the Power Server State Machine object.
119                                            			 		*/
120
121	TI_HANDLE   			hOS;                        	/**<
122                                             					* Handle to the OS object.
123                                             					*/
124
125    TI_HANDLE   			hReport;                    	/**<
126                                            	 				* Handle to the Report module.
127                                             					*/
128
129	TI_HANDLE   			hEventMbox;         		/**< Handle to the power controller object via the WhalCtrl.
130											 * Need for configure the desired power mode policy in the system.
131											 */
132    TI_HANDLE               hCmdBld;
133
134	powerSrvMode_e 		currentMode; 		/**<
135											*holds the current mode of the PSS - driver or user...
136											*/
137
138	powerSrvMode_e 		userLastRequestMode;
139											/**<
140											*
141											*/
142
143	powerSrvRequest_t 	userRequest;		/**<
144											*user request struct.
145											*/
146
147	powerSrvRequest_t 	driverRequest;		/**<
148											*driver request struct
149											*/
150
151	powerSrvRequest_t*  	pCurrentRequest;	/**<
152											*pointer to the current request - user/driver request
153											*/
154
155	TFailureEventCb		failureEventFunc;	/**<
156											* upper layer Failure Event CB.
157											* called when the scan command has been Timer Expiry
158											*/
159	TI_HANDLE			failureEventObj;		/**<
160											* object parameter passed to the failureEventFunc
161											* when it is called
162											*/
163
164} powerSrv_t;
165
166
167
168/*****************************************************************************
169 **         External data definitions                                       **
170 *****************************************************************************/
171
172
173/*****************************************************************************
174 **         External functions definitions                                  **
175 *****************************************************************************/
176
177
178
179
180
181/*****************************************************************************
182 **         Public Function prototypes                                      **
183 *****************************************************************************/
184
185/*****************************************************************************
186 **         Private Function prototypes                                     **
187 *****************************************************************************/
188
189/*****************************************************************************
190 **         Private Function prototypes                                     **
191 *****************************************************************************/
192
193#endif /*  _POWER_SRV_H_  */
194
195