Bluetooth SDP autotest: basic Service Attribute Request

Service Attribute Request is used to retrieve specified attribute values from
a specific service record. The service record handle of the desired service
record and a list of desired attribute IDs to be retrieved from that service
record are supplied as parameters.

This CL adds Service Attribute Request support to SDP Socket class,
as well as to all classes that are used to expose it's methods for autotest.
The CL also implements the very basic test for this type of request,
which is 'TP/SERVER/SA/BV-01-C' from SDP test specification.

BUG=chromium:329044
TEST=test_that --board ${BOARD} ${HOSTNAME} bluetooth_SDP_ServiceAttributeRequest

Change-Id: I4b236a331fea661584c396a2c3ff937bf91c2102
Reviewed-on: https://chromium-review.googlesource.com/196404
Tested-by: Artem Rakhov <arakhov@chromium.org>
Reviewed-by: Scott James Remnant <keybuk@chromium.org>
Commit-Queue: Artem Rakhov <arakhov@chromium.org>
diff --git a/server/cros/bluetooth/bluetooth_tester.py b/server/cros/bluetooth/bluetooth_tester.py
index 15efc4b..ee81503 100644
--- a/server/cros/bluetooth/bluetooth_tester.py
+++ b/server/cros/bluetooth/bluetooth_tester.py
@@ -143,6 +143,24 @@
                                                   invalid_request)
 
 
+    def service_attribute_request(self, handle, max_attr_byte_count, attr_ids):
+        """Send a Service Attribute Request
+
+        @param handle: service record from which attribute values are to be
+               retrieved.
+        @param max_attr_byte_count: maximum number of bytes of attribute data to
+               be returned in the response to this request.
+        @param attr_ids: a list, where each element is either an attribute ID
+               or a range of attribute IDs.
+
+        @return list of found attributes IDs and their values or Error Code
+
+        """
+        return self._proxy.service_attribute_request(handle,
+                                                     max_attr_byte_count,
+                                                     attr_ids)
+
+
 def create_host_from(device_host):
     """Creates a host object for the Tester associated with a DUT.