// Copyright 2018 The Chromium 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 CHROMEOS_DBUS_HAMMERD_CLIENT_H_
#define CHROMEOS_DBUS_HAMMERD_CLIENT_H_

#include <stdint.h>

#include <memory>
#include <vector>

#include "base/component_export.h"
#include "base/macros.h"
#include "chromeos/dbus/dbus_client.h"

namespace chromeos {

// Client for hammerd service - the service that manages pairing and updates for
// physically connected bases of detachable devices (hammers). The client
// listens for dbus signals related to:
//  * the connected base firmware updating state
//  * the connected base pairing events.
// The client forwards the received signals to its observers (together with any
// data extracted from the signal object).
class COMPONENT_EXPORT(CHROMEOS_DBUS) HammerdClient : public DBusClient {
 public:
  class Observer {
   public:
    virtual ~Observer() {}

    // Base firmware requires an update.
    virtual void BaseFirmwareUpdateNeeded() = 0;

    // Base firmware has started updating - BaseFirmwareUpdateCompleted() is
    // expected to be dispatched when the update completes.
    virtual void BaseFirmwareUpdateStarted() = 0;

    // Base firmware update has completed successfully.
    virtual void BaseFirmwareUpdateSucceeded() = 0;

    // Base firmware update has failed.
    virtual void BaseFirmwareUpdateFailed() = 0;

    // A base has been attached, and it was successfully authenticated.
    // |base_id| - identifies the authenticated base.
    virtual void PairChallengeSucceeded(
        const std::vector<uint8_t>& base_id) = 0;

    // A base has been attached, but was not successfully authenticated.
    virtual void PairChallengeFailed() = 0;

    // An invalid base has been connected.
    virtual void InvalidBaseConnected() = 0;
  };

  ~HammerdClient() override = default;

  virtual void AddObserver(Observer* observer) = 0;
  virtual void RemoveObserver(Observer* observer) = 0;

  static std::unique_ptr<HammerdClient> Create();
};

}  // namespace chromeos

#endif  // CHROMEOS_DBUS_HAMMERD_CLIENT_H_
