Home | History | Annotate | Download | only in scr
      1 /** \file Scr.h
      2  *  \brief This file includes internal (private) definitions to the SCR module
      3  *  \author Ronen Kalish
      4  *  \date 01-Dec-2004
      5  */
      6 /****************************************************************************
      7 **+-----------------------------------------------------------------------+**
      8 **|                                                                       |**
      9 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
     10 **| All rights reserved.                                                  |**
     11 **|                                                                       |**
     12 **| Redistribution and use in source and binary forms, with or without    |**
     13 **| modification, are permitted provided that the following conditions    |**
     14 **| are met:                                                              |**
     15 **|                                                                       |**
     16 **|  * Redistributions of source code must retain the above copyright     |**
     17 **|    notice, this list of conditions and the following disclaimer.      |**
     18 **|  * Redistributions in binary form must reproduce the above copyright  |**
     19 **|    notice, this list of conditions and the following disclaimer in    |**
     20 **|    the documentation and/or other materials provided with the         |**
     21 **|    distribution.                                                      |**
     22 **|  * Neither the name Texas Instruments nor the names of its            |**
     23 **|    contributors may be used to endorse or promote products derived    |**
     24 **|    from this software without specific prior written permission.      |**
     25 **|                                                                       |**
     26 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
     27 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
     28 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
     29 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
     30 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
     31 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
     32 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
     33 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
     34 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
     35 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
     36 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
     37 **|                                                                       |**
     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 scr_clientState_e
     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 } scr_clientState_e;
     71 
     72 
     73 /*
     74  ***********************************************************************
     75  *	Typedefs.
     76  ***********************************************************************
     77  */
     78 
     79 /*
     80  ***********************************************************************
     81  *	Structure definitions.
     82  ***********************************************************************
     83  */
     84 
     85 /** \struct scr_client_t
     86  * \brief This structure contains information for a specific client
     87  */
     88 typedef struct
     89 {
     90 	scr_clientState_e 	state;                                      /**< the client current state */
     91 	scr_callback_t		clientRequestCB;                            /**< the client's callback function */
     92 	TI_HANDLE		    ClientRequestCBObj;                         /**< the client's object */
     93     scr_pendReason_e    currentPendingReason;                       /**<
     94                                                                      * the reason why this client is pending
     95                                                                      * (if at all)
     96                                                                      */
     97 } scr_client_t;
     98 
     99 /** \struct scr_t
    100  * \brief This structure contains the SCR object data
    101  */
    102 typedef struct
    103 {
    104     TI_HANDLE		        hOS;                                    /**< a handle to the OS object */
    105     TI_HANDLE               hReport;                                /**< a handle to the report object */
    106 	BOOLEAN		            statusNotficationPending;               /**<
    107                                                                      * whether the SCR is in the process of
    108                                                                      * notifying a status change to a client
    109                                                                      * (used to solve re-entrance problem)
    110                                                                      */
    111     scr_clientId_e          runningClient;                          /**<
    112                                                                      * The index of the current running client
    113                                                                      * (-1 if none)
    114                                                                      */
    115     scr_groupId_e           currentGroup;                           /**< the current group */
    116 	scr_modeId_e			currentMode;							/**< the current mode */
    117     scr_client_t	        clientArray[ SCR_CID_NUM_OF_CLIENTS ];  /**< array holding all clients' info */
    118 } scr_t;
    119 
    120 
    121 /*
    122  ***********************************************************************
    123  *	External functions definitions
    124  ***********************************************************************
    125  */
    126 /**
    127  * \author Ronen Kalish\n
    128  * \date 01-Dec-2004\n
    129  * \brief Searches the client database for a client with matching state, from startFrom to endAt\n
    130  *
    131  * Function Scope \e Private.\n
    132  * \param hScr - handle to the SCR object.\n
    133  * \param requiredState - the state to match.\n
    134  * \param startFrom - the highest priority to begin searching from.\n
    135  * \param endAt - the lowest priority to include in the search.\n
    136  * \return the client ID if found, SCR_CID_NO_CLIENT otherwise.\n
    137  */
    138 INT8 scrFindHighest( TI_HANDLE hScr,
    139                      scr_clientState_e requiredState,
    140                      int startFrom,
    141                      int endAt );
    142 
    143 #endif /* __SCR_H__ */
    144