Home | History | Annotate | Download | only in Sta_Management
      1 /*
      2  * scr.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  scr.h
     35  *  \brief This file includes internal (private) definitions to the SCR module
     36  *
     37  *  \see   scrApi.h, scr.c
     38  */
     39 
     40 
     41 #ifndef __SCR_H__
     42 #define __SCR_H__
     43 
     44 #include "scrApi.h"
     45 
     46 /*
     47  ***********************************************************************
     48  *  Constant definitions.
     49  ***********************************************************************
     50  */
     51 
     52  /*
     53  ***********************************************************************
     54  *  Enums.
     55  ***********************************************************************
     56  */
     57 
     58 /** \enum EScrClientState
     59  * \brief enumerates the different states a client may be in .\n
     60  */
     61 typedef enum
     62 {
     63     SCR_CS_IDLE = 0,    /**< client is idle */
     64     SCR_CS_PENDING,     /**< client is pending to use the channel */
     65     SCR_CS_RUNNING,     /**< client is using the channel */
     66     SCR_CS_ABORTING     /**<
     67                          * client was using the channel, but was aborted,
     68                          * and complete notification is expected.
     69                          */
     70 } EScrClientState;
     71 
     72 
     73 /*
     74  ***********************************************************************
     75  *  Typedefs.
     76  ***********************************************************************
     77  */
     78 
     79 /*
     80  ***********************************************************************
     81  *  Structure definitions.
     82  ***********************************************************************
     83  */
     84 
     85 /** \struct TScrClient
     86  * \brief This structure contains information for a specific client
     87  */
     88 typedef struct
     89 {
     90     EScrClientState     state[ SCR_RESOURCE_NUM_OF_RESOURCES ];     /**< the client current state, per resource */
     91     TScrCB              clientRequestCB;                            /**< the client's callback function */
     92     TI_HANDLE           ClientRequestCBObj;                         /**< the client's object */
     93     EScePendReason      currentPendingReason[ SCR_RESOURCE_NUM_OF_RESOURCES ];
     94                                                                     /**<
     95                                                                      * the reason why this client is pending
     96                                                                      * (if at all)
     97                                                                      */
     98 } TScrClient;
     99 
    100 /** \struct TScr
    101  * \brief This structure contains the SCR object data
    102  */
    103 typedef struct
    104 {
    105     TI_HANDLE               hOS;                                    /**< a handle to the OS object */
    106     TI_HANDLE               hReport;                                /**< a handle to the report object */
    107     TI_BOOL                 statusNotficationPending;               /**<
    108                                                                      * whether the SCR is in the process of
    109                                                                      * notifying a status change to a client
    110                                                                      * (used to solve re-entrance problem)
    111                                                                      */
    112     EScrClientId            runningClient[ SCR_RESOURCE_NUM_OF_RESOURCES ];
    113                                                                     /**<
    114                                                                      * The index of the current running client
    115                                                                      * (SCR_CID_NO_CLIENT if none), per resource
    116                                                                      */
    117     EScrGroupId             currentGroup;                           /**< the current group */
    118     EScrModeId              currentMode;                            /**< the current mode */
    119     TScrClient              clientArray[ SCR_CID_NUM_OF_CLIENTS ];  /**< array holding all clients' info */
    120 } TScr;
    121 
    122 
    123 /*
    124  ***********************************************************************
    125  *  External functions definitions
    126  ***********************************************************************
    127  */
    128 /**
    129  * \\n
    130  * \date 01-Dec-2004\n
    131  * \brief Searches the client database for a client with matching state, from startFrom to endAt\n
    132  *
    133  * Function Scope \e Private.\n
    134  * \param hScr - handle to the SCR object.\n
    135  * \param requiredState - the state to match.\n
    136  * \param eResource - the resource to macth.\n
    137  * \param startFrom - the highest priority to begin searching from.\n
    138  * \param endAt - the lowest priority to include in the search.\n
    139  * \return the client ID if found, SCR_CID_NO_CLIENT if not found.\n
    140  */
    141 EScrClientId scrFindHighest( TI_HANDLE hScr,
    142                              EScrClientState requiredState,
    143                              EScrResourceId eResource,
    144                              TI_UINT32 startFrom,
    145                              TI_UINT32 endAt );
    146 
    147 #endif /* __SCR_H__ */
    148