// 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
