1 /*
2 * Copyright (C) 2021-2022 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 #include "bluetooth_avrcp_ct_observer_stub.h"
17 #include "bluetooth_log.h"
18 #include "ipc_types.h"
19 #include "string_ex.h"
20
21 namespace OHOS {
22 namespace Bluetooth {
23 using namespace OHOS::bluetooth;
24
BluetoothAvrcpCtObserverStub()25 BluetoothAvrcpCtObserverStub::BluetoothAvrcpCtObserverStub()
26 {
27 HILOGD("%{public}s start.", __func__);
28 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_CONNECTION_STATE_CHANGED)] =
29 &BluetoothAvrcpCtObserverStub::OnConnectionStateChangedInner;
30 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_PRESS_BUTTON)] =
31 &BluetoothAvrcpCtObserverStub::OnPressButtonInner;
32 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_RELEASE_BUTTON)] =
33 &BluetoothAvrcpCtObserverStub::OnReleaseButtonInner;
34 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_SET_BROWSED_PLAYER)] =
35 &BluetoothAvrcpCtObserverStub::OnSetBrowsedPlayerInner;
36 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_GET_CAPABILITIES)] =
37 &BluetoothAvrcpCtObserverStub::OnGetCapabilitiesInner;
38 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_GET_PLAYER_APP_SETTING_ATTRIBUTES)] =
39 &BluetoothAvrcpCtObserverStub::OnGetPlayerAppSettingAttributesInner;
40 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_GET_PLAYER_APP_SETTING_VALUES)] =
41 &BluetoothAvrcpCtObserverStub::OnGetPlayerAppSettingValuesInner;
42 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_GET_PLAYER_APP_SETTING_CURRENT_VALUE)] =
43 &BluetoothAvrcpCtObserverStub::OnGetPlayerAppSettingCurrentValueInner;
44 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_SET_PLAYER_APP_SETTING_CURRENT_VALUE)] =
45 &BluetoothAvrcpCtObserverStub::OnSetPlayerAppSettingCurrentValueInner;
46 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_GET_PLAYER_APP_SETTING_ATTRIBUTE_TEXT)] =
47 &BluetoothAvrcpCtObserverStub::OnGetPlayerAppSettingAttributeTextInner;
48 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_GET_PLAYER_APP_SETTING_VALUE_TEXT)] =
49 &BluetoothAvrcpCtObserverStub::OnGetPlayerAppSettingValueTextInner;
50 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_ELEMENT_ATTRIBUTRES)] =
51 &BluetoothAvrcpCtObserverStub::OnGetElementAttributesInner;
52 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_GET_PLAY_STATUS)] =
53 &BluetoothAvrcpCtObserverStub::OnGetPlayStatusInner;
54 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_PLAY_ITEM)] =
55 &BluetoothAvrcpCtObserverStub::OnPlayItemInner;
56 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_GET_TOTAL_NUMBER_OF_ITEMS)] =
57 &BluetoothAvrcpCtObserverStub::OnGetTotalNumberOfItemsInner;
58 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_GET_ITEM_ATTRIBUTES)] =
59 &BluetoothAvrcpCtObserverStub::OnGetItemAttributesInner;
60 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_SET_ABSOLUTE_VOLUME)] =
61 &BluetoothAvrcpCtObserverStub::OnSetAbsoluteVolumeInner;
62 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_PLAYBACK_STATUS_CHANGED)] =
63 &BluetoothAvrcpCtObserverStub::OnPlaybackStatusChangedInner;
64 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_TRACK_CHANGED)] =
65 &BluetoothAvrcpCtObserverStub::OnTrackChangedInner;
66 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_TRACK_REACHED_END)] =
67 &BluetoothAvrcpCtObserverStub::OnTrackReachedEndInner;
68 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_TRACK_REACHED_START)] =
69 &BluetoothAvrcpCtObserverStub::OnTrackReachedStartInner;
70 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_PLAYBACK_POS_CHANGED)] =
71 &BluetoothAvrcpCtObserverStub::OnPlaybackPosChangedInner;
72 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_PLAY_APP_SETTING_CHANGED)] =
73 &BluetoothAvrcpCtObserverStub::OnPlayerAppSettingChangedInner;
74 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_NOW_PLAYING_CONTENT_CHANGED)] =
75 &BluetoothAvrcpCtObserverStub::OnNowPlayingContentChangedInner;
76 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_AVAILABLE_PLAYER_CHANGED)] =
77 &BluetoothAvrcpCtObserverStub::OnAvailablePlayersChangedInner;
78 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_ADDRESSED_PLAYER_CHANGED)] =
79 &BluetoothAvrcpCtObserverStub::OnAddressedPlayerChangedInner;
80 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_UID_CHANGED)] =
81 &BluetoothAvrcpCtObserverStub::OnUidChangedInner;
82 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_VOLUME_CHANGED)] =
83 &BluetoothAvrcpCtObserverStub::OnVolumeChangedInner;
84 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_GET_MEDIA_PLAYERS)] =
85 &BluetoothAvrcpCtObserverStub::OnGetMediaPlayersInner;
86 memberFuncMap_[static_cast<uint32_t>(IBluetoothAvrcpCtObserver::Code::AVRCP_CT_GET_FOLDER_ITEMS)] =
87 &BluetoothAvrcpCtObserverStub::OnGetFolderItemsInner;
88 }
89
~BluetoothAvrcpCtObserverStub()90 BluetoothAvrcpCtObserverStub::~BluetoothAvrcpCtObserverStub()
91 {
92 HILOGD("%{public}s start.", __func__);
93 memberFuncMap_.clear();
94 }
95
OnRemoteRequest(uint32_t code,MessageParcel & data,MessageParcel & reply,MessageOption & option)96 int BluetoothAvrcpCtObserverStub::OnRemoteRequest(
97 uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option)
98 {
99 HILOGD("BluetoothAvrcpCtObserverStub::OnRemoteRequest, cmd = %{public}d, flags= %{public}d",
100 code,
101 option.GetFlags());
102 std::u16string descriptor = BluetoothAvrcpCtObserverStub::GetDescriptor();
103 std::u16string remoteDescriptor = data.ReadInterfaceToken();
104 if (descriptor != remoteDescriptor) {
105 HILOGI("local descriptor is not equal to remote");
106 return ERR_INVALID_STATE;
107 }
108
109 auto itFunc = memberFuncMap_.find(code);
110 if (itFunc != memberFuncMap_.end()) {
111 auto memberFunc = itFunc->second;
112 if (memberFunc != nullptr) {
113 return (this->*memberFunc)(data,reply);
114 }
115 }
116
117 HILOGW("BluetoothAvrcpCtObserverStub::OnRemoteRequest, default case, need check.");
118 return IPCObjectStub::OnRemoteRequest(code, data, reply, option);
119 }
120
OnConnectionStateChangedInner(MessageParcel & data,MessageParcel & reply)121 ErrCode BluetoothAvrcpCtObserverStub::OnConnectionStateChangedInner(MessageParcel &data, MessageParcel &reply)
122 {
123 std::string addr = data.ReadString();
124 int state = data.ReadInt32();
125
126 OnConnectionStateChanged(RawAddress(addr), state);
127 return NO_ERROR;
128 }
129
OnPressButtonInner(MessageParcel & data,MessageParcel & reply)130 ErrCode BluetoothAvrcpCtObserverStub::OnPressButtonInner(MessageParcel &data, MessageParcel &reply)
131 {
132 std::string addr = data.ReadString();
133 int button = data.ReadInt32();
134 int result = data.ReadInt32();
135
136 OnPressButton(RawAddress(addr), button, result);
137 return NO_ERROR;
138 }
139
OnReleaseButtonInner(MessageParcel & data,MessageParcel & reply)140 ErrCode BluetoothAvrcpCtObserverStub::OnReleaseButtonInner(MessageParcel &data, MessageParcel &reply)
141 {
142 std::string addr = data.ReadString();
143 int button = data.ReadInt32();
144 int result = data.ReadInt32();
145
146 OnReleaseButton(RawAddress(addr), button, result);
147 return NO_ERROR;
148 }
149
OnSetBrowsedPlayerInner(MessageParcel & data,MessageParcel & reply)150 ErrCode BluetoothAvrcpCtObserverStub::OnSetBrowsedPlayerInner(MessageParcel &data, MessageParcel &reply)
151 {
152 std::string addr = data.ReadString();
153 int uidCounter = data.ReadInt32();
154 uint32_t numberOfItems = data.ReadUint32();
155 std::vector<std::string> folderNames {};
156 int32_t namesSize = data.ReadInt32();
157 for (int i = 0; i < namesSize; i++) {
158 std::string name = data.ReadString();
159 folderNames.push_back(name);
160 }
161 int result = data.ReadInt32();
162 int detail = data.ReadInt32();
163
164 OnSetBrowsedPlayer(RawAddress(addr), uidCounter, numberOfItems, folderNames,result, detail);
165 return NO_ERROR;
166 }
167
OnGetCapabilitiesInner(MessageParcel & data,MessageParcel & reply)168 ErrCode BluetoothAvrcpCtObserverStub::OnGetCapabilitiesInner(MessageParcel &data, MessageParcel &reply)
169 {
170 std::string addr = data.ReadString();
171 std::vector<uint32_t> companies {};
172 int32_t companiesSize = data.ReadInt32();
173 for (int i = 0; i < companiesSize; i++) {
174 uint32_t company = data.ReadUint32();
175 companies.push_back(company);
176 }
177
178 std::vector<uint8_t> events {};
179 int32_t eventsSize = data.ReadInt32();
180 for (int i = 0; i < eventsSize; i++) {
181 uint8_t event = data.ReadInt32();
182 events.push_back(event);
183 }
184
185 int result = data.ReadInt32();
186
187 OnGetCapabilities(RawAddress(addr), companies, events, result);
188 return NO_ERROR;
189 }
190
OnGetPlayerAppSettingAttributesInner(MessageParcel & data,MessageParcel & reply)191 ErrCode BluetoothAvrcpCtObserverStub::OnGetPlayerAppSettingAttributesInner(MessageParcel &data, MessageParcel &reply)
192 {
193 std::string addr = data.ReadString();
194
195 std::vector<uint8_t> attributes {};
196 int32_t attributesSize = data.ReadInt32();
197 for (int i = 0; i < attributesSize; i++) {
198 uint8_t attrbute = data.ReadInt32();
199 attributes.push_back(attrbute);
200 }
201
202 int result = data.ReadInt32();
203
204 OnGetPlayerAppSettingAttributes(RawAddress(addr), attributes, result);
205 return NO_ERROR;
206 }
207
OnGetPlayerAppSettingValuesInner(MessageParcel & data,MessageParcel & reply)208 ErrCode BluetoothAvrcpCtObserverStub::OnGetPlayerAppSettingValuesInner(MessageParcel &data, MessageParcel &reply)
209 {
210 std::string addr = data.ReadString();
211 int attrbute = data.ReadInt32();
212
213 std::vector<uint8_t> values {};
214 int32_t valuesSize = data.ReadInt32();
215 for (int i = 0; i < valuesSize; i++) {
216 uint8_t value = data.ReadInt32();
217 values.push_back(value);
218 }
219 int result = data.ReadInt32();
220
221 OnGetPlayerAppSettingValues(RawAddress(addr), attrbute, values, result);
222 return NO_ERROR;
223 }
224
OnGetPlayerAppSettingCurrentValueInner(MessageParcel & data,MessageParcel & reply)225 ErrCode BluetoothAvrcpCtObserverStub::OnGetPlayerAppSettingCurrentValueInner(MessageParcel &data, MessageParcel &reply)
226 {
227 std::string addr = data.ReadString();
228 std::vector<uint8_t> attrbutes {};
229 int32_t attrbutesSize = data.ReadInt32();
230 for (int i = 0; i < attrbutesSize; i++) {
231 uint8_t attrbute = data.ReadInt32();
232 attrbutes.push_back(attrbute);
233 }
234
235 std::vector<uint8_t> values {};
236 int32_t valuesSize = data.ReadInt32();
237 for (int i = 0; i < valuesSize; i++) {
238 uint8_t value = data.ReadInt32();
239 values.push_back(value);
240 }
241 int result = data.ReadInt32();
242
243 OnGetPlayerAppSettingCurrentValue(RawAddress(addr), attrbutes, values, result);
244 return NO_ERROR;
245 }
246
OnSetPlayerAppSettingCurrentValueInner(MessageParcel & data,MessageParcel & reply)247 ErrCode BluetoothAvrcpCtObserverStub::OnSetPlayerAppSettingCurrentValueInner(MessageParcel &data, MessageParcel &reply)
248 {
249 std::string addr = data.ReadString();
250 int result = data.ReadInt32();
251
252 OnSetPlayerAppSettingCurrentValue(RawAddress(addr), result);
253 return NO_ERROR;
254 }
255
OnGetPlayerAppSettingAttributeTextInner(MessageParcel & data,MessageParcel & reply)256 ErrCode BluetoothAvrcpCtObserverStub::OnGetPlayerAppSettingAttributeTextInner(MessageParcel &data, MessageParcel &reply)
257 {
258 std::string addr = data.ReadString();
259 std::vector<uint8_t> attrbutes {};
260 int32_t attrbutesSize = data.ReadInt32();
261 for (int i = 0; i < attrbutesSize; i++) {
262 uint8_t attrbute = data.ReadInt32();
263 attrbutes.push_back(attrbute);
264 }
265
266 std::vector<std::string> attributeNames {};
267 int32_t valuesSize = data.ReadInt32();
268 for (int i = 0; i < valuesSize; i++) {
269 std::string value = data.ReadString();
270 attributeNames.push_back(value);
271 }
272
273 int result = data.ReadInt32();
274
275 OnGetPlayerAppSettingAttributeText(RawAddress(addr), attrbutes, attributeNames, result);
276 return NO_ERROR;
277 }
278
OnGetPlayerAppSettingValueTextInner(MessageParcel & data,MessageParcel & reply)279 ErrCode BluetoothAvrcpCtObserverStub::OnGetPlayerAppSettingValueTextInner(MessageParcel &data, MessageParcel &reply)
280 {
281 std::string addr = data.ReadString();
282 std::vector<uint8_t> values {};
283 int32_t valuesSize = data.ReadInt32();
284 for (int i = 0; i < valuesSize; i++) {
285 uint8_t attrbute = data.ReadInt32();
286 values.push_back(attrbute);
287 }
288
289 std::vector<std::string> valueNames {};
290 int32_t valueNamesSize = data.ReadInt32();
291 for (int i = 0; i < valueNamesSize; i++) {
292 std::string value = data.ReadString();
293 valueNames.push_back(value);
294 }
295
296 int result = data.ReadInt32();
297
298 OnGetPlayerAppSettingValueText(RawAddress(addr), values, valueNames, result);
299 return NO_ERROR;
300 }
301
OnGetElementAttributesInner(MessageParcel & data,MessageParcel & reply)302 ErrCode BluetoothAvrcpCtObserverStub::OnGetElementAttributesInner(MessageParcel &data, MessageParcel &reply)
303 {
304 std::string addr = data.ReadString();
305 std::vector<uint32_t> attribtues {};
306 int32_t valuesSize = data.ReadInt32();
307 for (int i = 0; i < valuesSize; i++) {
308 uint32_t attrbute = data.ReadUint32();
309 attribtues.push_back(attrbute);
310 }
311
312 std::vector<std::string> valueNames {};
313 int32_t valueNamesSize = data.ReadInt32();
314 for (int i = 0; i < valueNamesSize; i++) {
315 std::string value = data.ReadString();
316 valueNames.push_back(value);
317 }
318
319 int result = data.ReadInt32();
320
321 OnGetElementAttributes(RawAddress(addr), attribtues, valueNames, result);
322 return NO_ERROR;
323 }
324
OnGetPlayStatusInner(MessageParcel & data,MessageParcel & reply)325 ErrCode BluetoothAvrcpCtObserverStub::OnGetPlayStatusInner(MessageParcel &data, MessageParcel &reply)
326 {
327 std::string addr = data.ReadString();
328 uint32_t songLength = data.ReadUint32();
329 uint32_t songPosition = data.ReadUint32();
330 uint8_t playStatus = data.ReadInt32();
331
332 int result = data.ReadInt32();
333
334 OnGetPlayStatus(RawAddress(addr), songLength, songPosition, playStatus, result);
335 return NO_ERROR;
336 }
337
OnPlayItemInner(MessageParcel & data,MessageParcel & reply)338 ErrCode BluetoothAvrcpCtObserverStub::OnPlayItemInner(MessageParcel &data, MessageParcel &reply)
339 {
340 std::string addr = data.ReadString();
341 int status = data.ReadInt32();
342 int result = data.ReadInt32();
343
344 OnPlayItem(RawAddress(addr), status, result);
345 return NO_ERROR;
346 }
347
OnGetTotalNumberOfItemsInner(MessageParcel & data,MessageParcel & reply)348 ErrCode BluetoothAvrcpCtObserverStub::OnGetTotalNumberOfItemsInner(MessageParcel &data, MessageParcel &reply)
349 {
350 std::string addr = data.ReadString();
351 uint16_t uidCounter = data.ReadInt32();
352 uint32_t numOfItems = data.ReadUint32();
353 int result = data.ReadInt32();
354 int detail = data.ReadInt32();
355
356 OnGetTotalNumberOfItems(RawAddress(addr), uidCounter, numOfItems, result, detail);
357 return NO_ERROR;
358 }
359
OnGetItemAttributesInner(MessageParcel & data,MessageParcel & reply)360 ErrCode BluetoothAvrcpCtObserverStub::OnGetItemAttributesInner(MessageParcel &data, MessageParcel &reply)
361 {
362 std::string addr = data.ReadString();
363 std::vector<uint32_t> attribtues {};
364 int32_t attribtuesSize = data.ReadInt32();
365 for (int i = 0; i < attribtuesSize; i++) {
366 uint32_t attrbute = data.ReadUint32();
367 attribtues.push_back(attrbute);
368 }
369
370 std::vector<std::string> valueNames {};
371 int32_t valuesSize = data.ReadInt32();
372 for (int i = 0; i < valuesSize; i++) {
373 std::string value = data.ReadString();
374 valueNames.push_back(value);
375 }
376
377 int result = data.ReadInt32();
378 int detail = data.ReadInt32();
379
380 OnGetItemAttributes(RawAddress(addr), attribtues, valueNames, result, detail);
381 return NO_ERROR;
382 }
383
OnSetAbsoluteVolumeInner(MessageParcel & data,MessageParcel & reply)384 ErrCode BluetoothAvrcpCtObserverStub::OnSetAbsoluteVolumeInner(MessageParcel &data, MessageParcel &reply)
385 {
386 std::string addr = data.ReadString();
387 uint8_t volume = data.ReadInt32();
388 int result = data.ReadInt32();
389
390 OnSetAbsoluteVolume(RawAddress(addr), volume, result);
391 return NO_ERROR;
392 }
393
OnPlaybackStatusChangedInner(MessageParcel & data,MessageParcel & reply)394 ErrCode BluetoothAvrcpCtObserverStub::OnPlaybackStatusChangedInner(MessageParcel &data, MessageParcel &reply)
395 {
396 std::string addr = data.ReadString();
397 uint8_t playStatus = data.ReadInt32();
398 int result = data.ReadInt32();
399
400 OnPlaybackStatusChanged(RawAddress(addr), playStatus, result);
401 return NO_ERROR;
402 }
403
OnTrackChangedInner(MessageParcel & data,MessageParcel & reply)404 ErrCode BluetoothAvrcpCtObserverStub::OnTrackChangedInner(MessageParcel &data, MessageParcel &reply)
405 {
406 std::string addr = data.ReadString();
407 uint64_t uid = data.ReadUint64();
408 int result = data.ReadInt32();
409
410 OnTrackChanged(RawAddress(addr), uid, result);
411 return NO_ERROR;
412 }
413
OnTrackReachedEndInner(MessageParcel & data,MessageParcel & reply)414 ErrCode BluetoothAvrcpCtObserverStub::OnTrackReachedEndInner(MessageParcel &data, MessageParcel &reply)
415 {
416 std::string addr = data.ReadString();
417 int result = data.ReadInt32();
418
419 OnTrackReachedEnd(RawAddress(addr), result);
420 return NO_ERROR;
421 }
422
OnTrackReachedStartInner(MessageParcel & data,MessageParcel & reply)423 ErrCode BluetoothAvrcpCtObserverStub::OnTrackReachedStartInner(MessageParcel &data, MessageParcel &reply)
424 {
425 std::string addr = data.ReadString();
426 int result = data.ReadInt32();
427
428 OnTrackReachedStart(RawAddress(addr), result);
429 return NO_ERROR;
430 }
431
OnPlaybackPosChangedInner(MessageParcel & data,MessageParcel & reply)432 ErrCode BluetoothAvrcpCtObserverStub::OnPlaybackPosChangedInner(MessageParcel &data, MessageParcel &reply)
433 {
434 std::string addr = data.ReadString();
435 uint32_t playbackPos = data.ReadUint32();
436 int result = data.ReadInt32();
437
438 OnPlaybackPosChanged(RawAddress(addr), playbackPos, result);
439 return NO_ERROR;
440 }
441
OnPlayerAppSettingChangedInner(MessageParcel & data,MessageParcel & reply)442 ErrCode BluetoothAvrcpCtObserverStub::OnPlayerAppSettingChangedInner(MessageParcel &data, MessageParcel &reply)
443 {
444 std::string addr = data.ReadString();
445 std::vector<uint8_t> attribtues {};
446 int32_t attribtuesSize = data.ReadInt32();
447 for (int i = 0; i < attribtuesSize; i++) {
448 int32_t attrbute = data.ReadInt32();
449 attribtues.push_back(attrbute);
450 }
451
452 std::vector<uint8_t> values {};
453 int32_t valuesSize = data.ReadInt32();
454 for (int i = 0; i < valuesSize; i++) {
455 int32_t attrbute = data.ReadInt32();
456 values.push_back(attrbute);
457 }
458
459 int result = data.ReadInt32();
460
461 OnPlayerAppSettingChanged(RawAddress(addr), attribtues, values, result);
462 return NO_ERROR;
463 }
464
OnNowPlayingContentChangedInner(MessageParcel & data,MessageParcel & reply)465 ErrCode BluetoothAvrcpCtObserverStub::OnNowPlayingContentChangedInner(MessageParcel &data, MessageParcel &reply)
466 {
467 std::string addr = data.ReadString();
468 int result = data.ReadInt32();
469
470 OnNowPlayingContentChanged(RawAddress(addr), result);
471 return NO_ERROR;
472 }
473
OnAvailablePlayersChangedInner(MessageParcel & data,MessageParcel & reply)474 ErrCode BluetoothAvrcpCtObserverStub::OnAvailablePlayersChangedInner(MessageParcel &data, MessageParcel &reply)
475 {
476 std::string addr = data.ReadString();
477 int result = data.ReadInt32();
478
479 OnAvailablePlayersChanged(RawAddress(addr), result);
480 return NO_ERROR;
481 }
482
OnAddressedPlayerChangedInner(MessageParcel & data,MessageParcel & reply)483 ErrCode BluetoothAvrcpCtObserverStub::OnAddressedPlayerChangedInner(MessageParcel &data, MessageParcel &reply)
484 {
485 std::string addr = data.ReadString();
486 uint16_t playerId = data.ReadInt32();
487 uint16_t uidCounter = data.ReadInt32();
488 int result = data.ReadInt32();
489 OnAddressedPlayerChanged(RawAddress(addr), playerId, uidCounter, result);
490 return NO_ERROR;
491 }
492
OnUidChangedInner(MessageParcel & data,MessageParcel & reply)493 ErrCode BluetoothAvrcpCtObserverStub::OnUidChangedInner(MessageParcel &data, MessageParcel &reply)
494 {
495 std::string addr = data.ReadString();
496 uint16_t uidCounter = data.ReadInt32();
497 int result = data.ReadInt32();
498 OnUidChanged(RawAddress(addr), uidCounter, result);
499 return NO_ERROR;
500 }
501
OnVolumeChangedInner(MessageParcel & data,MessageParcel & reply)502 ErrCode BluetoothAvrcpCtObserverStub::OnVolumeChangedInner(MessageParcel &data, MessageParcel &reply)
503 {
504 std::string addr = data.ReadString();
505 uint8_t volume = data.ReadInt32();
506 int result = data.ReadInt32();
507 OnVolumeChanged(RawAddress(addr), volume, result);
508 return NO_ERROR;
509 }
510
OnGetMediaPlayersInner(MessageParcel & data,MessageParcel & reply)511 ErrCode BluetoothAvrcpCtObserverStub::OnGetMediaPlayersInner(MessageParcel &data, MessageParcel &reply)
512 {
513 std::string addr = data.ReadString();
514 uint16_t uidCounter = data.ReadInt32();
515
516 std::vector<BluetoothAvrcpMpItem> items {};
517 int32_t itemsSize = data.ReadInt32();
518 for (int i = 0; i < itemsSize; i++) {
519 std::shared_ptr<BluetoothAvrcpMpItem> item(data.ReadParcelable<BluetoothAvrcpMpItem>());
520 if (!item) {
521 return TRANSACTION_ERR;
522 }
523 items.push_back(*item);
524 }
525 int result = data.ReadInt32();
526 int detail = data.ReadInt32();
527 OnGetMediaPlayers(RawAddress(addr), uidCounter, items, result, detail);
528 return NO_ERROR;
529 }
530
OnGetFolderItemsInner(MessageParcel & data,MessageParcel & reply)531 ErrCode BluetoothAvrcpCtObserverStub::OnGetFolderItemsInner(MessageParcel &data, MessageParcel &reply)
532 {
533 std::string addr = data.ReadString();
534 uint8_t uidCounter = data.ReadInt32();
535
536 std::vector<BluetoothAvrcpMeItem> items {};
537 int32_t itemsSize = data.ReadInt32();
538 for (int i = 0; i < itemsSize; i++) {
539 std::shared_ptr<BluetoothAvrcpMeItem> item(data.ReadParcelable<BluetoothAvrcpMeItem>());
540 if (!item) {
541 return TRANSACTION_ERR;
542 }
543 items.push_back(*item);
544 }
545 int result = data.ReadInt32();
546 int detail = data.ReadInt32();
547 OnGetFolderItems(RawAddress(addr), uidCounter, items, result, detail);
548 return NO_ERROR;
549 }
550 } // namespace Bluetooth
551 } // namespace OHOS
552