// Copyright 2017 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.

/* override_max_pressure: This command line tool is designed to override the max
 * pressure of the target device under /dev/input/
 * Usage:
 * $override_max_pressure --device=event4 --maxpressure=2048
 */
#include <linux/input.h>
#include <iostream>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>

#include <base/logging.h>
#include <brillo/flag_helper.h>

int main(int argc, char** argv) {
  DEFINE_string(device, "", "Path of the device");
  DEFINE_int32(maxpressure, -1, "Max pressure to override.");

  brillo::FlagHelper::Init(
      argc, argv, "override_stylus_pressure, Override max pressure of device.");

  if (FLAGS_device == "") {
    LOG(ERROR) << "Please provide path to the device";
    exit(1);
  }

  if (FLAGS_maxpressure < 0) {
    LOG(ERROR) << "Please set max pressure to a non-negative value";
    exit(1);
  }

  std::string dev_path = "/dev/input/" + FLAGS_device;
  int fd = open(dev_path.c_str(), O_RDONLY | O_CLOEXEC);
  if (fd < 0) {
    PLOG(ERROR) << "Cannot open device: " << dev_path;
    exit(1);
  }

  input_absinfo absinfo;
  if (ioctl(fd, EVIOCGABS(ABS_PRESSURE), &absinfo)) {
    PLOG(ERROR) << "ioctl EVIOCGABS falied";
    exit(1);
  }
  absinfo.maximum = FLAGS_maxpressure;
  if (ioctl(fd, EVIOCSABS(ABS_PRESSURE), &absinfo)) {
    PLOG(ERROR) << "ioctl EVIOCSABS falied";
    exit(1);
  }
  return 0;
}
