blob: 8d8241fc196a2961b1f6f4e49d6a223bb7abca25 [file] [log] [blame]
// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "libec/device_event_command.h"
namespace ec {
DeviceEventCommand::DeviceEventCommand(bool clear_pending_events)
: EcCommand(EC_CMD_DEVICE_EVENT) {
if (clear_pending_events) {
Req()->param = EC_DEVICE_EVENT_PARAM_GET_CURRENT_EVENTS;
} else {
Req()->param = EC_DEVICE_EVENT_PARAM_GET_ENABLED_EVENTS;
}
}
DeviceEventCommand::DeviceEventCommand(enum ec_device_event event,
bool enable,
uint32_t cur_event_mask)
: EcCommand(EC_CMD_DEVICE_EVENT) {
Req()->param = EC_DEVICE_EVENT_PARAM_SET_ENABLED_EVENTS;
if (enable) {
Req()->event_mask = cur_event_mask | EC_DEVICE_EVENT_MASK(event);
} else {
Req()->event_mask = cur_event_mask & ~EC_DEVICE_EVENT_MASK(event);
}
}
bool DeviceEventCommand::IsEnabled(enum ec_device_event event) const {
return Resp()->event_mask & EC_DEVICE_EVENT_MASK(event);
}
uint32_t DeviceEventCommand::GetMask() const {
return Resp()->event_mask;
}
} // namespace ec