Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d147307d authored by Android Build Merger (Role)'s avatar Android Build Merger (Role) Committed by Android (Google) Code Review
Browse files

Merge "Merge "Bluetooth HID Device API docs and helper" am: a89f6150 am:...

Merge "Merge "Bluetooth HID Device API docs and helper" am: a89f6150 am: 7c005ea3 am: 55839ebb"
parents 5123b5ca 899f9e96
Loading
Loading
Loading
Loading
+27 −9
Original line number Diff line number Diff line
@@ -350,13 +350,22 @@ public final class BluetoothHidDevice implements BluetoothProfile {
     * application can be registered at time. When no longer used, application
     * should be unregistered using
     * {@link #unregisterApp(BluetoothHidDeviceAppConfiguration)}.
     * The registration status should be tracked by the application by handling callback from
     * BluetoothHidDeviceCallback#onAppStatusChanged. The app registration status is not related
     * to the return value of this method.
     *
     * @param sdp {@link BluetoothHidDeviceAppSdpSettings} object of HID Device SDP record.
     * The HID Device SDP record is required.
     * @param inQos {@link BluetoothHidDeviceAppQosSettings} object of Incoming QoS Settings.
     * The Incoming QoS Settings is not required. Use null or default
     * BluetoothHidDeviceAppQosSettings.Builder for default values.
     * @param outQos {@link BluetoothHidDeviceAppQosSettings} object of Outgoing QoS Settings.
     * The Outgoing QoS Settings is not required. Use null or default
     * BluetoothHidDeviceAppQosSettings.Builder for default values.
     * @param callback {@link BluetoothHidDeviceCallback} object to which callback messages will be
     * sent.
     * @return
     * The BluetoothHidDeviceCallback object is required.
     * @return true if the command is successfully sent; otherwise false.
     */
    public boolean registerApp(BluetoothHidDeviceAppSdpSettings sdp,
            BluetoothHidDeviceAppQosSettings inQos, BluetoothHidDeviceAppQosSettings outQos,
@@ -394,12 +403,15 @@ public final class BluetoothHidDevice implements BluetoothProfile {
     * {@link #registerApp
     * (BluetoothHidDeviceAppQosSettings, BluetoothHidDeviceAppQosSettings,
     * BluetoothHidDeviceAppQosSettings, BluetoothHidDeviceCallback)}
     * The registration status should be tracked by the application by handling callback from
     * BluetoothHidDeviceCallback#onAppStatusChanged. The app registration status is not related
     * to the return value of this method.
     *
     * @param config {@link BluetoothHidDeviceAppConfiguration} object as obtained from {@link
     * BluetoothHidDeviceCallback#onAppStatusChanged(BluetoothDevice,
     * BluetoothHidDeviceAppConfiguration,
     * boolean)}
     * @return
     * @return true if the command is successfully sent; otherwise false.
     */
    public boolean unregisterApp(BluetoothHidDeviceAppConfiguration config) {
        Log.v(TAG, "unregisterApp()");
@@ -426,7 +438,7 @@ public final class BluetoothHidDevice implements BluetoothProfile {
     * @param id Report Id, as defined in descriptor. Can be 0 in case Report Id are not defined in
     * descriptor.
     * @param data Report data, not including Report Id.
     * @return
     * @return true if the command is successfully sent; otherwise false.
     */
    public boolean sendReport(BluetoothDevice device, int id, byte[] data) {
        boolean result = false;
@@ -452,7 +464,7 @@ public final class BluetoothHidDevice implements BluetoothProfile {
     * @param type Report Type, as in request.
     * @param id Report Id, as in request.
     * @param data Report data, not including Report Id.
     * @return
     * @return true if the command is successfully sent; otherwise false.
     */
    public boolean replyReport(BluetoothDevice device, byte type, byte id, byte[] data) {
        Log.v(TAG, "replyReport(): device=" + device + " type=" + type + " id=" + id);
@@ -478,7 +490,7 @@ public final class BluetoothHidDevice implements BluetoothProfile {
     * from {@link BluetoothHidDeviceCallback#onSetReport(BluetoothDevice, byte, byte, byte[])}.
     *
     * @param error Error to be sent for SET_REPORT via HANDSHAKE.
     * @return
     * @return true if the command is successfully sent; otherwise false.
     */
    public boolean reportError(BluetoothDevice device, byte error) {
        Log.v(TAG, "reportError(): device=" + device + " error=" + error);
@@ -524,10 +536,13 @@ public final class BluetoothHidDevice implements BluetoothProfile {
    }

    /**
     * Initiates connection to host which currently has Virtual Cable
     * established with device.
     * Initiates connection to host which is currently paired with this device.
     * If the application is not registered, #connect(BluetoothDevice) will fail.
     * The connection state should be tracked by the application by handling callback from
     * BluetoothHidDeviceCallback#onConnectionStateChanged. The connection state is not related
     * to the return value of this method.
     *
     * @return
     * @return true if the command is successfully sent; otherwise false.
     */
    public boolean connect(BluetoothDevice device) {
        Log.v(TAG, "connect(): device=" + device);
@@ -550,8 +565,11 @@ public final class BluetoothHidDevice implements BluetoothProfile {

    /**
     * Disconnects from currently connected host.
     * The connection state should be tracked by the application by handling callback from
     * BluetoothHidDeviceCallback#onConnectionStateChanged. The connection state is not related
     * to the return value of this method.
     *
     * @return
     * @return true if the command is successfully sent; otherwise false.
     */
    public boolean disconnect(BluetoothDevice device) {
        Log.v(TAG, "disconnect(): device=" + device);
+102 −1
Original line number Diff line number Diff line
@@ -45,6 +45,21 @@ public final class BluetoothHidDeviceAppQosSettings implements Parcelable {

    public static final int MAX = (int) 0xffffffff;

    /**
     * Create a BluetoothHidDeviceAppQosSettings object for the Bluetooth L2CAP channel.
     * The QoS Settings is optional.
     * Recommended to use BluetoothHidDeviceAppQosSettings.Builder.
     * {@see <a href="https://www.bluetooth.com/specifications/profiles-overview">
     *     https://www.bluetooth.com/specifications/profiles-overview
     *     </a>
     *     Bluetooth HID Specfication v1.1.1 Section 5.2 and Appendix D }
     * @param serviceType L2CAP service type
     * @param tokenRate L2CAP token rate
     * @param tokenBucketSize L2CAP token bucket size
     * @param peakBandwidth L2CAP peak bandwidth
     * @param latency L2CAP latency
     * @param delayVariation L2CAP delay variation
     */
    public BluetoothHidDeviceAppQosSettings(int serviceType, int tokenRate, int tokenBucketSize,
            int peakBandwidth, int latency, int delayVariation) {
        this.serviceType = serviceType;
@@ -59,7 +74,12 @@ public final class BluetoothHidDeviceAppQosSettings implements Parcelable {
    public boolean equals(Object o) {
        if (o instanceof BluetoothHidDeviceAppQosSettings) {
            BluetoothHidDeviceAppQosSettings qos = (BluetoothHidDeviceAppQosSettings) o;
            return false;
            return this.serviceType == qos.serviceType
                    && this.tokenRate == qos.tokenRate
                    && this.tokenBucketSize == qos.tokenBucketSize
                    && this.peakBandwidth == qos.peakBandwidth
                    && this.latency == qos.latency
                    && this.delayVariation == qos.delayVariation;
        }
        return false;
    }
@@ -106,4 +126,85 @@ public final class BluetoothHidDeviceAppQosSettings implements Parcelable {
                serviceType, tokenRate, tokenBucketSize, peakBandwidth, latency, delayVariation
        };
    }

    /**
     * A helper to build the BluetoothHidDeviceAppQosSettings object.
     */
    public static class Builder {
        // Optional parameters - initialized to default values
        private int mServiceType = SERVICE_BEST_EFFORT;
        private int mTokenRate = 0;
        private int mTokenBucketSize = 0;
        private int mPeakBandwidth = 0;
        private int mLatency = MAX;
        private int mDelayVariation = MAX;

        /**
         * Set the service type.
         * @param val service type. Should be one of {SERVICE_NO_TRAFFIC, SERVICE_BEST_EFFORT,
         * SERVICE_GUARANTEED}, with SERVICE_BEST_EFFORT being the default one.
         * @return BluetoothHidDeviceAppQosSettings Builder with specified service type.
         */
        public Builder serviceType(int val) {
            mServiceType = val;
            return this;
        }
        /**
         * Set the token rate.
         * @param val token rate
         * @return BluetoothHidDeviceAppQosSettings Builder with specified token rate.
         */
        public Builder tokenRate(int val) {
            mTokenRate = val;
            return this;
        }

        /**
         * Set the bucket size.
         * @param val bucket size
         * @return BluetoothHidDeviceAppQosSettings Builder with specified bucket size.
         */
        public Builder tokenBucketSize(int val) {
            mTokenBucketSize = val;
            return this;
        }

        /**
         * Set the peak bandwidth.
         * @param val peak bandwidth
         * @return BluetoothHidDeviceAppQosSettings Builder with specified peak bandwidth.
         */
        public Builder peakBandwidth(int val) {
            mPeakBandwidth = val;
            return this;
        }
        /**
         * Set the latency.
         * @param val latency
         * @return BluetoothHidDeviceAppQosSettings Builder with specified latency.
         */
        public Builder latency(int val) {
            mLatency = val;
            return this;
        }

        /**
         * Set the delay variation.
         * @param val delay variation
         * @return BluetoothHidDeviceAppQosSettings Builder with specified delay variation.
         */
        public Builder delayVariation(int val) {
            mDelayVariation = val;
            return this;
        }

        /**
         * Build the BluetoothHidDeviceAppQosSettings object.
         * @return BluetoothHidDeviceAppQosSettings object with current settings.
         */
        public BluetoothHidDeviceAppQosSettings build() {
            return new BluetoothHidDeviceAppQosSettings(mServiceType, mTokenRate, mTokenBucketSize,
                    mPeakBandwidth, mLatency, mDelayVariation);
        }
    }
}
+19 −1
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@ package android.bluetooth;
import android.os.Parcel;
import android.os.Parcelable;

import java.util.Arrays;

/**
 * Represents the Service Discovery Protocol (SDP) settings for a Bluetooth
 * HID Device application.
@@ -39,6 +41,18 @@ public final class BluetoothHidDeviceAppSdpSettings implements Parcelable {
    public final byte subclass;
    public final byte[] descriptors;

    /**
     * Create a BluetoothHidDeviceAppSdpSettings object for the Bluetooth SDP record.
     * @param name Name of this Bluetooth HID device. Maximum length is 50 bytes.
     * @param description Description for this Bluetooth HID device. Maximum length is 50 bytes.
     * @param provider Provider of this Bluetooth HID device. Maximum length is 50 bytes.
     * @param subclass Subclass of this Bluetooth HID device.
     * See <a href="www.usb.org/developers/hidpage/HID1_11.pdf">
     *     www.usb.org/developers/hidpage/HID1_11.pdf Section 4.2</a>
     * @param descriptors Descriptors of this Bluetooth HID device.
     * See <a href="www.usb.org/developers/hidpage/HID1_11.pdf">
     *     www.usb.org/developers/hidpage/HID1_11.pdf Chapter 6</a> Maximum length is 2048 bytes.
     */
    public BluetoothHidDeviceAppSdpSettings(String name, String description, String provider,
            byte subclass, byte[] descriptors) {
        this.name = name;
@@ -52,7 +66,11 @@ public final class BluetoothHidDeviceAppSdpSettings implements Parcelable {
    public boolean equals(Object o) {
        if (o instanceof BluetoothHidDeviceAppSdpSettings) {
            BluetoothHidDeviceAppSdpSettings sdp = (BluetoothHidDeviceAppSdpSettings) o;
            return false;
            return this.name.equals(sdp.name)
                    && this.description.equals(sdp.description)
                    && this.provider.equals(sdp.provider)
                    && this.subclass == sdp.subclass
                    && Arrays.equals(this.descriptors, sdp.descriptors);
        }
        return false;
    }