shill: update service signal strength and frequency from endpoints

In addition to updating the values in WiFiService, we emit
notification of the changes over RPC.

BUG=chromium-os:16786,chromium-os:16788
TEST=new unit tests, manual

Manual test: run on device, see signal strength indicator in UI
instead of "X".

Change-Id: I1ab5f064953a412387362d50e47602ee62dbe0cc
Reviewed-on: https://gerrit.chromium.org/gerrit/16000
Reviewed-by: Gary Morain <gmorain@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Commit-Ready: mukesh agrawal <quiche@chromium.org>
Tested-by: mukesh agrawal <quiche@chromium.org>
diff --git a/wifi_endpoint.cc b/wifi_endpoint.cc
index e78d6cd..629eff3 100644
--- a/wifi_endpoint.cc
+++ b/wifi_endpoint.cc
@@ -142,7 +142,9 @@
 WiFiEndpoint *WiFiEndpoint::MakeOpenEndpoint(ProxyFactory *proxy_factory,
                                              const WiFiRefPtr &wifi,
                                              const string &ssid,
-                                             const string &bssid) {
+                                             const string &bssid,
+                                             uint16 frequency,
+                                             int16 signal_dbm) {
   map <string, ::DBus::Variant> args;
   ::DBus::MessageIter writer;
 
@@ -156,7 +158,8 @@
   writer = args[wpa_supplicant::kBSSPropertyBSSID].writer();
   writer << bssid_bytes;
 
-  args[wpa_supplicant::kBSSPropertySignal].writer().append_int16(0);
+  args[wpa_supplicant::kBSSPropertySignal].writer().append_int16(signal_dbm);
+  args[wpa_supplicant::kBSSPropertyFrequency].writer().append_uint16(frequency);
   args[wpa_supplicant::kBSSPropertyMode].writer().append_string(
       wpa_supplicant::kNetworkModeInfrastructure);
   // We indicate this is an open BSS by leaving out all security properties.