1 /*
2  * Copyright (C) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef BLUETOOTH_SERVICE_PROFILE_INTERFACE_CODE_H
17 #define BLUETOOTH_SERVICE_PROFILE_INTERFACE_CODE_H
18 
19 #include "ipc_types.h"
20 
21 /* SAID: 1130 */
22 namespace OHOS {
23 namespace Bluetooth {
24 enum BluetoothA2dpSinkObserverInterfaceCode {
25     BT_A2DP_SINK_OBSERVER_CONNECTION_STATE_CHANGED = 0,
26     // The last code, if you want to add a new code, please add it before this
27     BT_A2DP_SINK_OBSERVER_BUTT
28 };
29 
30 enum BluetoothA2dpSinkInterfaceCode {
31     BT_A2DP_SINK_CONNECT = 0,
32     BT_A2DP_SINK_DISCONNECT,
33     BT_A2DP_SINK_REGISTER_OBSERVER,
34     BT_A2DP_SINK_DEREGISTER_OBSERVER,
35     BT_A2DP_SINK_GET_DEVICE_BY_STATES,
36     BT_A2DP_SINK_GET_DEVICE_STATE,
37     BT_A2DP_SINK_GET_PLAYING_STATE,
38     BT_A2DP_SINK_SET_CONNECT_STRATEGY,
39     BT_A2DP_SINK_GET_CONNECT_STRATEGY,
40     BT_A2DP_SINK_SEND_DELAY,
41     // The last code, if you want to add a new code, please add it before this
42     BT_A2DP_SINK_BUTT
43 };
44 
45 enum BluetoothA2dpSourceObserverInterfaceCode {
46     BT_A2DP_SRC_OBSERVER_CONNECTION_STATE_CHANGED = 0,
47     BT_A2DP_SRC_OBSERVER_PLAYING_STATUS_CHANGED,
48     BT_A2DP_SRC_OBSERVER_CONFIGURATION_CHANGED,
49     BT_A2DP_SRC_OBSERVER_MEDIASTACK_CHANGED,
50     BT_A2DP_SRC_OBSERVER_VIRTUALDEVICE_CHANGED,
51     // The last code, if you want to add a new code, please add it before this
52     BT_A2DP_SRC_OBSERVER_BUTT
53 };
54 
55 enum BluetoothA2dpSrcInterfaceCode {
56     BT_A2DP_SRC_CONNECT = 0,
57     BT_A2DP_SRC_DISCONNECT,
58     BT_A2DP_SRC_REGISTER_OBSERVER,
59     BT_A2DP_SRC_DEREGISTER_OBSERVER,
60     BT_A2DP_SRC_GET_DEVICE_BY_STATES,
61     BT_A2DP_SRC_GET_DEVICE_STATE,
62     BT_A2DP_SRC_GET_PLAYING_STATE,
63     BT_A2DP_SRC_SET_CONNECT_STRATEGY,
64     BT_A2DP_SRC_GET_CONNECT_STRATEGY,
65     BT_A2DP_SRC_SET_ACTIVE_SINK_DEVICE,
66     BT_A2DP_SRC_GET_ACTIVE_SINK_DEVICE,
67     BT_A2DP_SRC_GET_CODEC_STATUS,
68     BT_A2DP_SRC_SET_CODEC_PREFERENCE,
69     BT_A2DP_SRC_SWITCH_OPTIONAL_CODECS,
70     BT_A2DP_SRC_GET_OPTIONAL_CODECS_SUPPORT_STATE,
71     BT_A2DP_SRC_START_PLAYING,
72     BT_A2DP_SRC_SUSPEND_PLAYING,
73     BT_A2DP_SRC_STOP_PLAYING,
74     BT_A2DP_SRC_SET_AUDIO_CONFIGURE,
75     BT_A2DP_SRC_WRITE_FRAME,
76     BT_A2DP_SRC_GET_RENDER_POSITION,
77     BT_A2DP_SRC_GET_CODEC_PREFERENCE,
78     BT_A2DP_SRC_OFFLOAD_START_PLAYING,
79     BT_A2DP_SRC_OFFLOAD_STOP_PLAYING,
80     BT_A2DP_SRC_OFFLOAD_SESSION_REQUEST,
81     BT_A2DP_SRC_OFFLOAD_GET_CODEC_STATUS,
82     BT_A2DP_SRC_ENABLE_AUTO_PLAY,
83     BT_A2DP_SRC_DISABLE_AUTO_PLAY,
84     BT_A2DP_SRC_GET_AUTO_PLAY_DISABLED_DURATION,
85     BT_A2DP_SRC_SET_VIRTUAL_DEVICE,
86     BT_A2DP_SRC_GET_VIRTUALDEVICE_LIST,
87     // The last code, if you want to add a new code, please add it before this
88     BT_A2DP_SRC_BUTT
89 };
90 
91 enum class BluetoothAvrcpCtObserverInterfaceCode {
92     AVRCP_CT_CONNECTION_STATE_CHANGED = 0,
93     AVRCP_CT_PRESS_BUTTON,
94     AVRCP_CT_RELEASE_BUTTON,
95     AVRCP_CT_SET_BROWSED_PLAYER,
96     AVRCP_CT_GET_CAPABILITIES,
97     AVRCP_CT_GET_PLAYER_APP_SETTING_ATTRIBUTES,
98     AVRCP_CT_GET_PLAYER_APP_SETTING_VALUES,
99     AVRCP_CT_GET_PLAYER_APP_SETTING_CURRENT_VALUE,
100     AVRCP_CT_SET_PLAYER_APP_SETTING_CURRENT_VALUE,
101     AVRCP_CT_GET_PLAYER_APP_SETTING_ATTRIBUTE_TEXT,
102     AVRCP_CT_GET_PLAYER_APP_SETTING_VALUE_TEXT,
103     AVRCP_CT_ELEMENT_ATTRIBUTRES,
104     AVRCP_CT_GET_PLAY_STATUS,
105     AVRCP_CT_PLAY_ITEM,
106     AVRCP_CT_GET_TOTAL_NUMBER_OF_ITEMS,
107     AVRCP_CT_GET_ITEM_ATTRIBUTES,
108     AVRCP_CT_SET_ABSOLUTE_VOLUME,
109     AVRCP_CT_PLAYBACK_STATUS_CHANGED,
110     AVRCP_CT_TRACK_CHANGED,
111     AVRCP_CT_TRACK_REACHED_END,
112     AVRCP_CT_TRACK_REACHED_START,
113     AVRCP_CT_PLAYBACK_POS_CHANGED,
114     AVRCP_CT_PLAY_APP_SETTING_CHANGED,
115     AVRCP_CT_NOW_PLAYING_CONTENT_CHANGED,
116     AVRCP_CT_AVAILABLE_PLAYER_CHANGED,
117     AVRCP_CT_ADDRESSED_PLAYER_CHANGED,
118     AVRCP_CT_UID_CHANGED,
119     AVRCP_CT_VOLUME_CHANGED,
120     AVRCP_CT_GET_MEDIA_PLAYERS,
121     AVRCP_CT_GET_FOLDER_ITEMS,
122     // The last code, if you want to add a new code, please add it before this
123     AVRCP_CT_OBSERVER_BUTT
124 };
125 
126 enum class BluetoothAvrcpCtInterfaceCode {
127     AVRCP_CT_REGISTER_OBSERVER = 0,
128     AVRCP_CT_UNREGISTER_OBSERVER,
129     AVRCP_CT_GET_CONNECTED_DEVICES,
130     AVRCP_CT_GET_DEVICES_BY_STATES,
131     AVRCP_CT_GET_DEVICE_STATE,
132     AVRCP_CT_CONNECT,
133     AVRCP_CT_DISCONNECT,
134     AVRCP_CT_PRESS_BUTTON,
135     AVRCP_CT_RELEASE_BUTTON,
136     AVRCP_CT_GET_UNIT_INFO,
137     AVRCP_CT_GET_SUB_UNIT_INFO,
138     AVRCP_CT_GET_SUPPORTED_COMPANIES,
139     AVRCP_CT_GET_SUPPORTED_EVENTS,
140     AVRCP_CT_GET_PLAYER_APP_SETTING_ATTRIBUTES,
141     AVRCP_CT_GET_PLAYER_APP_SETTING_VALUES,
142     AVRCP_CT_GET_PLAYER_APP_SETTING_CURRENT_VALUE,
143     AVRCP_CT_SET_PLAYER_APP_SETTING_CURRENT_VALUE,
144     AVRCP_CT_GET_PLAYER_APP_SETTING_ATTRIBUTE_TEXT,
145     AVRCP_CT_GET_PLAYER_APP_SETTING_VALUES_TEXT,
146     AVRCP_CT_GET_ELEMENT_ATTRIBUTES,
147     AVRCP_CT_GET_PLAYER_STATUS,
148     AVRCP_CT_PLAY_ITEM,
149     AVRCP_CT_GET_FOLDER_ITEMS,
150     AVRCP_CT_GET_TOTAL_NUMBER_OF_ITEMS,
151     AVRCP_CT_SET_ABSOLUTE_VOLUME,
152     AVRCP_CT_ENABLE_NOTIFICATION,
153     AVRCP_CT_DISABLE_NOTIFICATION,
154     AVRCP_CT_GET_ITEM_ATTRIBUTES,
155     AVRCP_CT_SET_BROWSERED_PLAYER,
156     AVRCP_CT_MEDIA_PLAYER_LIST,
157     // The last code, if you want to add a new code, please add it before this
158     AVRCP_CT_BUTT
159 };
160 
161 enum BluetoothAvrcpTgObserverInterfaceCode {
162     BT_AVRCP_TG_OBSERVER_CONNECTION_STATE_CHANGED = 0,
163     // The last code, if you want to add a new code, please add it before this
164     BT_AVRCP_TG_OBSERVER_BUTT
165 };
166 
167 enum BluetoothAvrcpTgInterfaceCode {
168     BT_AVRCP_TG_REGISTER_OBSERVER = 0,
169     BT_AVRCP_TG_UNREGISTER_OBSERVER,
170     BT_AVRCP_TG_SET_ACTIVE_DEVICE,
171     BT_AVRCP_TG_CONNECT,
172     BT_AVRCP_TG_DISCONNECT,
173     BT_AVRCP_TG_GET_CONNECTED_DEVICES,
174     BT_AVRCP_TG_GET_DEVICES_BY_STATES,
175     BT_AVRCP_TG_GET_DEVICE_STATE,
176     BT_AVRCP_TG_NOTIFY_PLAYBACK_STATUS_CHANGED,
177     BT_AVRCP_TG_NOTIFY_TRACK_CHANGED,
178     BT_AVRCP_TG_NOTIFY_TRACK_REACHED_END,
179     BT_AVRCP_TG_NOTIFY_TRACK_REACHED_START,
180     BT_AVRCP_TG_NOTIFY_PLAYBACK_POS_CHANGED,
181     BT_AVRCP_TG_NOTIFY_PLAYER_APP_SETTING_CHANGED,
182     BT_AVRCP_TG_NOTIFY_NOWPLAYING_CONTENT_CHANGED,
183     BT_AVRCP_TG_NOTIFY_AVAILABLE_PLAYERS_CHANGED,
184     BT_AVRCP_TG_NOTIFY_ADDRESSED_PLAYER_CHANGED,
185     BT_AVRCP_TG_NOTIFY_UID_CHANGED,
186     BT_AVRCP_TG_NOTIFY_VOLUME_CHANGED,
187     BT_AVRCP_TG_SET_DEVICE_ABSOLUTE_VOLUME,
188     BT_AVRCP_TG_SET_DEVICE_ABS_VOLUME_ABILITY,
189     BT_AVRCP_TG_GET_DEVICE_ABS_VOLUME_ABILITY,
190     // The last code, if you want to add a new code, please add it before this
191     BT_AVRCP_TG_BUTT
192 };
193 
194 enum BluetoothHfpAgObserverInterfaceCode {
195     BT_HFP_AG_OBSERVER_CONNECTION_STATE_CHANGED = 0,
196     BT_HFP_AG_OBSERVER_SCO_STATE_CHANGED,
197     BT_HFP_AG_OBSERVER_ACTIVE_DEVICE_CHANGED,
198     BT_HFP_AG_OBSERVER_HF_ENHANCED_DRIVER_SAFETY_CHANGED,
199     BT_HFP_AG_OBSERVER_HFP_STACK_CHANGED,
200     BT_HFP_AG_OBSERVER_VIRTUALDEVICE_CHANGED,
201     // The last code, if you want to add a new code, please add it before this
202     BT_HFP_AG_OBSERVER_BUTT
203 };
204 
205 enum BluetoothHfpAgInterfaceCode {
206     BT_HFP_AG_GET_CONNECT_DEVICES = 0,
207     BT_HFP_AG_GET_DEVICES_BY_STATES,
208     BT_HFP_AG_GET_DEVICE_STATE,
209     BT_HFP_AG_CONNECT,
210     BT_HFP_AG_DISCONNECT,
211     BT_HFP_AG_GET_SCO_STATE,
212     BT_HFP_AG_CONNECT_SCO,
213     BT_HFP_AG_DISCONNECT_SCO,
214     BT_HFP_AG_PHONE_STATE_CHANGED,
215     BT_HFP_AG_CLCC_RESPONSE,
216     BT_HFP_AG_OPEN_VOICE_RECOGNITION,
217     BT_HFP_AG_CLOSE_VOICE_RECOGNITION,
218     BT_HFP_AG_SET_ACTIVE_DEVICE,
219     BT_HFP_AG_INTO_MOCK,
220     BT_HFP_AG_SEND_NO_CARRIER,
221     BT_HFP_AG_GET_ACTIVE_DEVICE,
222     BT_HFP_AG_REGISTER_OBSERVER,
223     BT_HFP_AG_DEREGISTER_OBSERVER,
224     BT_HFP_AG_SET_CONNECT_STRATEGY,
225     BT_HFP_AG_GET_CONNECT_STRATEGY,
226     BT_HFP_AG_CONNECT_SCO_EX,
227     BT_HFP_AG_DISCONNECT_SCO_EX,
228     BT_HFP_AG_IS_IN_BAND_RINGING_ENABLE,
229     BT_HFP_AG_CALL_DETAILS_CHANGED,
230     BT_HFP_AG_IS_VGS_SUPPORTED,
231     BT_HFP_AG_CALL_LOG,
232     BT_HFP_AG_GET_VIRTUALDEVICE_LIST,
233     BT_HFP_AG_UPDATE_VIRTUALDEVICE,
234     // The last code, if you want to add a new code, please add it before this
235     BT_HFP_AG_BUTT
236 };
237 
238 enum BluetoothHfpHfObserverInterfaceCode {
239     BT_HFP_HF_OBSERVER_CONNECTION_STATE_CHANGED = 0,
240     BT_HFP_HF_OBSERVER_SCO_STATE_CHANGED,
241     BT_HFP_HF_OBSERVER_CALL_CHANGED,
242     BT_HFP_HF_OBSERVER_SIGNAL_STRENGTH_CHANGED,
243     BT_HFP_HF_OBSERVER_REGISTRATION_STATUS_CHANGED,
244     BT_HFP_HF_OBSERVER_ROAMING_STATUS_CHANGED,
245     BT_HFP_HF_OBSERVER_OPERATOR_SELECTION_CHANGED,
246     BT_HFP_HF_OBSERVER_SUBSCRIBER_NUMBER_CHANGED,
247     BT_HFP_HF_OBSERVER_VOICE_RECOGNITION_STATUS_CHANGED,
248     BT_HFP_HF_OBSERVER_IN_BAND_RING_TONE_CHANGED,
249     // The last code, if you want to add a new code, please add it before this
250     BT_HFP_HF_OBSERVER_BUTT
251 };
252 
253 enum BluetoothHfpHfInterfaceCode {
254     BT_HFP_HF_CONNECT_SCO = 0,
255     BT_HFP_HF_DISCONNECT_SCO,
256     BT_HFP_HF_GET_DEVICES_BY_STATES,
257     BT_HFP_HF_GET_DEVICE_STATE,
258     BT_HFP_HF_GET_SCO_STATE,
259     BT_HFP_HF_SEND_DTMF_TONE,
260     BT_HFP_HF_CONNECT,
261     BT_HFP_HF_DISCONNECT,
262     BT_HFP_HF_OPEN_VOICE_RECOGNITION,
263     BT_HFP_HF_CLOSE_VOICE_RECOGNITION,
264     BT_HFP_HF_GET_CURRENT_CALL_LIST,
265     BT_HFP_HF_ACCEPT_INCOMING_CALL,
266     BT_HFP_HF_HOLD_ACTIVE_CALL,
267     BT_HFP_HF_REJECT_INCOMING_CALL,
268     BT_HFP_HF_HANDLE_INCOMING_CALL,
269     BT_HFP_HF_HANDLE_MULLTI_CALL,
270     BT_HFP_HF_DIAL_LAST_NUMBER,
271     BT_HFP_HF_DIAL_MEMORY,
272     BT_HFP_HF_FINISH_ATIVE_CALL,
273     BT_HFP_HF_START_DIAL,
274     BT_HFP_HF_REGISTER_OBSERVER,
275     BT_HFP_HF_DEREGISTER_OBSERVER,
276     BT_HFP_HF_SEND_VOICE_TAG,
277     BT_HFP_HF_SEND_KEY_PRESSED,
278     // The last code, if you want to add a new code, please add it before this
279     BT_HFP_HF_BUTT
280 };
281 
282 #define SEND_IPC_REQUEST_RETURN_RESULT(code, data, reply, option, result)                   \
283     do {                                                                                    \
284         sptr<IRemoteObject> remote = Remote();                                              \
285         if (remote == nullptr) {                                                            \
286             HILOGE("remote is nullptr.");                                                   \
287             return (result);                                                                \
288         }                                                                                   \
289         int ret = remote->SendRequest((code), (data), (reply), (option));                   \
290         if (ret != BT_NO_ERROR) {                                                           \
291             HILOGE("IPC send failed, ret(%{public}d), code(%{public}d)", ret, (code));      \
292             return (result);                                                                \
293         }                                                                                   \
294     } while (0)
295 
296 #define SEND_IPC_REQUEST_RETURN(code, data, reply, option)                                  \
297     do {                                                                                    \
298         sptr<IRemoteObject> remote = Remote();                                              \
299         if (remote == nullptr) {                                                            \
300             HILOGE("remote is nullptr.");                                                   \
301             return;                                                                         \
302         }                                                                                   \
303         int ret = remote->SendRequest((code), (data), (reply), (option));                   \
304         if (ret != BT_NO_ERROR) {                                                           \
305             HILOGE("IPC send failed, ret(%{public}d), code(%{public}d)", ret, (code));      \
306             return;                                                                         \
307         }                                                                                   \
308     } while (0)
309 
310 }  // namespace Bluetooth
311 }  // namespace OHOS
312 #endif  // BLUETOOTH_SERVICE_PROFILE_INTERFACE_CODE_H