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

Side by Side Diff: device/serial/serial_device_enumerator_mac.cc

Issue 158063002: Use udev for serial device enumeration on Linux (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: win typo Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "device/serial/serial_device_enumerator_mac.h"
6
7 #include "base/file_util.h"
8 #include "base/files/file_enumerator.h"
9 #include "base/files/file_path.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "base/strings/string_util.h"
12
13 namespace device {
14
15 // static
16 scoped_ptr<SerialDeviceEnumerator> SerialDeviceEnumerator::Create() {
17 return scoped_ptr<SerialDeviceEnumerator>(new SerialDeviceEnumeratorMac());
18 }
19
20 SerialDeviceEnumeratorMac::SerialDeviceEnumeratorMac() {
21 }
22
23 SerialDeviceEnumeratorMac::~SerialDeviceEnumeratorMac() {
24 }
25
26 void SerialDeviceEnumeratorMac::GetDevices(
27 std::vector<SerialDeviceInfo>* devices) {
28 const base::FilePath kDevRoot("/dev");
29 const int kFilesAndSymLinks =
30 base::FileEnumerator::FILES |
31 base::FileEnumerator::SHOW_SYM_LINKS;
32
33 std::set<std::string> valid_patterns;
34 valid_patterns.insert("/dev/*Bluetooth*");
35 valid_patterns.insert("/dev/*Modem*");
36 valid_patterns.insert("/dev/*bluetooth*");
37 valid_patterns.insert("/dev/*modem*");
38 valid_patterns.insert("/dev/*serial*");
39 valid_patterns.insert("/dev/tty.*");
40 valid_patterns.insert("/dev/cu.*");
41
42 devices->clear();
43 base::FileEnumerator enumerator(kDevRoot, false, kFilesAndSymLinks);
44 do {
45 const base::FilePath next_device_path(enumerator.Next());
46 const std::string next_device = next_device_path.value();
47 if (next_device.empty())
48 break;
49
50 std::set<std::string>::const_iterator i = valid_patterns.begin();
51 for (; i != valid_patterns.end(); ++i) {
52 if (MatchPattern(next_device, *i)) {
53 SerialDeviceInfo info;
54 info.path = next_device;
55 devices->push_back(info);
56 break;
57 }
58 }
59 } while (true);
60 }
61
62 } // namespace device
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698