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

use std::collections::HashMap;

use super::{AssignedUuid, Uuid};

#[rustfmt::skip]
// Generated with a magic regexp: %s/ - uuid: \(......\)\n   name: \(.\+\)\n   id: \(.\+\)\n/(\1, "\2", "\3"),\r/g

#[rustfmt::skip]
lazy_static! {
    pub static ref SERVICE_UUIDS: HashMap<Uuid, AssignedUuid> = assigned_uuid_map!(
(0x1800, "Generic Access", "org.bluetooth.service.generic_access"),
(0x1801, "Generic Attribute", "org.bluetooth.service.generic_attribute"),
(0x1802, "Immediate Alert", "org.bluetooth.service.immediate_alert"),
(0x1803, "Link Loss", "org.bluetooth.service.link_loss"),
(0x1804, "Tx Power", "org.bluetooth.service.tx_power"),
(0x1805, "Current Time", "org.bluetooth.service.current_time"),
(0x1806, "Reference Time Update", "org.bluetooth.service.reference_time_update"),
(0x1807, "Next DST Change", "org.bluetooth.service.next_dst_change"),
(0x1808, "Glucose", "org.bluetooth.service.glucose"),
(0x1809, "Health Thermometer", "org.bluetooth.service.health_thermometer"),
(0x180A, "Device Information", "org.bluetooth.service.device_information"),
(0x180D, "Heart Rate", "org.bluetooth.service.heart_rate"),
(0x180E, "Phone Alert Status", "org.bluetooth.service.phone_alert_status"),
(0x180F, "Battery", "org.bluetooth.service.battery_service"),
(0x1810, "Blood Pressure", "org.bluetooth.service.blood_pressure"),
(0x1811, "Alert Notification", "org.bluetooth.service.alert_notification"),
(0x1812, "Human Interface Device", "org.bluetooth.service.human_interface_device"),
(0x1813, "Scan Parameters", "org.bluetooth.service.scan_parameters"),
(0x1814, "Running Speed and Cadence", "org.bluetooth.service.running_speed_and_cadence"),
(0x1815, "Automation IO", "org.bluetooth.service.automation_io"),
(0x1816, "Cycling Speed and Cadence", "org.bluetooth.service.cycling_speed_and_cadence"),
(0x1818, "Cycling Power", "org.bluetooth.service.cycling_power"),
(0x1819, "Location and Navigation", "org.bluetooth.service.location_and_navigation"),
(0x181A, "Environmental Sensing", "org.bluetooth.service.environmental_sensing"),
(0x181B, "Body Composition", "org.bluetooth.service.body_composition"),
(0x181C, "User Data", "org.bluetooth.service.user_data"),
(0x181D, "Weight Scale", "org.bluetooth.service.weight_scale"),
(0x181E, "Bond Management", "org.bluetooth.service.bond_management"),
(0x181F, "Continuous Glucose Monitoring", "org.bluetooth.service.continuous_glucose_monitoring"),
(0x1820, "Internet Protocol Support", "org.bluetooth.service.internet_protocol_support"),
(0x1821, "Indoor Positioning", "org.bluetooth.service.indoor_positioning"),
(0x1822, "Pulse Oximeter", "org.bluetooth.service.pulse_oximeter"),
(0x1823, "HTTP Proxy", "org.bluetooth.service.http_proxy"),
(0x1824, "Transport Discovery", "org.bluetooth.service.transport_discovery"),
(0x1825, "Object Transfer", "org.bluetooth.service.object_transfer"),
(0x1826, "Fitness Machine", "org.bluetooth.service.fitness_machine"),
(0x1827, "Mesh Provisioning", "org.bluetooth.service.mesh_provisioning"),
(0x1828, "Mesh Proxy", "org.bluetooth.service.mesh_proxy"),
(0x1829, "Reconnection Configuration", "org.bluetooth.service.reconnection_configuration"),
(0x183A, "Insulin Delivery", "org.bluetooth.service.insulin_delivery"),
(0x183B, "Binary Sensor", "org.bluetooth.service.binary_sensor"),
(0x183C, "Emergency Configuration", "org.bluetooth.service.emergency_configuration"),
(0x183D, "Authorization Control", "org.bluetooth.service.authorization_control"),
(0x183E, "Physical Activity Monitor", "org.bluetooth.service.physical_activity_monitor"),
(0x183F, "Elapsed Time", "org.bluetooth.service.elapsed_time"),
(0x1840, "Generic Health Sensor", "org.bluetooth.service.generic_health_sensor"),
(0x1843, "Audio Input Control", "org.bluetooth.service.audio_input_control"),
(0x1844, "Volume Control", "org.bluetooth.service.volume_control"),
(0x1845, "Volume Offset Control", "org.bluetooth.service.volume_offset"),
(0x1846, "Coordinated Set Identification", "org.bluetooth.service.coordinated_set_identification"),
(0x1847, "Device Time", "org.bluetooth.service.device_time"),
(0x1848, "Media Control", "org.bluetooth.service.media_control"),
(0x1849, "Generic Media Control", "org.bluetooth.service.generic_media_control"),
(0x184A, "Constant Tone Extension", "org.bluetooth.service.constant_tone_extension"),
(0x184B, "Telephone Bearer", "org.bluetooth.service.telephone_bearer"),
(0x184C, "Generic Telephone Bearer", "org.bluetooth.service.generic_telephone_bearer"),
(0x184D, "Microphone Control", "org.bluetooth.service.microphone_control"),
(0x184E, "Audio Stream Control", "org.bluetooth.service.audio_stream_control"),
(0x184F, "Broadcast Audio Scan", "org.bluetooth.service.broadcast_audio_scan"),
(0x1850, "Published Audio Capabilities", "org.bluetooth.service.published_audio_capabilities"),
(0x1851, "Basic Audio Announcement", "org.bluetooth.service.basic_audio_announcement"),
(0x1852, "Broadcast Audio Announcement", "org.bluetooth.service.broadcast_audio_announcement"),
(0x1853, "Common Audio", "org.bluetooth.service.common_audio"),
(0x1854, "Hearing Access", "org.bluetooth.service.hearing_access"),
(0x1855, "Telephony and Media Audio", "org.bluetooth.service.telephony_and_media_audio"),
(0x1856, "Public Broadcast Announcement", "org.bluetooth.service.public_broadcast_announcement"),
(0x1857, "Electronic Shelf Label", "org.bluetooth.service.electronic_shelf_label"),
(0x1858, "Gaming Audio", "org.bluetooth.service.gaming_audio"),
(0x1859, "Mesh Proxy Solicitation", "org.bluetooth.service.mesh_proxy_solicitation"),
    );
}
