/* * PowerMgr.h * * 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 PowerMgr.h * \brief This is the Power Manager module private (internal). * \ * \date 24-Oct-2005 */ /**************************************************************************** * * * MODULE: Power Manager * * PURPOSE: Power Manager Module private * * * ****************************************************************************/ #ifndef _POWER_MGR_H_ #define _POWER_MGR_H_ #include "tidef.h" #include "paramOut.h" /***************************************************************************** ** Constants ** *****************************************************************************/ #define RE_ENTER_PS_TIMEOUT 10 /* mSec */ #define BET_INTERVAL_VALUE 1000 /* mSec */ /***************************************************************************** ** Enumerations ** *****************************************************************************/ /***************************************************************************** ** Typedefs ** *****************************************************************************/ /***************************************************************************** ** Structures ** *****************************************************************************/ typedef struct { PowerMgr_PowerMode_e powerMode; TI_BOOL priorityEnable; } powerMngModePriority_t; /** \struct powerMgr_t * this structure contain the data of the PowerMgr object. */ typedef struct { TI_HANDLE hOS; /**< Handle to the OS object */ TI_HANDLE hReport; /**< Handle to the Report module */ TI_HANDLE hTrafficMonitor; /**< Handle to the Traffic Monitor object */ TI_HANDLE hSiteMgr; /**< Handle to the Site Mgr object */ TI_HANDLE hTWD; /**< Handle to the TWD object */ TI_HANDLE hSoftGemini; /**< Handle to the SG object */ TI_HANDLE hTimer; /**< Handle to the Timer module object */ TI_HANDLE hRetryPsTimer; /**< Handle to the retry timer */ TI_HANDLE hPsPollFailureTimer; /**< Handle to ps-poll failure timer */ TI_HANDLE hPowerMgrKeepAlive; /**< Handle to the keep-alive sub module */ PowerMgr_PowerMode_e desiredPowerModeProfile; /**< * The configure power mode to the system in the * initialization function. This parameters is Saved * for restart the module. */ powerMngModePriority_t powerMngModePriority[POWER_MANAGER_MAX_PRIORITY]; PowerMgr_PowerMode_e lastPowerModeProfile; /**< * The last configured power mode. */ TI_BOOL psEnable; /**< * The parameter holds the enable of the power save * mechanism. */ TI_UINT16 autoModeInterval; /**< * Time period (in ms) to test the current TP before * changing the current power mode. */ TI_UINT16 autoModeActiveTH; /**< Threshold (in Bytes) for moving to Active mode */ TI_UINT16 autoModeDozeTH; /**< * Threshold (in Bytes) for moving to Short-Doze from * active mode. */ PowerMgr_PowerMode_e autoModeDozeMode; /**< * The power mode of doze (short-doze / long-doze) that * auto mode will be toggle between doze vs active. */ PowerMgr_Priority_e powerMngPriority; /**< * the priority of the power manager - canbe - regular user (cli) or * special user i.e Soft Gemini. */ TI_HANDLE passToActiveTMEvent; /**< * Traffic Monitor event (TrafficAlertElement) for * the pass to active event from the traffic monitor. */ TI_HANDLE passToDozeTMEvent; /**< * Traffic Monitor event (TrafficAlertElement) for * the pass to short doze from active event from the * traffic monitor. */ TI_HANDLE betEnableTMEvent; /**< * Traffic Monitor event (TrafficAlertElement) for * enabling BET. */ TI_HANDLE betDisableTMEvent; /**< * Traffic Monitor event (TrafficAlertElement) for * disabling BET. */ TI_UINT8 beaconListenInterval; /**< * specify how often the TNET wakes up to listen to * beacon frames. the value is expressed in units of * "beacon interval". */ TI_UINT8 dtimListenInterval; /**< specify how often the TNET wakes up to listen to * dtim frames. the value is expressed in units of * "dtim interval". */ EPowerPolicy defaultPowerLevel; /**< Power level when PS not active */ EPowerPolicy PowerSavePowerLevel; /**< Power level when PS active */ EventsPowerSave_e lastPsTransaction; /**< Last result of PS request */ TI_UINT32 maxFullBeaconInterval; /**< Maximal time between full beacon reception */ TI_UINT8 betEnable; /**< last configuration of BET enable/disable */ TI_UINT8 betTrafficEnable; TI_UINT8 BetEnableThreshold; TI_UINT8 BetDisableThreshold; TI_UINT32 PsPollDeliveryFailureRecoveryPeriod; /* Time to exit PS after receiving PsPoll failure event */ TI_BOOL reAuthActivePriority; } PowerMgr_t; #endif /* _POWER_MGR_H_ */