18f7377353db29efe0a506123deec03d70935957aAjay Panicker/* 28f7377353db29efe0a506123deec03d70935957aAjay Panicker * Copyright 2018 The Android Open Source Project 38f7377353db29efe0a506123deec03d70935957aAjay Panicker * 48f7377353db29efe0a506123deec03d70935957aAjay Panicker * Licensed under the Apache License, Version 2.0 (the "License"); 58f7377353db29efe0a506123deec03d70935957aAjay Panicker * you may not use this file except in compliance with the License. 68f7377353db29efe0a506123deec03d70935957aAjay Panicker * You may obtain a copy of the License at 78f7377353db29efe0a506123deec03d70935957aAjay Panicker * 88f7377353db29efe0a506123deec03d70935957aAjay Panicker * http://www.apache.org/licenses/LICENSE-2.0 98f7377353db29efe0a506123deec03d70935957aAjay Panicker * 108f7377353db29efe0a506123deec03d70935957aAjay Panicker * Unless required by applicable law or agreed to in writing, software 118f7377353db29efe0a506123deec03d70935957aAjay Panicker * distributed under the License is distributed on an "AS IS" BASIS, 128f7377353db29efe0a506123deec03d70935957aAjay Panicker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138f7377353db29efe0a506123deec03d70935957aAjay Panicker * See the License for the specific language governing permissions and 148f7377353db29efe0a506123deec03d70935957aAjay Panicker * limitations under the License. 158f7377353db29efe0a506123deec03d70935957aAjay Panicker */ 168f7377353db29efe0a506123deec03d70935957aAjay Panicker 178f7377353db29efe0a506123deec03d70935957aAjay Panicker#pragma once 188f7377353db29efe0a506123deec03d70935957aAjay Panicker 198f7377353db29efe0a506123deec03d70935957aAjay Panicker#include "avrcp_browse_packet.h" 208f7377353db29efe0a506123deec03d70935957aAjay Panicker 218f7377353db29efe0a506123deec03d70935957aAjay Panickernamespace bluetooth { 228f7377353db29efe0a506123deec03d70935957aAjay Panickernamespace avrcp { 238f7377353db29efe0a506123deec03d70935957aAjay Panicker 248f7377353db29efe0a506123deec03d70935957aAjay Panickerclass GetTotalNumberOfItemsResponseBuilder : public BrowsePacketBuilder { 258f7377353db29efe0a506123deec03d70935957aAjay Panicker public: 268f7377353db29efe0a506123deec03d70935957aAjay Panicker virtual ~GetTotalNumberOfItemsResponseBuilder() = default; 278f7377353db29efe0a506123deec03d70935957aAjay Panicker 288f7377353db29efe0a506123deec03d70935957aAjay Panicker static std::unique_ptr<GetTotalNumberOfItemsResponseBuilder> MakeBuilder( 298f7377353db29efe0a506123deec03d70935957aAjay Panicker Status status, uint16_t uid_counter, uint32_t num_items_in_folder); 308f7377353db29efe0a506123deec03d70935957aAjay Panicker 318f7377353db29efe0a506123deec03d70935957aAjay Panicker virtual size_t size() const override; 328f7377353db29efe0a506123deec03d70935957aAjay Panicker virtual bool Serialize( 338f7377353db29efe0a506123deec03d70935957aAjay Panicker const std::shared_ptr<::bluetooth::Packet>& pkt) override; 348f7377353db29efe0a506123deec03d70935957aAjay Panicker 358f7377353db29efe0a506123deec03d70935957aAjay Panicker protected: 368f7377353db29efe0a506123deec03d70935957aAjay Panicker Status status_; 378f7377353db29efe0a506123deec03d70935957aAjay Panicker uint16_t uid_counter_; 388f7377353db29efe0a506123deec03d70935957aAjay Panicker uint32_t num_items_in_folder_; 398f7377353db29efe0a506123deec03d70935957aAjay Panicker 408f7377353db29efe0a506123deec03d70935957aAjay Panicker GetTotalNumberOfItemsResponseBuilder(Status status, uint16_t uid_counter, 418f7377353db29efe0a506123deec03d70935957aAjay Panicker uint32_t num_items_in_folder) 428f7377353db29efe0a506123deec03d70935957aAjay Panicker : BrowsePacketBuilder(BrowsePdu::GET_TOTAL_NUMBER_OF_ITEMS), 438f7377353db29efe0a506123deec03d70935957aAjay Panicker status_(status), 448f7377353db29efe0a506123deec03d70935957aAjay Panicker uid_counter_(uid_counter), 458f7377353db29efe0a506123deec03d70935957aAjay Panicker num_items_in_folder_(num_items_in_folder){}; 468f7377353db29efe0a506123deec03d70935957aAjay Panicker}; 478f7377353db29efe0a506123deec03d70935957aAjay Panicker 488f7377353db29efe0a506123deec03d70935957aAjay Panickerclass GetTotalNumberOfItemsRequest : public BrowsePacket { 498f7377353db29efe0a506123deec03d70935957aAjay Panicker public: 508f7377353db29efe0a506123deec03d70935957aAjay Panicker virtual ~GetTotalNumberOfItemsRequest() = default; 518f7377353db29efe0a506123deec03d70935957aAjay Panicker 528f7377353db29efe0a506123deec03d70935957aAjay Panicker /** 538f7377353db29efe0a506123deec03d70935957aAjay Panicker * AVRCP Get Total Number Of Items Packet Layout 548f7377353db29efe0a506123deec03d70935957aAjay Panicker * BrowsePacket: 558f7377353db29efe0a506123deec03d70935957aAjay Panicker * uint8_t pdu_; 568f7377353db29efe0a506123deec03d70935957aAjay Panicker * uint16_t length_; 578f7377353db29efe0a506123deec03d70935957aAjay Panicker * GetTotalNumberOfItemsRequest: 588f7377353db29efe0a506123deec03d70935957aAjay Panicker * uint8_t scope_; 598f7377353db29efe0a506123deec03d70935957aAjay Panicker */ 608f7377353db29efe0a506123deec03d70935957aAjay Panicker static constexpr size_t kMinSize() { return BrowsePacket::kMinSize() + 1; } 618f7377353db29efe0a506123deec03d70935957aAjay Panicker 628f7377353db29efe0a506123deec03d70935957aAjay Panicker Scope GetScope() const; 638f7377353db29efe0a506123deec03d70935957aAjay Panicker 648f7377353db29efe0a506123deec03d70935957aAjay Panicker virtual bool IsValid() const override; 658f7377353db29efe0a506123deec03d70935957aAjay Panicker virtual std::string ToString() const override; 668f7377353db29efe0a506123deec03d70935957aAjay Panicker 678f7377353db29efe0a506123deec03d70935957aAjay Panicker protected: 688f7377353db29efe0a506123deec03d70935957aAjay Panicker using BrowsePacket::BrowsePacket; 698f7377353db29efe0a506123deec03d70935957aAjay Panicker}; 708f7377353db29efe0a506123deec03d70935957aAjay Panicker 718f7377353db29efe0a506123deec03d70935957aAjay Panicker} // namespace avrcp 728f7377353db29efe0a506123deec03d70935957aAjay Panicker} // namespace bluetooth