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

Side by Side Diff: device/bluetooth/bluetooth_low_energy_device_mac.mm

Issue 791763005: Added bluetooth LE support on Mac platform (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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
(Empty)
1 #include "device/bluetooth/bluetooth_low_energy_device_mac.h"
armansito 2015/01/24 18:07:09 Copyright header?
dvh 2015/01/27 00:14:55 Done.
2
3 #import <CoreFoundation/CoreFoundation.h>
4
5 #include "base/mac/scoped_cftyperef.h"
6
7 using namespace device;
8
9 namespace {
armansito 2015/01/24 18:07:09 nit: new line here.
dvh 2015/01/27 00:14:55 Done.
10 // Converts a CBUUID to a Cocoa string.
11 //
12 // The string representation can have the following formats:
13 // - 16 bit: xxxx
14 // - 128 bit: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
15 // CBUUID supports only 16 bits and 128 bits formats.
16 //
17 // In OSX < 10.10, -[uuid UUIDString] method is not implemented. It's why we
18 // need to provide this function.
19 NSString* stringWithCBUUID(CBUUID* uuid) {
20 NSData* data = [uuid data];
21
22 NSUInteger bytesToConvert = [data length];
23 const unsigned char* uuidBytes = (const unsigned char*)[data bytes];
24 NSMutableString* outputString = [NSMutableString stringWithCapacity:16];
25
26 for (NSUInteger currentByteIndex = 0; currentByteIndex < bytesToConvert;
27 currentByteIndex++) {
28 switch (currentByteIndex) {
29 case 3:
30 case 5:
31 case 7:
32 case 9:
33 [outputString appendFormat:@"%02x-", uuidBytes[currentByteIndex]];
34 break;
35 default:
36 [outputString appendFormat:@"%02x", uuidBytes[currentByteIndex]];
37 }
38 }
39 return outputString;
40 }
41
42 // Converts a CBUUID to a BluetoothUUID.
43 device::BluetoothUUID BluetoothUUIDWithCBUUID(CBUUID* uuid) {
44 NSString* uuidString = nil;
45 if ([uuid respondsToSelector:@selector(UUIDString)]) {
46 uuidString = [uuid performSelector:@selector(UUIDString)];
47 } else {
48 uuidString = stringWithCBUUID(uuid);
49 }
50 std::string uuid_c_string([uuidString UTF8String]);
51 return BluetoothUUID(uuid_c_string);
52 }
armansito 2015/01/24 18:07:10 nit: new line.
53 }
armansito 2015/01/24 18:07:10 nit: Closing brace for namespace should read "} /
dvh 2015/01/27 00:14:55 Done.
54
55 BluetoothLowEnergyDeviceMac::BluetoothLowEnergyDeviceMac(
56 CBPeripheral* peripheral, NSDictionary* advertisementData, int rssi) {
57 Update(peripheral, advertisementData, rssi);
58 }
59
60 BluetoothLowEnergyDeviceMac::~BluetoothLowEnergyDeviceMac() {}
61
62 void BluetoothLowEnergyDeviceMac::Update(CBPeripheral* peripheral,
63 NSDictionary* advertisementData,
64 int rssi) {
65 peripheral_.reset([peripheral retain]);
66 rssi_ = rssi;
67 ClearServiceData();
68 NSNumber* nbConnectable =
69 [advertisementData objectForKey:CBAdvertisementDataIsConnectable];
70 connectable_ = [nbConnectable boolValue];
71 NSDictionary* serviceData =
72 [advertisementData objectForKey:CBAdvertisementDataServiceDataKey];
73 for (CBUUID* uuid in serviceData) {
74 NSData* data = [serviceData objectForKey:uuid];
75 BluetoothUUID serviceUUID = BluetoothUUIDWithCBUUID(uuid);
76 SetServiceData(serviceUUID, (const char*)[data bytes], [data length]);
77 }
78 }
79
80 std::string BluetoothLowEnergyDeviceMac::GetIdentifier() const {
81 if ([peripheral_ respondsToSelector:@selector(identifier)]) {
82 // When -[CBPeripheral identifier] is available.
83 NSUUID* uuid = [peripheral_ performSelector:@selector(identifier)];
84 NSString* uuidString = [uuid UUIDString];
85 return std::string([uuidString UTF8String]);
armansito 2015/01/24 18:07:09 nit: Remove else since you already have an early r
dvh 2015/01/27 00:14:55 Done.
86 } else {
87 base::ScopedCFTypeRef<CFStringRef> str(
88 CFUUIDCreateString(NULL, [peripheral_ UUID]));
89 base::ScopedCFTypeRef<CFDataRef> data(CFStringCreateExternalRepresentation(
90 NULL, str, kCFStringEncodingASCII, 0));
91 return std::string((const char*)CFDataGetBytePtr(data),
92 CFDataGetLength(data));
93 }
94 }
95
96 uint32 BluetoothLowEnergyDeviceMac::GetBluetoothClass() const { return 0; }
97
98 std::string BluetoothLowEnergyDeviceMac::GetAddress() const {
99 return std::string();
100 }
101
102 BluetoothDevice::VendorIDSource BluetoothLowEnergyDeviceMac::GetVendorIDSource()
103 const {
104 return VENDOR_ID_UNKNOWN;
105 }
106
107 uint16 BluetoothLowEnergyDeviceMac::GetVendorID() const { return 0; }
108
109 uint16 BluetoothLowEnergyDeviceMac::GetProductID() const { return 0; }
110
111 uint16 BluetoothLowEnergyDeviceMac::GetDeviceID() const { return 0; }
112
113 int BluetoothLowEnergyDeviceMac::GetRSSI() const { return rssi_; }
114
115 bool BluetoothLowEnergyDeviceMac::IsPaired() const { return false; }
116
117 bool BluetoothLowEnergyDeviceMac::IsConnected() const {
118 return [peripheral_ isConnected];
119 }
120
121 bool BluetoothLowEnergyDeviceMac::IsConnectable() const { return connectable_; }
122
123 bool BluetoothLowEnergyDeviceMac::IsConnecting() const { return false; }
124
125 BluetoothDevice::UUIDList BluetoothLowEnergyDeviceMac::GetUUIDs() const {
126 return std::vector<device::BluetoothUUID>();
127 }
128
129 bool BluetoothLowEnergyDeviceMac::ExpectingPinCode() const { return false; }
130
131 bool BluetoothLowEnergyDeviceMac::ExpectingPasskey() const { return false; }
132
133 bool BluetoothLowEnergyDeviceMac::ExpectingConfirmation() const {
134 return false;
135 }
136
137 void BluetoothLowEnergyDeviceMac::GetConnectionInfo(
138 const ConnectionInfoCallback& callback) {}
armansito 2015/01/24 18:07:10 Add NOTIMPLEMENTED() ?
dvh 2015/01/27 00:14:55 Done.
139
140 void BluetoothLowEnergyDeviceMac::Connect(
141 PairingDelegate* pairing_delegate, const base::Closure& callback,
142 const ConnectErrorCallback& error_callback) {
143 NOTIMPLEMENTED();
144 }
145
146 void BluetoothLowEnergyDeviceMac::SetPinCode(const std::string& pincode) {
147 NOTIMPLEMENTED();
148 }
149
150 void BluetoothLowEnergyDeviceMac::SetPasskey(uint32 passkey) {
151 NOTIMPLEMENTED();
152 }
153
154 void BluetoothLowEnergyDeviceMac::ConfirmPairing() { NOTIMPLEMENTED(); }
155
156 void BluetoothLowEnergyDeviceMac::RejectPairing() { NOTIMPLEMENTED(); }
157
158 void BluetoothLowEnergyDeviceMac::CancelPairing() { NOTIMPLEMENTED(); }
159
160 void BluetoothLowEnergyDeviceMac::Disconnect(
161 const base::Closure& callback, const ErrorCallback& error_callback) {
162 NOTIMPLEMENTED();
163 }
164
165 void BluetoothLowEnergyDeviceMac::Forget(const ErrorCallback& error_callback) {
166 NOTIMPLEMENTED();
167 }
168
169 void BluetoothLowEnergyDeviceMac::ConnectToService(
170 const BluetoothUUID& uuid, const ConnectToServiceCallback& callback,
171 const ConnectToServiceErrorCallback& error_callback) {
172 NOTIMPLEMENTED();
173 }
174
175 void BluetoothLowEnergyDeviceMac::ConnectToServiceInsecurely(
176 const device::BluetoothUUID& uuid, const ConnectToServiceCallback& callback,
177 const ConnectToServiceErrorCallback& error_callback) {
178 NOTIMPLEMENTED();
179 }
180
181 void BluetoothLowEnergyDeviceMac::CreateGattConnection(
182 const GattConnectionCallback& callback,
183 const ConnectErrorCallback& error_callback) {
184 NOTIMPLEMENTED();
185 }
186
187 std::string BluetoothLowEnergyDeviceMac::GetDeviceName() const {
188 NSData* data = [[peripheral_ name] dataUsingEncoding:NSUTF8StringEncoding
189 allowLossyConversion:YES];
190 return std::string((const char*)[data bytes], [data length]);
191 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698