// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef DEVICE_BLUETOOTH_PUBLIC_CPP_BLUETOOTH_ADDRESS_H_
#define DEVICE_BLUETOOTH_PUBLIC_CPP_BLUETOOTH_ADDRESS_H_
#include <stddef.h>
#include <stdint.h>
#include <string>
#include <string_view>
#include "base/containers/span.h"
namespace device {
// Parses a Bluetooth address to an output buffer. The output buffer must be
// exactly 6 bytes in size. The address can be formatted in one of three ways:
//
// 1A:2B:3C:4D:5E:6F
// 1A-2B-3C-4D-5E-6F
// 1A2B3C4D5E6F
bool ParseBluetoothAddress(std::string_view input, base::span<uint8_t> output);
// Returns |address| in the canonical format: XX:XX:XX:XX:XX:XX, where each 'X'
// is a hex digit. If the input |address| is invalid, returns an empty string.
std::string CanonicalizeBluetoothAddress(std::string_view address);
std::string CanonicalizeBluetoothAddress(
base::span<const uint8_t, 6> address_bytes);
} // namespace device
#endif // DEVICE_BLUETOOTH_PUBLIC_CPP_BLUETOOTH_ADDRESS_H_