1 /*
2  * Copyright 2018 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 package com.android.bluetooth.hfp;
17 
18 import java.util.Objects;
19 
20 /**
21  * A blob of data representing an overall call state on the phone
22  */
23 class HeadsetCallState extends HeadsetMessageObject {
24     /**
25      * Number of active calls
26      */
27     int mNumActive;
28     /**
29      * Number of held calls
30      */
31     int mNumHeld;
32     /**
33      * Current call setup state as defined in bthf_call_state_t of bt_hf.h or
34      * {@link com.android.server.telecom.BluetoothPhoneServiceImpl} or {@link HeadsetHalConstants}
35      */
36     int mCallState;
37     /**
38      * Currently active call's phone number
39      */
40     String mNumber;
41     /**
42      * Phone number type
43      */
44     int mType;
45     /**
46      * Caller display name
47      */
48     String mName;
49 
HeadsetCallState(int numActive, int numHeld, int callState, String number, int type, String name)50     HeadsetCallState(int numActive, int numHeld, int callState, String number, int type,
51             String name) {
52         mNumActive = numActive;
53         mNumHeld = numHeld;
54         mCallState = callState;
55         mNumber = number;
56         mType = type;
57         mName = name;
58     }
59 
60     @Override
buildString(StringBuilder builder)61     public void buildString(StringBuilder builder) {
62         if (builder == null) {
63             return;
64         }
65         builder.append(this.getClass().getSimpleName())
66                 .append("[numActive=")
67                 .append(mNumActive)
68                 .append(", numHeld=")
69                 .append(mNumHeld)
70                 .append(", callState=")
71                 .append(mCallState)
72                 .append(", number=");
73         if (mNumber == null) {
74             builder.append("null");
75         } else {
76             builder.append("***");
77         }
78         builder.append(", type=").append(mType).append(", name=");
79         if (mName == null) {
80             builder.append("null");
81         } else {
82             builder.append("***");
83         }
84         builder.append("]");
85     }
86 
87     @Override
equals(Object object)88     public boolean equals(Object object) {
89         if (this == object) {
90             return true;
91         }
92         if (!(object instanceof HeadsetCallState)) {
93             return false;
94         }
95         HeadsetCallState that = (HeadsetCallState) object;
96         return mNumActive == that.mNumActive && mNumHeld == that.mNumHeld
97                 && mCallState == that.mCallState && Objects.equals(mNumber, that.mNumber)
98                 && mType == that.mType && Objects.equals(mName, that.mName);
99     }
100 
101     @Override
hashCode()102     public int hashCode() {
103         return Objects.hash(mNumActive, mNumHeld, mCallState, mNumber, mType, mName);
104     }
105 }
106