1ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda/****************************************************************************** 2ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * $Id: AKFS_Device.c 580 2012-03-29 09:56:21Z yamada.rj $ 3ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda ****************************************************************************** 4ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * 5ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * Copyright (C) 2012 Asahi Kasei Microdevices Corporation, Japan 6ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * 7ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * Licensed under the Apache License, Version 2.0 (the "License"); 8ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * you may not use this file except in compliance with the License. 9ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * You may obtain a copy of the License at 10ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * 11ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * http://www.apache.org/licenses/LICENSE-2.0 12ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * 13ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * Unless required by applicable law or agreed to in writing, software 14ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * distributed under the License is distributed on an "AS IS" BASIS, 15ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * See the License for the specific language governing permissions and 17ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda * limitations under the License. 18ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda */ 19ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda#include "AKFS_Device.h" 20ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 21ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masudaint16 AKFS_InitBuffer( 22ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda const int16 ndata, /*!< Size of vector buffer */ 23ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda AKFVEC vdata[] /*!< Vector buffer */ 24ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda) 25ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda{ 26ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda int i; 27ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 28ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda /* size check */ 29ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda if (ndata <= 0) { 30ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda return AKFS_ERROR; 31ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda } 32ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 33ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda for (i=0; i<ndata; i++) { 34ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vdata[i].u.x = AKFS_INIT_VALUE_F; 35ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vdata[i].u.y = AKFS_INIT_VALUE_F; 36ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vdata[i].u.z = AKFS_INIT_VALUE_F; 37ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda } 38ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 39ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda return AKFS_SUCCESS; 40ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda} 41ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 42ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masudaint16 AKFS_BufShift( 43ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda const int16 len, /*!< size of buffer */ 44ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda const int16 shift, /*!< shift size */ 45ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda AKFVEC v[] /*!< buffer */ 46ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda) 47ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda{ 48ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda int16 i; 49ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 50ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda if((shift < 1) || (len < shift)) { 51ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda return AKFS_ERROR; 52ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda } 53ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda for (i = len-1; i >= shift; i--) { 54ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda v[i] = v[i-shift]; 55ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda } 56ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda return AKFS_SUCCESS; 57ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda} 58ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 59ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masudaint16 AKFS_Rotate( 60ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda const AKFS_PATNO pat, 61ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda AKFVEC* vec 62ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda) 63ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda{ 64ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda AKFLOAT tmp; 65ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda switch(pat){ 66ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda /* Obverse */ 67ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda case PAT1: 68ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda /* This is Android default */ 69ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda break; 70ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda case PAT2: 71ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda tmp = vec->u.x; 72ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vec->u.x = vec->u.y; 73ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vec->u.y = -tmp; 74ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda break; 75ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda case PAT3: 76ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vec->u.x = -(vec->u.x); 77ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vec->u.y = -(vec->u.y); 78ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda break; 79ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda case PAT4: 80ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda tmp = vec->u.x; 81ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vec->u.x = -(vec->u.y); 82ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vec->u.y = tmp; 83ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda break; 84ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda /* Reverse */ 85ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda case PAT5: 86ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vec->u.x = -(vec->u.x); 87ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vec->u.z = -(vec->u.z); 88ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda break; 89ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda case PAT6: 90ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda tmp = vec->u.x; 91ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vec->u.x = vec->u.y; 92ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vec->u.y = tmp; 93ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vec->u.z = -(vec->u.z); 94ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda break; 95ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda case PAT7: 96ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vec->u.y = -(vec->u.y); 97ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vec->u.z = -(vec->u.z); 98ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda break; 99ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda case PAT8: 100ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda tmp = vec->u.x; 101ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vec->u.x = -(vec->u.y); 102ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vec->u.y = -tmp; 103ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda vec->u.z = -(vec->u.z); 104ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda break; 105ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda default: 106ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda return AKFS_ERROR; 107ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda } 108ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 109ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda return AKFS_SUCCESS; 110ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda} 111ab17e987e7f5371df91fe4e137fcf9041489ffdfTsuyoshi Masuda 112