Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(981)

Unified Diff: device/bluetooth/bluetooth_low_energy_win_fake.h

Issue 1676073002: Implement BluetoothLowEnergyWrapperFake for Bluetooth test fixture (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase && address comments Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « device/bluetooth/bluetooth_low_energy_win.h ('k') | device/bluetooth/bluetooth_low_energy_win_fake.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/bluetooth/bluetooth_low_energy_win_fake.h
diff --git a/device/bluetooth/bluetooth_low_energy_win_fake.h b/device/bluetooth/bluetooth_low_energy_win_fake.h
index a22d5cbb86327ad7280abcef6f7197d6c9b57cbe..e93774f9bcabc67bffaee9748751e338c8a12c12 100644
--- a/device/bluetooth/bluetooth_low_energy_win_fake.h
+++ b/device/bluetooth/bluetooth_low_energy_win_fake.h
@@ -7,9 +7,53 @@
#include "device/bluetooth/bluetooth_low_energy_win.h"
+#include <set>
+#include <unordered_map>
+
namespace device {
namespace win {
+struct BLEDevice;
+struct BLEGattService;
+struct BLEGattCharacteristic;
+struct BLEGattDescriptor;
+
+// The key of BLEDevicesMap is the string of the BLE device address.
+typedef std::unordered_map<std::string, scoped_ptr<BLEDevice>> BLEDevicesMap;
+// The key of BLEGattServicesMap, BLEGattCharacteristicsMap and
+// BLEGattDescriptorsMap is the string of the attribute handle.
+typedef std::unordered_map<std::string, scoped_ptr<BLEGattService>>
+ BLEGattServicesMap;
+typedef std::unordered_map<std::string, scoped_ptr<BLEGattCharacteristic>>
+ BLEGattCharacteristicsMap;
+typedef std::unordered_map<std::string, scoped_ptr<BLEGattDescriptor>>
+ BLEGattDescriptorsMap;
+// The key of BLEAttributeHandleTable is the string of the BLE device address.
+typedef std::unordered_map<std::string, scoped_ptr<std::set<USHORT>>>
+ BLEAttributeHandleTable;
+
+struct BLEDevice {
+ scoped_ptr<BluetoothLowEnergyDeviceInfo> device_info;
+ BLEGattServicesMap primary_services;
+};
+
+struct BLEGattService {
+ scoped_ptr<BTH_LE_GATT_SERVICE> service_info;
+ BLEGattServicesMap included_services;
+ BLEGattCharacteristicsMap included_characteristics;
+};
+
+struct BLEGattCharacteristic {
+ scoped_ptr<BTH_LE_GATT_CHARACTERISTIC> characteristic_info;
+ scoped_ptr<BTH_LE_GATT_CHARACTERISTIC_VALUE> value;
+ BLEGattDescriptorsMap included_descriptors;
+};
+
+struct BLEGattDescriptor {
+ scoped_ptr<BTH_LE_GATT_DESCRIPTOR> descriptor_info;
+ scoped_ptr<BTH_LE_GATT_DESCRIPTOR_VALUE> value;
+};
+
// Fake implementation of BluetoothLowEnergyWrapper. Used for BluetoothTestWin.
class BluetoothLowEnergyWrapperFake : public BluetoothLowEnergyWrapper {
public:
@@ -26,6 +70,44 @@ class BluetoothLowEnergyWrapperFake : public BluetoothLowEnergyWrapper {
const base::FilePath& device_path,
ScopedVector<BluetoothLowEnergyServiceInfo>* services,
std::string* error) override;
+
+ BLEDevice* SimulateBLEDevice(std::string device_name,
+ BLUETOOTH_ADDRESS device_address);
+ BLEGattService* SimulateBLEGattService(BLEDevice* device, std::string uuid);
+
+ private:
+ // Generate an unique attribute handle on |device_address|.
+ USHORT GenerateAUniqueAttributeHandle(std::string device_address);
+
+ // Generate device path for the BLE device with |device_address|.
+ base::string16 GenerateBLEDevicePath(std::string device_address);
+
+ // Generate GATT service device path of the service with
+ // |service_attribute_handle|. |resident_device_path| is the BLE device this
+ // GATT service belongs to.
+ base::string16 GenerateBLEGattServiceDevicePath(
+ base::string16 resident_device_path,
+ USHORT service_attribute_handle);
+
+ // Extract device address from the device |path| generated by
+ // GenerateBLEDevicePath or GenerateBLEGattServiceDevicePath.
+ base::string16 ExtractDeviceAddressFromDevicePath(base::string16 path);
+
+ // Extract service attribute handle from the |path| generated by
+ // GenerateBLEGattServiceDevicePath.
+ base::string16 ExtractServiceAttributeHandleFromDevicePath(
+ base::string16 path);
+
+ // The canonical BLE device address string format is the
+ // BluetoothDevice::CanonicalizeAddress.
+ std::string BluetoothAddressToCanonicalString(const BLUETOOTH_ADDRESS& btha);
+
+ // The canonical UUID string format is device::BluetoothUUID.value().
+ BTH_LE_UUID CanonicalStringToBTH_LE_UUID(std::string uuid);
+
+ // Table to store allocated attribute handle for a device.
+ BLEAttributeHandleTable attribute_handle_table_;
+ BLEDevicesMap simulated_devices_;
};
} // namespace win
« no previous file with comments | « device/bluetooth/bluetooth_low_energy_win.h ('k') | device/bluetooth/bluetooth_low_energy_win_fake.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698