| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 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/bluetooth/bluetooth_uuid.h" | 5 #include "device/bluetooth/bluetooth_uuid.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
| 11 | 11 |
| 12 namespace device { | 12 namespace device { |
| 13 | 13 |
| 14 namespace { | 14 namespace { |
| 15 | 15 |
| 16 const char* kCommonUuidPostfix = "-0000-1000-8000-00805f9b34fb"; | 16 const char kCommonUuidPostfix[] = "-0000-1000-8000-00805f9b34fb"; |
| 17 const char* kCommonUuidPrefix = "0000"; | 17 const char kCommonUuidPrefix[] = "0000"; |
| 18 | 18 |
| 19 // Returns the canonical, 128-bit canonical, and the format of the UUID | 19 // Returns the canonical, 128-bit canonical, and the format of the UUID |
| 20 // in |canonical|, |canonical_128|, and |format| based on |uuid|. | 20 // in |canonical|, |canonical_128|, and |format| based on |uuid|. |
| 21 void GetCanonicalUuid(std::string uuid, | 21 void GetCanonicalUuid(std::string uuid, |
| 22 std::string* canonical, | 22 std::string* canonical, |
| 23 std::string* canonical_128, | 23 std::string* canonical_128, |
| 24 BluetoothUUID::Format* format) { | 24 BluetoothUUID::Format* format) { |
| 25 // Initialize the values for the failure case. | 25 // Initialize the values for the failure case. |
| 26 canonical->clear(); | 26 canonical->clear(); |
| 27 canonical_128->clear(); | 27 canonical_128->clear(); |
| 28 *format = BluetoothUUID::kFormatInvalid; | 28 *format = BluetoothUUID::kFormatInvalid; |
| 29 | 29 |
| 30 if (uuid.empty()) | 30 if (uuid.empty()) |
| 31 return; | 31 return; |
| 32 | 32 |
| 33 if (uuid.size() < 11 && uuid.find("0x") == 0) | 33 if (uuid.size() < 11 && |
| 34 base::StartsWith(uuid, "0x", base::CompareCase::SENSITIVE)) { |
| 34 uuid = uuid.substr(2); | 35 uuid = uuid.substr(2); |
| 36 } |
| 35 | 37 |
| 36 if (!(uuid.size() == 4 || uuid.size() == 8 || uuid.size() == 36)) | 38 if (!(uuid.size() == 4 || uuid.size() == 8 || uuid.size() == 36)) |
| 37 return; | 39 return; |
| 38 | 40 |
| 39 for (size_t i = 0; i < uuid.size(); ++i) { | 41 for (size_t i = 0; i < uuid.size(); ++i) { |
| 40 if (i == 8 || i == 13 || i == 18 || i == 23) { | 42 if (i == 8 || i == 13 || i == 18 || i == 23) { |
| 41 if (uuid[i] != '-') | 43 if (uuid[i] != '-') |
| 42 return; | 44 return; |
| 43 } else { | 45 } else { |
| 44 if (!base::IsHexDigit(uuid[i])) | 46 if (!base::IsHexDigit(uuid[i])) |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 | 89 |
| 88 bool BluetoothUUID::operator!=(const BluetoothUUID& uuid) const { | 90 bool BluetoothUUID::operator!=(const BluetoothUUID& uuid) const { |
| 89 return canonical_value_ != uuid.canonical_value_; | 91 return canonical_value_ != uuid.canonical_value_; |
| 90 } | 92 } |
| 91 | 93 |
| 92 void PrintTo(const BluetoothUUID& uuid, std::ostream* out) { | 94 void PrintTo(const BluetoothUUID& uuid, std::ostream* out) { |
| 93 *out << uuid.canonical_value(); | 95 *out << uuid.canonical_value(); |
| 94 } | 96 } |
| 95 | 97 |
| 96 } // namespace device | 98 } // namespace device |
| OLD | NEW |