1 /* 2 * Copyright (C) 2016 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_PLATFORM_SLPI_SMGR_PLATFORM_SENSOR_UTIL_H_ 18 #define CHRE_PLATFORM_SLPI_SMGR_PLATFORM_SENSOR_UTIL_H_ 19 20 #include <cstdint> 21 22 #include "chre/util/time.h" 23 24 namespace chre { 25 26 /** 27 * Converts an interval in nanoseconds to an SMGR report rate. SMGR overloads 28 * the value of a uint16_t to have an inversion point at which the value is no 29 * longer a sample rate and becomes an interval for sub-zero sampling rates. 30 * This function handles that conversion. 31 * 32 * @param interval The sampling interval to convert to a report rate. 33 * @return Returns the SMGR report rate for this interval. 34 */ 35 uint16_t intervalToSmgrSamplingRate(Nanoseconds interval); 36 37 /** 38 * Converts an interval in nanoseconds to an SMGR report rate in Hz and Q16 39 * format. 40 * 41 * @param interval The interval to convert to a report rate. 42 * @return Returns the SMGR uint32_t report rate for this interval. 43 */ 44 uint32_t intervalToSmgrQ16ReportRate(Nanoseconds interval); 45 46 } // namespace chre 47 48 #endif // CHRE_PLATFORM_SLPI_SMGR_PLATFORM_SENSOR_UTIL_H_ 49