// 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;

/// Possible values for the LE Appearance property which describes the external
/// appearance of a peer at a high level.
/// (See the Bluetooth assigned-numbers document:
/// https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.gap.appearance.xml)
/// This enum is flexible as newer devices may use new appearance values and in the future the
/// assigned numbers document may have additional entries.
type Appearance = flexible enum : uint16 {
    UNKNOWN = 0;
    PHONE = 64;
    COMPUTER = 128;
    WATCH = 192;
    WATCH_SPORTS = 193;
    CLOCK = 256;
    DISPLAY = 320;
    REMOTE_CONTROL = 384;
    EYE_GLASSES = 448;
    TAG = 512;
    KEYRING = 576;
    MEDIA_PLAYER = 640;
    BARCODE_SCANNER = 704;
    THERMOMETER = 768;
    THERMOMETER_EAR = 769;
    HEART_RATE_SENSOR = 832;
    HEART_RATE_SENSOR_BELT = 833;
    BLOOD_PRESSURE = 896;
    BLOOD_PRESSURE_ARM = 897;
    BLOOD_PRESSURE_WRIST = 898;
    HID = 960;
    HID_KEYBOARD = 961;
    HID_MOUSE = 962;
    HID_JOYSTICK = 963;
    HID_GAMEPAD = 964;
    HID_DIGITIZER_TABLET = 965;
    HID_CARD_READER = 966;
    HID_DIGITAL_PEN = 967;
    HID_BARCODE_SCANNER = 968;
    GLUCOSE_METER = 1024;
    RUNNING_WALKING_SENSOR = 1088;
    RUNNING_WALKING_SENSOR_IN_SHOE = 1089;
    RUNNING_WALKING_SENSOR_ON_SHOE = 1090;
    RUNNING_WALKING_SENSOR_ON_HIP = 1091;
    CYCLING = 1152;
    CYCLING_COMPUTER = 1153;
    CYCLING_SPEED_SENSOR = 1154;
    CYCLING_CADENCE_SENSOR = 1155;
    CYCLING_POWER_SENSOR = 1156;
    CYCLING_SPEED_AND_CADENCE_SENSOR = 1157;
    PULSE_OXIMETER = 3136;
    PULSE_OXIMETER_FINGERTIP = 3137;
    PULSE_OXIMETER_WRIST = 3138;
    WEIGHT_SCALE = 3200;
    PERSONAL_MOBILITY = 3264;
    PERSONAL_MOBILITY_WHEELCHAIR = 3265;
    PERSONAL_MOBILITY_SCOOTER = 3266;
    GLUCOSE_MONITOR = 3328;
    SPORTS_ACTIVITY = 5184;
    SPORTS_ACTIVITY_LOCATION_DISPLAY = 5185;
    SPORTS_ACTIVITY_LOCATION_AND_NAV_DISPLAY = 5186;
    SPORTS_ACTIVITY_LOCATION_POD = 5187;
    SPORTS_ACTIVITY_LOCATION_AND_NAV_POD = 5188;
};
