• 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.csip;
19 
20 import android.bluetooth.BluetoothDevice;
21 
22 import java.util.UUID;
23 
24 /**
25  * CSIP Set Coordinator role stack event
26  */
27 public class CsipSetCoordinatorStackEvent {
28     // Event types for STACK_EVENT message (coming from native)
29     private static final int EVENT_TYPE_NONE = 0;
30     public static final int EVENT_TYPE_CONNECTION_STATE_CHANGED = 1;
31     public static final int EVENT_TYPE_DEVICE_AVAILABLE = 2;
32     public static final int EVENT_TYPE_SET_MEMBER_AVAILABLE = 3;
33     public static final int EVENT_TYPE_GROUP_LOCK_CHANGED = 4;
34 
35     // Do not modify without updating the HAL bt_csis.h files.
36     // Match up with enum class ConnectionState of bt_csis.h.
37     static final int CONNECTION_STATE_DISCONNECTED = 0;
38     static final int CONNECTION_STATE_CONNECTING = 1;
39     static final int CONNECTION_STATE_CONNECTED = 2;
40     static final int CONNECTION_STATE_DISCONNECTING = 3;
41 
42     static final int LOCK_STATUS_SUCCESS = 0;
43     static final int LOCK_STATUS_FAILED_INVALID_GROUP = 1;
44     static final int LOCK_STATUS_FAILED_GROUP_EMPTY = 2;
45     static final int LOCK_STATUS_FAILED_GROUP_NOT_CONNECTED = 3;
46     static final int LOCK_STATUS_FAILED_GROUP_LOCKED_BY_OTHERS = 5;
47     static final int LOCK_STATUS_FAILED_OTHER_REASON = 6;
48     static final int LOCK_STATUS_GROUP_MEMBER_LOST = 7;
49 
50     public int type = EVENT_TYPE_NONE;
51     public BluetoothDevice device;
52     public int valueInt1 = 0;
53     public int valueInt2 = 0;
54     public int valueInt3 = 0;
55     public UUID valueUuid1;
56 
57     public boolean valueBool1 = false;
58 
CsipSetCoordinatorStackEvent(int type)59     CsipSetCoordinatorStackEvent(int type) {
60         this.type = type;
61     }
62 
63     @Override
toString()64     public String toString() {
65         // event dump
66         StringBuilder result = new StringBuilder();
67         result.append("CsipSetCoordinatorStackEvent {type:" + eventTypeToString(type));
68         result.append(", device:" + device);
69         result.append(", " + eventTypeValueInt1ToString(type, valueInt1));
70         result.append(", " + eventTypeValueInt2ToString(type, valueInt2));
71         result.append(", " + eventTypeValueInt3ToString(type, valueInt3));
72         result.append(", " + eventTypeValueBool1ToString(type, valueBool1));
73         result.append(", " + eventTypeValueUuid1ToString(type, valueUuid1));
74         result.append("}");
75         return result.toString();
76     }
77 
eventTypeToString(int type)78     private static String eventTypeToString(int type) {
79         switch (type) {
80             case EVENT_TYPE_NONE:
81                 return "EVENT_TYPE_NONE";
82             case EVENT_TYPE_CONNECTION_STATE_CHANGED:
83                 return "EVENT_TYPE_CONNECTION_STATE_CHANGED";
84             case EVENT_TYPE_DEVICE_AVAILABLE:
85                 return "EVENT_TYPE_DEVICE_AVAILABLE";
86             case EVENT_TYPE_SET_MEMBER_AVAILABLE:
87                 return "EVENT_TYPE_SET_MEMBER_AVAILABLE";
88             case EVENT_TYPE_GROUP_LOCK_CHANGED:
89                 return "EVENT_TYPE_GROUP_LOCK_CHANGED";
90             default:
91                 return "EVENT_TYPE_UNKNOWN:" + type;
92         }
93     }
94 
connectionStateToString(int value)95     private static String connectionStateToString(int value) {
96         switch (value) {
97             case CONNECTION_STATE_DISCONNECTED:
98                 return "CONNECTION_STATE_DISCONNECTED";
99             case CONNECTION_STATE_CONNECTING:
100                 return "CONNECTION_STATE_CONNECTING";
101             case CONNECTION_STATE_CONNECTED:
102                 return "CONNECTION_STATE_CONNECTED";
103             case CONNECTION_STATE_DISCONNECTING:
104                 return "CONNECTION_STATE_DISCONNECTING";
105             default:
106                 return "STATE_UNKNOWN";
107         }
108     }
109 
eventTypeValueBool1ToString(int evType, boolean value)110     private static String eventTypeValueBool1ToString(int evType, boolean value) {
111         switch (evType) {
112             case EVENT_TYPE_GROUP_LOCK_CHANGED:
113                 return "locked: " + Boolean.toString(value);
114             default:
115                 return "<unused>";
116         }
117     }
118 
eventTypeValueUuid1ToString(int evType, UUID value)119     private static String eventTypeValueUuid1ToString(int evType, UUID value) {
120         switch (evType) {
121             case EVENT_TYPE_DEVICE_AVAILABLE:
122                 return "csis uuid: " + value;
123             default:
124                 return "<unused>";
125         }
126     }
127 
eventTypeValueInt1ToString(int evType, int value)128     private static String eventTypeValueInt1ToString(int evType, int value) {
129         switch (evType) {
130             case EVENT_TYPE_CONNECTION_STATE_CHANGED:
131                 return connectionStateToString(value);
132             case EVENT_TYPE_DEVICE_AVAILABLE:
133             case EVENT_TYPE_GROUP_LOCK_CHANGED:
134             case EVENT_TYPE_SET_MEMBER_AVAILABLE:
135                 return "group id: " + value;
136             default:
137                 return "<unused>";
138         }
139     }
140 
eventTypeValueInt2ToString(int evType, int value)141     private static String eventTypeValueInt2ToString(int evType, int value) {
142         switch (evType) {
143             case EVENT_TYPE_DEVICE_AVAILABLE:
144                 return "group size: " + value;
145             case EVENT_TYPE_GROUP_LOCK_CHANGED:
146                 return "status:" + csipLockStatusToString(value);
147             default:
148                 return "<unused>";
149         }
150     }
151 
eventTypeValueInt3ToString(int evType, int value)152     private static String eventTypeValueInt3ToString(int evType, int value) {
153         switch (evType) {
154             case EVENT_TYPE_DEVICE_AVAILABLE:
155                 return "rank: " + value;
156             default:
157                 return "<unused>";
158         }
159     }
160 
csipLockStatusToString(int state)161     private static String csipLockStatusToString(int state) {
162         switch (state) {
163             case LOCK_STATUS_SUCCESS:
164                 return "LOCK_STATUS_SUCCESS";
165             case LOCK_STATUS_FAILED_INVALID_GROUP:
166                 return "LOCK_STATUS_FAILED_INVALID_GROUP";
167             case LOCK_STATUS_FAILED_GROUP_EMPTY:
168                 return "LOCK_STATUS_FAILED_GROUP_EMPTY";
169             case LOCK_STATUS_FAILED_GROUP_NOT_CONNECTED:
170                 return "LOCK_STATUS_FAILED_GROUP_NOT_CONNECTED";
171             case LOCK_STATUS_FAILED_GROUP_LOCKED_BY_OTHERS:
172                 return "LOCK_STATUS_FAILED_GROUP_LOCKED_BY_OTHERS";
173             case LOCK_STATUS_FAILED_OTHER_REASON:
174                 return "LOCK_STATUS_FAILED_OTHER_REASON";
175             case LOCK_STATUS_GROUP_MEMBER_LOST:
176                 return "LOCK_STATUS_GROUP_MEMBER_LOST";
177             default:
178                 return "UNKNOWN";
179         }
180     }
181 }
182