12ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh/* 22ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * Copyright (C) 2011 The Android Open Source Project 32ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * 42ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * Licensed under the Apache License, Version 2.0 (the "License"); 52ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * you may not use this file except in compliance with the License. 62ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * You may obtain a copy of the License at 72ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * 82ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * http://www.apache.org/licenses/LICENSE-2.0 92ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * 102ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * Unless required by applicable law or agreed to in writing, software 112ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * distributed under the License is distributed on an "AS IS" BASIS, 122ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * See the License for the specific language governing permissions and 142ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * limitations under the License. 152ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh */ 162ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 172ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 182ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganeshpackage android.bluetooth; 192ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 202ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganeshimport android.os.Parcel; 212ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganeshimport android.os.Parcelable; 222ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 232ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh/** 242ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * The Bluetooth Health Application Configuration that is used in conjunction with 252ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * the {@link BluetoothHealth} class. This class represents an application configuration 262ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * that the Bluetooth Health third party application will register to communicate with the 272ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * remote Bluetooth health device. 282ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * 292ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh */ 302ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganeshpublic final class BluetoothHealthAppConfiguration implements Parcelable { 312ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh private final String mName; 322ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh private final int mDataType; 332ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh private final int mRole; 342ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh private final int mChannelType; 352ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 362ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh /** 372ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * Constructor to register the SINK role 382ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * 392ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * @param name Friendly name associated with the application configuration 402ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * @param dataType Data Type of the remote Bluetooth Health device 41eb9d34630f74d0260690287f2df57c0cd3d7ba1dJaikumar Ganesh * @hide 422ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh */ 43fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh BluetoothHealthAppConfiguration(String name, int dataType) { 442ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh mName = name; 452ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh mDataType = dataType; 462ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh mRole = BluetoothHealth.SINK_ROLE; 472ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh mChannelType = BluetoothHealth.CHANNEL_TYPE_ANY; 482ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 492ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 502ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh /** 512ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * Constructor to register the application configuration. 522ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * 532ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * @param name Friendly name associated with the application configuration 542ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * @param dataType Data Type of the remote Bluetooth Health device 55fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh * @param role {@link BluetoothHealth#SOURCE_ROLE} or 56fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh * {@link BluetoothHealth#SINK_ROLE} 57eb9d34630f74d0260690287f2df57c0cd3d7ba1dJaikumar Ganesh * @hide 582ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh */ 59fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh BluetoothHealthAppConfiguration(String name, int dataType, int role, int 60fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh channelType) { 612ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh mName = name; 622ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh mDataType = dataType; 632ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh mRole = role; 642ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh mChannelType = channelType; 652ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 662ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 672ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh @Override 682ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public boolean equals(Object o) { 692ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh if (o instanceof BluetoothHealthAppConfiguration) { 702ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh BluetoothHealthAppConfiguration config = (BluetoothHealthAppConfiguration) o; 712ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh // config.getName() can never be NULL 722ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return mName.equals(config.getName()) && 732ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh mDataType == config.getDataType() && 742ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh mRole == config.getRole() && 75fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh mChannelType == config.getChannelType(); 762ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 772ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return false; 782ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 792ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 802ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh @Override 812ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public int hashCode() { 822ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh int result = 17; 832ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh result = 31 * result + (mName != null ? mName.hashCode() : 0); 842ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh result = 31 * result + mDataType; 852ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh result = 31 * result + mRole; 862ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh result = 31 * result + mChannelType; 872ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return result; 882ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 892ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 902ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh @Override 912ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public String toString() { 922ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return "BluetoothHealthAppConfiguration [mName = " + mName + 932ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh ",mDataType = " + mDataType + ", mRole = " + mRole + ",mChannelType = " + 94fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh mChannelType + "]"; 952ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 962ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 972ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public int describeContents() { 982ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return 0; 992ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 1002ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 1012ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh /** 1022ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * Return the data type associated with this application configuration. 1032ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * 1042ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * @return dataType 1052ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh */ 1062ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public int getDataType() { 1072ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return mDataType; 1082ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 1092ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 1102ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh /** 1112ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * Return the name of the application configuration. 1122ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * 1132ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * @return String name 1142ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh */ 1152ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public String getName() { 1162ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return mName; 1172ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 1182ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 1192ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh /** 1202ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * Return the role associated with this application configuration. 1212ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * 1222ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * @return One of {@link BluetoothHealth#SOURCE_ROLE} or 1232ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * {@link BluetoothHealth#SINK_ROLE} 1242ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh */ 1252ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public int getRole() { 1262ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return mRole; 1272ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 1282ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 1292ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh /** 1302ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * Return the channel type associated with this application configuration. 1312ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * 1322ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * @return One of {@link BluetoothHealth#CHANNEL_TYPE_RELIABLE} or 1332ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * {@link BluetoothHealth#CHANNEL_TYPE_STREAMING} or 1342ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * {@link BluetoothHealth#CHANNEL_TYPE_ANY}. 135eb9d34630f74d0260690287f2df57c0cd3d7ba1dJaikumar Ganesh * @hide 1362ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh */ 1372ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public int getChannelType() { 1382ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return mChannelType; 1392ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 1402ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 1412ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public static final Parcelable.Creator<BluetoothHealthAppConfiguration> CREATOR = 1422ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh new Parcelable.Creator<BluetoothHealthAppConfiguration>() { 143fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh @Override 1442ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public BluetoothHealthAppConfiguration createFromParcel(Parcel in) { 1452ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh String name = in.readString(); 1462ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh int type = in.readInt(); 1472ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh int role = in.readInt(); 1482ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh int channelType = in.readInt(); 149fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh return new BluetoothHealthAppConfiguration(name, type, role, 150fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh channelType); 1512ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 152fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh 153fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh @Override 1542ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public BluetoothHealthAppConfiguration[] newArray(int size) { 1552ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return new BluetoothHealthAppConfiguration[size]; 1562ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 1572ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh }; 1582ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 1592ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public void writeToParcel(Parcel out, int flags) { 1602ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh out.writeString(mName); 1612ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh out.writeInt(mDataType); 1622ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh out.writeInt(mRole); 1632ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh out.writeInt(mChannelType); 1642ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 1652ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh} 166