1/* 2 * xcam_common.h - xcam common and utilities 3 * 4 * Copyright (c) 2014 Intel Corporation 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 * 18 * Author: Wind Yuan <feng.yuan@intel.com> 19 */ 20 21#ifndef XCAM_COMMON_H 22#define XCAM_COMMON_H 23 24#include <string.h> 25#include <stddef.h> 26#include <stdio.h> 27#include <stdint.h> 28#include <stdlib.h> 29#include <errno.h> 30#include <assert.h> 31#include <pthread.h> 32#include <math.h> 33#include <base/xcam_defs.h> 34 35XCAM_BEGIN_DECLARE 36 37typedef enum { 38 XCAM_RETURN_NO_ERROR = 0, 39 XCAM_RETURN_BYPASS = 1, 40 41 /* errors */ 42 XCAM_RETURN_ERROR_PARAM = -1, 43 XCAM_RETURN_ERROR_MEM = -2, 44 XCAM_RETURN_ERROR_FILE = -3, 45 XCAM_RETURN_ERROR_AIQ = -4, 46 XCAM_RETURN_ERROR_ISP = -5, 47 XCAM_RETURN_ERROR_SENSOR = -6, 48 XCAM_RETURN_ERROR_THREAD = -7, 49 XCAM_RETURN_ERROR_IOCTL = -8, 50 XCAM_RETURN_ERROR_CL = -9, 51 XCAM_RETURN_ERROR_ORDER = -10, 52 53 XCAM_RETURN_ERROR_TIMEOUT = -20, 54 55 XCAM_RETURN_ERROR_UNKNOWN = -255, 56} XCamReturn; 57 58#define xcam_malloc_type(TYPE) (TYPE*)(xcam_malloc(sizeof(TYPE))) 59#define xcam_malloc_type_array(TYPE, num) (TYPE*)(xcam_malloc(sizeof(TYPE) * (num))) 60 61#define xcam_malloc0_type(TYPE) (TYPE*)(xcam_malloc0(sizeof(TYPE))) 62#define xcam_malloc0_type_array(TYPE, num) (TYPE*)(xcam_malloc0(sizeof(TYPE) * (num))) 63 64#define xcam_mem_clear(v_stack) memset(&(v_stack), 0, sizeof(v_stack)) 65 66uint32_t xcam_version (); 67void * xcam_malloc (size_t size); 68void * xcam_malloc0 (size_t size); 69 70void xcam_free (void *ptr); 71 72/* 73 * return, 0 successfully 74 * else, check errno 75 */ 76int xcam_device_ioctl (int fd, int cmd, void *arg); 77const char *xcam_fourcc_to_string (uint32_t fourcc); 78 79void xcam_set_log (const char* file_name); 80void xcam_print_log (const char* format, ...); 81 82static inline uint32_t 83xcam_ceil (uint32_t value, const uint32_t align) { 84 return (value + align - 1) / align * align; 85} 86 87static inline uint32_t 88xcam_around (uint32_t value, const uint32_t align) { 89 return (value + align / 2) / align * align; 90} 91 92static inline uint32_t 93xcam_floor (uint32_t value, const uint32_t align) { 94 return value / align * align; 95} 96 97// return true or false 98static inline int 99xcam_ret_is_ok (XCamReturn err) { 100 return err >= XCAM_RETURN_NO_ERROR; 101} 102 103//format to [0 ~ 360] 104static inline float 105format_angle (float angle) 106{ 107 if (angle < 0.0f) 108 angle += 360.0f; 109 if (angle >= 360.0f) 110 angle -= 360.0f; 111 112 XCAM_ASSERT (angle >= 0.0f && angle < 360.0f); 113 return angle; 114} 115 116XCAM_END_DECLARE 117 118#endif //XCAM_COMMON_H 119 120