Bluetooth: implement bluetooth_Sanity_Discovery

This test is another example of a Bluetooth test with a separate
tester device (stumpy with testbed-ap profile), and is the mirror of
bluetooth_Sanity_Discoverable.

BUG=chromium:256771
TEST=run_remote_tests

Change-Id: I00142fc5183af8466638ef7b1bc64cae4a6c87fb
Reviewed-on: https://chromium-review.googlesource.com/67010
Reviewed-by: Scott James Remnant <keybuk@chromium.org>
Commit-Queue: Scott James Remnant <keybuk@chromium.org>
Tested-by: Scott James Remnant <keybuk@chromium.org>
diff --git a/server/cros/bluetooth/bluetooth_client.py b/server/cros/bluetooth/bluetooth_client.py
index 46f27eb..4e68048 100644
--- a/server/cros/bluetooth/bluetooth_client.py
+++ b/server/cros/bluetooth/bluetooth_client.py
@@ -99,7 +99,7 @@
     def get_adapter_properties(self):
         """Read the adapter properties from the Bluetooth Daemon.
 
-        @return the properties as a JSON-encoded dictionary on success,
+        @return the properties as a dictionary on success,
             the value False otherwise.
 
         """
@@ -109,7 +109,7 @@
     def read_info(self):
         """Read the adapter information from the Kernel.
 
-        @return the information as a JSON-encoded tuple of:
+        @return the information as a tuple of:
           ( address, bluetooth_version, manufacturer_id,
             supported_settings, current_settings, class_of_device,
             name, short_name )
@@ -118,6 +118,37 @@
         return json.loads(self._proxy.read_info())
 
 
+    def get_devices(self):
+        """Read information about remote devices known to the adapter.
+
+        @return the properties of each device as a JSON-encoded array of
+            dictionaries on success, the value False otherwise.
+
+        """
+        return json.loads(self._proxy.get_devices())
+
+
+    def start_discovery(self):
+        """Start discovery of remote devices.
+
+        Obtain the discovered device information using get_devices(), called
+        stop_discovery() when done.
+
+        @return True on success, False otherwise.
+
+        """
+        return self._proxy.start_discovery()
+
+
+    def stop_discovery(self):
+        """Stop discovery of remote devices.
+
+        @return True on success, False otherwise.
+
+        """
+        return self._proxy.stop_discovery()
+
+
     def close(self):
         """Tear down state associated with the client."""
         # Turn off the discoverable flag since it may affect future tests.