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