Index: device/serial/serial_device_enumerator_mac.cc |
diff --git a/device/serial/serial_device_enumerator_mac.cc b/device/serial/serial_device_enumerator_mac.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..087911509afaafdb48368e6f86b7ac5662f7b16c |
--- /dev/null |
+++ b/device/serial/serial_device_enumerator_mac.cc |
@@ -0,0 +1,59 @@ |
+// Copyright (c) 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "device/serial/serial_device_enumerator_mac.h" |
+ |
+#include "base/file_util.h" |
+#include "base/files/file_enumerator.h" |
+#include "base/files/file_path.h" |
+#include "base/memory/scoped_ptr.h" |
+#include "base/strings/string_util.h" |
+ |
+namespace device { |
+ |
+// static |
+scoped_ptr<SerialDeviceEnumerator> SerialDeviceEnumerator::Create() { |
+ return scoped_ptr<SerialDeviceEnumerator>(new SerialDeviceEnumeratorMac()); |
+} |
+ |
+SerialDeviceEnumeratorMac::SerialDeviceEnumeratorMac() {} |
+ |
+SerialDeviceEnumeratorMac::~SerialDeviceEnumeratorMac() {} |
+ |
+void SerialDeviceEnumeratorMac::GetDevices( |
+ std::vector<SerialDeviceInfo>* devices) { |
+ const base::FilePath kDevRoot("/dev"); |
+ const int kFilesAndSymLinks = |
+ base::FileEnumerator::FILES | base::FileEnumerator::SHOW_SYM_LINKS; |
+ |
+ std::set<std::string> valid_patterns; |
+ valid_patterns.insert("/dev/*Bluetooth*"); |
+ valid_patterns.insert("/dev/*Modem*"); |
+ valid_patterns.insert("/dev/*bluetooth*"); |
+ valid_patterns.insert("/dev/*modem*"); |
+ valid_patterns.insert("/dev/*serial*"); |
+ valid_patterns.insert("/dev/tty.*"); |
+ valid_patterns.insert("/dev/cu.*"); |
+ |
+ devices->clear(); |
+ base::FileEnumerator enumerator(kDevRoot, false, kFilesAndSymLinks); |
+ do { |
+ const base::FilePath next_device_path(enumerator.Next()); |
+ const std::string next_device = next_device_path.value(); |
+ if (next_device.empty()) |
+ break; |
+ |
+ std::set<std::string>::const_iterator i = valid_patterns.begin(); |
+ for (; i != valid_patterns.end(); ++i) { |
+ if (MatchPattern(next_device, *i)) { |
+ SerialDeviceInfo info; |
+ info.path = next_device; |
+ devices->push_back(info); |
rpaquay
2014/02/12 00:39:28
I am assuming we don't know of any way to retrieve
Ken Rockot(use gerrit already)
2014/02/12 01:22:45
Done.
|
+ break; |
+ } |
+ } |
+ } while (true); |
+} |
+ |
+} // namespace device |