bluetooth_device_win.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_WIN_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_WIN_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <vector>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "device/bluetooth/bluetooth_device.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "device/bluetooth/bluetooth_task_manager_win.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace device {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class BluetoothAdapterWin;
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BluetoothDeviceWin : public BluetoothDevice {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  explicit BluetoothDeviceWin(
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const BluetoothTaskManagerWin::DeviceState& state);
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~BluetoothDeviceWin();
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void SetVisible(bool visible);
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // BluetoothDevice override
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsPaired() const OVERRIDE;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const ServiceList& GetServices() const OVERRIDE;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetServiceRecords(
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ServiceRecordsCallback& callback,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ErrorCallback& error_callback) OVERRIDE;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ProvidesServiceWithName(
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& name,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ProvidesServiceCallback& callback) OVERRIDE;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ExpectingPinCode() const OVERRIDE;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ExpectingPasskey() const OVERRIDE;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ExpectingConfirmation() const OVERRIDE;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Connect(
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PairingDelegate* pairing_delegate,
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const base::Closure& callback,
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const ConnectErrorCallback& error_callback) OVERRIDE;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetPinCode(const std::string& pincode) OVERRIDE;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetPasskey(uint32 passkey) OVERRIDE;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ConfirmPairing() OVERRIDE;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RejectPairing() OVERRIDE;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void CancelPairing() OVERRIDE;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Disconnect(
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const base::Closure& callback,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ErrorCallback& error_callback) OVERRIDE;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Forget(const ErrorCallback& error_callback) OVERRIDE;
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ConnectToService(
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& service_uuid,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const SocketCallback& callback) OVERRIDE;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetOutOfBandPairingData(
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const BluetoothOutOfBandPairingData& data,
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const base::Closure& callback,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ErrorCallback& error_callback) OVERRIDE;
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ClearOutOfBandPairingData(
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const base::Closure& callback,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ErrorCallback& error_callback) OVERRIDE;
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  friend class BluetoothAdapterWin;
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Computes the fingerprint that can be used to compare the devices.
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static uint32 ComputeDeviceFingerprint(
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const BluetoothTaskManagerWin::DeviceState& state);
692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  uint32 device_fingerprint() const {
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return device_fingerprint_;
722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Used to compare the devices.
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  uint32 device_fingerprint_;
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ServiceRecordList service_record_list_;
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(BluetoothDeviceWin);
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace device
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // DEVICE_BLUETOOTH_BLUETOOTH_DEVICE_WIN_H_
84