1e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta/* 2e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta * Copyright (C) 2016 The Android Open Source Project 3e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta * 4e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta * Licensed under the Apache License, Version 2.0 (the "License"); 5e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta * you may not use this file except in compliance with the License. 6e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta * You may obtain a copy of the License at 7e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta * 8e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta * http://www.apache.org/licenses/LICENSE-2.0 9e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta * 10e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta * Unless required by applicable law or agreed to in writing, software 11e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta * distributed under the License is distributed on an "AS IS" BASIS, 12e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta * See the License for the specific language governing permissions and 14e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta * limitations under the License. 15e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta */ 16e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta 17e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Guptapackage android.bluetooth; 18e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta 19e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Guptaimport android.os.Parcel; 20e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Guptaimport android.os.Parcelable; 21e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta 22fa377b407bd3a19aa4f6f4b29411b4cf2f3f56d7Hansong Zhang/** 2353f5412beb19b999ac826269fff8e98d495290b3Hansong Zhang * Represents the Quality of Service (QoS) settings for a Bluetooth HID Device application. 24fa377b407bd3a19aa4f6f4b29411b4cf2f3f56d7Hansong Zhang * 2553f5412beb19b999ac826269fff8e98d495290b3Hansong Zhang * <p>The BluetoothHidDevice framework will update the L2CAP QoS settings for the app during 2653f5412beb19b999ac826269fff8e98d495290b3Hansong Zhang * registration. 27fa377b407bd3a19aa4f6f4b29411b4cf2f3f56d7Hansong Zhang * 2853f5412beb19b999ac826269fff8e98d495290b3Hansong Zhang * <p>{@see BluetoothHidDevice} 29fa377b407bd3a19aa4f6f4b29411b4cf2f3f56d7Hansong Zhang */ 30e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Guptapublic final class BluetoothHidDeviceAppQosSettings implements Parcelable { 31e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta 32191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov private final int mServiceType; 33191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov private final int mTokenRate; 34191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov private final int mTokenBucketSize; 35191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov private final int mPeakBandwidth; 36191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov private final int mLatency; 37191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov private final int mDelayVariation; 38e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta 392992cd084cd5cfd9ef253c37ef269d6c75e7e144Jack He public static final int SERVICE_NO_TRAFFIC = 0x00; 402992cd084cd5cfd9ef253c37ef269d6c75e7e144Jack He public static final int SERVICE_BEST_EFFORT = 0x01; 412992cd084cd5cfd9ef253c37ef269d6c75e7e144Jack He public static final int SERVICE_GUARANTEED = 0x02; 42e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta 432992cd084cd5cfd9ef253c37ef269d6c75e7e144Jack He public static final int MAX = (int) 0xffffffff; 44e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta 45ceb84db837a9f4d9900c3e3d1aaac39eb9d27903Hansong Zhang /** 4653f5412beb19b999ac826269fff8e98d495290b3Hansong Zhang * Create a BluetoothHidDeviceAppQosSettings object for the Bluetooth L2CAP channel. The QoS 47191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov * Settings is optional. Please refer to Bluetooth HID Specfication v1.1.1 Section 5.2 and 48191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov * Appendix D for parameters. 4953f5412beb19b999ac826269fff8e98d495290b3Hansong Zhang * 50191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov * @param serviceType L2CAP service type, default = SERVICE_BEST_EFFORT 51191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov * @param tokenRate L2CAP token rate, default = 0 52191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov * @param tokenBucketSize L2CAP token bucket size, default = 0 53191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov * @param peakBandwidth L2CAP peak bandwidth, default = 0 54191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov * @param latency L2CAP latency, default = MAX 55191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov * @param delayVariation L2CAP delay variation, default = MAX 56ceb84db837a9f4d9900c3e3d1aaac39eb9d27903Hansong Zhang */ 57191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov public BluetoothHidDeviceAppQosSettings( 58191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov int serviceType, 59191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov int tokenRate, 60191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov int tokenBucketSize, 61191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov int peakBandwidth, 62191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov int latency, 63191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov int delayVariation) { 64191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov mServiceType = serviceType; 65191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov mTokenRate = tokenRate; 66191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov mTokenBucketSize = tokenBucketSize; 67191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov mPeakBandwidth = peakBandwidth; 68191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov mLatency = latency; 69191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov mDelayVariation = delayVariation; 70e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta } 71e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta 72191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov public int getServiceType() { 73191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov return mServiceType; 74191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov } 75191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov 76191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov public int getTokenRate() { 77191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov return mTokenRate; 78191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov } 79191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov 80191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov public int getTokenBucketSize() { 81191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov return mTokenBucketSize; 82191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov } 83191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov 84191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov public int getPeakBandwidth() { 85191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov return mPeakBandwidth; 86191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov } 87191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov 88191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov public int getLatency() { 89191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov return mLatency; 90191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov } 91191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov 92191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov public int getDelayVariation() { 93191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov return mDelayVariation; 94e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta } 95e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta 96e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta @Override 97e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta public int describeContents() { 98e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta return 0; 99e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta } 100e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta 101e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta public static final Parcelable.Creator<BluetoothHidDeviceAppQosSettings> CREATOR = 102a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He new Parcelable.Creator<BluetoothHidDeviceAppQosSettings>() { 103e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta 104a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He @Override 105a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He public BluetoothHidDeviceAppQosSettings createFromParcel(Parcel in) { 106e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta 107fa377b407bd3a19aa4f6f4b29411b4cf2f3f56d7Hansong Zhang return new BluetoothHidDeviceAppQosSettings( 108fa377b407bd3a19aa4f6f4b29411b4cf2f3f56d7Hansong Zhang in.readInt(), 109fa377b407bd3a19aa4f6f4b29411b4cf2f3f56d7Hansong Zhang in.readInt(), 110fa377b407bd3a19aa4f6f4b29411b4cf2f3f56d7Hansong Zhang in.readInt(), 111a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He in.readInt(), 112a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He in.readInt(), 113fa377b407bd3a19aa4f6f4b29411b4cf2f3f56d7Hansong Zhang in.readInt()); 114a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He } 115e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta 116a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He @Override 117a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He public BluetoothHidDeviceAppQosSettings[] newArray(int size) { 118a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He return new BluetoothHidDeviceAppQosSettings[size]; 119a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He } 120a355e5efaf45a534ee6437aa4bae7d30f18c0ec2Jack He }; 121e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta 122e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta @Override 123e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta public void writeToParcel(Parcel out, int flags) { 124191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov out.writeInt(mServiceType); 125191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov out.writeInt(mTokenRate); 126191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov out.writeInt(mTokenBucketSize); 127191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov out.writeInt(mPeakBandwidth); 128191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov out.writeInt(mLatency); 129191ce9c442d08603fe9ae7d53e228fdf88456accIvan Podogov out.writeInt(mDelayVariation); 130ceb84db837a9f4d9900c3e3d1aaac39eb9d27903Hansong Zhang } 131e88fd4b5940a855e961cffa36e93f844a44cd2d4Hemant Gupta} 132