Home | History | Annotate | Download | only in MacServices
      1 /*
      2  * PowerSrvSM.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 PowerSrvSM.h
     35  *  \brief This is the PowerSrv module API.
     36  *  \author Assaf Azulay
     37  *  \date 6-Oct-2005
     38  */
     39 
     40 /****************************************************************************
     41  *                                                                                                        *
     42  *   MODULE:  PowerSrv                                                                              *
     43  *   PURPOSE: Power Server State machine API                                                    *
     44  *                                                                                                              *
     45  ****************************************************************************/
     46 
     47 #ifndef _POWER_SRV_SM_H_
     48 #define _POWER_SRV_SM_H_
     49 
     50 #include "PowerSrv_API.h"
     51 #include "PowerSrv.h"
     52 
     53 
     54 
     55 /*****************************************************************************
     56  **         Constants                                                       **
     57  *****************************************************************************/
     58 
     59 #define POWER_SAVE_GUARD_TIME_MS            5000       /* The gaurd time used to protect from FW stuck */
     60 
     61 /*****************************************************************************
     62  **         Enumerations                                                    **
     63  *****************************************************************************/
     64 
     65 /** \enum PowerSrvSMEvents_e */
     66 typedef enum
     67 {
     68         POWER_SRV_EVENT_REQUEST_ACTIVE ,
     69     POWER_SRV_EVENT_REQUEST_PS ,
     70     POWER_SRV_EVENT_SUCCESS,
     71     POWER_SRV_EVENT_FAIL ,
     72     POWER_SRV_SM_EVENT_NUM
     73 }PowerSrvSMEvents_e;
     74 
     75 /** \enum PowerSrvSMStates_e */
     76 typedef enum
     77 {
     78     POWER_SRV_STATE_ACTIVE = 0,
     79     POWER_SRV_STATE_PEND_PS ,
     80     POWER_SRV_STATE_PS ,
     81     POWER_SRV_STATE_PEND_ACTIVE ,
     82     POWER_SRV_STATE_ERROR_ACTIVE,
     83     POWER_SRV_SM_STATE_NUM
     84 }PowerSrvSMStates_e;
     85 
     86 
     87 
     88 /*****************************************************************************
     89  **         Structures                                                      **
     90  *****************************************************************************/
     91 
     92 /** \struct PowerSrvSM_t */
     93 typedef struct
     94 {
     95     TI_HANDLE               hCmdBld;                    /**<
     96                                                          * Handle to the power controller object via the command builder.
     97                                                          * Need for configure the desired power mode policy in the system.
     98                                                          */
     99 
    100     TI_HANDLE               hOS;                        /**< Handle to the OS object. */
    101 
    102     TI_HANDLE               hReport;                    /**< Handle to the Report module. */
    103 
    104     TI_HANDLE               hFSM;                       /**< Handle to the State machine module. */
    105 
    106     TI_HANDLE               hTimer;                     /**< Handle to the Timer module. */
    107 
    108     TI_HANDLE               hPwrSrvSmTimer;             /**< Guard timer for PS commands sent to the FW */
    109 
    110     PowerSrvSMStates_e      currentState;               /**< the current state of the state machine. */
    111 
    112     powerSrvRequest_t*      pSmRequest;                 /**< pointer to the relevant request in the power server. */
    113 
    114     TI_UINT8                hangOverPeriod;             /**< parameter for the FW */
    115 
    116     TI_UINT8                numNullPktRetries;          /**< parameter for the FW */
    117 
    118     EHwRateBitFiled         NullPktRateModulation;      /**< parameter for the FW */
    119 
    120     TFailureEventCb         failureEventCB;             /**< Failure event callback */
    121 
    122     TI_HANDLE               hFailureEventObj;           /**< Failure event object (supplied to the above callback) */
    123 } PowerSrvSM_t;
    124 
    125 
    126 
    127 
    128 
    129 
    130 
    131 /*****************************************************************************
    132  **         External data definitions                                       **
    133  *****************************************************************************/
    134 
    135 
    136 /*****************************************************************************
    137  **         External functions definitions                                  **
    138  *****************************************************************************/
    139 
    140 
    141 /*****************************************************************************
    142  **         Public Function prototypes                                      **
    143  *****************************************************************************/
    144 
    145 /**
    146  * \author Assaf Azulay
    147  * \date 6-Oct-2005\n
    148  * \brief Creates the object of the PowerSrv.
    149  *
    150  * Function Scope \e Public.\n
    151  * Parameters:\n
    152  * 1) TI_HANDLE - handle to the OS.\n
    153  * Return Value: TI_HANDLE - handle to the PowerSrv object.\n
    154  */
    155 TI_HANDLE powerSrvSM_create(TI_HANDLE hOsHandle);
    156 
    157 /**
    158  * \author Assaf Azulay
    159  * \date 6-Oct-2005\n
    160  * \brief Destroy the object of the PowerSrvSM.
    161  *
    162  * Function Scope \e Public.\n
    163  * Parameters:\n
    164  * 1) TI_HANDLE - handle to the PowerSrv object.\n
    165  * Return Value: TI_STATUS - TI_OK on success else TI_NOK.\n
    166  */
    167 TI_STATUS powerSrvSM_destroy(TI_HANDLE thePowerSrvSMHandle);
    168 
    169 /**
    170  * \author Assaf Azulay
    171  * \date 6-Oct-2005\n
    172  * \brief Initialize the PowerSrvSM module.
    173  *
    174  * Function Scope \e Public.\n
    175  * Parameters:\n
    176  * 1) TI_HANDLE - handle to the PowerSrvSM object.\n
    177  * 2) TI_HANDLE - handle to the Report object.
    178  * 3) TI_HANDLE - handle to the Command Builder object.
    179  * 4) TI_HANDLE - handle to the Timer module object.
    180  * Return Value: TI_STATUS - TI_OK on success else TI_NOK.\n
    181  */
    182 TI_STATUS powerSrvSM_init (TI_HANDLE hPowerSrvSM,
    183                            TI_HANDLE hReport,
    184                            TI_HANDLE hCmdBld,
    185                            TI_HANDLE hTimer);
    186 
    187 TI_STATUS powerSrvSM_config(TI_HANDLE hPowerSrvSM,
    188                             TPowerSrvInitParams *pPowerSrvInitParams);
    189 /**
    190  * \author Assaf Azulay
    191  * \date 6-Oct-2005\n
    192  * \brief return the component version.
    193  *
    194  * Function Scope \e Public.\n
    195  * Parameters:\n
    196  * 1) TI_HANDLE - handle to the PowerSrvSM object.\n
    197  * Return Value: TI_UINT32 - component version code.\n
    198  */
    199 
    200 TI_STATUS powerSrvSM_SMApi(TI_HANDLE hPowerSrvSM,
    201                                             PowerSrvSMEvents_e theSMEvent);
    202 
    203 
    204 /**
    205  * \author Assaf Azulay
    206  * \date 020-Oct-2005\n
    207  * \brief This function sets the current SM working request.\n
    208  *
    209  * Function Scope \e Public.\n
    210  * Parameters:\n
    211  * 1) TI_HANDLE - handle to the PowerSrvSM object.\n
    212  * 2) powerSrvRequest_t* pSmRequest - desierd request./n
    213  * Return Value: TI_STATUS -  TI_OK.\n
    214  */
    215 TI_STATUS powerSrvSm_setSmRequest(TI_HANDLE hPowerSrvSM,powerSrvRequest_t* pSmRequest);
    216 
    217 
    218 
    219 /**
    220  * \author Assaf Azulay
    221  * \date 09-Jun-2004\n
    222  * \brief get the current state of the state machine.
    223  *
    224  * Function Scope \e Public.\n
    225  * Parameters:\n
    226  * 1) TI_HANDLE - handle to the PowerSrvSM object.\n
    227  * Return Value: PowerCtrlSMStates_e.\n
    228  */
    229 PowerSrvSMStates_e powerSrvSM_getCurrentState(TI_HANDLE hPowerSrvSM);
    230 
    231 
    232 /**
    233  * \author Assaf Azulay
    234  * \date 20-July-2004\n
    235  * \brief sets rate modulation
    236  *
    237  * Function Scope \e Public.\n
    238  * Parameters:\n
    239  * 1) TI_HANDLE - handle to the PowerSrvSM object.\n
    240  * 2) rate_e rate modulation
    241  * Return Value: void.\n
    242  */
    243 void powerSrvSM_setRateModulation(TI_HANDLE hPowerSrvSM, TI_UINT16 rateModulation);
    244 
    245 /**
    246  * \brief sets rate modulation
    247  *
    248  * Function Scope \e Public.\n
    249  * Parameters:\n
    250  * 1) TI_HANDLE - handle to the PowerSrvSM object.\n*
    251  * Return Value: TI_UINT16 Rate.\n
    252  */
    253 TI_UINT32 powerSrvSM_getRateModulation(TI_HANDLE hPowerSrvSM);
    254 
    255 /**
    256  * \author Assaf Azulay
    257  * \date 20-July-2004\n
    258  * \brief print configuration of the PowerSrvSM object - use for debug!
    259  *
    260  * Function Scope \e Public.\n
    261  * Parameters:\n
    262  * 1) TI_HANDLE - handle to the PowerSrvSM object.\n
    263  * Return Value: void.\n
    264  */
    265 void powerSrvSM_printObject(TI_HANDLE hPowerSrvSM);
    266 
    267 /**
    268  * \author Ronen Kalish
    269  * \date 21-August-2006\n
    270  * \brief Registers a failure event callback for power save error notifications (timer expiry).\n
    271  *
    272  * Function Scope \e Public.\n
    273  * Parameters:\n
    274  * - hPowerSrvSM      - handle to the PowerSrv object.
    275  * - failureEventCB     - the failure event callback function.
    276  * - hFailureEventObj   - handle to the object passed to the failure event callback function.
    277 */
    278 void powerSrvSM_RegisterFailureEventCB( TI_HANDLE hPowerSrvSM,
    279                                         void* failureEventCB, TI_HANDLE hFailureEventObj );
    280 #endif /*  _POWER_SRV_SM_H_  */
    281 
    282