Home | History | Annotate | Download | only in hfp
      1 /*
      2  * Copyright 2017 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 package com.android.bluetooth.hfp;
     18 
     19 import android.bluetooth.BluetoothDevice;
     20 
     21 import java.util.Objects;
     22 
     23 /**
     24  * Callback events from native layer
     25  */
     26 public class HeadsetStackEvent extends HeadsetMessageObject {
     27     public static final int EVENT_TYPE_NONE = 0;
     28     public static final int EVENT_TYPE_CONNECTION_STATE_CHANGED = 1;
     29     public static final int EVENT_TYPE_AUDIO_STATE_CHANGED = 2;
     30     public static final int EVENT_TYPE_VR_STATE_CHANGED = 3;
     31     public static final int EVENT_TYPE_ANSWER_CALL = 4;
     32     public static final int EVENT_TYPE_HANGUP_CALL = 5;
     33     public static final int EVENT_TYPE_VOLUME_CHANGED = 6;
     34     public static final int EVENT_TYPE_DIAL_CALL = 7;
     35     public static final int EVENT_TYPE_SEND_DTMF = 8;
     36     public static final int EVENT_TYPE_NOICE_REDUCTION = 9;
     37     public static final int EVENT_TYPE_AT_CHLD = 10;
     38     public static final int EVENT_TYPE_SUBSCRIBER_NUMBER_REQUEST = 11;
     39     public static final int EVENT_TYPE_AT_CIND = 12;
     40     public static final int EVENT_TYPE_AT_COPS = 13;
     41     public static final int EVENT_TYPE_AT_CLCC = 14;
     42     public static final int EVENT_TYPE_UNKNOWN_AT = 15;
     43     public static final int EVENT_TYPE_KEY_PRESSED = 16;
     44     public static final int EVENT_TYPE_WBS = 17;
     45     public static final int EVENT_TYPE_BIND = 18;
     46     public static final int EVENT_TYPE_BIEV = 19;
     47     public static final int EVENT_TYPE_BIA = 20;
     48 
     49     public final int type;
     50     public final int valueInt;
     51     public final int valueInt2;
     52     public final String valueString;
     53     public final HeadsetMessageObject valueObject;
     54     public final BluetoothDevice device;
     55 
     56     /**
     57      * Create a headset stack event
     58      *
     59      * @param type type of the event
     60      * @param device device of interest
     61      */
     62     public HeadsetStackEvent(int type, BluetoothDevice device) {
     63         this(type, 0, 0, null, null, device);
     64     }
     65 
     66     /**
     67      * Create a headset stack event
     68      *
     69      * @param type type of the event
     70      * @param valueInt an integer value in the event
     71      * @param device device of interest
     72      */
     73     public HeadsetStackEvent(int type, int valueInt, BluetoothDevice device) {
     74         this(type, valueInt, 0, null, null, device);
     75     }
     76 
     77     /**
     78      * Create a headset stack event
     79      *
     80      * @param type type of the event
     81      * @param valueInt an integer value in the event
     82      * @param valueInt2 another integer value in the event
     83      * @param device device of interest
     84      */
     85     public HeadsetStackEvent(int type, int valueInt, int valueInt2, BluetoothDevice device) {
     86         this(type, valueInt, valueInt2, null, null, device);
     87     }
     88 
     89     /**
     90      * Create a headset stack event
     91      *
     92      * @param type type of the event
     93      * @param valueString an string value in the event
     94      * @param device device of interest
     95      */
     96     public HeadsetStackEvent(int type, String valueString, BluetoothDevice device) {
     97         this(type, 0, 0, valueString, null, device);
     98     }
     99 
    100     /**
    101      * Create a headset stack event
    102      *
    103      * @param type type of the event
    104      * @param valueObject an object value in the event
    105      * @param device device of interest
    106      */
    107     public HeadsetStackEvent(int type, HeadsetMessageObject valueObject, BluetoothDevice device) {
    108         this(type, 0, 0, null, valueObject, device);
    109     }
    110 
    111     /**
    112      * Create a headset stack event
    113      *
    114      * @param type type of the event
    115      * @param valueInt an integer value in the event
    116      * @param valueInt2 another integer value in the event
    117      * @param valueString a string value in the event
    118      * @param valueObject an object value in the event
    119      * @param device device of interest
    120      */
    121     public HeadsetStackEvent(int type, int valueInt, int valueInt2, String valueString,
    122             HeadsetMessageObject valueObject, BluetoothDevice device) {
    123         this.type = type;
    124         this.valueInt = valueInt;
    125         this.valueInt2 = valueInt2;
    126         this.valueString = valueString;
    127         this.valueObject = valueObject;
    128         this.device = Objects.requireNonNull(device);
    129     }
    130 
    131     /**
    132      * Get a string that represents this event
    133      *
    134      * @return String that represents this event
    135      */
    136     public String getTypeString() {
    137         switch (type) {
    138             case EVENT_TYPE_NONE:
    139                 return "EVENT_TYPE_NONE";
    140             case EVENT_TYPE_CONNECTION_STATE_CHANGED:
    141                 return "EVENT_TYPE_CONNECTION_STATE_CHANGED";
    142             case EVENT_TYPE_AUDIO_STATE_CHANGED:
    143                 return "EVENT_TYPE_AUDIO_STATE_CHANGED";
    144             case EVENT_TYPE_VR_STATE_CHANGED:
    145                 return "EVENT_TYPE_VR_STATE_CHANGED";
    146             case EVENT_TYPE_ANSWER_CALL:
    147                 return "EVENT_TYPE_ANSWER_CALL";
    148             case EVENT_TYPE_HANGUP_CALL:
    149                 return "EVENT_TYPE_HANGUP_CALL";
    150             case EVENT_TYPE_VOLUME_CHANGED:
    151                 return "EVENT_TYPE_VOLUME_CHANGED";
    152             case EVENT_TYPE_DIAL_CALL:
    153                 return "EVENT_TYPE_DIAL_CALL";
    154             case EVENT_TYPE_SEND_DTMF:
    155                 return "EVENT_TYPE_SEND_DTMF";
    156             case EVENT_TYPE_NOICE_REDUCTION:
    157                 return "EVENT_TYPE_NOICE_REDUCTION";
    158             case EVENT_TYPE_AT_CHLD:
    159                 return "EVENT_TYPE_AT_CHLD";
    160             case EVENT_TYPE_SUBSCRIBER_NUMBER_REQUEST:
    161                 return "EVENT_TYPE_SUBSCRIBER_NUMBER_REQUEST";
    162             case EVENT_TYPE_AT_CIND:
    163                 return "EVENT_TYPE_AT_CIND";
    164             case EVENT_TYPE_AT_COPS:
    165                 return "EVENT_TYPE_AT_COPS";
    166             case EVENT_TYPE_AT_CLCC:
    167                 return "EVENT_TYPE_AT_CLCC";
    168             case EVENT_TYPE_UNKNOWN_AT:
    169                 return "EVENT_TYPE_UNKNOWN_AT";
    170             case EVENT_TYPE_KEY_PRESSED:
    171                 return "EVENT_TYPE_KEY_PRESSED";
    172             case EVENT_TYPE_WBS:
    173                 return "EVENT_TYPE_WBS";
    174             case EVENT_TYPE_BIND:
    175                 return "EVENT_TYPE_BIND";
    176             case EVENT_TYPE_BIEV:
    177                 return "EVENT_TYPE_BIEV";
    178             case EVENT_TYPE_BIA:
    179                 return "EVENT_TYPE_BIA";
    180             default:
    181                 return "UNKNOWN";
    182         }
    183     }
    184 
    185     @Override
    186     public void buildString(StringBuilder builder) {
    187         if (builder == null) {
    188             return;
    189         }
    190         builder.append(getTypeString())
    191                 .append("[")
    192                 .append(type)
    193                 .append("]")
    194                 .append(", valInt=")
    195                 .append(valueInt)
    196                 .append(", valInt2=")
    197                 .append(valueInt2)
    198                 .append(", valString=")
    199                 .append(valueString)
    200                 .append(", valObject=")
    201                 .append(valueObject)
    202                 .append(", device=")
    203                 .append(device);
    204     }
    205 }
    206