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

Side by Side Diff: device/bluetooth/test/bluetooth_test_mac.mm

Issue 2248913002: bluetooth: Implement RSSI and Tx Power on macOS and Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@bluetooth-refactor-adv-data
Patch Set: Address jyasskin's comments Created 4 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "device/bluetooth/test/bluetooth_test_mac.h" 5 #include "device/bluetooth/test/bluetooth_test_mac.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/mac/foundation_util.h" 9 #include "base/mac/foundation_util.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 scoped_nsobject<MockCentralManager> mock_central_manager_; 53 scoped_nsobject<MockCentralManager> mock_central_manager_;
54 54
55 DISALLOW_COPY_AND_ASSIGN(ScopedMockCentralManager); 55 DISALLOW_COPY_AND_ASSIGN(ScopedMockCentralManager);
56 }; 56 };
57 57
58 namespace { 58 namespace {
59 59
60 scoped_nsobject<NSDictionary> CreateAdvertisementData( 60 scoped_nsobject<NSDictionary> CreateAdvertisementData(
61 NSString* name, 61 NSString* name,
62 NSArray* uuids, 62 NSArray* uuids,
63 NSDictionary* service_data) { 63 NSDictionary* service_data,
64 NSNumber* tx_power) {
64 NSMutableDictionary* advertisement_data( 65 NSMutableDictionary* advertisement_data(
65 [NSMutableDictionary dictionaryWithDictionary:@{ 66 [NSMutableDictionary dictionaryWithDictionary:@{
66 CBAdvertisementDataIsConnectable : @(YES) 67 CBAdvertisementDataIsConnectable : @(YES)
67 }]); 68 }]);
68 69
69 if (name) { 70 if (name) {
70 [advertisement_data setObject:name forKey:CBAdvertisementDataLocalNameKey]; 71 [advertisement_data setObject:name forKey:CBAdvertisementDataLocalNameKey];
71 } 72 }
72 73
73 if (uuids) { 74 if (uuids) {
74 [advertisement_data setObject:uuids 75 [advertisement_data setObject:uuids
75 forKey:CBAdvertisementDataServiceUUIDsKey]; 76 forKey:CBAdvertisementDataServiceUUIDsKey];
76 } 77 }
77 78
78 if (service_data) { 79 if (service_data) {
79 [advertisement_data setObject:service_data 80 [advertisement_data setObject:service_data
80 forKey:CBAdvertisementDataServiceDataKey]; 81 forKey:CBAdvertisementDataServiceDataKey];
81 } 82 }
82 83
84 if (tx_power) {
85 [advertisement_data setObject:tx_power
86 forKey:CBAdvertisementDataTxPowerLevelKey];
87 }
88
83 return scoped_nsobject<NSDictionary>(advertisement_data, 89 return scoped_nsobject<NSDictionary>(advertisement_data,
84 base::scoped_policy::RETAIN); 90 base::scoped_policy::RETAIN);
85 } 91 }
86 92
87 } // namespace 93 } // namespace
88 94
89 // UUID1 hashes to kTestDeviceAddress1, and UUID2 to kTestDeviceAddress2. 95 // UUID1 hashes to kTestDeviceAddress1, and UUID2 to kTestDeviceAddress2.
90 const std::string BluetoothTestMac::kTestPeripheralUUID1 = 96 const std::string BluetoothTestMac::kTestPeripheralUUID1 =
91 "34045B00-0000-0000-0000-000000000000"; 97 "34045B00-0000-0000-0000-000000000000";
92 const std::string BluetoothTestMac::kTestPeripheralUUID2 = 98 const std::string BluetoothTestMac::kTestPeripheralUUID2 =
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 146
141 BluetoothDevice* BluetoothTestMac::SimulateLowEnergyDevice(int device_ordinal) { 147 BluetoothDevice* BluetoothTestMac::SimulateLowEnergyDevice(int device_ordinal) {
142 TestBluetoothAdapterObserver observer(adapter_); 148 TestBluetoothAdapterObserver observer(adapter_);
143 CBCentralManager* central_manager = adapter_mac_->low_energy_central_manager_; 149 CBCentralManager* central_manager = adapter_mac_->low_energy_central_manager_;
144 BluetoothLowEnergyCentralManagerDelegate* central_manager_delegate = 150 BluetoothLowEnergyCentralManagerDelegate* central_manager_delegate =
145 adapter_mac_->low_energy_central_manager_delegate_; 151 adapter_mac_->low_energy_central_manager_delegate_;
146 152
147 const char* identifier; 153 const char* identifier;
148 NSString* name; 154 NSString* name;
149 NSArray* uuids; 155 NSArray* uuids;
156 NSNumber* rssi;
150 NSDictionary* service_data; 157 NSDictionary* service_data;
158 NSNumber* tx_power;
151 159
152 switch (device_ordinal) { 160 switch (device_ordinal) {
153 case 1: 161 case 1:
154 identifier = kTestPeripheralUUID1.c_str(); 162 identifier = kTestPeripheralUUID1.c_str();
155 name = @(kTestDeviceName.c_str()); 163 name = @(kTestDeviceName.c_str());
164 rssi = @(static_cast<int8_t>(TestRSSI::LOWEST));
156 uuids = @[ 165 uuids = @[
157 [CBUUID UUIDWithString:@(kTestUUIDGenericAccess.c_str())], 166 [CBUUID UUIDWithString:@(kTestUUIDGenericAccess.c_str())],
158 [CBUUID UUIDWithString:@(kTestUUIDGenericAttribute.c_str())] 167 [CBUUID UUIDWithString:@(kTestUUIDGenericAttribute.c_str())]
159 ]; 168 ];
160 service_data = @{ 169 service_data = @{
161 [CBUUID UUIDWithString:@(kTestUUIDHeartRate.c_str())] : 170 [CBUUID UUIDWithString:@(kTestUUIDHeartRate.c_str())] :
162 [NSData dataWithBytes:(unsigned char[]){1} length:1] 171 [NSData dataWithBytes:(unsigned char[]){1} length:1]
163 }; 172 };
173 tx_power = @(static_cast<int8_t>(TestTxPower::LOWEST));
164 break; 174 break;
165 case 2: 175 case 2:
166 identifier = kTestPeripheralUUID1.c_str(); 176 identifier = kTestPeripheralUUID1.c_str();
167 name = @(kTestDeviceName.c_str()); 177 name = @(kTestDeviceName.c_str());
178 rssi = @(static_cast<int8_t>(TestRSSI::LOWER));
168 uuids = @[ 179 uuids = @[
169 [CBUUID UUIDWithString:@(kTestUUIDImmediateAlert.c_str())], 180 [CBUUID UUIDWithString:@(kTestUUIDImmediateAlert.c_str())],
170 [CBUUID UUIDWithString:@(kTestUUIDLinkLoss.c_str())] 181 [CBUUID UUIDWithString:@(kTestUUIDLinkLoss.c_str())]
171 ]; 182 ];
172 service_data = @{ 183 service_data = @{
173 [CBUUID UUIDWithString:@(kTestUUIDHeartRate.c_str())] : 184 [CBUUID UUIDWithString:@(kTestUUIDHeartRate.c_str())] :
174 [NSData dataWithBytes:(unsigned char[]){2} length:1], 185 [NSData dataWithBytes:(unsigned char[]){2} length:1],
175 [CBUUID UUIDWithString:@(kTestUUIDImmediateAlert.c_str())] : 186 [CBUUID UUIDWithString:@(kTestUUIDImmediateAlert.c_str())] :
176 [NSData dataWithBytes:(unsigned char[]){0} length:1] 187 [NSData dataWithBytes:(unsigned char[]){0} length:1]
177 }; 188 };
189 tx_power = @(static_cast<int8_t>(TestTxPower::LOWER));
178 break; 190 break;
179 case 3: 191 case 3:
180 identifier = kTestPeripheralUUID1.c_str(); 192 identifier = kTestPeripheralUUID1.c_str();
181 name = @(kTestDeviceNameEmpty.c_str()); 193 name = @(kTestDeviceNameEmpty.c_str());
194 rssi = @(static_cast<int8_t>(TestRSSI::LOW));
182 uuids = nil; 195 uuids = nil;
183 service_data = nil; 196 service_data = nil;
197 tx_power = nil;
184 break; 198 break;
185 case 4: 199 case 4:
186 identifier = kTestPeripheralUUID2.c_str(); 200 identifier = kTestPeripheralUUID2.c_str();
187 name = @(kTestDeviceNameEmpty.c_str()); 201 name = @(kTestDeviceNameEmpty.c_str());
202 rssi = @(static_cast<int8_t>(TestRSSI::MEDIUM));
188 uuids = nil; 203 uuids = nil;
189 service_data = nil; 204 service_data = nil;
205 tx_power = nil;
190 break; 206 break;
191 case 5: 207 case 5:
192 identifier = kTestPeripheralUUID1.c_str(); 208 identifier = kTestPeripheralUUID1.c_str();
193 name = nil; 209 name = nil;
210 rssi = @(static_cast<int8_t>(TestRSSI::HIGH));
194 uuids = nil; 211 uuids = nil;
195 service_data = nil; 212 service_data = nil;
213 tx_power = nil;
196 break; 214 break;
197 default: 215 default:
198 NOTREACHED() << "SimulateLowEnergyDevice not implemented for " 216 NOTREACHED() << "SimulateLowEnergyDevice not implemented for "
199 << device_ordinal; 217 << device_ordinal;
200 identifier = nil; 218 identifier = nil;
201 name = nil; 219 name = nil;
220 rssi = nil;
202 uuids = nil; 221 uuids = nil;
203 service_data = nil; 222 service_data = nil;
223 tx_power = nil;
204 } 224 }
205 scoped_nsobject<MockCBPeripheral> mock_peripheral([[MockCBPeripheral alloc] 225 scoped_nsobject<MockCBPeripheral> mock_peripheral([[MockCBPeripheral alloc]
206 initWithUTF8StringIdentifier:identifier 226 initWithUTF8StringIdentifier:identifier
207 name:name]); 227 name:name]);
208 mock_peripheral.get().bluetoothTestMac = this; 228 mock_peripheral.get().bluetoothTestMac = this;
209 [central_manager_delegate 229 [central_manager_delegate
210 centralManager:central_manager 230 centralManager:central_manager
211 didDiscoverPeripheral:mock_peripheral.get().peripheral 231 didDiscoverPeripheral:mock_peripheral.get().peripheral
212 advertisementData:CreateAdvertisementData(name, uuids, service_data) 232 advertisementData:CreateAdvertisementData(name, uuids, service_data,
213 RSSI:@(0)]; 233 tx_power)
234 RSSI:rssi];
214 return observer.last_device(); 235 return observer.last_device();
215 } 236 }
216 237
217 void BluetoothTestMac::SimulateGattConnection(BluetoothDevice* device) { 238 void BluetoothTestMac::SimulateGattConnection(BluetoothDevice* device) {
218 BluetoothLowEnergyDeviceMac* lowEnergyDeviceMac = 239 BluetoothLowEnergyDeviceMac* lowEnergyDeviceMac =
219 static_cast<BluetoothLowEnergyDeviceMac*>(device); 240 static_cast<BluetoothLowEnergyDeviceMac*>(device);
220 CBPeripheral* peripheral = lowEnergyDeviceMac->GetPeripheral(); 241 CBPeripheral* peripheral = lowEnergyDeviceMac->GetPeripheral();
221 MockCBPeripheral* mockPeripheral = (MockCBPeripheral*)peripheral; 242 MockCBPeripheral* mockPeripheral = (MockCBPeripheral*)peripheral;
222 [mockPeripheral setState:CBPeripheralStateConnected]; 243 [mockPeripheral setState:CBPeripheralStateConnected];
223 CBCentralManager* centralManager = 244 CBCentralManager* centralManager =
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 // crypto::SHA256HashString(input_str, raw, sizeof(raw)); 488 // crypto::SHA256HashString(input_str, raw, sizeof(raw));
468 // if (base::HexEncode(raw, sizeof(raw)) == target) { 489 // if (base::HexEncode(raw, sizeof(raw)) == target) {
469 // return input_str; 490 // return input_str;
470 // } 491 // }
471 // ++input[0]; 492 // ++input[0];
472 // } 493 // }
473 // return ""; 494 // return "";
474 // } 495 // }
475 496
476 } // namespace device 497 } // namespace device
OLDNEW
« device/bluetooth/bluetooth_device_unittest.cc ('K') | « device/bluetooth/test/bluetooth_test.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698