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