198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal/* 298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal * Copyright (c) 2017 The Android Open Source Project 398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal * 498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal * Licensed under the Apache License, Version 2.0 (the "License"); 598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal * you may not use this file except in compliance with the License. 698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal * You may obtain a copy of the License at 798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal * 898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal * http://www.apache.org/licenses/LICENSE-2.0 998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal * 1098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal * Unless required by applicable law or agreed to in writing, software 1198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal * distributed under the License is distributed on an "AS IS" BASIS, 1298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal * See the License for the specific language governing permissions and 1498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal * limitations under the License. 1598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal */ 1698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal 1798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal// Defines an event that is sent via a callback from JNI -> Java. 1898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal// 1998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal// See examples in NativeInterface.java 2098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalpackage com.android.bluetooth.hfpclient; 2198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal 2298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalimport android.bluetooth.BluetoothDevice; 2398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal 2498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwalpublic class StackEvent { 2598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal // Type of event that signifies a native event and consumed by state machine 2698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int STACK_EVENT = 100; 2798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal 2898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal // Event types for STACK_EVENT message (coming from native) 2998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_NONE = 0; 3098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_CONNECTION_STATE_CHANGED = 1; 3198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_AUDIO_STATE_CHANGED = 2; 3298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_NETWORK_STATE = 4; 3398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_ROAMING_STATE = 5; 3498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_NETWORK_SIGNAL = 6; 3598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_BATTERY_LEVEL = 7; 3698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_OPERATOR_NAME = 8; 3798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_CALL = 9; 3898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_CALLSETUP = 10; 3998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_CALLHELD = 11; 4098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_CLIP = 12; 4198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_CALL_WAITING = 13; 4298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_CURRENT_CALLS = 14; 4398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_VOLUME_CHANGED = 15; 4498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_CMD_RESULT = 16; 4598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_SUBSCRIBER_INFO = 17; 4698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_RESP_AND_HOLD = 18; 4798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal final public static int EVENT_TYPE_RING_INDICATION= 21; 4898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal 4998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal int type = EVENT_TYPE_NONE; 5098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal int valueInt = 0; 5198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal int valueInt2 = 0; 5298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal int valueInt3 = 0; 5398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal int valueInt4 = 0; 5498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal String valueString = null; 5598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal BluetoothDevice device = null; 5698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal 5798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal StackEvent(int type) { 5898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal this.type = type; 5998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal } 6098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal 6198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal @Override 6298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal public String toString() { 6398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal // event dump 6498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal StringBuilder result = new StringBuilder(); 6598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal result.append("StackEvent {type:" + eventTypeToString(type)); 6698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal result.append(", value1:" + valueInt); 6798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal result.append(", value2:" + valueInt2); 6898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal result.append(", value3:" + valueInt3); 6998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal result.append(", value4:" + valueInt4); 7098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal result.append(", string: \"" + valueString + "\""); 7198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal result.append(", device:" + device + "}"); 7298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return result.toString(); 7398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal } 7498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal 7598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal // for debugging only 7698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal private static String eventTypeToString(int type) { 7798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal switch (type) { 7898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_NONE: 7998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_NONE"; 8098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_CONNECTION_STATE_CHANGED: 8198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_CONNECTION_STATE_CHANGED"; 8298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_AUDIO_STATE_CHANGED: 8398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_AUDIO_STATE_CHANGED"; 8498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_NETWORK_STATE: 8598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_NETWORK_STATE"; 8698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_ROAMING_STATE: 8798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_ROAMING_STATE"; 8898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_NETWORK_SIGNAL: 8998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_NETWORK_SIGNAL"; 9098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_BATTERY_LEVEL: 9198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_BATTERY_LEVEL"; 9298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_OPERATOR_NAME: 9398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_OPERATOR_NAME"; 9498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_CALL: 9598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_CALL"; 9698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_CALLSETUP: 9798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_CALLSETUP"; 9898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_CALLHELD: 9998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_CALLHELD"; 10098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_CLIP: 10198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_CLIP"; 10298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_CALL_WAITING: 10398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_CALL_WAITING"; 10498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_CURRENT_CALLS: 10598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_CURRENT_CALLS"; 10698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_VOLUME_CHANGED: 10798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_VOLUME_CHANGED"; 10898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_CMD_RESULT: 10998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_CMD_RESULT"; 11098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_SUBSCRIBER_INFO: 11198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_SUBSCRIBER_INFO"; 11298c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_RESP_AND_HOLD: 11398c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_RESP_AND_HOLD"; 11498c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal case EVENT_TYPE_RING_INDICATION: 11598c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_RING_INDICATION"; 11698c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal default: 11798c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal return "EVENT_TYPE_UNKNOWN:" + type; 11898c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal } 11998c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal } 12098c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal} 12198c5bfdf980d573042bec06588b7e6ddfc48d054Sanket Agarwal 122