// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "status.h"

#include "util.h"

namespace bt {

// static
std::string ProtocolErrorTraits<hci::StatusCode>::ToString(
    hci::StatusCode ecode) {
  return fxl::StringPrintf("%s (HCI %#.2x)", StatusCodeToString(ecode).c_str(),
                           static_cast<unsigned int>(ecode));
}

namespace hci {

using Base = bt::Status<StatusCode>;

Status::Status(HostError ecode) : Base(ecode) {}

// HCI has a "success" status code which we specially handle while constructing
// a success Status.
Status::Status(hci::StatusCode proto_code)
    : Base(proto_code == StatusCode::kSuccess ? Base() : Base(proto_code)) {}

}  // namespace hci
}  // namespace bt
