123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- /*
- * Copyright 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- #pragma once
- #include "avrcp_browse_packet.h"
- namespace bluetooth {
- namespace avrcp {
- class GetFolderItemsResponseBuilder : public BrowsePacketBuilder {
- public:
- virtual ~GetFolderItemsResponseBuilder() = default;
- static std::unique_ptr<GetFolderItemsResponseBuilder> MakePlayerListBuilder(
- Status status, uint16_t uid_counter, size_t mtu);
- static std::unique_ptr<GetFolderItemsResponseBuilder> MakeVFSBuilder(
- Status status, uint16_t uid_counter, size_t mtu);
- static std::unique_ptr<GetFolderItemsResponseBuilder> MakeNowPlayingBuilder(
- Status status, uint16_t uid_counter, size_t mtu);
- virtual size_t size() const override;
- virtual bool Serialize(
- const std::shared_ptr<::bluetooth::Packet>& pkt) override;
- // Returns false if adding an item would exceed the MTU
- bool AddMediaPlayer(MediaPlayerItem item);
- bool AddSong(MediaElementItem item);
- bool AddFolder(FolderItem item);
- protected:
- Scope scope_;
- std::vector<MediaListItem> items_;
- Status status_;
- uint16_t uid_counter_;
- size_t mtu_;
- GetFolderItemsResponseBuilder(Scope scope, Status status,
- uint16_t uid_counter, size_t mtu)
- : BrowsePacketBuilder(BrowsePdu::GET_FOLDER_ITEMS),
- scope_(scope),
- status_(status),
- uid_counter_(uid_counter),
- mtu_(mtu){};
- private:
- void PushMediaListItem(const std::shared_ptr<::bluetooth::Packet>& pkt,
- const MediaListItem& item);
- void PushMediaPlayerItem(const std::shared_ptr<::bluetooth::Packet>& pkt,
- const MediaPlayerItem& item);
- void PushMediaElementItem(const std::shared_ptr<::bluetooth::Packet>& pkt,
- const MediaElementItem& item);
- void PushFolderItem(const std::shared_ptr<::bluetooth::Packet>& pkt,
- const FolderItem& item);
- };
- class GetFolderItemsRequest : public BrowsePacket {
- public:
- virtual ~GetFolderItemsRequest() = default;
- /**
- * Avrcp Change Path Packet Layout
- * BrowsePacket:
- * uint8_t pdu_;
- * uint16_t length_;
- * GetFolderItemsRequest:
- * uint8_t scope_;
- * uint32_t start_item_;
- * uint32_t end_item_;
- * uint8_t attr_count_;
- * uint32_t[] attr_requested_;
- */
- static constexpr size_t kMinSize() { return BrowsePacket::kMinSize() + 10; }
- Scope GetScope() const;
- uint32_t GetStartItem() const;
- uint32_t GetEndItem() const;
- uint8_t GetNumAttributes() const;
- std::vector<Attribute> GetAttributesRequested() const;
- virtual bool IsValid() const override;
- virtual std::string ToString() const override;
- protected:
- using BrowsePacket::BrowsePacket;
- };
- class GetFolderItemsRequestBuilder : public BrowsePacketBuilder {
- public:
- virtual ~GetFolderItemsRequestBuilder() = default;
- static std::unique_ptr<GetFolderItemsRequestBuilder> MakeBuilder(
- Scope scope, uint32_t start_item, uint32_t end_item,
- const std::set<Attribute>& requested_attrs);
- virtual size_t size() const override;
- virtual bool Serialize(
- const std::shared_ptr<::bluetooth::Packet>& pkt) override;
- protected:
- GetFolderItemsRequestBuilder(Scope scope, uint32_t start_item,
- uint32_t end_item,
- const std::set<Attribute>& requested_attrs)
- : BrowsePacketBuilder(BrowsePdu::GET_FOLDER_ITEMS),
- scope_(scope),
- start_item_(start_item),
- end_item_(end_item),
- requested_attrs_(requested_attrs){};
- Scope scope_;
- uint32_t start_item_;
- uint32_t end_item_;
- std::set<Attribute> requested_attrs_;
- };
- } // namespace avrcp
- } // namespace bluetooth
|