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

#ifndef CECSERVICE_CEC_MANAGER_H_
#define CECSERVICE_CEC_MANAGER_H_

#include <map>
#include <memory>
#include <string>
#include <vector>

#include <base/callback.h>
#include <base/memory/weak_ptr.h>
#include <base/files/file_path.h>
#include <chromeos/dbus/service_constants.h>

#include "cecservice/cec_device.h"
#include "cecservice/udev.h"

namespace cecservice {

// Main service object that maintains list of /dev/cec* nodes (with a help of
// udev) and passes received commands to CEC devices.
class CecManager {
 public:
  using GetTvsPowerStatusCallback =
      base::Callback<void(const std::vector<TvPowerStatus>&)>;

  CecManager(const UdevFactory& udev_factory,
             const CecDeviceFactory& cec_factory);
  ~CecManager();

  // Queries power status of CEC-enabled TVs (devices with logical address 0).
  // The order of returned values is arbitrary.
  void GetTvsPowerStatus(GetTvsPowerStatusCallback callback);

  // Sends wake up (image view on + active source) request to all CEC-enabled
  // TVs.
  void SetWakeUp();

  // Passes stand by command to all CEC-enabled TVs.
  void SetStandBy();

 private:
  // Ids for get tv power queries.
  typedef unsigned QueryId;

  // Represents a power status query result from a single CEC device.
  struct TvPowerStatusResult;
  // Ongoing power status query.
  struct TvsPowerStatusQuery;

  // Callback for TV power status responses.
  void OnTvPowerResponse(QueryId id,
                         base::FilePath device_path,
                         TvPowerStatus result);

  // If all responses for a given query has been received, this method will
  // invoke the query's callback and return true. False is returned when not
  // all of the responses have been received and thus the query has not
  // completed yet.
  bool MaybeRespondToTvsPowerStatusQuery(const TvsPowerStatusQuery& query);

  // Called when udev reports that new device has been added.
  void OnDeviceAdded(const base::FilePath& device_path);

  // Called when udev reports that a device has been removed.
  void OnDeviceRemoved(const base::FilePath& device_path);

  // Enumerates and adds all existing devices.
  void EnumerateAndAddExistingDevices();

  // Creates new handler for a device with a given path.
  void AddNewDevice(const base::FilePath& path);

  // Factory of CEC device handlers.
  const CecDeviceFactory& cec_factory_;

  // Id to be used for next query.
  QueryId next_query_id_ = 0;

  // Ongoing power status queries.
  std::map<QueryId, TvsPowerStatusQuery> tv_power_status_queries_;

  // List of currently opened CEC devices.
  std::map<base::FilePath, std::unique_ptr<CecDevice>> devices_;

  // Udev object used to communicate with libudev.
  std::unique_ptr<Udev> udev_;

  base::WeakPtrFactory<CecManager> weak_factory_{this};

  DISALLOW_COPY_AND_ASSIGN(CecManager);
};

}  // namespace cecservice

#endif  // CECSERVICE_CEC_MANAGER_H_
