blob: d88c09c55ce286a38aed58ab0dd5df77596e67cc [file] [log] [blame]
// Copyright (C) 2022 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.
import m from 'mithril';
import {globals} from '../globals';
import {Probe, ProbeAttrs, Slider, SliderAttrs} from '../record_widgets';
import {POLL_INTERVAL_MS, RecordingSectionAttrs} from './recording_sections';
export class PowerSettings implements m.ClassComponent<RecordingSectionAttrs> {
view({attrs}: m.CVnode<RecordingSectionAttrs>) {
const DOC_URL = 'https://perfetto.dev/docs/data-sources/battery-counters';
const descr =
[m('div',
m('span', `Polls charge counters and instantaneous power draw from
the battery power management IC and the power rails from
the PowerStats HAL (`),
m('a', {href: DOC_URL, target: '_blank'}, 'see docs for more'),
m('span', ')'))];
if (globals.isInternalUser) {
descr.push(m(
'div',
m('span', 'Googlers: See '),
m('a',
{href: 'http://go/power-rails-internal-doc', target: '_blank'},
'this doc'),
m('span',
` for instructions on how to change the refault rail selection
on internal devices.`),
));
}
return m(
`.record-section${attrs.cssClass}`,
m(Probe,
{
title: 'Battery drain & power rails',
img: 'rec_battery_counters.png',
descr,
setEnabled: (cfg, val) => cfg.batteryDrain = val,
isEnabled: (cfg) => cfg.batteryDrain,
} as ProbeAttrs,
m(Slider, {
title: 'Poll interval',
cssClass: '.thin',
values: POLL_INTERVAL_MS,
unit: 'ms',
set: (cfg, val) => cfg.batteryDrainPollMs = val,
get: (cfg) => cfg.batteryDrainPollMs,
} as SliderAttrs)),
m(Probe, {
title: 'Board voltages & frequencies',
img: 'rec_board_voltage.png',
descr: 'Tracks voltage and frequency changes from board sensors',
setEnabled: (cfg, val) => cfg.boardSensors = val,
isEnabled: (cfg) => cfg.boardSensors,
} as ProbeAttrs));
}
}