1 // Copyright 2019 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_BROWSER_CHROMEOS_ARC_TRACING_ARC_VALUE_EVENT_H_
6 #define CHROME_BROWSER_CHROMEOS_ARC_TRACING_ARC_VALUE_EVENT_H_
7 
8 #include <ostream>
9 #include <vector>
10 
11 #include "base/values.h"
12 
13 namespace arc {
14 
15 // Tracing event with a value.
16 struct ArcValueEvent {
17   enum class Type {
18     kMemTotal,
19     kMemUsed,
20     kSwapRead,
21     kSwapWrite,
22     kSwapWait,
23     kGemObjects,
24     kGemSize,
25     kGpuFrequency,
26     kCpuTemperature,
27     kCpuFrequency,
28     kCpuPower,
29     kGpuPower,
30     kMemoryPower,
31     kPackagePowerConstraint,
32     kWakenessfullMode,
33     kThrottlingMode,
34   };
35 
36   ArcValueEvent(int64_t timestamp, Type type, int value);
37 
38   bool operator==(const ArcValueEvent& other) const;
39 
40   uint64_t timestamp;
41   Type type;
42   /**
43    * kMemTotal - kb.
44    * kMemUsed - kb.
45    * kSwapRead - number of sectors.
46    * kSwapWrite - number of sectors.
47    * kSwapWait - milliseconds.
48    * kGemObjects - number of objects
49    * kGemSize - kb
50    * kGpuFrequency - mhz
51    * kCpuTemperature - celsius * 1000
52    * kCpuFrequency - khz
53    * kCpuPower - milli-watts
54    * kGpuPower - milli-watts
55    * kMemporyPower - milli-watts
56    * kPackagePowerConstraint - milli-watts
57    */
58   int value;
59 };
60 
61 using ValueEvents = std::vector<ArcValueEvent>;
62 
63 // Serializes value events into |base::ListValue|.
64 base::ListValue SerializeValueEvents(const ValueEvents& value_events);
65 
66 // Loads value events from |base::ListValue|. Returns true in case value
67 // events were loaded successfully.
68 bool LoadValueEvents(const base::Value* value, ValueEvents* value_events);
69 
70 std::ostream& operator<<(std::ostream& os, ArcValueEvent::Type event_type);
71 
72 }  // namespace arc
73 
74 #endif  // CHROME_BROWSER_CHROMEOS_ARC_TRACING_ARC_VALUE_EVENT_H_
75