• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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