/* * Copyright 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.bluetooth.hfp; import android.bluetooth.BluetoothDevice; import java.util.Objects; /** * Callback events from native layer */ public class HeadsetStackEvent extends HeadsetMessageObject { public static final int EVENT_TYPE_NONE = 0; public static final int EVENT_TYPE_CONNECTION_STATE_CHANGED = 1; public static final int EVENT_TYPE_AUDIO_STATE_CHANGED = 2; public static final int EVENT_TYPE_VR_STATE_CHANGED = 3; public static final int EVENT_TYPE_ANSWER_CALL = 4; public static final int EVENT_TYPE_HANGUP_CALL = 5; public static final int EVENT_TYPE_VOLUME_CHANGED = 6; public static final int EVENT_TYPE_DIAL_CALL = 7; public static final int EVENT_TYPE_SEND_DTMF = 8; public static final int EVENT_TYPE_NOISE_REDUCTION = 9; public static final int EVENT_TYPE_AT_CHLD = 10; public static final int EVENT_TYPE_SUBSCRIBER_NUMBER_REQUEST = 11; public static final int EVENT_TYPE_AT_CIND = 12; public static final int EVENT_TYPE_AT_COPS = 13; public static final int EVENT_TYPE_AT_CLCC = 14; public static final int EVENT_TYPE_UNKNOWN_AT = 15; public static final int EVENT_TYPE_KEY_PRESSED = 16; public static final int EVENT_TYPE_WBS = 17; public static final int EVENT_TYPE_BIND = 18; public static final int EVENT_TYPE_BIEV = 19; public static final int EVENT_TYPE_BIA = 20; public final int type; public final int valueInt; public final int valueInt2; public final String valueString; public final HeadsetMessageObject valueObject; public final BluetoothDevice device; /** * Create a headset stack event * * @param type type of the event * @param device device of interest */ public HeadsetStackEvent(int type, BluetoothDevice device) { this(type, 0, 0, null, null, device); } /** * Create a headset stack event * * @param type type of the event * @param valueInt an integer value in the event * @param device device of interest */ public HeadsetStackEvent(int type, int valueInt, BluetoothDevice device) { this(type, valueInt, 0, null, null, device); } /** * Create a headset stack event * * @param type type of the event * @param valueInt an integer value in the event * @param valueInt2 another integer value in the event * @param device device of interest */ public HeadsetStackEvent(int type, int valueInt, int valueInt2, BluetoothDevice device) { this(type, valueInt, valueInt2, null, null, device); } /** * Create a headset stack event * * @param type type of the event * @param valueString an string value in the event * @param device device of interest */ public HeadsetStackEvent(int type, String valueString, BluetoothDevice device) { this(type, 0, 0, valueString, null, device); } /** * Create a headset stack event * * @param type type of the event * @param valueObject an object value in the event * @param device device of interest */ public HeadsetStackEvent(int type, HeadsetMessageObject valueObject, BluetoothDevice device) { this(type, 0, 0, null, valueObject, device); } /** * Create a headset stack event * * @param type type of the event * @param valueInt an integer value in the event * @param valueInt2 another integer value in the event * @param valueString a string value in the event * @param valueObject an object value in the event * @param device device of interest */ public HeadsetStackEvent(int type, int valueInt, int valueInt2, String valueString, HeadsetMessageObject valueObject, BluetoothDevice device) { this.type = type; this.valueInt = valueInt; this.valueInt2 = valueInt2; this.valueString = valueString; this.valueObject = valueObject; this.device = Objects.requireNonNull(device); } /** * Get a string that represents this event * * @return String that represents this event */ public String getTypeString() { switch (type) { case EVENT_TYPE_NONE: return "EVENT_TYPE_NONE"; case EVENT_TYPE_CONNECTION_STATE_CHANGED: return "EVENT_TYPE_CONNECTION_STATE_CHANGED"; case EVENT_TYPE_AUDIO_STATE_CHANGED: return "EVENT_TYPE_AUDIO_STATE_CHANGED"; case EVENT_TYPE_VR_STATE_CHANGED: return "EVENT_TYPE_VR_STATE_CHANGED"; case EVENT_TYPE_ANSWER_CALL: return "EVENT_TYPE_ANSWER_CALL"; case EVENT_TYPE_HANGUP_CALL: return "EVENT_TYPE_HANGUP_CALL"; case EVENT_TYPE_VOLUME_CHANGED: return "EVENT_TYPE_VOLUME_CHANGED"; case EVENT_TYPE_DIAL_CALL: return "EVENT_TYPE_DIAL_CALL"; case EVENT_TYPE_SEND_DTMF: return "EVENT_TYPE_SEND_DTMF"; case EVENT_TYPE_NOISE_REDUCTION: return "EVENT_TYPE_NOISE_REDUCTION"; case EVENT_TYPE_AT_CHLD: return "EVENT_TYPE_AT_CHLD"; case EVENT_TYPE_SUBSCRIBER_NUMBER_REQUEST: return "EVENT_TYPE_SUBSCRIBER_NUMBER_REQUEST"; case EVENT_TYPE_AT_CIND: return "EVENT_TYPE_AT_CIND"; case EVENT_TYPE_AT_COPS: return "EVENT_TYPE_AT_COPS"; case EVENT_TYPE_AT_CLCC: return "EVENT_TYPE_AT_CLCC"; case EVENT_TYPE_UNKNOWN_AT: return "EVENT_TYPE_UNKNOWN_AT"; case EVENT_TYPE_KEY_PRESSED: return "EVENT_TYPE_KEY_PRESSED"; case EVENT_TYPE_WBS: return "EVENT_TYPE_WBS"; case EVENT_TYPE_BIND: return "EVENT_TYPE_BIND"; case EVENT_TYPE_BIEV: return "EVENT_TYPE_BIEV"; case EVENT_TYPE_BIA: return "EVENT_TYPE_BIA"; default: return "UNKNOWN"; } } @Override public void buildString(StringBuilder builder) { if (builder == null) { return; } builder.append(getTypeString()) .append("[") .append(type) .append("]") .append(", valInt=") .append(valueInt) .append(", valInt2=") .append(valueInt2) .append(", valString=") .append(valueString) .append(", valObject=") .append(valueObject) .append(", device=") .append(device); } }