#ifndef DEVICE_BLUETOOTH_BLUETOOTH_CLASSIC_WIN_FAKE_H_
#define DEVICE_BLUETOOTH_BLUETOOTH_CLASSIC_WIN_FAKE_H_
#include <memory>
#include <string>
#include "device/bluetooth/bluetooth_classic_win.h"
namespace device {
namespace win {
struct BluetoothRadio {
BLUETOOTH_RADIO_INFO radio_info;
BOOL is_connectable;
};
class BluetoothClassicWrapperFake : public BluetoothClassicWrapper {
public:
BluetoothClassicWrapperFake();
~BluetoothClassicWrapperFake() override;
HBLUETOOTH_RADIO_FIND FindFirstRadio(
const BLUETOOTH_FIND_RADIO_PARAMS* params) override;
DWORD GetRadioInfo(PBLUETOOTH_RADIO_INFO out_radio_info) override;
BOOL FindRadioClose(HBLUETOOTH_RADIO_FIND handle) override;
BOOL IsConnectable() override;
HBLUETOOTH_DEVICE_FIND FindFirstDevice(
const BLUETOOTH_DEVICE_SEARCH_PARAMS* params,
BLUETOOTH_DEVICE_INFO* out_device_info) override;
BOOL FindNextDevice(HBLUETOOTH_DEVICE_FIND handle,
BLUETOOTH_DEVICE_INFO* out_device_info) override;
BOOL FindDeviceClose(HBLUETOOTH_DEVICE_FIND handle) override;
BOOL EnableDiscovery(BOOL is_enable) override;
BOOL EnableIncomingConnections(BOOL is_enable) override;
DWORD LastError() override;
bool HasHandle() override;
BluetoothRadio* SimulateARadio(std::u16string name,
BLUETOOTH_ADDRESS address);
private:
std::unique_ptr<BluetoothRadio> simulated_radios_;
DWORD last_error_;
};
}
}
#endif