1 /* 2 * Copyright (C) 2021 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 #include <aidl/android/frameworks/stats/IStats.h> 18 #include <android-base/chrono_utils.h> 19 #include <hardware/google/pixel/pixelstats/pixelatoms.pb.h> 20 21 #include <string> 22 23 namespace android { 24 namespace hardware { 25 namespace google { 26 namespace pixel { 27 28 using aidl::android::frameworks::stats::IStats; 29 using aidl::android::frameworks::stats::VendorAtomValue; 30 31 struct TempResidencyStats { 32 std::vector<int64_t> temp_residency_buckets; 33 float max_temp, min_temp; 34 int64_t max_temp_timestamp, min_temp_timestamp; 35 }; 36 37 /** 38 * A class to upload Pixel TempResidency Stats metrics 39 */ 40 class TempResidencyReporter { 41 public: 42 void logTempResidencyStats(const std::shared_ptr<IStats> &stats_client, 43 std::string_view temperature_residency_path, 44 std::string_view temperature_residency_reset_path); 45 46 private: 47 ::android::base::boot_clock::time_point prevTime = 48 ::android::base::boot_clock::time_point::min(); 49 const int kMaxBucketLen = 20; 50 }; 51 52 } // namespace pixel 53 } // namespace google 54 } // namespace hardware 55 } // namespace android 56