1 /* 2 * Copyright (C) 2019 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef CHRE_TARGET_PLATFORM_SENSOR_TYPE_HELPERS_BASE_H_ 18 #define CHRE_TARGET_PLATFORM_SENSOR_TYPE_HELPERS_BASE_H_ 19 20 #define CHRE_SLPI_SENSOR_TYPE_BIG_IMAGE_ACCEL CHRE_VENDOR_SENSOR_TYPE(3) 21 #define CHRE_SLPI_SENSOR_TYPE_BIG_IMAGE_UNCAL_ACCEL CHRE_VENDOR_SENSOR_TYPE(6) 22 #define CHRE_SLPI_SENSOR_TYPE_BIG_IMAGE_UNCAL_GYRO CHRE_VENDOR_SENSOR_TYPE(7) 23 #define CHRE_SLPI_SENSOR_TYPE_BIG_IMAGE_UNCAL_MAG CHRE_VENDOR_SENSOR_TYPE(8) 24 #define CHRE_SLPI_SENSOR_TYPE_BIG_IMAGE_LIGHT CHRE_VENDOR_SENSOR_TYPE(9) 25 26 namespace chre { 27 28 /** 29 * This SensorSampleType is designed to help classify sensor's data type in 30 * event handling. 31 */ 32 enum class SensorSampleType { 33 Byte, 34 Float, 35 Occurrence, 36 ThreeAxis, 37 Vendor0, 38 Vendor1, 39 Vendor2, 40 Vendor3, 41 Vendor4, 42 Vendor5, 43 Vendor6, 44 Vendor7, 45 Vendor8, 46 Vendor9, 47 Vendor10, 48 Unknown, 49 }; 50 51 /** 52 * The group IDs that the SEE sensor driver supports placing nanoapps into such 53 * that they can be targeted separately by the sensor driver. 54 */ 55 enum NanoappGroupIds { 56 MicroImage = 1 << 0, 57 BigImage = 1 << 1, 58 }; 59 60 /** 61 * Exposes SLPI-specific methods used by platform code and the SLPI-specific 62 * PlatformSensorTypeHelpers implementation to transform sensor types as needed. 63 */ 64 class PlatformSensorTypeHelpersBase { 65 public: 66 /** 67 * Obtains the temperature sensor type of the specified sensor type. 68 * 69 * @param sensorType The sensor type to obtain its temperature sensor type 70 * for. 71 * @return The temperature sensor type or CHRE_SENSOR_TYPE_INVALID if not 72 * supported by CHRE. 73 */ 74 static uint8_t getTempSensorType(uint8_t sensorType); 75 76 /** 77 * Maps a sensorType to its SensorSampleType. 78 * 79 * @param sensorType The type of the sensor to obtain its SensorSampleType 80 * for. 81 * @return The SensorSampleType of the sensorType. 82 */ 83 static SensorSampleType getSensorSampleTypeFromSensorType(uint8_t sensorType); 84 85 /** 86 * @param sensorType The sensor type. 87 * @return The corresponding runtime-calibrated sensor type. If the sensor 88 * does not have one or is already runtime-calibrated, then the input 89 * sensorType is returned. 90 */ 91 static uint8_t toCalibratedSensorType(uint8_t sensorType); 92 93 /** 94 * @return Whether the given sensor type reports bias events. 95 */ 96 static bool reportsBias(uint8_t sensorType); 97 98 /** 99 * Rewrites a big-image sensorType to its regular CHRE counterpart leaving 100 * regular CHRE sensor types unchanged. 101 */ 102 static void rewriteToChreSensorType(uint8_t *sensorType); 103 }; 104 105 } // namespace chre 106 107 #endif // CHRE_TARGET_PLATFORM_SENSOR_TYPE_HELPERS_BASE_H_ 108