1 /*
2  * Copyright (C) 2011 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 
18 package android.bluetooth;
19 
20 import android.os.Parcel;
21 import android.os.Parcelable;
22 
23 /**
24  * The Bluetooth Health Application Configuration that is used in conjunction with
25  * the {@link BluetoothHealth} class. This class represents an application configuration
26  * that the Bluetooth Health third party application will register to communicate with the
27  * remote Bluetooth health device.
28  *
29  */
30 public final class BluetoothHealthAppConfiguration implements Parcelable {
31     private final String mName;
32     private final int mDataType;
33     private final int mRole;
34     private final int mChannelType;
35 
36     /**
37      * Constructor to register the SINK role
38      *
39      * @param name Friendly name associated with the application configuration
40      * @param dataType Data Type of the remote Bluetooth Health device
41      * @hide
42      */
BluetoothHealthAppConfiguration(String name, int dataType)43     BluetoothHealthAppConfiguration(String name, int dataType) {
44         mName = name;
45         mDataType = dataType;
46         mRole = BluetoothHealth.SINK_ROLE;
47         mChannelType = BluetoothHealth.CHANNEL_TYPE_ANY;
48     }
49 
50     /**
51      * Constructor to register the application configuration.
52      *
53      * @param name Friendly name associated with the application configuration
54      * @param dataType Data Type of the remote Bluetooth Health device
55      * @param role {@link BluetoothHealth#SOURCE_ROLE} or
56      *                     {@link BluetoothHealth#SINK_ROLE}
57      * @hide
58      */
BluetoothHealthAppConfiguration(String name, int dataType, int role, int channelType)59     BluetoothHealthAppConfiguration(String name, int dataType, int role, int
60         channelType) {
61         mName = name;
62         mDataType = dataType;
63         mRole = role;
64         mChannelType = channelType;
65     }
66 
67     @Override
equals(Object o)68     public boolean equals(Object o) {
69         if (o instanceof BluetoothHealthAppConfiguration) {
70             BluetoothHealthAppConfiguration config = (BluetoothHealthAppConfiguration) o;
71             // config.getName() can never be NULL
72             return mName.equals(config.getName()) &&
73                     mDataType == config.getDataType() &&
74                     mRole == config.getRole() &&
75                     mChannelType == config.getChannelType();
76         }
77         return false;
78     }
79 
80     @Override
hashCode()81     public int hashCode() {
82         int result = 17;
83         result = 31 * result + (mName != null ? mName.hashCode() : 0);
84         result = 31 * result + mDataType;
85         result = 31 * result + mRole;
86         result = 31 * result + mChannelType;
87         return result;
88     }
89 
90     @Override
toString()91     public String toString() {
92         return "BluetoothHealthAppConfiguration [mName = " + mName +
93             ",mDataType = " + mDataType + ", mRole = " + mRole + ",mChannelType = " +
94             mChannelType + "]";
95     }
96 
describeContents()97     public int describeContents() {
98         return 0;
99     }
100 
101     /**
102      * Return the data type associated with this application configuration.
103      *
104      * @return dataType
105      */
getDataType()106     public int getDataType() {
107         return mDataType;
108     }
109 
110     /**
111      * Return the name of the application configuration.
112      *
113      * @return String name
114      */
getName()115     public String getName() {
116         return mName;
117     }
118 
119     /**
120      * Return the role associated with this application configuration.
121      *
122      * @return One of {@link BluetoothHealth#SOURCE_ROLE} or
123      *                         {@link BluetoothHealth#SINK_ROLE}
124      */
getRole()125     public int getRole() {
126         return mRole;
127     }
128 
129     /**
130      * Return the channel type associated with this application configuration.
131      *
132      * @return One of {@link BluetoothHealth#CHANNEL_TYPE_RELIABLE} or
133      *                         {@link BluetoothHealth#CHANNEL_TYPE_STREAMING} or
134      *                         {@link BluetoothHealth#CHANNEL_TYPE_ANY}.
135      * @hide
136      */
getChannelType()137     public int getChannelType() {
138         return mChannelType;
139     }
140 
141     public static final Parcelable.Creator<BluetoothHealthAppConfiguration> CREATOR =
142         new Parcelable.Creator<BluetoothHealthAppConfiguration>() {
143         @Override
144         public BluetoothHealthAppConfiguration createFromParcel(Parcel in) {
145             String name = in.readString();
146             int type = in.readInt();
147             int role = in.readInt();
148             int channelType = in.readInt();
149             return new BluetoothHealthAppConfiguration(name, type, role,
150                 channelType);
151         }
152 
153         @Override
154         public BluetoothHealthAppConfiguration[] newArray(int size) {
155             return new BluetoothHealthAppConfiguration[size];
156         }
157     };
158 
writeToParcel(Parcel out, int flags)159     public void writeToParcel(Parcel out, int flags) {
160         out.writeString(mName);
161         out.writeInt(mDataType);
162         out.writeInt(mRole);
163         out.writeInt(mChannelType);
164     }
165 }
166