[shill] Add support for setting properties.
This CL adds a framework for supporting RPC-exposed properties in Shill.
It also plumbs the code for setting properties on Service objects to prove
the approach. Device and Manager settings will follow.
BUG=chromium-os:16343
TEST=build shill, run unit tests.
Change-Id: I55869453d6039e688f1a49be9dfb1ba1315efe0a
Reviewed-on: http://gerrit.chromium.org/gerrit/3004
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Chris Masone <cmasone@chromium.org>
diff --git a/wifi_service.cc b/wifi_service.cc
index a12b111..614c67e 100644
--- a/wifi_service.cc
+++ b/wifi_service.cc
@@ -7,6 +7,7 @@
#include <string>
#include <base/logging.h>
+#include <chromeos/dbus/service_constants.h>
#include "shill/control_interface.h"
#include "shill/device.h"
@@ -31,8 +32,23 @@
task_factory_(this),
wifi_(device),
ssid_(ssid),
- mode_(mode),
- key_management_(key_management) {
+ mode_(mode) {
+ eap_.key_management = key_management;
+
+ // TODO(cmasone): Figure out if mode_ should be a string or what
+ // RegisterString(flimflam::kModeProperty, &mode_);
+ RegisterString(flimflam::kPassphraseProperty, &passphrase_);
+ RegisterBool(flimflam::kPassphraseRequiredProperty, &need_passphrase_);
+ RegisterConstString(flimflam::kSecurityProperty, &security_);
+
+ RegisterConstString(flimflam::kWifiAuthMode, &auth_mode_);
+ RegisterConstBool(flimflam::kWifiHiddenSsid, &hidden_ssid_);
+ RegisterConstUint16(flimflam::kWifiFrequency, &frequency_);
+ RegisterConstUint16(flimflam::kWifiPhyMode, &physical_mode_);
+ RegisterConstUint16(flimflam::kWifiHexSsid, &hex_ssid_);
+
+ RegisterConstUint8(flimflam::kSignalStrengthProperty, &strength_);
+ RegisterConstString(flimflam::kTypeProperty, &type_);
}
WiFiService::~WiFiService() {
@@ -48,6 +64,16 @@
task_factory_.NewRunnableMethod(&WiFiService::RealConnect));
}
+void WiFiService::Disconnect() {
+ // TODO(quiche) RemoveNetwork from supplicant
+ // XXX remove from favorite networks list?
+}
+
+bool WiFiService::Contains(const string &property) {
+ return (Service::Contains(property) ||
+ uint16_properties_.find(property) != uint16_properties_.end());
+}
+
void WiFiService::RealConnect() {
std::map<string, DBus::Variant> add_network_args;
DBus::MessageIter mi;
@@ -56,7 +82,7 @@
add_network_args[kSupplicantPropertyNetworkMode].writer().
append_uint32(mode_);
add_network_args[kSupplicantPropertyKeyMode].writer().
- append_string(key_management_.c_str());
+ append_string(eap_.key_management.c_str());
// TODO(quiche): figure out why we can't use operator<< without the
// temporary variable.
mi = add_network_args[kSupplicantPropertySSID].writer();
@@ -68,9 +94,4 @@
// XXX add to favorite networks list?
}
-void WiFiService::Disconnect() {
- // TODO(quiche) RemoveNetwork from supplicant
- // XXX remove from favorite networks list?
-}
-
} // namespace shill