Home | History | Annotate | Download | only in avrcp
      1 /*
      2  * Copyright 2018 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #pragma once
     18 
     19 #include "avrcp_browse_packet.h"
     20 
     21 namespace bluetooth {
     22 namespace avrcp {
     23 
     24 class SetBrowsedPlayerResponseBuilder : public BrowsePacketBuilder {
     25  public:
     26   virtual ~SetBrowsedPlayerResponseBuilder() = default;
     27 
     28   static std::unique_ptr<SetBrowsedPlayerResponseBuilder> MakeBuilder(
     29       Status status, uint16_t uid_counter, uint32_t num_items_in_folder,
     30       uint8_t folder_depth, std::string folder_name);
     31 
     32   virtual size_t size() const override;
     33   virtual bool Serialize(
     34       const std::shared_ptr<::bluetooth::Packet>& pkt) override;
     35 
     36  protected:
     37   Status status_;
     38   uint16_t uid_counter_;
     39   uint32_t num_items_in_folder_;
     40   uint8_t folder_depth_;
     41   std::string folder_name_;
     42 
     43   SetBrowsedPlayerResponseBuilder(Status status, uint16_t uid_counter,
     44                                   uint32_t num_items_in_folder,
     45                                   uint8_t folder_depth, std::string folder_name)
     46       : BrowsePacketBuilder(BrowsePdu::SET_BROWSED_PLAYER),
     47         status_(status),
     48         uid_counter_(uid_counter),
     49         num_items_in_folder_(num_items_in_folder),
     50         folder_depth_(folder_depth),
     51         folder_name_(folder_name) {}
     52 };
     53 
     54 class SetBrowsedPlayerRequest : public BrowsePacket {
     55  public:
     56   virtual ~SetBrowsedPlayerRequest() = default;
     57 
     58   /**
     59    * Avrcp Change Path Packet Layout
     60    *   BrowsePacket:
     61    *     uint8_t pdu_;
     62    *     uint16_t length_;
     63    *   GetFolderItemsRequest:
     64    *     uint16_t player_id_;
     65    */
     66   static constexpr size_t kMinSize() { return BrowsePacket::kMinSize() + 2; }
     67 
     68   uint16_t GetPlayerId() const;
     69 
     70   virtual bool IsValid() const override;
     71   virtual std::string ToString() const override;
     72 
     73  protected:
     74   using BrowsePacket::BrowsePacket;
     75 };
     76 
     77 }  // namespace avrcp
     78 }  // namespace bluetooth