| /****************************************************************************** |
| * $Id: AKFS_Device.c 580 2012-03-29 09:56:21Z yamada.rj $ |
| ****************************************************************************** |
| * |
| * 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. |
| */ |
| #include "AKFS_Device.h" |
| |
| int16 AKFS_InitBuffer( |
| const int16 ndata, /*!< Size of vector buffer */ |
| AKFVEC vdata[] /*!< Vector buffer */ |
| ) |
| { |
| int i; |
| |
| /* size check */ |
| if (ndata <= 0) { |
| return AKFS_ERROR; |
| } |
| |
| for (i=0; i<ndata; i++) { |
| vdata[i].u.x = AKFS_INIT_VALUE_F; |
| vdata[i].u.y = AKFS_INIT_VALUE_F; |
| vdata[i].u.z = AKFS_INIT_VALUE_F; |
| } |
| |
| return AKFS_SUCCESS; |
| } |
| |
| int16 AKFS_BufShift( |
| const int16 len, /*!< size of buffer */ |
| const int16 shift, /*!< shift size */ |
| AKFVEC v[] /*!< buffer */ |
| ) |
| { |
| int16 i; |
| |
| if((shift < 1) || (len < shift)) { |
| return AKFS_ERROR; |
| } |
| for (i = len-1; i >= shift; i--) { |
| v[i] = v[i-shift]; |
| } |
| return AKFS_SUCCESS; |
| } |
| |
| int16 AKFS_Rotate( |
| const AKFS_PATNO pat, |
| AKFVEC* vec |
| ) |
| { |
| AKFLOAT tmp; |
| switch(pat){ |
| /* Obverse */ |
| case PAT1: |
| /* This is Android default */ |
| break; |
| case PAT2: |
| tmp = vec->u.x; |
| vec->u.x = vec->u.y; |
| vec->u.y = -tmp; |
| break; |
| case PAT3: |
| vec->u.x = -(vec->u.x); |
| vec->u.y = -(vec->u.y); |
| break; |
| case PAT4: |
| tmp = vec->u.x; |
| vec->u.x = -(vec->u.y); |
| vec->u.y = tmp; |
| break; |
| /* Reverse */ |
| case PAT5: |
| vec->u.x = -(vec->u.x); |
| vec->u.z = -(vec->u.z); |
| break; |
| case PAT6: |
| tmp = vec->u.x; |
| vec->u.x = vec->u.y; |
| vec->u.y = tmp; |
| vec->u.z = -(vec->u.z); |
| break; |
| case PAT7: |
| vec->u.y = -(vec->u.y); |
| vec->u.z = -(vec->u.z); |
| break; |
| case PAT8: |
| tmp = vec->u.x; |
| vec->u.x = -(vec->u.y); |
| vec->u.y = -tmp; |
| vec->u.z = -(vec->u.z); |
| break; |
| default: |
| return AKFS_ERROR; |
| } |
| |
| return AKFS_SUCCESS; |
| } |
| |