• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2021 HIMSA II K/S - www.himsa.com.
3  * Represented by EHIMA - www.ehima.com
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 package com.android.bluetooth.vc;
19 
20 import android.bluetooth.BluetoothDevice;
21 import android.bluetooth.BluetoothProfile;
22 
23 public class VolumeControlStackEvent {
24     // Event types for STACK_EVENT message (coming from native)
25     private static final int EVENT_TYPE_NONE = 0;
26     public static final int EVENT_TYPE_CONNECTION_STATE_CHANGED = 1;
27     public static final int EVENT_TYPE_VOLUME_STATE_CHANGED = 2;
28     public static final int EVENT_TYPE_DEVICE_AVAILABLE = 3;
29     public static final int EVENT_TYPE_EXT_AUDIO_OUT_VOL_OFFSET_CHANGED = 4;
30     public static final int EVENT_TYPE_EXT_AUDIO_OUT_LOCATION_CHANGED = 5;
31     public static final int EVENT_TYPE_EXT_AUDIO_OUT_DESCRIPTION_CHANGED = 6;
32 
33     public int type;
34     public BluetoothDevice device;
35     public int valueInt1;
36     public int valueInt2;
37     public int valueInt3;
38     public boolean valueBool1;
39     public boolean valueBool2;
40     public String valueString1;
41 
42     /* Might need more for other callbacks*/
43 
VolumeControlStackEvent(int type)44     VolumeControlStackEvent(int type) {
45         this.type = type;
46     }
47 
48     @Override
toString()49     public String toString() {
50         // event dump
51         StringBuilder result = new StringBuilder();
52         result.append("VolumeControlStackEvent {type:").append(eventTypeToString(type));
53         result.append(", device:").append(device);
54         result.append(", valueInt1:").append(eventTypeValue1ToString(type, valueInt1));
55         result.append(", valueInt2:").append(eventTypeValue2ToString(type, valueInt2));
56         result.append(", valueInt3:").append(eventTypeValue3ToString(type, valueInt3));
57         result.append(", valueBool1:").append(eventTypeValueBool1ToString(type, valueBool1));
58         result.append(", valueBool2:").append(eventTypeValueBool2ToString(type, valueBool2));
59         result.append(", valueString1:").append(eventTypeString1ToString(type, valueString1));
60         result.append("}");
61         return result.toString();
62     }
63 
eventTypeToString(int type)64     private static String eventTypeToString(int type) {
65         switch (type) {
66             case EVENT_TYPE_NONE:
67                 return "EVENT_TYPE_NONE";
68             case EVENT_TYPE_CONNECTION_STATE_CHANGED:
69                 return "EVENT_TYPE_CONNECTION_STATE_CHANGED";
70             case EVENT_TYPE_VOLUME_STATE_CHANGED:
71                 return "EVENT_TYPE_VOLUME_STATE_CHANGED";
72             case EVENT_TYPE_DEVICE_AVAILABLE:
73                 return "EVENT_TYPE_DEVICE_AVAILABLE";
74             case EVENT_TYPE_EXT_AUDIO_OUT_VOL_OFFSET_CHANGED:
75                 return "EVENT_TYPE_EXT_AUDIO_OUT_VOL_OFFSET_CHANGED";
76             case EVENT_TYPE_EXT_AUDIO_OUT_LOCATION_CHANGED:
77                 return "EVENT_TYPE_EXT_AUDIO_OUT_LOCATION_CHANGED";
78             case EVENT_TYPE_EXT_AUDIO_OUT_DESCRIPTION_CHANGED:
79                 return "EVENT_TYPE_EXT_AUDIO_OUT_DESCRIPTION_CHANGED";
80             default:
81                 return "EVENT_TYPE_UNKNOWN:" + type;
82         }
83     }
84 
eventTypeValue1ToString(int type, int value)85     private static String eventTypeValue1ToString(int type, int value) {
86         switch (type) {
87             case EVENT_TYPE_CONNECTION_STATE_CHANGED:
88                 return BluetoothProfile.getConnectionStateName(value);
89             case EVENT_TYPE_VOLUME_STATE_CHANGED:
90                 return "{group_id:" + value + "}";
91             case EVENT_TYPE_DEVICE_AVAILABLE:
92                 return "{num_ext_outputs:" + value + "}";
93             case EVENT_TYPE_EXT_AUDIO_OUT_VOL_OFFSET_CHANGED:
94             case EVENT_TYPE_EXT_AUDIO_OUT_LOCATION_CHANGED:
95             case EVENT_TYPE_EXT_AUDIO_OUT_DESCRIPTION_CHANGED:
96                 return "{ext output id:" + value + "}";
97             default:
98                 break;
99         }
100         return Integer.toString(value);
101     }
102 
eventTypeValue2ToString(int type, int value)103     private static String eventTypeValue2ToString(int type, int value) {
104         switch (type) {
105             case EVENT_TYPE_VOLUME_STATE_CHANGED:
106                 return "{volume:" + value + "}";
107             case EVENT_TYPE_DEVICE_AVAILABLE:
108                 return "{num_ext_inputs:" + value + "}";
109             default:
110                 break;
111         }
112         return Integer.toString(value);
113     }
114 
eventTypeValue3ToString(int type, int value)115     private static String eventTypeValue3ToString(int type, int value) {
116         switch (type) {
117             case EVENT_TYPE_VOLUME_STATE_CHANGED:
118                 return "{flags:" + value + "}";
119             default:
120                 break;
121         }
122         return Integer.toString(value);
123     }
124 
eventTypeValueBool1ToString(int type, boolean value)125     private static String eventTypeValueBool1ToString(int type, boolean value) {
126         switch (type) {
127             case EVENT_TYPE_VOLUME_STATE_CHANGED:
128                 return "{muted:" + value + "}";
129             default:
130                 break;
131         }
132         return Boolean.toString(value);
133     }
134 
eventTypeValueBool2ToString(int type, boolean value)135     private static String eventTypeValueBool2ToString(int type, boolean value) {
136         switch (type) {
137             case EVENT_TYPE_VOLUME_STATE_CHANGED:
138                 return "{isAutonomous:" + value + "}";
139             default:
140                 break;
141         }
142         return Boolean.toString(value);
143     }
144 
eventTypeString1ToString(int type, String value)145     private static String eventTypeString1ToString(int type, String value) {
146         switch (type) {
147             case EVENT_TYPE_EXT_AUDIO_OUT_DESCRIPTION_CHANGED:
148                 return "{description:" + value + "}";
149             default:
150                 break;
151         }
152         return value;
153     }
154 }
155