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 GetTotalNumberOfItemsResponseBuilder : public BrowsePacketBuilder {
     25  public:
     26   virtual ~GetTotalNumberOfItemsResponseBuilder() = default;
     27 
     28   static std::unique_ptr<GetTotalNumberOfItemsResponseBuilder> MakeBuilder(
     29       Status status, uint16_t uid_counter, uint32_t num_items_in_folder);
     30 
     31   virtual size_t size() const override;
     32   virtual bool Serialize(
     33       const std::shared_ptr<::bluetooth::Packet>& pkt) override;
     34 
     35  protected:
     36   Status status_;
     37   uint16_t uid_counter_;
     38   uint32_t num_items_in_folder_;
     39 
     40   GetTotalNumberOfItemsResponseBuilder(Status status, uint16_t uid_counter,
     41                                        uint32_t num_items_in_folder)
     42       : BrowsePacketBuilder(BrowsePdu::GET_TOTAL_NUMBER_OF_ITEMS),
     43         status_(status),
     44         uid_counter_(uid_counter),
     45         num_items_in_folder_(num_items_in_folder){};
     46 };
     47 
     48 class GetTotalNumberOfItemsRequest : public BrowsePacket {
     49  public:
     50   virtual ~GetTotalNumberOfItemsRequest() = default;
     51 
     52   /**
     53    * AVRCP Get Total Number Of Items Packet Layout
     54    *   BrowsePacket:
     55    *     uint8_t pdu_;
     56    *     uint16_t length_;
     57    *   GetTotalNumberOfItemsRequest:
     58    *     uint8_t scope_;
     59    */
     60   static constexpr size_t kMinSize() { return BrowsePacket::kMinSize() + 1; }
     61 
     62   Scope GetScope() const;
     63 
     64   virtual bool IsValid() const override;
     65   virtual std::string ToString() const override;
     66 
     67  protected:
     68   using BrowsePacket::BrowsePacket;
     69 };
     70 
     71 }  // namespace avrcp
     72 }  // namespace bluetooth