// 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]
pub static SERVICE_UUIDS: std::sync::LazyLock<HashMap<Uuid, AssignedUuid>> = std::sync::LazyLock::new(|| {
    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"),
    )
});
