180b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol/* 280b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol * Copyright (C) 2016 The Android Open Source Project 380b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol * 480b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol * Licensed under the Apache License, Version 2.0 (the "License"); 580b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol * you may not use this file except in compliance with the License. 680b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol * You may obtain a copy of the License at 780b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol * 880b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol * http://www.apache.org/licenses/LICENSE-2.0 980b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol * 1080b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol * Unless required by applicable law or agreed to in writing, software 1180b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol * distributed under the License is distributed on an "AS IS" BASIS, 1280b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1380b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol * See the License for the specific language governing permissions and 1480b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol * limitations under the License. 1580b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol */ 1680b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol 174446be9be8f90e66d3cb4d30393862fc725230daAndrew Rossignol#ifndef CHRE_CORE_SENSOR_REQUEST_IMPL_H_ 184446be9be8f90e66d3cb4d30393862fc725230daAndrew Rossignol#define CHRE_CORE_SENSOR_REQUEST_IMPL_H_ 1980b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol 204446be9be8f90e66d3cb4d30393862fc725230daAndrew Rossignol#include "chre/core/sensor_request.h" 2180b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol 2280b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignolnamespace chre { 2380b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol 2480b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignolconstexpr bool sensorModeIsActive(SensorMode sensorMode) { 2580b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol return (sensorMode == SensorMode::ActiveContinuous 2680b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol || sensorMode == SensorMode::ActiveOneShot); 2780b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol} 2880b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol 29f4f692d5178bf2ff40e33f7ebce86c84811d1178Meng-hsuan Chungconstexpr bool sensorModeIsPassive(SensorMode sensorMode) { 30f4f692d5178bf2ff40e33f7ebce86c84811d1178Meng-hsuan Chung return (sensorMode == SensorMode::PassiveContinuous 31f4f692d5178bf2ff40e33f7ebce86c84811d1178Meng-hsuan Chung || sensorMode == SensorMode::PassiveOneShot); 32f4f692d5178bf2ff40e33f7ebce86c84811d1178Meng-hsuan Chung} 33f4f692d5178bf2ff40e33f7ebce86c84811d1178Meng-hsuan Chung 344dd71d062b3f466f42ea912831bb1cc79b0f0a1dMeng-hsuan Chungconstexpr bool sensorModeIsContinuous(SensorMode sensorMode) { 354dd71d062b3f466f42ea912831bb1cc79b0f0a1dMeng-hsuan Chung return (sensorMode == SensorMode::ActiveContinuous 364dd71d062b3f466f42ea912831bb1cc79b0f0a1dMeng-hsuan Chung || sensorMode == SensorMode::PassiveContinuous); 374dd71d062b3f466f42ea912831bb1cc79b0f0a1dMeng-hsuan Chung} 384dd71d062b3f466f42ea912831bb1cc79b0f0a1dMeng-hsuan Chung 394dd71d062b3f466f42ea912831bb1cc79b0f0a1dMeng-hsuan Chungconstexpr bool sensorModeIsOneShot(SensorMode sensorMode) { 404dd71d062b3f466f42ea912831bb1cc79b0f0a1dMeng-hsuan Chung return (sensorMode == SensorMode::ActiveOneShot 414dd71d062b3f466f42ea912831bb1cc79b0f0a1dMeng-hsuan Chung || sensorMode == SensorMode::PassiveOneShot); 424dd71d062b3f466f42ea912831bb1cc79b0f0a1dMeng-hsuan Chung} 434dd71d062b3f466f42ea912831bb1cc79b0f0a1dMeng-hsuan Chung 441795db1e2282dac8454cf59d23314f70b6930f7bAndrew Rossignolconstexpr size_t getSensorTypeArrayIndex(SensorType sensorType) { 451795db1e2282dac8454cf59d23314f70b6930f7bAndrew Rossignol return static_cast<size_t>(sensorType) - 1; 461795db1e2282dac8454cf59d23314f70b6930f7bAndrew Rossignol} 471795db1e2282dac8454cf59d23314f70b6930f7bAndrew Rossignol 481795db1e2282dac8454cf59d23314f70b6930f7bAndrew Rossignolconstexpr size_t getSensorTypeCount() { 491795db1e2282dac8454cf59d23314f70b6930f7bAndrew Rossignol // The number of valid entries in the SensorType enum (not including Unknown). 501795db1e2282dac8454cf59d23314f70b6930f7bAndrew Rossignol return static_cast<size_t>(SensorType::SENSOR_TYPE_COUNT) - 1; 511795db1e2282dac8454cf59d23314f70b6930f7bAndrew Rossignol} 521795db1e2282dac8454cf59d23314f70b6930f7bAndrew Rossignol 5378a4909cf27b3f1c4f9b8b46ebc8c0f16400dfa5Andrew Rossignolconstexpr uint32_t getSensorHandleFromSensorType(SensorType sensorType) { 5478a4909cf27b3f1c4f9b8b46ebc8c0f16400dfa5Andrew Rossignol return static_cast<uint32_t>(sensorType); 5578a4909cf27b3f1c4f9b8b46ebc8c0f16400dfa5Andrew Rossignol} 5678a4909cf27b3f1c4f9b8b46ebc8c0f16400dfa5Andrew Rossignol 5778a4909cf27b3f1c4f9b8b46ebc8c0f16400dfa5Andrew Rossignolconstexpr SensorType getSensorTypeFromSensorHandle(uint32_t handle) { 5878a4909cf27b3f1c4f9b8b46ebc8c0f16400dfa5Andrew Rossignol return (handle > static_cast<uint32_t>(SensorType::Unknown) 5978a4909cf27b3f1c4f9b8b46ebc8c0f16400dfa5Andrew Rossignol && handle < static_cast<uint32_t>(SensorType::SENSOR_TYPE_COUNT)) 6078a4909cf27b3f1c4f9b8b46ebc8c0f16400dfa5Andrew Rossignol ? static_cast<SensorType>(handle) : SensorType::Unknown; 6178a4909cf27b3f1c4f9b8b46ebc8c0f16400dfa5Andrew Rossignol} 6278a4909cf27b3f1c4f9b8b46ebc8c0f16400dfa5Andrew Rossignol 6380b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol} // namespace chre 6480b6b0c6ea5ce4c72ac738c560015de82edd788dAndrew Rossignol 654446be9be8f90e66d3cb4d30393862fc725230daAndrew Rossignol#endif // CHRE_CORE_SENSOR_REQUEST_IMPL_H_ 66