syntax = "proto2";

package com.android.settings.intelligence;
option java_multiple_files = true;
option java_package = "com.android.settings.fuelgauge";
option java_outer_classname = "FuelgaugeLogProto";

// Store history of setting optimize mode
message BatteryOptimizeHistoricalLog {
  repeated BatteryOptimizeHistoricalLogEntry log_entry = 1;
}

message BatteryOptimizeHistoricalLogEntry {
  // The action to set optimize mode
  enum Action {
    UNKNOWN = 0;
    LEAVE = 1;
    APPLY = 2;
    RESET = 3;
    RESTORE = 4;
    BACKUP = 5;
    FORCE_RESET = 6;
  }

  optional string package_name = 1;
  optional Action action = 2;
  optional string action_description = 3;
  optional int64 timestamp = 4;
}


// Store history of battery usage periodic job
message BatteryUsageHistoricalLog {
  repeated BatteryUsageHistoricalLogEntry log_entry = 1;
}

message BatteryUsageHistoricalLogEntry {
  // The action to record battery usage job event
  enum Action {
    UNKNOWN = 0;
    SCHEDULE_JOB = 1;
    EXECUTE_JOB = 2;
    RECHECK_JOB = 3;
    FETCH_USAGE_DATA = 4;
    INSERT_USAGE_DATA = 5;
  }

  optional int64 timestamp = 1;
  optional Action action = 2;
  optional string action_description = 3;
}
