13fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang/*
23fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang * Copyright 2018 The Android Open Source Project
33fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang *
43fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang * Licensed under the Apache License, Version 2.0 (the "License");
53fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang * you may not use this file except in compliance with the License.
63fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang * You may obtain a copy of the License at
73fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang *
83fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang *      http://www.apache.org/licenses/LICENSE-2.0
93fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang *
103fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang * Unless required by applicable law or agreed to in writing, software
113fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang * distributed under the License is distributed on an "AS IS" BASIS,
123fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang * See the License for the specific language governing permissions and
143fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang * limitations under the License.
153fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang */
163fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang
173fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang#include "general_reject_packet.h"
183fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang
193fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwangnamespace bluetooth {
203fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwangnamespace avrcp {
213fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang
223fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwangstd::unique_ptr<GeneralRejectBuilder> GeneralRejectBuilder::MakeBuilder(
233fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang    BrowsePdu pdu, Status reason) {
243fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang  std::unique_ptr<GeneralRejectBuilder> builder =
253fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang      std::unique_ptr<GeneralRejectBuilder>(
263fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang          new GeneralRejectBuilder(pdu, reason));
273fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang
283fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang  return builder;
293fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang}
303fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang
313fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwangsize_t GeneralRejectBuilder::size() const {
323fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang  return BrowsePacket::kMinSize() + 1;
333fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang}
343fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang
353fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwangbool GeneralRejectBuilder::Serialize(
363fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang    const std::shared_ptr<::bluetooth::Packet>& pkt) {
373fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang  ReserveSpace(pkt, size());
383fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang
393fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang  BrowsePacketBuilder::PushHeader(pkt, size() - BrowsePacket::kMinSize());
403fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang
413fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang  AddPayloadOctets1(pkt, static_cast<uint8_t>(reason_));
423fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang
433fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang  return true;
443fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang}
453fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang
463fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang}  // namespace avrcp
473fbf8b4fff8b52b781fa611e0b62c97bca28d76ftedwang}  // namespace bluetooth
48