| // Copyright (c) 2012 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_BLUETOOTH_OUT_OF_BAND_CLIENT_H_ |
| #define CHROMEOS_DBUS_BLUETOOTH_OUT_OF_BAND_CLIENT_H_ |
| |
| #include <string> |
| |
| #include "base/callback.h" |
| #include "chromeos/chromeos_export.h" |
| #include "chromeos/dbus/dbus_client_implementation_type.h" |
| #include "dbus/object_path.h" |
| |
| namespace dbus { |
| class Bus; |
| } // namespace dbus |
| |
| namespace chromeos { |
| |
| const size_t kBluetoothOutOfBandPairingDataSize = 16; |
| |
| // A simple structure representing the data required to perform Out Of Band |
| // Pairing. See |
| // http://mclean-linsky.net/joel/cv/Simple%20Pairing_WP_V10r00.pdf |
| struct BluetoothOutOfBandPairingData { |
| // Simple Pairing Hash C. |
| uint8_t hash[kBluetoothOutOfBandPairingDataSize]; |
| |
| // Simple Pairing Randomizer R. |
| uint8_t randomizer[kBluetoothOutOfBandPairingDataSize]; |
| }; |
| |
| // BluetoothOutOfBandClient is used to manage Out Of Band Pairing |
| // Data for the local adapter and remote devices. |
| class CHROMEOS_EXPORT BluetoothOutOfBandClient { |
| public: |
| virtual ~BluetoothOutOfBandClient(); |
| |
| typedef base::Callback<void(const BluetoothOutOfBandPairingData& data, |
| bool success)> DataCallback; |
| |
| typedef base::Callback<void(bool success)> SuccessCallback; |
| |
| // Reads the local Out Of Band Pairing Data and return it in |callback|. |
| virtual void ReadLocalData( |
| const dbus::ObjectPath& object_path, |
| const DataCallback& callback) = 0; |
| |
| // Sets the Out Of Band Pairing Data for the device at |address| to |data|, |
| // indicating success via |callback|. Makes a copy of |data|. |
| virtual void AddRemoteData( |
| const dbus::ObjectPath& object_path, |
| const std::string& address, |
| const BluetoothOutOfBandPairingData& data, |
| const SuccessCallback& callback) = 0; |
| |
| // Clears the Out Of Band Pairing Data for the device at |address|, indicating |
| // success via |callback|. |
| virtual void RemoveRemoteData( |
| const dbus::ObjectPath& object_path, |
| const std::string& address, |
| const SuccessCallback& callback) = 0; |
| |
| // Creates the instance. |
| static BluetoothOutOfBandClient* Create( |
| DBusClientImplementationType type, |
| dbus::Bus* bus); |
| |
| protected: |
| BluetoothOutOfBandClient(); |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(BluetoothOutOfBandClient); |
| }; |
| |
| } // namespace chromeos |
| |
| #endif // CHROMEOS_DBUS_BLUETOOTH_OUT_OF_BAND_CLIENT_H_ |