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; 7174fa2d684612fbd75a827c64ef4d144cdccbc6efAjay Panicker 7274fa2d684612fbd75a827c64ef4d144cdccbc6efAjay Panicker if (mName == null) return false; 7374fa2d684612fbd75a827c64ef4d144cdccbc6efAjay Panicker 742ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return mName.equals(config.getName()) && 752ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh mDataType == config.getDataType() && 762ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh mRole == config.getRole() && 77fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh mChannelType == config.getChannelType(); 782ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 792ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return false; 802ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 812ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 822ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh @Override 832ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public int hashCode() { 842ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh int result = 17; 852ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh result = 31 * result + (mName != null ? mName.hashCode() : 0); 862ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh result = 31 * result + mDataType; 872ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh result = 31 * result + mRole; 882ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh result = 31 * result + mChannelType; 892ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return result; 902ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 912ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 922ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh @Override 932ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public String toString() { 942ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return "BluetoothHealthAppConfiguration [mName = " + mName + 952ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh ",mDataType = " + mDataType + ", mRole = " + mRole + ",mChannelType = " + 96fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh mChannelType + "]"; 972ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 982ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 992ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public int describeContents() { 1002ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return 0; 1012ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 1022ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 1032ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh /** 1042ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * Return the data type associated with this application configuration. 1052ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * 1062ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * @return dataType 1072ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh */ 1082ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public int getDataType() { 1092ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return mDataType; 1102ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 1112ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 1122ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh /** 1132ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * Return the name of the application configuration. 1142ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * 1152ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * @return String name 1162ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh */ 1172ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public String getName() { 1182ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return mName; 1192ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 1202ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 1212ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh /** 1222ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * Return the role associated with this application configuration. 1232ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * 1242ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * @return One of {@link BluetoothHealth#SOURCE_ROLE} or 1252ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * {@link BluetoothHealth#SINK_ROLE} 1262ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh */ 1272ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public int getRole() { 1282ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return mRole; 1292ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 1302ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 1312ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh /** 1322ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * Return the channel type associated with this application configuration. 1332ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * 1342ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * @return One of {@link BluetoothHealth#CHANNEL_TYPE_RELIABLE} or 1352ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * {@link BluetoothHealth#CHANNEL_TYPE_STREAMING} or 1362ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh * {@link BluetoothHealth#CHANNEL_TYPE_ANY}. 137eb9d34630f74d0260690287f2df57c0cd3d7ba1dJaikumar Ganesh * @hide 1382ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh */ 1392ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public int getChannelType() { 1402ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return mChannelType; 1412ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 1422ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 1432ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public static final Parcelable.Creator<BluetoothHealthAppConfiguration> CREATOR = 1442ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh new Parcelable.Creator<BluetoothHealthAppConfiguration>() { 145fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh @Override 1462ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public BluetoothHealthAppConfiguration createFromParcel(Parcel in) { 1472ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh String name = in.readString(); 1482ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh int type = in.readInt(); 1492ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh int role = in.readInt(); 1502ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh int channelType = in.readInt(); 151fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh return new BluetoothHealthAppConfiguration(name, type, role, 152fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh channelType); 1532ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 154fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh 155fb658c72a3a76dac334c39070d1501a2575c1069Jaikumar Ganesh @Override 1562ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public BluetoothHealthAppConfiguration[] newArray(int size) { 1572ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh return new BluetoothHealthAppConfiguration[size]; 1582ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 1592ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh }; 1602ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh 1612ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh public void writeToParcel(Parcel out, int flags) { 1622ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh out.writeString(mName); 1632ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh out.writeInt(mDataType); 1642ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh out.writeInt(mRole); 1652ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh out.writeInt(mChannelType); 1662ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh } 1672ea1e85dcb57d17f5782dbafa1d25eb51c630e4bJaikumar Ganesh} 168