/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
syntax = "proto2";

option java_multiple_files = true;
option java_outer_classname = "CpuFreqProto";

import "frameworks/base/libs/incident/proto/android/privacy.proto";

package android.os;

// cpu frequency time from /sys/devices/system/cpu/cpufreq/all_time_in_state
message CpuFreq {
    option (android.msg_privacy).dest = DEST_AUTOMATIC;

    optional int32 jiffy_hz = 1; // obtain by system config.

    repeated CpuFreqStats cpu_freqs = 2;
}

// frequency time pre cpu, unit in jiffy, TODO: obtain jiffies.
message CpuFreqStats {
    option (android.msg_privacy).dest = DEST_AUTOMATIC;

    optional string cpu_name = 1;

    message TimeInState {
        option (android.msg_privacy).dest = DEST_AUTOMATIC;

        optional int32 state_khz = 1;  // cpu frequency
        optional int64 time_jiffy = 2; // number of jiffies
    }
    repeated TimeInState times = 2;
}
