| OLD | NEW |
| 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2014 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/hid/hid_connection_win.h" | 5 #include "device/hid/hid_connection_win.h" |
| 6 | 6 |
| 7 #include <cstring> | 7 #include <cstring> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/files/file.h" | 10 #include "base/files/file.h" |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 const ReadCallback& callback, | 201 const ReadCallback& callback, |
| 202 PendingHidTransfer* transfer, | 202 PendingHidTransfer* transfer, |
| 203 bool signaled) { | 203 bool signaled) { |
| 204 if (!signaled) { | 204 if (!signaled) { |
| 205 callback.Run(false, NULL, 0); | 205 callback.Run(false, NULL, 0); |
| 206 return; | 206 return; |
| 207 } | 207 } |
| 208 | 208 |
| 209 DWORD bytes_transferred; | 209 DWORD bytes_transferred; |
| 210 if (GetOverlappedResult( | 210 if (GetOverlappedResult( |
| 211 file_, transfer->GetOverlapped(), &bytes_transferred, FALSE)) { | 211 file_.Get(), transfer->GetOverlapped(), &bytes_transferred, FALSE)) { |
| 212 CompleteRead(buffer, bytes_transferred, callback); | 212 CompleteRead(buffer, bytes_transferred, callback); |
| 213 } else { | 213 } else { |
| 214 VPLOG(1) << "HID read failed"; | 214 VPLOG(1) << "HID read failed"; |
| 215 callback.Run(false, NULL, 0); | 215 callback.Run(false, NULL, 0); |
| 216 } | 216 } |
| 217 } | 217 } |
| 218 | 218 |
| 219 void HidConnectionWin::OnReadFeatureComplete( | 219 void HidConnectionWin::OnReadFeatureComplete( |
| 220 scoped_refptr<net::IOBuffer> buffer, | 220 scoped_refptr<net::IOBuffer> buffer, |
| 221 const ReadCallback& callback, | 221 const ReadCallback& callback, |
| 222 PendingHidTransfer* transfer, | 222 PendingHidTransfer* transfer, |
| 223 bool signaled) { | 223 bool signaled) { |
| 224 if (!signaled) { | 224 if (!signaled) { |
| 225 callback.Run(false, NULL, 0); | 225 callback.Run(false, NULL, 0); |
| 226 return; | 226 return; |
| 227 } | 227 } |
| 228 | 228 |
| 229 DWORD bytes_transferred; | 229 DWORD bytes_transferred; |
| 230 if (GetOverlappedResult( | 230 if (GetOverlappedResult( |
| 231 file_, transfer->GetOverlapped(), &bytes_transferred, FALSE)) { | 231 file_.Get(), transfer->GetOverlapped(), &bytes_transferred, FALSE)) { |
| 232 scoped_refptr<net::IOBuffer> new_buffer( | 232 scoped_refptr<net::IOBuffer> new_buffer( |
| 233 new net::IOBuffer(bytes_transferred - 1)); | 233 new net::IOBuffer(bytes_transferred - 1)); |
| 234 memcpy(new_buffer->data(), buffer->data() + 1, bytes_transferred - 1); | 234 memcpy(new_buffer->data(), buffer->data() + 1, bytes_transferred - 1); |
| 235 CompleteRead(new_buffer, bytes_transferred, callback); | 235 CompleteRead(new_buffer, bytes_transferred, callback); |
| 236 } else { | 236 } else { |
| 237 VPLOG(1) << "HID read failed"; | 237 VPLOG(1) << "HID read failed"; |
| 238 callback.Run(false, NULL, 0); | 238 callback.Run(false, NULL, 0); |
| 239 } | 239 } |
| 240 } | 240 } |
| 241 | 241 |
| 242 void HidConnectionWin::OnWriteComplete(const WriteCallback& callback, | 242 void HidConnectionWin::OnWriteComplete(const WriteCallback& callback, |
| 243 PendingHidTransfer* transfer, | 243 PendingHidTransfer* transfer, |
| 244 bool signaled) { | 244 bool signaled) { |
| 245 if (!signaled) { | 245 if (!signaled) { |
| 246 callback.Run(false); | 246 callback.Run(false); |
| 247 return; | 247 return; |
| 248 } | 248 } |
| 249 | 249 |
| 250 DWORD bytes_transferred; | 250 DWORD bytes_transferred; |
| 251 if (GetOverlappedResult( | 251 if (GetOverlappedResult( |
| 252 file_, transfer->GetOverlapped(), &bytes_transferred, FALSE)) { | 252 file_.Get(), transfer->GetOverlapped(), &bytes_transferred, FALSE)) { |
| 253 callback.Run(true); | 253 callback.Run(true); |
| 254 } else { | 254 } else { |
| 255 VPLOG(1) << "HID write failed"; | 255 VPLOG(1) << "HID write failed"; |
| 256 callback.Run(false); | 256 callback.Run(false); |
| 257 } | 257 } |
| 258 } | 258 } |
| 259 | 259 |
| 260 } // namespace device | 260 } // namespace device |
| OLD | NEW |