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.h b/wifi_endpoint.h
index 902eb90..89e6f59 100644
--- a/wifi_endpoint.h
+++ b/wifi_endpoint.h
@@ -66,6 +66,7 @@
   FRIEND_TEST(WiFiEndpointTest, ParseKeyManagementMethodsPSK);
   FRIEND_TEST(WiFiEndpointTest, ParseKeyManagementMethodsEAPAndPSK);
   FRIEND_TEST(WiFiEndpointTest, DeterminePhyMode);
+  FRIEND_TEST(WiFiServiceUpdateFromEndpointsTest, EndpointModified);
 
   enum KeyManagement {
     kKeyManagement802_1x,
@@ -76,7 +77,9 @@
   static WiFiEndpoint *MakeOpenEndpoint(ProxyFactory *proxy_factory,
                                         const WiFiRefPtr &wifi,
                                         const std::string &ssid,
-                                        const std::string &bssid);
+                                        const std::string &bssid,
+                                        uint16 frequency,
+                                        int16 signal_dbm);
   // Maps mode strings from supplicant into flimflam's nomenclature, as defined
   // in chromeos/dbus/service_constants.h
   static const char *ParseMode(const std::string &mode_string);
@@ -106,7 +109,7 @@
   std::string ssid_hex_;
   std::string bssid_string_;
   std::string bssid_hex_;
-  int16_t signal_strength_;
+  int16 signal_strength_;
   uint16 frequency_;
   uint16 physical_mode_;
   // network_mode_ and security_mode_ are represented as flimflam names