/****************************************************************************** * * Copyright (C) 2012 Asahi Kasei Microdevices Corporation, Japan * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ******************************************************************************/ #ifndef AKFS_INC_DEVICE_H #define AKFS_INC_DEVICE_H #include #include "AKFS_Configure.h" /***** Constant definition ****************************************************/ #define AKFS_ERROR 0 #define AKFS_SUCCESS 1 #define AKFS_HDATA_SIZE 32 #define AKFS_ADATA_SIZE 32 /***** Type declaration *******************************************************/ typedef signed char int8; typedef signed short int16; typedef unsigned char uint8; typedef unsigned short uint16; #ifdef AKFS_PRECISION_DOUBLE typedef double AKFLOAT; #define AKFS_EPSILON DBL_EPSILON #define AKFS_FMAX DBL_MAX #define AKFS_FMIN DBL_MIN #else typedef float AKFLOAT; #define AKFS_EPSILON FLT_EPSILON #define AKFS_FMAX FLT_MAX #define AKFS_FMIN FLT_MIN #endif /* Treat maximum value as initial value */ #define AKFS_INIT_VALUE_F AKFS_FMAX /***** Vector *****/ typedef union _uint8vec{ struct { uint8 x; uint8 y; uint8 z; }u; uint8 v[3]; } uint8vec; typedef union _AKFVEC{ struct { AKFLOAT x; AKFLOAT y; AKFLOAT z; }u; AKFLOAT v[3]; } AKFVEC; /***** Layout pattern *****/ typedef enum _AKFS_PATNO { PAT_INVALID = 0, PAT1, /* obverse: 1st pin is right down */ PAT2, /* obverse: 1st pin is left down */ PAT3, /* obverse: 1st pin is left top */ PAT4, /* obverse: 1st pin is right top */ PAT5, /* reverse: 1st pin is left down (from top view) */ PAT6, /* reverse: 1st pin is left top (from top view) */ PAT7, /* reverse: 1st pin is right top (from top view) */ PAT8 /* reverse: 1st pin is right down (from top view) */ } AKFS_PATNO; /***** Prototype of function **************************************************/ AKLIB_C_API_START int16 AKFS_InitBuffer( const int16 ndata, /*!< Size of raw vector buffer */ AKFVEC vdata[] /*!< Raw vector buffer */ ); int16 AKFS_BufShift( const int16 len, const int16 shift, AKFVEC v[] ); int16 AKFS_Rotate( const AKFS_PATNO pat, AKFVEC* vec ); AKLIB_C_API_END #endif