1b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine/* 2b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * Copyright (C) 2011 The Android Open Source Project 3b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * 4b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * Licensed under the Apache License, Version 2.0 (the "License"); 5b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * you may not use this file except in compliance with the License. 6b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * You may obtain a copy of the License at 7b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * 8b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * http://www.apache.org/licenses/LICENSE-2.0 9b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * 10b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * Unless required by applicable law or agreed to in writing, software 11b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * distributed under the License is distributed on an "AS IS" BASIS, 12b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * See the License for the specific language governing permissions and 14b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * limitations under the License. 15b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine */ 16b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine 17b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine#ifndef HW_EMULATOR_CAMERA_EMULATED_CAMERA_COMMON_H 18b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine#define HW_EMULATOR_CAMERA_EMULATED_CAMERA_COMMON_H 19b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine 20b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine/* 21b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * Contains common declarations that are used across the camera emulation. 22b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine */ 23b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine 24b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine#include <linux/videodev2.h> 25b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine#include <hardware/camera.h> 26b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine 27b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine/* A helper class that tracks a routine execution. 28b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * Basically, it dumps an enry message in its constructor, and an exit message 29b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * in its destructor. Use LOGRE() macro (declared bellow) to create instances 30b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * of this class at the beginning of the tracked routines / methods. 31b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine */ 32b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkineclass HWERoutineTracker { 33b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkinepublic: 34b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine /* Constructor that prints an "entry" trace message. */ 35b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine explicit HWERoutineTracker(const char* name) 365467be2eefc007ebf09baf109dafe058abc1ffc5Vladimir Chtchetkine : mName(name) { 37629719e390ce66be822c3563bbd248ce15eaae7bSteve Block ALOGV("Entering %s", mName); 38b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine } 39b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine 40b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine /* Destructor that prints a "leave" trace message. */ 41b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine ~HWERoutineTracker() { 42629719e390ce66be822c3563bbd248ce15eaae7bSteve Block ALOGV("Leaving %s", mName); 43b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine } 44b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine 45b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkineprivate: 46b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine /* Stores the routine name. */ 475467be2eefc007ebf09baf109dafe058abc1ffc5Vladimir Chtchetkine const char* mName; 48b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine}; 49b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine 50b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine/* Logs an execution of a routine / method. */ 51b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine#define LOGRE() HWERoutineTracker hwertracker_##__LINE__(__FUNCTION__) 52b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine 53b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine/* 54b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine * min / max macros 55b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine */ 56b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine 57b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine#define min(a,b) (((a) < (b)) ? (a) : (b)) 58b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine#define max(a,b) (((a) > (b)) ? (a) : (b)) 59b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine 60b97c2f0b5919b716ba5433e6153a29d7e1e357feVladimir Chtchetkine#endif /* HW_EMULATOR_CAMERA_EMULATED_CAMERA_COMMON_H */ 61