1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_ADAPTER_FACTORY_H_ 6 #define DEVICE_BLUETOOTH_BLUETOOTH_ADAPTER_FACTORY_H_ 7 8 #include <string> 9 10 #include "base/callback.h" 11 #include "base/memory/ref_counted.h" 12 #include "device/bluetooth/bluetooth_adapter.h" 13 14 namespace device { 15 16 // BluetoothAdapterFactory is a class that contains static methods, which 17 // instantiate either a specific Bluetooth adapter, or the generic "default 18 // adapter" which may change depending on availability. 19 class BluetoothAdapterFactory { 20 public: 21 typedef base::Callback<void(scoped_refptr<BluetoothAdapter> adapter)> 22 AdapterCallback; 23 24 // Returns true if the Bluetooth adapter is available for the current 25 // platform. 26 static bool IsBluetoothAdapterAvailable(); 27 28 // Returns the shared instance of the default adapter, creating and 29 // initializing it if necessary. |callback| is called with the adapter 30 // instance passed only once the adapter is fully initialized and ready to 31 // use. 32 static void GetAdapter(const AdapterCallback& callback); 33 34 // Returns the shared instance of the adapter that has already been created, 35 // but may or may not have been initialized. 36 // It returns NULL if no adapter has been created at the time. 37 static scoped_refptr<BluetoothAdapter> MaybeGetAdapter(); 38 }; 39 40 } // namespace device 41 42 #endif // DEVICE_BLUETOOTH_BLUETOOTH_ADAPTER_FACTORY_H_ 43