1855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/* 2855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project 3855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * 4855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License"); 5855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * you may not use this file except in compliance with the License. 6855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * You may obtain a copy of the License at 7855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * 8855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * http://www.apache.org/licenses/LICENSE-2.0 9855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * 10855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * Unless required by applicable law or agreed to in writing, software 11855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS, 12855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * See the License for the specific language governing permissions and 14855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * limitations under the License. 15855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi */ 16855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/** 17855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi ************************************************************************ 18855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @file M4OSA_OptionID.h 19855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @ingroup OSAL 20855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @brief Option ID macros 21855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * @note This file defines macros to generate and analyze option ID. 22855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * Option ID is used by M4YYY_ZZsetOption() and 23855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi * M4YYY_ZZgetOption() functions. 24855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi ************************************************************************ 25855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi*/ 26855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 27855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#ifndef M4OSA_OPTIONID_H 28855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define M4OSA_OPTIONID_H 29855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 30855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 31855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#include "M4OSA_Types.h" 32855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 33855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/** M4OSA_OptionID is a 32 bits unsigned integer. 34855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi- Right access (2 bits): Some options may have read only, write only or read 35855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi and write access 36855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi- Core ID (14 bits): It is a unique ID for each core component 37855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi- SubOption ID (16 bits): To select which option in a specific core component 38855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi*/ 39855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargitypedef M4OSA_UInt32 M4OSA_OptionID; 40855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargitypedef void* M4OSA_DataOption; 41855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 42855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define M4_READ 0x01 43855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define M4_WRITE 0x02 44855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define M4_READWRITE 0x03 45855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 46855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/* Macro to process M4OSA_OptionID */ 47855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 48855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/** This macro creates an optionID given read/write access, 49855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi coreID and SubOptionID*/ 50855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define M4OSA_OPTION_ID_CREATE(right, coreID, errorID)\ 51855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi (M4OSA_Int32)((((((M4OSA_UInt32)right)&0x03)<<30))+((((M4OSA_UInt32)coreID)&0x003FFF)<<16)+(((M4OSA_UInt32)errorID)&0x00FFFF)) 52855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 53855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/** This macro splits an optionID into read/write access, 54855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi coreID and SubOptionID*/ 55855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define M4OSA_OPTION_ID_SPLIT(optionID, right, coreID, errorID)\ 56855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi { right=(M4OSA_UInt8)((optionID)>>30);\ 57855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi coreID=(M4OSA_UInt16)(((optionID)>>16)&0x00003FFF);\ 58855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi errorID=(M4OSA_UInt32)((optionID)&0x0000FFFF); } 59855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 60855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/** This macro returns 1 if the optionID is writable, 0 otherwise*/ 61855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define M4OSA_OPTION_ID_IS_WRITABLE(optionID) ((((optionID)>>30)&M4_WRITE)!=0) 62855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 63855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/** This macro returns 1 if the optionID is readable, 0 otherwise*/ 64855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define M4OSA_OPTION_ID_IS_READABLE(optionID) ((((optionID)>>30)&M4_READ)!=0) 65855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 66855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi/** This macro returns 1 if the optionID has its core ID equal to 'coreID', 0 otherwise*/ 67855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#define M4OSA_OPTION_ID_IS_COREID(optionID, coreID)\ 68855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi (((((optionID)>>16)&0x003FFF) == (coreID)) ? M4OSA_TRUE:M4OSA_FALSE) 69855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 70855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 71855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi#endif /*M4OSA_OPTIONID_H*/ 72855ec7c4be7ad642721909d5837a8d25a117c22fDharmaray Kundargi 73