16a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu/*
26a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu * Copyright (C) 2016 The Android Open Source Project
36a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu *
46a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu * Licensed under the Apache License, Version 2.0 (the "License");
56a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu * you may not use this file except in compliance with the License.
66a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu * You may obtain a copy of the License at
76a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu *
86a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu *      http://www.apache.org/licenses/LICENSE-2.0
96a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu *
106a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu * Unless required by applicable law or agreed to in writing, software
116a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu * distributed under the License is distributed on an "AS IS" BASIS,
126a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu * See the License for the specific language governing permissions and
146a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu * limitations under the License.
156a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu */
166a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu
176a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu#include "SensorServiceUtils.h"
186a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu
196a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu#include <hardware/sensors.h>
206a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu
216a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xunamespace android {
226a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xunamespace SensorServiceUtil {
236a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu
246a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu// Keep in sync with sSensorReportingMode in Sensor.java
256a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xusize_t eventSizeBySensorType(int type) {
266a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu    if (type >= SENSOR_TYPE_DEVICE_PRIVATE_BASE) {
276a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        return 16;
286a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu    }
296a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu    switch (type) {
306a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_POSE_6DOF:
316a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu            return 16;
326a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu
336a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_ROTATION_VECTOR:
346a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR:
356a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu            return 5;
366a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu
376a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED:
386a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_GYROSCOPE_UNCALIBRATED:
396a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu            return 6;
406a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu
416a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_GAME_ROTATION_VECTOR:
426a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu            return 4;
436a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu
446a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_SIGNIFICANT_MOTION:
456a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_STEP_DETECTOR:
466a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_STEP_COUNTER:
476a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_HEART_RATE:
486a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_TILT_DETECTOR:
496a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_WAKE_GESTURE:
506a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_GLANCE_GESTURE:
516a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_PICK_UP_GESTURE:
526a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_WRIST_TILT_GESTURE:
536a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_DEVICE_ORIENTATION:
546a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_STATIONARY_DETECT:
556a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_MOTION_DETECT:
566a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        case SENSOR_TYPE_HEART_BEAT:
572e990eb59e927187b11c7b5f0abe6dbdb0123d1dNick Vaccaro        case SENSOR_TYPE_LOW_LATENCY_OFFBODY_DETECT:
586a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu            return 1;
596a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu
606a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu        default:
616a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu            return 3;
626a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu    }
636a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu}
646a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu
656a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu} // namespace SensorServiceUtil
666a2d3a06caa337857cf60cfc70a9a78909ad3608Peng Xu} // namespace android;
67