// Copyright 2019 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.

library fuchsia.bluetooth;

/// The "Class of Device/Service" is a variable-format field that defines the category of a
/// Bluetooth device. The bitfield is divided into segments called "major service class",
/// "major device class", and "minor device class".
///
/// No assumptions about the specific functionality or characteristics of any application should be
/// based solely on its inclusion within a Major or Minor device class. For more information, see
/// https://www.bluetooth.com/specifications/assigned-numbers/baseband.
struct DeviceClass {
    uint32 value;
};

/// Constants for the major device class field. The major device class is defined by bits 12-8.
const uint32 MAJOR_DEVICE_CLASS_MASK = 0x1f00;

const uint32 MAJOR_DEVICE_CLASS_MISCELLANEOUS = 0x0000;
const uint32 MAJOR_DEVICE_CLASS_COMPUTER = 0x0100;
const uint32 MAJOR_DEVICE_CLASS_PHONE = 0x0200;
const uint32 MAJOR_DEVICE_CLASS_LAN = 0x0300;
const uint32 MAJOR_DEVICE_CLASS_AUDIO_VIDEO = 0x0400;
const uint32 MAJOR_DEVICE_CLASS_PERIPHERAL = 0x0500;
const uint32 MAJOR_DEVICE_CLASS_IMAGING = 0x0600;
const uint32 MAJOR_DEVICE_CLASS_WEARABLE = 0x0700;
const uint32 MAJOR_DEVICE_CLASS_TOY = 0x0800;
const uint32 MAJOR_DEVICE_CLASS_HEALTH = 0x0900;
const uint32 MAJOR_DEVICE_CLASS_UNCATEGORIZED = 0x1f00;
