1a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* 2a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * scr.h 3a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 4a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. 5a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * All rights reserved. 6a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 7a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Redistribution and use in source and binary forms, with or without 8a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * modification, are permitted provided that the following conditions 9a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * are met: 10a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 11a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * Redistributions of source code must retain the above copyright 12a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * notice, this list of conditions and the following disclaimer. 13a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * Redistributions in binary form must reproduce the above copyright 14a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * notice, this list of conditions and the following disclaimer in 15a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * the documentation and/or other materials provided with the 16a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * distribution. 17a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * * Neither the name Texas Instruments nor the names of its 18a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * contributors may be used to endorse or promote products derived 19a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * from this software without specific prior written permission. 20a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 21a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 33a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 34a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** \file scr.h 35a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief This file includes internal (private) definitions to the SCR module 36a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 37a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \see scrApi.h, scr.c 38a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 39a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 40a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 41a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#ifndef __SCR_H__ 42a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#define __SCR_H__ 43a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 44a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#include "scrApi.h" 45a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 46a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* 47a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 48a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Constant definitions. 49a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 50a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 51a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 52a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /* 53a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 54a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Enums. 55a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 56a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 57a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 58a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** \enum EScrClientState 59a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief enumerates the different states a client may be in .\n 60a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 61a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef enum 62a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 63a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt SCR_CS_IDLE = 0, /**< client is idle */ 64a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt SCR_CS_PENDING, /**< client is pending to use the channel */ 65a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt SCR_CS_RUNNING, /**< client is using the channel */ 66a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt SCR_CS_ABORTING /**< 67a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * client was using the channel, but was aborted, 68a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * and complete notification is expected. 69a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 70a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} EScrClientState; 71a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 72a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 73a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* 74a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 75a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Typedefs. 76a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 77a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 78a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 79a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* 80a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 81a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Structure definitions. 82a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 83a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 84a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 85a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** \struct TScrClient 86a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief This structure contains information for a specific client 87a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 88a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef struct 89a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 90a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt EScrClientState state[ SCR_RESOURCE_NUM_OF_RESOURCES ]; /**< the client current state, per resource */ 91a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TScrCB clientRequestCB; /**< the client's callback function */ 92a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE ClientRequestCBObj; /**< the client's object */ 93a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt EScePendReason currentPendingReason[ SCR_RESOURCE_NUM_OF_RESOURCES ]; 94a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /**< 95a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * the reason why this client is pending 96a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * (if at all) 97a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 98a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} TScrClient; 99a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 100a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** \struct TScr 101a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief This structure contains the SCR object data 102a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 103a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidttypedef struct 104a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt{ 105a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hOS; /**< a handle to the OS object */ 106a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_HANDLE hReport; /**< a handle to the report object */ 107a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_BOOL statusNotficationPending; /**< 108a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * whether the SCR is in the process of 109a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * notifying a status change to a client 110a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * (used to solve re-entrance problem) 111a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 112a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt EScrClientId runningClient[ SCR_RESOURCE_NUM_OF_RESOURCES ]; 113a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt /**< 114a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * The index of the current running client 115a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * (SCR_CID_NO_CLIENT if none), per resource 116a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 117a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt EScrGroupId currentGroup; /**< the current group */ 118a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt EScrModeId currentMode; /**< the current mode */ 119a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TScrClient clientArray[ SCR_CID_NUM_OF_CLIENTS ]; /**< array holding all clients' info */ 120a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt} TScr; 121a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 122a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 123a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/* 124a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 125a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * External functions definitions 126a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt *********************************************************************** 127a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 128a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt/** 129a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \\n 130a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \date 01-Dec-2004\n 131a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \brief Searches the client database for a client with matching state, from startFrom to endAt\n 132a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * 133a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * Function Scope \e Private.\n 134a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param hScr - handle to the SCR object.\n 135a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param requiredState - the state to match.\n 136a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param eResource - the resource to macth.\n 137a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param startFrom - the highest priority to begin searching from.\n 138a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \param endAt - the lowest priority to include in the search.\n 139a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt * \return the client ID if found, SCR_CID_NO_CLIENT if not found.\n 140a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt */ 141a615fb1650af6e111053506f1b764b28a5b4631dDmitry ShmidtEScrClientId scrFindHighest( TI_HANDLE hScr, 142a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt EScrClientState requiredState, 143a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt EScrResourceId eResource, 144a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT32 startFrom, 145a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt TI_UINT32 endAt ); 146a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt 147a615fb1650af6e111053506f1b764b28a5b4631dDmitry Shmidt#endif /* __SCR_H__ */ 148