summaryrefslogtreecommitdiff
path: root/wl1271/TWD/MacServices/PowerSrvSM.c
diff options
context:
space:
mode:
Diffstat (limited to 'wl1271/TWD/MacServices/PowerSrvSM.c')
-rw-r--r--wl1271/TWD/MacServices/PowerSrvSM.c814
1 files changed, 0 insertions, 814 deletions
diff --git a/wl1271/TWD/MacServices/PowerSrvSM.c b/wl1271/TWD/MacServices/PowerSrvSM.c
deleted file mode 100644
index 173a080f..00000000
--- a/wl1271/TWD/MacServices/PowerSrvSM.c
+++ /dev/null
@@ -1,814 +0,0 @@
-/*
- * PowerSrvSM.c
- *
- * 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 PowerSrvSM.c
- * \brief This is the PowerSrvSM module implementation.
- * \author Assaf Azulay
- * \date 19-OCT-2005
- */
-
-/****************************************************************************
- * *
- * MODULE: PowerSrvSM *
- * PURPOSE: PowerSrvSM Module implementation. *
- * *
- ****************************************************************************/
-
-#define __FILE_ID__ FILE_ID_114
-#include "tidef.h"
-#include "osApi.h"
-#include "timer.h"
-#include "fsm.h"
-#include "report.h"
-#include "TWDriver.h"
-#include "PowerSrvSM.h"
-#include "CmdBld.h"
-
-
-/*****************************************************************************
- ** Defines **
- *****************************************************************************/
-
-
-/*****************************************************************************
- ** structs **
- *****************************************************************************/
-
-
-/*****************************************************************************
- ** Private Function prototypes **
- *****************************************************************************/
-
-static TI_STATUS powerSrvSmSMEvent(TI_UINT8* pCurrentState,
- TI_UINT8 event,
- TI_HANDLE hPowerSrvSM);
-static TI_STATUS powerSrvSmDoUpdateRequest(TI_HANDLE hPowerSrvSM);
-static TI_STATUS powerSrvSmDoEnterPowerSave(TI_HANDLE hPowerSrvSM);
-static TI_STATUS powerSrvSmDoExitPowerSave(TI_HANDLE hPowerSrvSM);
-static TI_STATUS powerSrvSmDoPending(TI_HANDLE hPowerSrvSM);
-static TI_STATUS powerSrvSmDoAllready(TI_HANDLE hPowerSrvSM);
-static TI_STATUS powerSrvSMActionUnexpected(TI_HANDLE hPowerSrvSM);
-static TI_STATUS powerSrvSMSendMBXConfiguration(TI_HANDLE hPowerSrvSM, TI_BOOL PS_disableEnable);
-static void powerSrvSMTimerExpired (TI_HANDLE hPowerSrvSM, TI_BOOL bTwdInitOccured);
-
-/***************************************************************************************
- ** Public Function prototypes **
- ****************************************************************************************/
-
-
-/****************************************************************************************
- * powerSrvSM_create *
- ****************************************************************************************
-DESCRIPTION: Power Server SM module creation function, called by the Power Server create in creation phase
- performs the following:
- - Allocate the Power Server SM handle
- - Creates the fsm.
-
-INPUT: - hOs - Handle to OS
-
-
-OUTPUT:
-
-RETURN: Handle to the Power Server SM module on success, NULL otherwise
-****************************************************************************************/
-TI_HANDLE powerSrvSM_create(TI_HANDLE hOsHandle)
-{
- PowerSrvSM_t *pPowerSrvSM = NULL;
- fsm_stateMachine_t *pFsm = NULL;
- TI_STATUS status;
-
- pPowerSrvSM = (PowerSrvSM_t*) os_memoryAlloc (hOsHandle, sizeof(PowerSrvSM_t));
- if ( pPowerSrvSM == NULL )
- {
- WLAN_OS_REPORT(("%s(%d) - Memory Allocation Error!\n",__FUNCTION__,__LINE__));
- return NULL;
- }
-
- os_memoryZero (hOsHandle, pPowerSrvSM, sizeof(PowerSrvSM_t));
-
- pPowerSrvSM->hOS = hOsHandle;
-
- /* create the generic state-machine */
- status = fsm_Create(hOsHandle,
- &pFsm,
- (TI_UINT8)POWER_SRV_SM_STATE_NUM,
- (TI_UINT8)POWER_SRV_SM_EVENT_NUM);
- if ( status != TI_OK )
- {
- WLAN_OS_REPORT(("%s(%d) - Error in create FSM!\n",__FUNCTION__,__LINE__));
- powerSrvSM_destroy(pPowerSrvSM);
- return NULL;
- }
-
- pPowerSrvSM->hFSM = (TI_HANDLE)pFsm;
-
- return pPowerSrvSM;
-}
-
-
-/****************************************************************************************
- * powerSrvSM_destroy *
- ****************************************************************************************
-DESCRIPTION: Power Server SM module destroy function,
- - delete Power Server SM allocation
-
-
-INPUT: - hPowerSrvSM - Handle to the Power Server SM
-
-
-OUTPUT:
-
-RETURN: TI_STATUS - TI_OK on success else TI_NOK.
-****************************************************************************************/
-TI_STATUS powerSrvSM_destroy(TI_HANDLE hPowerSrvSM)
-{
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
-
- TI_HANDLE osHandle = pPowerSrvSM->hOS;
-
- /* free the timer */
- if (pPowerSrvSM->hPwrSrvSmTimer)
- {
- tmr_DestroyTimer (pPowerSrvSM->hPwrSrvSmTimer);
- }
-
- /* free the generic SM */
- if ( pPowerSrvSM->hFSM != NULL )
- {
- fsm_Unload(osHandle, (fsm_stateMachine_t*)pPowerSrvSM->hFSM);
- }
-
- /* free the Power Save SRV object */
- os_memoryFree(osHandle , pPowerSrvSM , sizeof(PowerSrvSM_t));
-
- return TI_OK;
-}
-
-
-/****************************************************************************************
-* powerSrvSM_init *
-****************************************************************************************
-DESCRIPTION: Power Server SM module initialize function, called by the Power Server init in configure phase
- performs the following:
- - init the Stet machine states.
- - set Active as start state.
-
-INPUT: - hPowerSrvSM - handle to the PowerSrvSM object.
- - hReport - handle to the Report object.
- - hCmdBld - handle to the Command Builder object.
- - hTimer - handle to the Timer module object.
-
-OUTPUT:
-RETURN: TI_STATUS - TI_OK on success else TI_NOK.
-****************************************************************************************/
-TI_STATUS powerSrvSM_init (TI_HANDLE hPowerSrvSM,
- TI_HANDLE hReport,
- TI_HANDLE hCmdBld,
- TI_HANDLE hTimer)
-{
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
-
- fsm_actionCell_t smMatrix[POWER_SRV_SM_STATE_NUM][POWER_SRV_SM_EVENT_NUM] =
- {
- /*
- next state and transition action for POWER_SRV_STATE_ACTIVE state
- */
- {
- /* POWER_SRV_EVENT_REQUEST_ACTIVE */
- {POWER_SRV_STATE_ACTIVE , powerSrvSmDoAllready},
-
- /* POWER_SRV_EVENT_REQUEST_PS */
- {POWER_SRV_STATE_PEND_PS , powerSrvSmDoEnterPowerSave},
-
- /* POWER_SRV_EVENT_SUCCESS */
- {POWER_SRV_STATE_ACTIVE , powerSrvSMActionUnexpected},
-
- /* POWER_SRV_EVENT_FAIL */
- {POWER_SRV_STATE_ACTIVE , powerSrvSMActionUnexpected}
-
- },
-
- /*
- next state and transition action for POWER_SRV_STATE_PEND_PS state
- */
- {
- /* POWER_SRV_EVENT_REQUEST_ACTIVE */
- {POWER_SRV_STATE_PEND_PS , powerSrvSmDoPending},
-
- /* POWER_SRV_EVENT_REQUEST_PS */
- {POWER_SRV_STATE_PEND_PS , powerSrvSmDoPending},
-
- /* POWER_SRV_EVENT_SUCCESS */
- {POWER_SRV_STATE_PS , powerSrvSmDoUpdateRequest},
-
- /* POWER_SRV_EVENT_FAIL */
- {POWER_SRV_STATE_ACTIVE , powerSrvSmDoUpdateRequest}
-
- },
- /*
- next state and transition action for POWER_SRV_STATE_PS state
- */
- {
- /* POWER_SRV_EVENT_REQUEST_ACTIVE */
- {POWER_SRV_STATE_PEND_ACTIVE , powerSrvSmDoExitPowerSave},
-
- /* POWER_SRV_EVENT_REQUEST_PS */
- {POWER_SRV_STATE_PS , powerSrvSmDoAllready},
-
- /* POWER_SRV_EVENT_SUCCESS */
- {POWER_SRV_STATE_PS , powerSrvSMActionUnexpected},
-
- /* POWER_SRV_EVENT_FAIL */
- {POWER_SRV_STATE_PS , powerSrvSMActionUnexpected}
-
- },
- /*
- next state and transition action for POWER_SRV_STATE_PEND_ACTIVE state
- */
- {
- /* POWER_SRV_EVENT_REQUEST_ACTIVE */
- {POWER_SRV_STATE_PEND_ACTIVE , powerSrvSmDoPending},
-
- /* POWER_SRV_EVENT_REQUEST_PS */
- {POWER_SRV_STATE_PEND_ACTIVE , powerSrvSmDoPending},
-
- /* POWER_SRV_EVENT_SUCCESS */
- {POWER_SRV_STATE_ACTIVE , powerSrvSmDoUpdateRequest},
-
- /* POWER_SRV_EVENT_FAIL */
- {POWER_SRV_STATE_ERROR_ACTIVE , powerSrvSmDoUpdateRequest}
-
- },
- /*
- next state and transition action for POWER_SRV_STATE_ERROR_ACTIVE state
- */
- {
- /* POWER_SRV_EVENT_REQUEST_ACTIVE */
- {POWER_SRV_STATE_PEND_ACTIVE , powerSrvSmDoExitPowerSave},
-
- /* POWER_SRV_EVENT_REQUEST_PS */
- {POWER_SRV_STATE_PEND_PS , powerSrvSmDoEnterPowerSave},
-
- /* POWER_SRV_EVENT_SUCCESS */
- {POWER_SRV_STATE_ERROR_ACTIVE , powerSrvSMActionUnexpected},
-
- /* POWER_SRV_EVENT_FAIL */
- {POWER_SRV_STATE_ERROR_ACTIVE , powerSrvSMActionUnexpected}
-
- },
-
- };
-
- pPowerSrvSM->hReport = hReport;
- pPowerSrvSM->hCmdBld = hCmdBld;
- pPowerSrvSM->hTimer = hTimer;
-
- /* create the timer */
- pPowerSrvSM->hPwrSrvSmTimer = tmr_CreateTimer (pPowerSrvSM->hTimer);
- if (pPowerSrvSM->hPwrSrvSmTimer == NULL)
- {
- TRACE0(pPowerSrvSM->hReport, REPORT_SEVERITY_ERROR, "powerSrvSM_init(): Failed to create hPwrSrvSmTimer!\n");
- return TI_NOK;
- }
-
- fsm_Config(pPowerSrvSM->hFSM,
- (fsm_Matrix_t)smMatrix,
- POWER_SRV_SM_STATE_NUM,
- POWER_SRV_SM_EVENT_NUM,
- powerSrvSmSMEvent,
- pPowerSrvSM->hOS);
-
- /*
- the PowerSrvSM start in active mode (POWER_SRV_STATE_ACTIVE)
- the PowerSrvSM::currentState must be sync with the PowerSrv::desiredPowerModeProfile (POWER_MODE_ACTIVE).
- */
- pPowerSrvSM->currentState = POWER_SRV_STATE_ACTIVE;
-
-
- /*
- Null packet rate : 2,5.5 M
- Probe Request : Not PBCC modulation, Long Preamble */
- pPowerSrvSM->NullPktRateModulation= (DRV_RATE_MASK_1_BARKER | DRV_RATE_MASK_2_BARKER);
-
- TRACE0(pPowerSrvSM->hReport, REPORT_SEVERITY_INIT, "PowerSrvSM Initialized\n");
-
- return TI_OK;
-}
-
-/****************************************************************************************
-* powerSrvSM_config *
-****************************************************************************************
-DESCRIPTION: Power Server SM module configuration function, called by the Power Server init in configure phase
- performs the following:
- - init the Stet machine states.
- - set Active as start state.
-
-INPUT: - hPowerSrvSM - handle to the PowerSrvSM object.
- - pPowerSrvInitParams - the Power Server initialize parameters.
-
-OUTPUT:
-RETURN: TI_STATUS - TI_OK on success else TI_NOK.
-****************************************************************************************/
-TI_STATUS powerSrvSM_config(TI_HANDLE hPowerSrvSM,
- TPowerSrvInitParams *pPowerSrvInitParams)
-{
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
-
- /*
- init PowerMgmtConfigration
- */
- pPowerSrvSM->hangOverPeriod = pPowerSrvInitParams->hangOverPeriod;
- pPowerSrvSM->numNullPktRetries = pPowerSrvInitParams->numNullPktRetries;
-
- return TI_OK;
-}
-/****************************************************************************************
- * powerSrvSM_SMApi *
- *****************************************************************************************
-DESCRIPTION: This function triggers events from the outside of the module into the state machine.
-
-
-INPUT: - hPowerSrvSM - handle to the PowerSrvSM object.
- - theSMEvent - event from TWD.
-
-
-OUTPUT:
-RETURN: TI_STATUS TI_OK / PENDING / TI_NOK
-****************************************************************************************/
-TI_STATUS powerSrvSM_SMApi(TI_HANDLE hPowerSrvSM,
- PowerSrvSMEvents_e theSMEvent)
-{
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
- TI_STATUS status;
-
- switch ( theSMEvent )
- {
- case POWER_SRV_EVENT_REQUEST_ACTIVE :
- case POWER_SRV_EVENT_REQUEST_PS :
- case POWER_SRV_EVENT_FAIL :
- case POWER_SRV_EVENT_SUCCESS :
-
- TRACE1(pPowerSrvSM->hReport, REPORT_SEVERITY_INFORMATION, "powerSrvSM_SMApi(%d) called - legal input parameter.\n",theSMEvent);
- break;
-
- default:
- TRACE1(pPowerSrvSM->hReport, REPORT_SEVERITY_WARNING, "powerSrvSM_SMApi(%d) called, input parameter is illegal.",theSMEvent);
- return TI_NOK;
- }
-
-
- status = powerSrvSmSMEvent((TI_UINT8*)&pPowerSrvSM->currentState,
- (TI_UINT8)theSMEvent,
- hPowerSrvSM);
-
- return status;
-}
-
-
-/****************************************************************************************
- * powerSrvSm_setSmRequest *
- *****************************************************************************************
-DESCRIPTION: This function sets the current SM working request.
-
-INPUT: - hPowerSrvSM - handle to the PowerSrvSM object.
- -powerSrvRequest_t* - pointer to the correct request in the Power server.
-
-OUTPUT:
-RETURN: TI_STATUS - TI_OK
-****************************************************************************************/
-TI_STATUS powerSrvSm_setSmRequest(TI_HANDLE hPowerSrvSM,powerSrvRequest_t* pSmRequest)
-{
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
- pPowerSrvSM->pSmRequest = pSmRequest;
- return TI_OK;
-}
-
-
-/****************************************************************************************
- * powerSrvSM_getCurrentState *
- *****************************************************************************************
-DESCRIPTION: This function returns the current state of the SM.
-
-
-INPUT: - hPowerSrvSM - handle to the PowerSrvSM object.
-
-
-OUTPUT:
-RETURN: PowerSrvSMStates_e current state
-****************************************************************************************/
-PowerSrvSMStates_e powerSrvSM_getCurrentState(TI_HANDLE hPowerSrvSM)
-{
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
-
- return pPowerSrvSM->currentState;
-}
-
-/****************************************************************************************
- * powerSrvSM_setRateModulation *
- *****************************************************************************************
-DESCRIPTION: This function sets the Rate Modulation
-
-
-INPUT: - hPowerSrvSM - handle to the PowerSrvSM object.
- - rateModulation - desired rate
-
-OUTPUT:
-RETURN: void
-****************************************************************************************/
-
-void powerSrvSM_setRateModulation(TI_HANDLE hPowerSrvSM, TI_UINT16 rateModulation)
-{
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
- pPowerSrvSM->NullPktRateModulation= rateModulation;
-}
-
-/****************************************************************************************
- * powerSrvSM_getRateModulation *
- *****************************************************************************************
-DESCRIPTION: This function sets the Rate Modulation
-
-
-INPUT: - hPowerSrvSM - handle to the PowerSrvSM object.
-
-OUTPUT:
-RETURN: - desired rate
-****************************************************************************************/
-
-TI_UINT32 powerSrvSM_getRateModulation(TI_HANDLE hPowerSrvSM)
-{
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
- return pPowerSrvSM->NullPktRateModulation;
-}
-
-/****************************************************************************************
- * powerSrvSM_printObject *
- *****************************************************************************************
-DESCRIPTION: This function prints the SM object
-
-
-INPUT: - hPowerSrvSM - handle to the PowerSrvSM object.
-
-
-OUTPUT:
-RETURN: void
-****************************************************************************************/
-void powerSrvSM_printObject(TI_HANDLE hPowerSrvSM)
-{
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
- char *pString;
-
- WLAN_OS_REPORT(("\n+++++ powerSrvSM_printObject +++++\n"));
- WLAN_OS_REPORT(("Handle to the CmdBld is 0x%08X\n", pPowerSrvSM->hCmdBld));
- WLAN_OS_REPORT(("Handle to the OS is 0x%08X\n", pPowerSrvSM->hOS));
- WLAN_OS_REPORT(("Handle to the Report is 0x%08X\n", pPowerSrvSM->hReport));
- WLAN_OS_REPORT(("Handle to the FSM is 0x%08X\n", pPowerSrvSM->hFSM));
-
- switch ( pPowerSrvSM->currentState )
- {
- case POWER_SRV_STATE_ACTIVE:
- pString = "POWER_SRV_STATE_ACTIVE";
- break;
-
- case POWER_SRV_STATE_PEND_PS:
- pString = "POWER_SRV_STATE_PEND_PS";
- break;
-
- case POWER_SRV_STATE_PS:
- pString = "POWER_SRV_STATE_PS";
- break;
-
- case POWER_SRV_STATE_PEND_ACTIVE:
- pString = "POWER_SRV_STATE_PEND_ACTIVE";
- break;
-
- case POWER_SRV_STATE_ERROR_ACTIVE:
- pString = "POWER_SRV_STATE_ERROR_ACTIVE";
- break;
-
-
- default:
- pString = "UNKWON PARAMETER";
- break;
- }
- WLAN_OS_REPORT(("The current state of the state machine is %s (=%d)\n",
- pString,
- pPowerSrvSM->currentState));
-
-}
-
-
-
-
-/*****************************************************************************
- ** Private Function prototypes **
- *****************************************************************************/
-
-
-
-
-
-
-/****************************************************************************************
- * powerSrvSmDoEnterPowerSave *
- *****************************************************************************************
-DESCRIPTION: This function is an action of the state machine to move from active state to PS
-
-INPUT: - hPowerSrvSM - handle to the PowerSrvSM object.
-
-OUTPUT:
-RETURN: TI_STATUS - TI_OK / TI_NOK
-****************************************************************************************/
-
-static TI_STATUS powerSrvSmDoEnterPowerSave(TI_HANDLE hPowerSrvSM)
-{
- TI_STATUS status;
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
- pPowerSrvSM->pSmRequest->requestState = RUNNING_REQUEST;
- status = powerSrvSMSendMBXConfiguration(hPowerSrvSM, TI_TRUE);
- return status;
-}
-
-
-/****************************************************************************************
- * powerSrvSmDoExitPowerSave *
- *****************************************************************************************
-DESCRIPTION: This function is an action of the state machine to move from PS state to Active
-
-INPUT: - hPowerSrvSM - handle to the PowerSrvSM object.
-
-OUTPUT:
-RETURN: TI_STATUS - TI_OK / TI_NOK
-****************************************************************************************/
-static TI_STATUS powerSrvSmDoExitPowerSave(TI_HANDLE hPowerSrvSM)
-{
- TI_STATUS status;
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
- pPowerSrvSM->pSmRequest->requestState = RUNNING_REQUEST;
- status = powerSrvSMSendMBXConfiguration(hPowerSrvSM, TI_FALSE);
- return status;
-}
-
-
-/****************************************************************************************
- * powerSrvSmDoUpdateRequest *
- *****************************************************************************************
-DESCRIPTION: This function is an action of the state machine to update a request when the SM
- is already in the requested state is already
-
-INPUT: - hPowerSrvSM - handle to the PowerSrvSM object.
-
-OUTPUT:
-RETURN: TI_STATUS - TI_OK / TI_NOK
-****************************************************************************************/
-
-static TI_STATUS powerSrvSmDoUpdateRequest(TI_HANDLE hPowerSrvSM)
-{
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
-
- /* request has completed - stop the guard timer */
- tmr_StopTimer (pPowerSrvSM->hPwrSrvSmTimer);
-
- /*powerSrv_SetRequestState will update the correct request (acording to the current active request)*/
- if ( pPowerSrvSM->pSmRequest->requestState == RUNNING_REQUEST )
- {
- pPowerSrvSM->pSmRequest->requestState = HANDLED_REQUEST;
- }
-
- return TI_OK;
-}
-
-
-/****************************************************************************************
- * powerSrvSmDoPending *
- *****************************************************************************************
-DESCRIPTION: This function is an action of the state machine returns Pending in case that there is a request
- waiting to be finished (already sent to FW)
-
-INPUT: - hPowerSrvSM - handle to the PowerSrvSM object.
-
-OUTPUT:
-RETURN: TI_STATUS - PENDING
-****************************************************************************************/
-
-static TI_STATUS powerSrvSmDoPending(TI_HANDLE hPowerSrvSM)
-{
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
-
- /*powerSrv_SetRequestState will check the mode and will update the correct request (Driver of user)*/
- pPowerSrvSM->pSmRequest->requestState = PENDING_REQUEST;
- return POWER_SAVE_802_11_PENDING;
-}
-
-
-
-/****************************************************************************************
- * powerSrvSmDoAllready *
- *****************************************************************************************
-DESCRIPTION: This function is an action of the state machine stays in the same state since it the requested
- one in the request
-
-INPUT: - hPowerSrvSM - handle to the PowerSrvSM object.
-
-OUTPUT:
-RETURN: TI_STATUS - TI_OK
-****************************************************************************************/
-static TI_STATUS powerSrvSmDoAllready(TI_HANDLE hPowerSrvSM)
-{
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
-
- /*powerSrv_SetRequestState will check the mode and will update the correct request (Driver of user)*/
- pPowerSrvSM->pSmRequest->requestState = HANDLED_REQUEST;
- return POWER_SAVE_802_11_IS_CURRENT;
-}
-
-
-/****************************************************************************************
- * powerSrvSMActionUnexpected *
- *****************************************************************************************
-DESCRIPTION: This function is an action of the state machine stays in the same state and return that action
- was not expected
-
-INPUT: - hPowerSrvSM - handle to the PowerSrvSM object.
-
-OUTPUT:
-RETURN: TI_STATUS - TI_OK
-****************************************************************************************/
-static TI_STATUS powerSrvSMActionUnexpected(TI_HANDLE hPowerSrvSM)
-{
-#ifdef TI_DBG
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
-
- TRACE0(pPowerSrvSM->hReport, REPORT_SEVERITY_ERROR, "called: powerSrvSMActionUnexpected");
-#endif /* TI_DBG */
-
- return TI_OK;
-}
-
-
-/****************************************************************************************
- * powerSrvSmSMEvent *
- *****************************************************************************************
-DESCRIPTION: This function is the manager of the state macine. its move the state machine
- from one state to the other depend on the receive event, and call to the appropriate
- action (function) for the move between the states.
-
-INPUT: - pCurrentState
- - event
- - hPowerSrvSM - handle to the PowerSrvSM object.
-
-OUTPUT:
-RETURN: TI_STATUS
-****************************************************************************************/
-static TI_STATUS powerSrvSmSMEvent(TI_UINT8* pCurrentState,
- TI_UINT8 event,
- TI_HANDLE hPowerSrvSM)
-{
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
- TI_STATUS status = TI_OK;
- TI_UINT8 nextState;
-
- status = fsm_GetNextState((fsm_stateMachine_t*)pPowerSrvSM->hFSM,
- (TI_UINT8)pPowerSrvSM->currentState,
- event,
- &nextState);
- if ( status != TI_OK )
- {
- TRACE0(pPowerSrvSM->hReport, REPORT_SEVERITY_SM, "PowerSrvSM - State machine error, failed getting next state\n");
- return(status);
- }
-
-
- TRACE3( pPowerSrvSM->hReport, REPORT_SEVERITY_INFORMATION, "powerSrvSmSMEvent: <currentState = %d, event = %d> --> nextState = %d\n", *pCurrentState, event, nextState);
-
- status = fsm_Event(pPowerSrvSM->hFSM,
- pCurrentState,
- event,
- (void*)pPowerSrvSM);
-
- return status;
-}
-
-
-/****************************************************************************************
-* powerSrvSMSendMBXConfiguration *
-*****************************************************************************************
-DESCRIPTION: This function send configuration of the power save option that holds in the command
- mailbox inner sturcture.
-
-INPUT: - hPowerSrvSM - handle to the PowerSrvSM object.
- - PS_disableEnable - true = PS , false = active
-
-OUTPUT:
-RETURN: TI_STATUS
-****************************************************************************************/
-static TI_STATUS powerSrvSMSendMBXConfiguration(TI_HANDLE hPowerSrvSM, TI_BOOL PS_disableEnable)
-{
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
- TPowerSaveParams powerSaveParams;
- TI_STATUS status;
-
- /*setting the params for the Hal*/
- powerSaveParams.hangOverPeriod = pPowerSrvSM->hangOverPeriod;
- powerSaveParams.numNullPktRetries = pPowerSrvSM->numNullPktRetries;
- powerSaveParams.NullPktRateModulation = pPowerSrvSM->NullPktRateModulation;
- powerSaveParams.needToSendNullData = pPowerSrvSM->pSmRequest->sendNullDataOnExit;
- powerSaveParams.ps802_11Enable = PS_disableEnable;
-
- /* start the FW guard timer, which is used to protect from FW stuck */
- tmr_StartTimer (pPowerSrvSM->hPwrSrvSmTimer,
- powerSrvSMTimerExpired,
- (TI_HANDLE)pPowerSrvSM,
- POWER_SAVE_GUARD_TIME_MS,
- TI_FALSE);
-
- /* that command should be sent to FW just in case we moved from Active to one of the PS modes
- * and vice versa, it shoul not be sent when moving between different PS modes */
- status = cmdBld_CmdSetPsMode (pPowerSrvSM->hCmdBld,
- &powerSaveParams,
- (void *)pPowerSrvSM->pSmRequest->powerSaveCmdResponseCB,
- (pPowerSrvSM->pSmRequest->powerSaveCmdResponseCB == NULL) ? NULL : pPowerSrvSM->pSmRequest->powerSaveCBObject);
-
- if ( status != TI_OK )
- {
- TRACE0(pPowerSrvSM->hReport, REPORT_SEVERITY_ERROR, "Error in configuring Power Manager paramters!\n");
- }
-
- return status;
-}
-
-/****************************************************************************************
-* powerSrvSMTimerExpired *
-*****************************************************************************************
-DESCRIPTION: This function is called upon timer expiry - when the FW has not returned
- a response within the defined tme (50 ms)
-
-INPUT: hPowerSrvSM - handle to the PowerSrvSM object.
- bTwdInitOccured - Indicates if TWDriver recovery occured since timer started
-
-OUTPUT: None
-
-RETURN: None
-****************************************************************************************/
-static void powerSrvSMTimerExpired (TI_HANDLE hPowerSrvSM, TI_BOOL bTwdInitOccured)
-{
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
-
- /* Print an error message */
- TRACE0(pPowerSrvSM->hReport, REPORT_SEVERITY_ERROR, "PS guard timer expired!\n");
-
- /* Call the error notification callback (triggering recovery) */
- pPowerSrvSM->failureEventCB( pPowerSrvSM->hFailureEventObj ,POWER_SAVE_FAILURE );
-}
-
-/****************************************************************************************
- * powerSrvRegisterFailureEventCB *
- ****************************************************************************************
-DESCRIPTION: Registers a failure event callback for PS SM error notifications.
-
-
-INPUT: - hPowerSrv - handle to the PowerSrv object.
- - failureEventCB - the failure event callback function.\n
- - hFailureEventObj - handle to the object passed to the failure event callback function.
-
-OUTPUT:
-RETURN: void.
-****************************************************************************************/
-void powerSrvSM_RegisterFailureEventCB( TI_HANDLE hPowerSrvSM,
- void *failureEventCB, TI_HANDLE hFailureEventObj )
-{
- PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)hPowerSrvSM;
-
- pPowerSrvSM->failureEventCB = (TFailureEventCb)failureEventCB;
- pPowerSrvSM->hFailureEventObj = hFailureEventObj;
-}
-