/* * scr.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 scr.h * \brief This file includes internal (private) definitions to the SCR module * * \see scrApi.h, scr.c */ #ifndef __SCR_H__ #define __SCR_H__ #include "scrApi.h" /* *********************************************************************** * Constant definitions. *********************************************************************** */ /* *********************************************************************** * Enums. *********************************************************************** */ /** \enum EScrClientState * \brief enumerates the different states a client may be in .\n */ typedef enum { SCR_CS_IDLE = 0, /**< client is idle */ SCR_CS_PENDING, /**< client is pending to use the channel */ SCR_CS_RUNNING, /**< client is using the channel */ SCR_CS_ABORTING /**< * client was using the channel, but was aborted, * and complete notification is expected. */ } EScrClientState; /* *********************************************************************** * Typedefs. *********************************************************************** */ /* *********************************************************************** * Structure definitions. *********************************************************************** */ /** \struct TScrClient * \brief This structure contains information for a specific client */ typedef struct { EScrClientState state[ SCR_RESOURCE_NUM_OF_RESOURCES ]; /**< the client current state, per resource */ TScrCB clientRequestCB; /**< the client's callback function */ TI_HANDLE ClientRequestCBObj; /**< the client's object */ EScePendReason currentPendingReason[ SCR_RESOURCE_NUM_OF_RESOURCES ]; /**< * the reason why this client is pending * (if at all) */ } TScrClient; /** \struct TScr * \brief This structure contains the SCR object data */ typedef struct { TI_HANDLE hOS; /**< a handle to the OS object */ TI_HANDLE hReport; /**< a handle to the report object */ TI_BOOL statusNotficationPending; /**< * whether the SCR is in the process of * notifying a status change to a client * (used to solve re-entrance problem) */ EScrClientId runningClient[ SCR_RESOURCE_NUM_OF_RESOURCES ]; /**< * The index of the current running client * (SCR_CID_NO_CLIENT if none), per resource */ EScrGroupId currentGroup; /**< the current group */ EScrModeId currentMode; /**< the current mode */ TScrClient clientArray[ SCR_CID_NUM_OF_CLIENTS ]; /**< array holding all clients' info */ } TScr; /* *********************************************************************** * External functions definitions *********************************************************************** */ /** * \\n * \date 01-Dec-2004\n * \brief Searches the client database for a client with matching state, from startFrom to endAt\n * * Function Scope \e Private.\n * \param hScr - handle to the SCR object.\n * \param requiredState - the state to match.\n * \param eResource - the resource to macth.\n * \param startFrom - the highest priority to begin searching from.\n * \param endAt - the lowest priority to include in the search.\n * \return the client ID if found, SCR_CID_NO_CLIENT if not found.\n */ EScrClientId scrFindHighest( TI_HANDLE hScr, EScrClientState requiredState, EScrResourceId eResource, TI_UINT32 startFrom, TI_UINT32 endAt ); #endif /* __SCR_H__ */