blob: adae2b9866079ffffbd563cca6fc5f0ee0b65c00 [file] [log] [blame]
Paul Stewart20088d82012-02-16 06:58:55 -08001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Paul Stewartfdd16072011-09-16 12:41:35 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef SHILL_TECHNOLOGY_
6#define SHILL_TECHNOLOGY_
7
8#include <string>
Paul Stewart20088d82012-02-16 06:58:55 -08009#include <vector>
Paul Stewartfdd16072011-09-16 12:41:35 -070010
11namespace shill {
12
Paul Stewart20088d82012-02-16 06:58:55 -080013class Error;
14
Paul Stewartfdd16072011-09-16 12:41:35 -070015class Technology {
16 public:
17 enum Identifier {
18 kEthernet,
19 kWifi,
Paul Stewart2001a422011-12-15 10:20:09 -080020 kWiFiMonitor,
Paul Stewartfdd16072011-09-16 12:41:35 -070021 kCellular,
22 kBlacklisted,
23 kUnknown,
Paul Stewartfdd16072011-09-16 12:41:35 -070024 };
25
26 static Identifier IdentifierFromName(const std::string &name);
27 static std::string NameFromIdentifier(Identifier id);
Paul Stewart1b253142012-01-26 14:05:52 -080028 static Identifier IdentifierFromStorageGroup(const std::string &group);
Paul Stewartfdd16072011-09-16 12:41:35 -070029
Paul Stewart20088d82012-02-16 06:58:55 -080030 // Convert the comma-separated list of technology names in
31 // |technologies_string| into a vector of technology identifiers output in
32 // |technologies_vector|. Returns true if the |technologies_string| contains
33 // a valid set of technologies with no duplicate elements, false otherwise.
34 static bool GetTechnologyVectorFromString(
35 const std::string &technologies_string,
36 std::vector<Identifier> *technologies_vector,
37 Error *error);
38
Paul Stewartfdd16072011-09-16 12:41:35 -070039 private:
40 static const char kUnknownName[];
41};
42
43} // namespace shill
44
45#endif // SHILL_TECHNOLOGY_