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

Side by Side Diff: components/proximity_auth/ble/bluetooth_low_energy_weave_client_connection.h

Issue 2075313002: Substituting legacy protocol with uWeave protocol (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: updated gyp build files Created 4 years, 5 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 #ifndef COMPONENTS_PROXIMITY_AUTH_BLE_BLUETOOTH_LOW_ENERGY_CONNECTION_H_ 5 #ifndef COMPONENTS_PROXIMITY_AUTH_BLE_BLUETOOTH_LOW_ENERGY_WEAVE_CLIENT_CONNECTI ON_H_
6 #define COMPONENTS_PROXIMITY_AUTH_BLE_BLUETOOTH_LOW_ENERGY_CONNECTION_H_ 6 #define COMPONENTS_PROXIMITY_AUTH_BLE_BLUETOOTH_LOW_ENERGY_WEAVE_CLIENT_CONNECTI ON_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
11 #include <map>
11 #include <memory> 12 #include <memory>
12 #include <queue> 13 #include <queue>
13 #include <string> 14 #include <string>
14 15
15 #include "base/macros.h" 16 #include "base/macros.h"
16 #include "base/memory/ref_counted.h" 17 #include "base/memory/ref_counted.h"
17 #include "base/memory/weak_ptr.h" 18 #include "base/memory/weak_ptr.h"
18 #include "base/time/time.h" 19 #include "base/time/time.h"
19 #include "components/proximity_auth/ble/bluetooth_low_energy_characteristics_fin der.h" 20 #include "components/proximity_auth/ble/bluetooth_low_energy_characteristics_fin der.h"
21 #include "components/proximity_auth/ble/bluetooth_low_energy_weave_packet_genera tor.h"
22 #include "components/proximity_auth/ble/bluetooth_low_energy_weave_packet_receiv er.h"
20 #include "components/proximity_auth/ble/fake_wire_message.h" 23 #include "components/proximity_auth/ble/fake_wire_message.h"
21 #include "components/proximity_auth/ble/remote_attribute.h" 24 #include "components/proximity_auth/ble/remote_attribute.h"
22 #include "components/proximity_auth/connection.h" 25 #include "components/proximity_auth/connection.h"
23 #include "device/bluetooth/bluetooth_adapter.h" 26 #include "device/bluetooth/bluetooth_adapter.h"
24 #include "device/bluetooth/bluetooth_device.h" 27 #include "device/bluetooth/bluetooth_device.h"
25 #include "device/bluetooth/bluetooth_gatt_notify_session.h" 28 #include "device/bluetooth/bluetooth_gatt_notify_session.h"
26 #include "device/bluetooth/bluetooth_remote_gatt_characteristic.h" 29 #include "device/bluetooth/bluetooth_remote_gatt_characteristic.h"
27 #include "device/bluetooth/bluetooth_uuid.h" 30 #include "device/bluetooth/bluetooth_uuid.h"
28 31
29 namespace base { 32 namespace base {
30 class TaskRunner; 33 class TaskRunner;
31 } 34 }
32 35
33 namespace proximity_auth { 36 namespace proximity_auth {
34
35 class BluetoothThrottler; 37 class BluetoothThrottler;
36 38
37 // Represents a connection with a remote device over Bluetooth low energy. The 39 namespace weave {
38 // connection is a persistent bidirectional channel for sending and receiving 40 // Creates GATT connection on top of the BLE connection and act as a Client.
39 // wire messages. The remote device is the peripheral mode and the service 41 // uWeave communication follows the flow:
40 // contains two characteristics: one to send data and another to receive it. 42 // Client | Server
41 // 43 // ---------------------------------|--------------------------------
42 // The connection flow is described below. 44 // send connection request |
43 // 45 // | receive connection request
44 // Discover Reader and Writer Characteristics 46 // | send connection response
45 // | 47 // receive connection response |
46 // | 48 // opt: send data | opt: send data
47 // | 49 // receive data | receive data
48 // Start Notify Session 50 // opt: close connection | opt: close connection
49 // | 51 class BluetoothLowEnergyWeaveClientConnection
50 // | 52 : public Connection,
51 // | 53 public device::BluetoothAdapter::Observer {
52 // Write kInviteToConnectSignal to Writer Characteristic
53 // |
54 // |
55 // |
56 // Read kInvitationResponseSignal from Reader Characteristic
57 // |
58 // |
59 // |
60 // Proximity Auth Connection Established
61 class BluetoothLowEnergyConnection : public Connection,
62 public device::BluetoothAdapter::Observer {
63 public: 54 public:
64 // Signals sent to the remote device to indicate connection related events. 55 class Factory {
65 enum class ControlSignal : uint32_t { 56 public:
66 kInviteToConnectSignal = 0, 57 static std::unique_ptr<BluetoothLowEnergyWeaveClientConnection>
67 kInvitationResponseSignal = 1, 58 NewInstance();
68 kSendSignal = 2, 59
69 kDisconnectSignal = 3, 60 // Exposed for testing.
61 static void SetInstanceForTesting(Factory* factory);
62
63 protected:
64 // Exposed for testing.
65 virtual std::unique_ptr<BluetoothLowEnergyWeaveClientConnection>
66 BuildInstance();
67
68 private:
69 static Factory* factory_instance_;
70 }; 70 };
71 71
72 // The sub-state of a proximity_auth::BluetoothLowEnergyConnection class 72 // The sub-state of a proximity_auth::BluetoothLowEnergyWeaveClientConnection
73 // extends the IN_PROGRESS state of proximity_auth::Connection::Status. 73 // extends the IN_PROGRESS state of proximity_auth::Connection::Status.
74 enum class SubStatus { 74 enum SubStatus {
75 DISCONNECTED, 75 DISCONNECTED,
76 WAITING_GATT_CONNECTION, 76 WAITING_GATT_CONNECTION,
77 WAITING_CHARACTERISTICS, 77 WAITING_CHARACTERISTICS,
78 CHARACTERISTICS_FOUND, 78 CHARACTERISTICS_FOUND,
79 WAITING_NOTIFY_SESSION, 79 WAITING_NOTIFY_SESSION,
80 NOTIFY_SESSION_READY, 80 NOTIFY_SESSION_READY,
81 WAITING_RESPONSE_SIGNAL, 81 WAITING_CONNECTION_RESPONSE,
82 CONNECTED, 82 CONNECTED,
83 }; 83 };
84 84
85 // Constructs a Bluetooth low energy connection to the service with 85 // Constructs a Bluetooth low energy connection to the service with
86 // |remote_service_| on the |remote_device|. The |adapter| must be already 86 // |remote_service_| on the |remote_device|. The |adapter| must be already
87 // initaalized and ready. The GATT connection may alreaady be established and 87 // initialized and ready. The GATT connection may alreaady be established and
88 // pass through |gatt_connection|. A subsequent call to Connect() must be 88 // pass through |gatt_connection|. A subsequent call to Connect() must be
89 // made. 89 // made.
90 BluetoothLowEnergyConnection( 90 BluetoothLowEnergyWeaveClientConnection(
91 const RemoteDevice& remote_device, 91 const RemoteDevice& remote_device,
92 scoped_refptr<device::BluetoothAdapter> adapter, 92 scoped_refptr<device::BluetoothAdapter> adapter,
93 const device::BluetoothUUID remote_service_uuid, 93 const device::BluetoothUUID remote_service_uuid,
94 BluetoothThrottler* bluetooth_throttler, 94 BluetoothThrottler* bluetooth_throttler,
95 int max_number_of_write_attempts); 95 int max_number_of_write_attempts);
96 96
97 ~BluetoothLowEnergyConnection() override; 97 ~BluetoothLowEnergyWeaveClientConnection() override;
98 98
99 // proximity_auth::Connection: 99 // proximity_auth::Connection:
100 void Connect() override; 100 void Connect() override;
101 void Disconnect() override; 101 void Disconnect() override;
102 std::string GetDeviceAddress() override; 102 std::string GetDeviceAddress() override;
103 103
104 protected: 104 protected:
105 // Exposed for testing. 105 // Exposed for testing.
106 void SetSubStatus(SubStatus status); 106 void DestroyConnection();
107
108 // Exposed for testing.
107 SubStatus sub_status() { return sub_status_; } 109 SubStatus sub_status() { return sub_status_; }
108 110
111 // Exposed for testing.
112 int GetNumPendingMessages() { return map_to_message_.size(); }
113
109 // Sets |task_runner_| for testing. 114 // Sets |task_runner_| for testing.
110 void SetTaskRunnerForTesting(scoped_refptr<base::TaskRunner> task_runner); 115 void SetTaskRunnerForTesting(scoped_refptr<base::TaskRunner> task_runner);
111 116
112 // Virtual for testing. 117 // Virtual for testing.
113 virtual BluetoothLowEnergyCharacteristicsFinder* CreateCharacteristicsFinder( 118 virtual BluetoothLowEnergyCharacteristicsFinder* CreateCharacteristicsFinder(
114 const BluetoothLowEnergyCharacteristicsFinder::SuccessCallback& 119 const BluetoothLowEnergyCharacteristicsFinder::SuccessCallback&
115 success_callback, 120 success_callback,
116 const BluetoothLowEnergyCharacteristicsFinder::ErrorCallback& 121 const BluetoothLowEnergyCharacteristicsFinder::ErrorCallback&
117 error_callback); 122 error_callback);
118 123
119 // proximity_auth::Connection: 124 // proximity_auth::Connection:
120 void SendMessageImpl(std::unique_ptr<WireMessage> message) override; 125 void SendMessageImpl(std::unique_ptr<WireMessage> message) override;
121 126
122 // device::BluetoothAdapter::Observer: 127 // device::BluetoothAdapter::Observer:
123 void DeviceChanged(device::BluetoothAdapter* adapter, 128 void DeviceChanged(device::BluetoothAdapter* adapter,
124 device::BluetoothDevice* device) override; 129 device::BluetoothDevice* device) override;
125 void DeviceRemoved(device::BluetoothAdapter* adapter, 130 void DeviceRemoved(device::BluetoothAdapter* adapter,
126 device::BluetoothDevice* device) override; 131 device::BluetoothDevice* device) override;
127 void GattCharacteristicValueChanged( 132 void GattCharacteristicValueChanged(
128 device::BluetoothAdapter* adapter, 133 device::BluetoothAdapter* adapter,
129 device::BluetoothRemoteGattCharacteristic* characteristic, 134 device::BluetoothRemoteGattCharacteristic* characteristic,
130 const std::vector<uint8_t>& value) override; 135 const Packet& value) override;
131 136
132 private: 137 private:
138 enum WriteRequestType {
139 REGULAR,
140 MESSAGE_COMPLETE,
141 CONNECTION_REQUEST,
142 CONNECTION_CLOSE
143 };
144
133 // Represents a request to write |value| to a some characteristic. 145 // Represents a request to write |value| to a some characteristic.
134 // |is_last_write_for_wire_messsage| indicates whether this request 146 // |is_last_write_for_wire_messsage| indicates whether this request
135 // corresponds to the last write request for some wire message. 147 // corresponds to the last write request for some wire message.
136 // A WireMessage corresponds to exactly two WriteRequest: the first containing
137 // a kSendSignal + the size of the WireMessage, and the second containing a
138 // SendStatusSignal + the serialized WireMessage.
139 struct WriteRequest { 148 struct WriteRequest {
140 WriteRequest(const std::vector<uint8_t>& val, bool flag); 149 WriteRequest(const Packet& val,
150 WriteRequestType request_type,
151 int message_counter);
152 WriteRequest(const Packet& val, WriteRequestType request_type);
141 WriteRequest(const WriteRequest& other); 153 WriteRequest(const WriteRequest& other);
142 ~WriteRequest(); 154 ~WriteRequest();
143 155
144 std::vector<uint8_t> value; 156 Packet value;
145 bool is_last_write_for_wire_message; 157 WriteRequestType request_type;
158 int message_counter;
146 int number_of_failed_attempts; 159 int number_of_failed_attempts;
147 }; 160 };
148 161
162 void SetSubStatus(SubStatus status);
163
149 // Creates the GATT connection with |remote_device|. 164 // Creates the GATT connection with |remote_device|.
150 void CreateGattConnection(); 165 void CreateGattConnection();
151 166
152 // Called when a GATT connection is created. 167 // Called when a GATT connection is created.
153 void OnGattConnectionCreated( 168 void OnGattConnectionCreated(
154 std::unique_ptr<device::BluetoothGattConnection> gatt_connection); 169 std::unique_ptr<device::BluetoothGattConnection> gatt_connection);
155 170
156 // Callback called when there is an error creating the GATT connection. 171 // Callback called when there is an error creating the GATT connection.
157 void OnCreateGattConnectionError( 172 void OnCreateGattConnectionError(
158 device::BluetoothDevice::ConnectErrorCode error_code); 173 device::BluetoothDevice::ConnectErrorCode error_code);
159 174
160 // Callback called when |to_peripheral_char_| and |from_peripheral_char_| were 175 // Callback called when |tx_characteristic_| and |rx_characteristic_| were
161 // found. 176 // found.
162 void OnCharacteristicsFound(const RemoteAttribute& service, 177 void OnCharacteristicsFound(const RemoteAttribute& service,
163 const RemoteAttribute& to_peripheral_char, 178 const RemoteAttribute& tx_characteristic,
164 const RemoteAttribute& from_peripheral_char); 179 const RemoteAttribute& rx_characteristic);
165 180
166 // Callback called there was an error finding the characteristics. 181 // Callback called there was an error finding the characteristics.
167 void OnCharacteristicsFinderError( 182 void OnCharacteristicsFinderError(const RemoteAttribute& tx_characteristic,
168 const RemoteAttribute& to_peripheral_char, 183 const RemoteAttribute& rx_characteristic);
169 const RemoteAttribute& from_peripheral_char);
170 184
171 // Starts a notify session for |from_peripheral_char_| when ready 185 // Starts a notify session for |rx_characteristic_| when ready
172 // (SubStatus::CHARACTERISTICS_FOUND). 186 // (SubStatus::CHARACTERISTICS_FOUND).
173 void StartNotifySession(); 187 void StartNotifySession();
174 188
175 // Called when a notification session is successfully started for 189 // Called when a notification session is successfully started for
176 // |from_peripheral_char_| characteristic. 190 // |rx_characteristic_| characteristic.
177 void OnNotifySessionStarted( 191 void OnNotifySessionStarted(
178 std::unique_ptr<device::BluetoothGattNotifySession> notify_session); 192 std::unique_ptr<device::BluetoothGattNotifySession> notify_session);
179 193
180 // Called when there is an error starting a notification session for 194 // Called when there is an error starting a notification session for
181 // |from_peripheral_char_| characteristic. 195 // |rx_characteristic_| characteristic.
182 void OnNotifySessionError(device::BluetoothGattService::GattErrorCode); 196 void OnNotifySessionError(device::BluetoothGattService::GattErrorCode);
183 197
184 // Stops |notify_session_|. 198 // Stops |notify_session_|.
185 void StopNotifySession(); 199 void StopNotifySession();
186 200
187 // Sends an invite to connect signal to the peripheral if when ready 201 // Sends a connection request to server if ready
188 // (SubStatus::NOTIFY_SESSION_READY). 202 // (SubStatus::NOTIFY_SESSION_READY).
189 void SendInviteToConnectSignal(); 203 void SendConnectionRequest();
190 204
191 // Completes and updates the status accordingly. 205 // Completes and updates the status accordingly.
192 void CompleteConnection(); 206 void CompleteConnection();
193 207
194 // This is the only entry point for WriteRequests, which are processed 208 // This is the only entry point for WriteRequests, which are processed
195 // accordingly the following flow: 209 // accordingly the following flow:
196 // 1) |request| is enqueued; 210 // 1) |request| is enqueued;
197 // 2) |request| will be processed by ProcessNextWriteRequest() when there is 211 // 2) |request| will be processed by ProcessNextWriteRequest() when there is
198 // no pending write request; 212 // no pending write request;
199 // 3) |request| will be dequeued when it's successfully processed 213 // 3) |request| will be dequeued when it's successfully processed
200 // (OnRemoteCharacteristicWritten()); 214 // (OnRemoteCharacteristicWritten());
201 // 4) |request| is not dequeued if it fails 215 // 4) |request| is not dequeued if it fails
202 // (OnWriteRemoteCharacteristicError()), it remains on the queue and will be 216 // (OnWriteRemoteCharacteristicError()), it remains on the queue and will be
203 // retried. |request| will remain on the queue until it succeeds or it 217 // retried. |request| will remain on the queue until it succeeds or it
204 // triggers a Disconnect() call (after |max_number_of_tries_|). 218 // triggers a Disconnect() call (after |max_number_of_tries_|).
205 void WriteRemoteCharacteristic(WriteRequest request); 219 void WriteRemoteCharacteristic(const WriteRequest& request);
206 220
207 // Processes the next request in |write_requests_queue_|. 221 // Processes the next request in |write_requests_queue_|.
208 void ProcessNextWriteRequest(); 222 void ProcessNextWriteRequest();
209 223
210 // Called when the 224 // Called when the
211 // BluetoothRemoteGattCharacteristic::RemoteCharacteristicWrite() is 225 // BluetoothRemoteGattCharacteristic::RemoteCharacteristicWrite() is
212 // successfully complete. 226 // successfully complete.
213 void OnRemoteCharacteristicWritten(bool run_did_send_message_callback); 227 void OnRemoteCharacteristicWritten(WriteRequestType request_type,
228 int message_counter);
214 229
215 // Called when there is an error writing to the remote characteristic 230 // Called when there is an error writing to the remote characteristic
216 // |to_peripheral_char_|. 231 // |tx_characteristic_|.
217 void OnWriteRemoteCharacteristicError( 232 void OnWriteRemoteCharacteristicError(
218 bool run_did_send_message_callback, 233 WriteRequestType request_type,
234 int message_counter,
219 device::BluetoothRemoteGattService::GattErrorCode error); 235 device::BluetoothRemoteGattService::GattErrorCode error);
220 236
221 // Builds the value to be written on |to_peripheral_char_|. The value 237 void OnPacketReceiverError();
222 // corresponds to |signal| concatenated with |payload|.
223 WriteRequest BuildWriteRequest(const std::vector<uint8_t>& signal,
224 const std::vector<uint8_t>& bytes,
225 bool is_last_message_for_wire_message);
226 238
227 // Prints the time elapsed since |Connect()| was called. 239 // Prints the time elapsed since |Connect()| was called.
228 void PrintTimeElapsed(); 240 void PrintTimeElapsed();
229 241
230 // Returns the device corresponding to |remote_device_address_|. 242 // Returns the device corresponding to |remote_device_address_|.
231 device::BluetoothDevice* GetRemoteDevice(); 243 device::BluetoothDevice* GetRemoteDevice();
232 244
233 // Returns the service corresponding to |remote_service_| in the current 245 // Returns the service corresponding to |remote_service_| in the current
234 // device. 246 // device.
235 device::BluetoothRemoteGattService* GetRemoteService(); 247 device::BluetoothRemoteGattService* GetRemoteService();
236 248
237 // Returns the characteristic corresponding to |identifier| in the current 249 // Returns the characteristic corresponding to |identifier| in the current
238 // service. 250 // service.
239 device::BluetoothRemoteGattCharacteristic* GetGattCharacteristic( 251 device::BluetoothRemoteGattCharacteristic* GetGattCharacteristic(
240 const std::string& identifier); 252 const std::string& identifier);
241 253
242 // Convert the first 4 bytes from a byte vector to a uint32_t. 254 // Get the reason that the other side of the connection decided to close the
243 uint32_t ToUint32(const std::vector<uint8_t>& bytes); 255 // connection.
244 256 // Will crash if the receiver is not in CONNECTION_CLOSED state.
245 // Convert an uint32_t to a byte vector. 257 std::string GetReasonForClose();
246 const std::vector<uint8_t> ToByteVector(uint32_t value);
247 258
248 // The Bluetooth adapter over which the Bluetooth connection will be made. 259 // The Bluetooth adapter over which the Bluetooth connection will be made.
249 scoped_refptr<device::BluetoothAdapter> adapter_; 260 scoped_refptr<device::BluetoothAdapter> adapter_;
250 261
251 // Remote service the |gatt_connection_| was established with. 262 // Remote service the |gatt_connection_| was established with.
252 RemoteAttribute remote_service_; 263 RemoteAttribute remote_service_;
253 264
265 // uWeave packet generator.
266 std::unique_ptr<BluetoothLowEnergyWeavePacketGenerator> packet_generator_;
267
268 // uWeave packet receiver.
269 std::unique_ptr<BluetoothLowEnergyWeavePacketReceiver> packet_receiver_;
270
254 // Characteristic used to send data to the remote device. 271 // Characteristic used to send data to the remote device.
255 RemoteAttribute to_peripheral_char_; 272 RemoteAttribute tx_characteristic_;
256 273
257 // Characteristic used to receive data from the remote device. 274 // Characteristic used to receive data from the remote device.
258 RemoteAttribute from_peripheral_char_; 275 RemoteAttribute rx_characteristic_;
259 276
260 // Throttles repeated connection attempts to the same device. This is a 277 // Throttles repeated connection attempts to the same device. This is a
261 // workaround for crbug.com/508919. Not owned, must outlive this instance. 278 // workaround for crbug.com/508919. Not owned, must outlive this instance.
262 BluetoothThrottler* bluetooth_throttler_; 279 BluetoothThrottler* bluetooth_throttler_;
263 280
264 scoped_refptr<base::TaskRunner> task_runner_; 281 scoped_refptr<base::TaskRunner> task_runner_;
265 282
266 // The GATT connection with the remote device. 283 // The GATT connection with the remote device.
267 std::unique_ptr<device::BluetoothGattConnection> gatt_connection_; 284 std::unique_ptr<device::BluetoothGattConnection> gatt_connection_;
268 285
269 // The characteristics finder for remote device. 286 // The characteristics finder for remote device.
270 std::unique_ptr<BluetoothLowEnergyCharacteristicsFinder> 287 std::unique_ptr<BluetoothLowEnergyCharacteristicsFinder>
271 characteristic_finder_; 288 characteristic_finder_;
272 289
273 // The notify session for |from_peripheral_char|. 290 // The notify session for |rx_characteristic|.
274 std::unique_ptr<device::BluetoothGattNotifySession> notify_session_; 291 std::unique_ptr<device::BluetoothGattNotifySession> notify_session_;
275 292
276 // Internal connection status 293 // Internal connection status
277 SubStatus sub_status_; 294 SubStatus sub_status_;
278 295
279 // Indicates a receiving operation is in progress. This is set after a
280 // ControlSignal::kSendSignal was received from the remote device.
281 bool receiving_bytes_;
282
283 // Total number of bytes expected for the current receive operation.
284 std::size_t expected_number_of_incoming_bytes_;
285
286 // Bytes already received for the current receive operation. 296 // Bytes already received for the current receive operation.
287 std::string incoming_bytes_buffer_; 297 std::string incoming_bytes_buffer_;
288 298
289 // Indicates there is a 299 // Indicates there is a
290 // BluetoothRemoteGattCharacteristic::WriteRemoteCharacteristic 300 // BluetoothRemoteGattCharacteristic::WriteRemoteCharacteristic
291 // operation pending. 301 // operation pending.
292 bool write_remote_characteristic_pending_; 302 bool write_remote_characteristic_pending_;
293 303
294 std::queue<WriteRequest> write_requests_queue_; 304 std::queue<WriteRequest> write_requests_queue_;
295 305
306 // Counter indicating which message the packet is from.
307 int next_message_counter_to_use_;
308
309 // Map of the message_counter_ to it's corresponding message.
310 std::map<int, std::unique_ptr<WireMessage>> map_to_message_;
Tim Song 2016/07/21 20:49:35 Do you actually need to store a map of WireMessage
jingxuy 2016/07/21 21:30:34 I think the problem there is no guarantee when the
Tim Song 2016/07/22 00:52:50 |characteristic->WriteRemoteCharacteristic()| is o
jingxuy 2016/07/22 17:14:59 I wasn't thinking clearly yesterday. But the reaso
Tim Song 2016/07/22 18:41:34 SendMessageImpl() creates a new WriteRequest and p
jingxuy 2016/07/22 23:06:11 Done.
311
296 // Maximum number of tries to send any write request. 312 // Maximum number of tries to send any write request.
297 int max_number_of_write_attempts_; 313 int max_number_of_write_attempts_;
298 314
299 // Maximum number of bytes that fit in a single chunk to be written in
300 // |to_peripheral_char_|. Ideally, this should be the maximum value the
301 // peripheral supports and it should be agreed when the GATT connection is
302 // created. Currently, there is no API to find this value. The implementation
303 // uses a hard-coded constant.
304 int max_chunk_size_;
305
306 // Stores when the instace was created. 315 // Stores when the instace was created.
307 base::TimeTicks start_time_; 316 base::TimeTicks start_time_;
308 317
309 base::WeakPtrFactory<BluetoothLowEnergyConnection> weak_ptr_factory_; 318 base::WeakPtrFactory<BluetoothLowEnergyWeaveClientConnection>
319 weak_ptr_factory_;
310 320
311 DISALLOW_COPY_AND_ASSIGN(BluetoothLowEnergyConnection); 321 DISALLOW_COPY_AND_ASSIGN(BluetoothLowEnergyWeaveClientConnection);
312 }; 322 };
313 323
324 } // namespace weave
325
314 } // namespace proximity_auth 326 } // namespace proximity_auth
315 327
316 #endif // COMPONENTS_PROXIMITY_AUTH_BLE_BLUETOOTH_LOW_ENERGY_CONNECTION_H_ 328 #endif // COMPONENTS_PROXIMITY_AUTH_BLE_BLUETOOTH_LOW_ENERGY_WEAVE_CLIENT_CONNE CTION_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698