/*
* PowerSrv_API.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 powerSrv_API.h
* \brief This is the Power Manager module API.
* \author Yaron Menashe
*/
/****************************************************************************
* *
* MODULE: Power Server *
* PURPOSE: Power Server Module API *
* *
****************************************************************************/
#ifndef _POWER_SRV_API_H_
#define _POWER_SRV_API_H_
#include "MacServices_api.h"
/*****************************************************************************
** Constants **
*****************************************************************************/
/*****************************************************************************
** Enumerations **
*****************************************************************************/
/*****************************************************************************
** Typedefs **
*****************************************************************************/
/*typedef void (*powerSaveCmdResponseCB_t )(TI_HANDLE cmdResponseHandle,TI_UINT8 MboxStatus);*/
typedef TPowerSaveResponseCb powerSaveCmdResponseCB_t;
/*typedef void (*powerSaveCmpltCB_t )(TI_HANDLE powerSaveCmpltHandle,TI_UINT8 PSMode,TI_UINT8 transStatus);*/
typedef TPowerSaveCompleteCb powerSaveCmpltCB_t;
/*****************************************************************************
** Structures **
*****************************************************************************/
/*****************************************************************************
** External data definitions **
*****************************************************************************/
/*****************************************************************************
** External functions definitions **
*****************************************************************************/
/*****************************************************************************
** Public Function prototypes **
*****************************************************************************/
/**
* \author Assaf Azulay
* \date 20-Oct-2005\n
* \brief Creates the object of the power Server.
*
* Function Scope \e Public.\n
* Parameters:\n
* 1) TI_HANDLE - handle to the OS.\n
* Return Value: TI_HANDLE - handle to the powerSrv object.\n
*/
TI_HANDLE powerSrv_create(TI_HANDLE hOs);
/**
* \author Assaf Azulay
* \date 27-Apr-2005\n
* \brief Destroy the object of the power Server.
*
* Function Scope \e Public.\n
* Parameters:\n
* 1) TI_HANDLE - handle to the powerSrv object.\n
* Return Value: TI_STATUS - TI_OK on success else TI_NOK.\n
*/
TI_STATUS powerSrv_destroy(TI_HANDLE hPowerSrv);
/**
* \author Assaf Azulay
* \date 24-Oct-2005\n
* \brief Initialization of the powerSrv module.
*
* Function Scope \e Public.\n
* Parameters:\n
* 1) TI_HANDLE - handle to the powerSrv object.\n
* 3) TI_HANDLE - handle to the Report object.\n
* 2) TI_HANDLE - handle to the EventMbox object.\n
* 4) TI_HANDLE - handle to the CommandBuilder object.\n
* 5) TI_HANDLE - handle to the Timer module object.\n
* Return Value: TI_STATUS - TI_OK on success else TI_NOK.\n
*/
TI_STATUS powerSrv_init (TI_HANDLE hPowerSrv,
TI_HANDLE hReport,
TI_HANDLE hEventMbox,
TI_HANDLE hCmdBld,
TI_HANDLE hTimer);
TI_STATUS powerSrv_config(TI_HANDLE hPowerSrv,
TPowerSrvInitParams *pPowerSrvInitParams);
/**
* \author Assaf Azulay
* \date 24-Oct-2005\n
* \brief request PS by User
*
* Function Scope \e Public.\n
* Parameters:\n
* 1) hPowerSrv - handle to the PowerSrv object.\n
* 2) psMode - Power save/Active request.\n
* 3) sendNullDataOnExit - \n
* 4) powerSaveCompleteCBObject - handle to the Callback functin module.\n
* 5) powerSaveCompleteCB - Calback function - for success/faild notification.\n
* 6) powerSavecmdResponseCB - Calback function - for GWSI success/faild notification.\n
* Return Value: TI_STATUS - TI_OK / PENDING / TI_NOK.\n
* \b Description:\n
* This function is a user mode request from the Power Save Server./n
* it will create a Request from typ "USER_REQUEST" and will try to perform the user request for PS/Active./n
* this will be done in respect of priority to Driver request./n
*/
TI_STATUS powerSrv_SetPsMode (TI_HANDLE hPowerSrv,
E80211PsMode psMode,
TI_BOOL sendNullDataOnExit,
void * powerSaveCompleteCBObject,
powerSaveCmpltCB_t powerSaveCompleteCB,
powerSaveCmdResponseCB_t powerSavecmdResponseCB);
/**
* \author Assaf Azulay
* \date 24-Oct-2005\n
* \brief SW configure, use to override the current PowerMode (what ever it will be) to
* active/PS combined with awake/power-down. use for temporary change the system policy.
*
* Function Scope \e Public.\n
* Parameters:\n
* 1) TI_HANDLE - handle to the powerSrv object.\n
* 2) powerSrv_RequestFor_802_11_PS_e - the driver mode obliged to be in 802.11 PS or not change.\n
* 3) PowerCtrl_PowerLevel_e - the desired driver power level (allowed: AWAKE or POWER DOWN).\n
* 4) TI_HANDLE theObjectHandle - the handle the object that need the PS success/fail notification.\n
* 5) ps802_11_NotificationCB_t - the callback function.\n
* 6) char* - the clinet name that ask for driver mode.\n
* Return Value: TI_STATUS - if success (already in power save) then TI_OK,\n
* if pend (wait to ACK form AP for the null data frame) then PENDING\n
* if PS isn't enabled then POWER_SAVE_802_11_NOT_ALLOWED\n
* else TI_NOK.\n
* \b Description:\n
* enter in to configuration of the driver that in higher priority from the user.\n
* the configuration is:\n
* - to enter to802.11 PS or not (if not this isn't a request to get out from 802.11 PS).\n
* - to change the HW power level to awake or power-down if not already there.
* this is a must request.\n
*/
TI_STATUS powerSrv_ReservePS (TI_HANDLE hPowerSrv,
E80211PsMode psMode,
TI_BOOL sendNullDataOnExit,
void * powerSaveCBObject,
powerSaveCmpltCB_t powerSaveCompleteCB);
/**
* \author Assaf Azulay
* \date 24-Oct-2005\n
* \brief end the temporary change of system policy, and returns to the user system policy.
*
* Function Scope \e Public.\n
* Parameters:\n
* 1) TI_HANDLE - handle to the powerSrv object.\n
* 2) char* - the clinet name that ask for driver mode.\n
* Return Value: TI_STATUS - TI_OK on success else TI_NOK.\n
* \b Description:\n
* enter in to configuration of the driver that in higher priority from the user.\n
* the configuration is:\n
* end the user mode configuration (driver mode priority) and returns the user configuration
* (user mode priority).
*/
TI_STATUS powerSrv_ReleasePS( TI_HANDLE hPowerSrv,
TI_BOOL sendNullDataOnExit,
void * powerSaveCBObject,
powerSaveCmpltCB_t powerSaveCompleteCB);
/**
* \author Assaf Azulay
* \date 24-Oct-2005\n
* \brief reflects the actual state of the state machine
*
* Function Scope \e Public.\n
* Parameters:\n
* 1) TI_HANDLE - handle to the powerSrv object.\n
* Return Value:\n
* TI_BOOL - thre is in PS false otherwise.\n
*/
TI_BOOL powerSrv_getPsStatus(TI_HANDLE hPowerSrv);
/**
* \author Assaf Azulay
* \date 24-Oct-2005\n
* \sets the rate as got from user else sets default value.\n
*
* Function Scope \e Public.\n
* Parameters:\n
* 1) TI_HANDLE - handle to the powerSrv object.\n
* 2) TI_UINT16 - desierd rate .\n
* Return Value:\n
* void.\n
*/
void powerSrv_SetRateModulation(TI_HANDLE hPowerSrv, TI_UINT16 rate);
/**
* \author Assaf Azulay
* \date 9-Mar-2006\n
* \brief Registers a failure event callback for scan error notifications.
*
* Function Scope \e Public.\n
* Parameters:\n
* - hPowerSrv - handle to the PowerSrv object.
* - failureEventCB - the failure event callback function.
* - hFailureEventObj - handle to the object passed to the failure event callback function.
*/
void powerSrvRegisterFailureEventCB( TI_HANDLE hPowerSrv,
void * failureEventCB, TI_HANDLE hFailureEventObj );
/**
* \date 03-Jul-2006\n
* \return the rate as it was seted by powerSrv_SetRateModulation.\n
*
* Function Scope \e Public.\n
* Parameters:\n
* 1) TI_HANDLE - handle to the powerSrv object.\n
* Return Value: TI_UINT16 - desierd rate .\n
* void.\n
*/
TI_UINT32 powerSrv_GetRateModulation(TI_HANDLE hPowerSrv);
TI_STATUS powerSrv_restart( TI_HANDLE hPowerSrv);
#endif /* _POWER_SRV_API_H_ */