hap-controller
Version:
Library to implement a HAP (HomeKit) controller
293 lines • 24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ensureCharacteristicUuid = ensureCharacteristicUuid;
exports.characteristicFromUuid = characteristicFromUuid;
exports.uuidFromCharacteristic = uuidFromCharacteristic;
const UuidSuffix = '-0000-1000-8000-0026BB765291';
/* eslint-disable max-len */
const CharacteristicMapByUuid = {
[`00000001${UuidSuffix}`]: 'public.hap.characteristic.administrator-only-access',
[`00000005${UuidSuffix}`]: 'public.hap.characteristic.audio-feedback',
[`00000008${UuidSuffix}`]: 'public.hap.characteristic.brightness',
[`0000000D${UuidSuffix}`]: 'public.hap.characteristic.temperature.cooling-threshold',
[`0000000E${UuidSuffix}`]: 'public.hap.characteristic.door-state.current',
[`0000000F${UuidSuffix}`]: 'public.hap.characteristic.heating-cooling.current',
[`00000010${UuidSuffix}`]: 'public.hap.characteristic.relative-humidity.current',
[`00000011${UuidSuffix}`]: 'public.hap.characteristic.temperature.current',
[`00000012${UuidSuffix}`]: 'public.hap.characteristic.temperature.heating-threshold',
[`00000013${UuidSuffix}`]: 'public.hap.characteristic.hue',
[`00000014${UuidSuffix}`]: 'public.hap.characteristic.identify',
[`00000019${UuidSuffix}`]: 'public.hap.characteristic.lock-management.control-point',
[`0000001A${UuidSuffix}`]: 'public.hap.characteristic.lock-management.auto-secure-timeout',
[`0000001C${UuidSuffix}`]: 'public.hap.characteristic.lock-mechanism.last-known-action',
[`0000001D${UuidSuffix}`]: 'public.hap.characteristic.lock-mechanism.current-state',
[`0000001E${UuidSuffix}`]: 'public.hap.characteristic.lock-mechanism.target-state',
[`0000001F${UuidSuffix}`]: 'public.hap.characteristic.logs',
[`00000020${UuidSuffix}`]: 'public.hap.characteristic.manufacturer',
[`00000021${UuidSuffix}`]: 'public.hap.characteristic.model',
[`00000022${UuidSuffix}`]: 'public.hap.characteristic.motion-detected',
[`00000023${UuidSuffix}`]: 'public.hap.characteristic.name',
[`00000024${UuidSuffix}`]: 'public.hap.characteristic.obstruction-detected',
[`00000025${UuidSuffix}`]: 'public.hap.characteristic.on',
[`00000026${UuidSuffix}`]: 'public.hap.characteristic.outlet-in-use',
[`00000028${UuidSuffix}`]: 'public.hap.characteristic.rotation.direction',
[`00000029${UuidSuffix}`]: 'public.hap.characteristic.rotation.speed',
[`0000002F${UuidSuffix}`]: 'public.hap.characteristic.saturation',
[`00000030${UuidSuffix}`]: 'public.hap.characteristic.serial-number',
[`00000032${UuidSuffix}`]: 'public.hap.characteristic.door-state.target',
[`00000033${UuidSuffix}`]: 'public.hap.characteristic.heating-cooling.target',
[`00000034${UuidSuffix}`]: 'public.hap.characteristic.relative-humidity.target',
[`00000035${UuidSuffix}`]: 'public.hap.characteristic.temperature.target',
[`00000036${UuidSuffix}`]: 'public.hap.characteristic.temperature.units',
[`00000037${UuidSuffix}`]: 'public.hap.characteristic.version',
[`0000004C${UuidSuffix}`]: 'public.hap.characteristic.pairing.pair-setup',
[`0000004E${UuidSuffix}`]: 'public.hap.characteristic.pairing.pair-verify',
[`0000004F${UuidSuffix}`]: 'public.hap.characteristic.pairing.features',
[`00000050${UuidSuffix}`]: 'public.hap.characteristic.pairing.pairings',
[`00000052${UuidSuffix}`]: 'public.hap.characteristic.firmware.revision',
[`00000053${UuidSuffix}`]: 'public.hap.characteristic.hardware.revision',
[`00000054${UuidSuffix}`]: 'public.hap.characteristic.software.revision',
[`00000057${UuidSuffix}`]: 'public.hap.characteristic.accessory-identifier',
[`00000058${UuidSuffix}`]: 'public.hap.characteristic.tunneled-accessory-state-number',
[`00000059${UuidSuffix}`]: 'public.hap.characteristic.tunneled-accessory-connected',
[`0000005B${UuidSuffix}`]: 'public.hap.characteristic.relay-enabled',
[`0000005C${UuidSuffix}`]: 'public.hap.characteristic.relay-state',
[`0000005E${UuidSuffix}`]: 'public.hap.characteristic.relay-control-point',
[`00000060${UuidSuffix}`]: 'public.hap.characteristic.tunneled-accessory-advertising',
[`00000061${UuidSuffix}`]: 'public.hap.characteristic.tunnel-connection-timeout',
[`00000063${UuidSuffix}`]: 'public.hap.characteristic.reachable', // REMOVED
[`00000064${UuidSuffix}`]: 'public.hap.characteristic.air-particulate.density', // since iOS 9
[`00000065${UuidSuffix}`]: 'public.hap.characteristic.air-particulate.size', // since iOS 9
[`00000066${UuidSuffix}`]: 'public.hap.characteristic.security-system-state.current', // since iOS 9
[`00000067${UuidSuffix}`]: 'public.hap.characteristic.security-system-state.target', // since iOS 9
[`00000068${UuidSuffix}`]: 'public.hap.characteristic.battery-level', // since iOS 9
[`00000069${UuidSuffix}`]: 'public.hap.characteristic.carbon-monoxide.detected', // since iOS 9
[`0000006A${UuidSuffix}`]: 'public.hap.characteristic.contact-state', // since iOS 9
[`0000006B${UuidSuffix}`]: 'public.hap.characteristic.light-level.current', // since iOS 9
[`0000006C${UuidSuffix}`]: 'public.hap.characteristic.horizontal-tilt.current', // since iOS 9
[`0000006D${UuidSuffix}`]: 'public.hap.characteristic.position.current', // since iOS 9
[`0000006E${UuidSuffix}`]: 'public.hap.characteristic.vertical-tilt.current', // since iOS 9
[`0000006F${UuidSuffix}`]: 'public.hap.characteristic.position.hold', // since iOS 9
[`00000070${UuidSuffix}`]: 'public.hap.characteristic.leak-detected', // since iOS 9
[`00000071${UuidSuffix}`]: 'public.hap.characteristic.occupancy-detected', // since iOS 9
[`00000072${UuidSuffix}`]: 'public.hap.characteristic.position.state', // since iOS 9
[`00000073${UuidSuffix}`]: 'public.hap.characteristic.input-event', // since iOS 10.3
[`00000074${UuidSuffix}`]: 'public.hap.characteristic.programmable-switch-output-state',
[`00000075${UuidSuffix}`]: 'public.hap.characteristic.status-active', // since iOS 9
[`00000076${UuidSuffix}`]: 'public.hap.characteristic.smoke-detected', // since iOS 9
[`00000077${UuidSuffix}`]: 'public.hap.characteristic.status-fault', // since iOS 9
[`00000078${UuidSuffix}`]: 'public.hap.characteristic.status-jammed', // since iOS 9
[`00000079${UuidSuffix}`]: 'public.hap.characteristic.status-lo-batt', // since iOS 9
[`0000007A${UuidSuffix}`]: 'public.hap.characteristic.status-tampered', // since iOS 9
[`0000007B${UuidSuffix}`]: 'public.hap.characteristic.horizontal-tilt.target', // since iOS 9
[`0000007C${UuidSuffix}`]: 'public.hap.characteristic.position.target', // since iOS 9
[`0000007D${UuidSuffix}`]: 'public.hap.characteristic.vertical-tilt.target', // since iOS 9
[`0000008E${UuidSuffix}`]: 'public.hap.characteristic.security-system.alarm-type', // since iOS 9
[`0000008F${UuidSuffix}`]: 'public.hap.characteristic.charging-state', // since iOS 9
[`00000090${UuidSuffix}`]: 'public.hap.characteristic.carbon-monoxide.level', // since iOS 9
[`00000091${UuidSuffix}`]: 'public.hap.characteristic.carbon-monoxide.peak-level', // since iOS 9
[`00000092${UuidSuffix}`]: 'public.hap.characteristic.carbon-dioxide.detected', // since iOS 9
[`00000093${UuidSuffix}`]: 'public.hap.characteristic.carbon-dioxide.level', // since iOS 9
[`00000094${UuidSuffix}`]: 'public.hap.characteristic.carbon-dioxide.peak-level', // since iOS 9
[`00000095${UuidSuffix}`]: 'public.hap.characteristic.air-quality', // since iOS 9
[`00000098${UuidSuffix}`]: 'public.hap.characteristic.day-of-the-week', // REMOVED
[`0000009A${UuidSuffix}`]: 'public.hap.characteristic.time-update', // REMOVED
[`0000009B${UuidSuffix}`]: 'public.hap.characteristic.current-time', // REMOVED
[`0000009C${UuidSuffix}`]: 'public.hap.characteristic.link-quality', // REMOVED
[`0000009D${UuidSuffix}`]: 'public.hap.characteristic.configure-bridged-accessory-status', // REMOVED
[`0000009E${UuidSuffix}`]: 'public.hap.characteristic.discover-bridged-accessories', // REMOVED
[`0000009F${UuidSuffix}`]: 'public.hap.characteristic.discovered-bridged-accessories', // REMOVED
[`000000A0${UuidSuffix}`]: 'public.hap.characteristic.configure-bridged-accessory',
[`000000A3${UuidSuffix}`]: 'public.hap.characteristic.category', // REMOVED
[`000000A4${UuidSuffix}`]: 'public.hap.characteristic.app-matching-identifier',
[`000000A6${UuidSuffix}`]: 'public.hap.characteristic.accessory-properties',
[`000000A7${UuidSuffix}`]: 'public.hap.characteristic.lock-physical-controls', // since iOS 10.3
[`000000A8${UuidSuffix}`]: 'public.hap.characteristic.air-purifier.state.target', // since iOS 10.3
[`000000A9${UuidSuffix}`]: 'public.hap.characteristic.air-purifier.state.current', // since iOS 10.3
[`000000AA${UuidSuffix}`]: 'public.hap.characteristic.slat.state.current', // since iOS 10.3
[`000000AB${UuidSuffix}`]: 'public.hap.characteristic.filter.life-level', // since iOS 10.3
[`000000AC${UuidSuffix}`]: 'public.hap.characteristic.filter.change-indication', // since iOS 10.3
[`000000AD${UuidSuffix}`]: 'public.hap.characteristic.filter.reset-indication', // since iOS 10.3
[`000000AE${UuidSuffix}`]: 'public.hap.characteristic.air-quality.target', // REMOVED
[`000000AF${UuidSuffix}`]: 'public.hap.characteristic.fan.state.current', // since iOS 10.3
[`000000B0${UuidSuffix}`]: 'public.hap.characteristic.active', // since iOS 10.3
[`000000B1${UuidSuffix}`]: 'public.hap.characteristic.heater-cooler.state.current', // since iOS 11
[`000000B2${UuidSuffix}`]: 'public.hap.characteristic.heater-cooler.state.target', // since iOS 11
[`000000B3${UuidSuffix}`]: 'public.hap.characteristic.humidifier-dehumidifier.state.current', // since iOS 11
[`000000B4${UuidSuffix}`]: 'public.hap.characteristic.humidifier-dehumidifier.state.target', // since iOS 11
[`000000B5${UuidSuffix}`]: 'public.hap.characteristic.water-level', // since iOS 11
[`000000B6${UuidSuffix}`]: 'public.hap.characteristic.swing-mode', // since iOS 10.3
[`000000BE${UuidSuffix}`]: 'public.hap.characteristic.slat.state.target', // REMOVED
[`000000BF${UuidSuffix}`]: 'public.hap.characteristic.fan.state.target', // since iOS 10.3
[`000000C0${UuidSuffix}`]: 'public.hap.characteristic.type.slat', // since iOS 10.3
[`000000C1${UuidSuffix}`]: 'public.hap.characteristic.tilt.current', // since iOS 10.3
[`000000C2${UuidSuffix}`]: 'public.hap.characteristic.tilt.target', // since iOS 10.3
[`000000C3${UuidSuffix}`]: 'public.hap.characteristic.density.ozone', // since iOS 10.3
[`000000C4${UuidSuffix}`]: 'public.hap.characteristic.density.no2', // since iOS 10.3
[`000000C5${UuidSuffix}`]: 'public.hap.characteristic.density.so2', // since iOS 10.3
[`000000C6${UuidSuffix}`]: 'public.hap.characteristic.density.pm25', // since iOS 10.3
[`000000C7${UuidSuffix}`]: 'public.hap.characteristic.density.pm10', // since iOS 10.3
[`000000C8${UuidSuffix}`]: 'public.hap.characteristic.density.voc', // since iOS 10.3
[`000000C9${UuidSuffix}`]: 'public.hap.characteristic.relative-humidity.dehumidifier-threshold', // since iOS 11
[`000000CA${UuidSuffix}`]: 'public.hap.characteristic.relative-humidity.humidifier-threshold', // since iOS 11
[`000000CB${UuidSuffix}`]: 'public.hap.characteristic.service-label-index', // since iOS 10.3
[`000000CD${UuidSuffix}`]: 'public.hap.characteristic.service-label-namespace', // since iOS 10.3
[`000000CE${UuidSuffix}`]: 'public.hap.characteristic.color-temperature', // since iOS 10.3
[`000000D1${UuidSuffix}`]: 'public.hap.characteristic.program-mode', // since iOS 11.2
[`000000D2${UuidSuffix}`]: 'public.hap.characteristic.in-use', // since iOS 11.2
[`000000D3${UuidSuffix}`]: 'public.hap.characteristic.set-duration', // since iOS 11.2
[`000000D4${UuidSuffix}`]: 'public.hap.characteristic.remaining-duration', // since iOS 11.2
[`000000D5${UuidSuffix}`]: 'public.hap.characteristic.valve-type', // since iOS 11.2
[`000000D6${UuidSuffix}`]: 'public.hap.characteristic.is-configured', // since iOS 12
[`000000DB${UuidSuffix}`]: 'public.hap.characteristic.input-source-type',
[`000000DC${UuidSuffix}`]: 'public.hap.characteristic.input-device-type',
[`000000DD${UuidSuffix}`]: 'public.hap.characteristic.closed-captions', // REMOVED
[`000000DF${UuidSuffix}`]: 'public.hap.characteristic.power-mode-selection',
[`000000E0${UuidSuffix}`]: 'public.hap.characteristic.current-media-state',
[`000000E1${UuidSuffix}`]: 'public.hap.characteristic.remote-key',
[`000000E2${UuidSuffix}`]: 'public.hap.characteristic.picture-mode',
[`000000E3${UuidSuffix}`]: 'public.hap.characteristic.configured-name',
[`000000E4${UuidSuffix}`]: 'public.hap.characteristic.password-setting',
[`000000E5${UuidSuffix}`]: 'public.hap.characteristic.access-control-level',
[`000000E6${UuidSuffix}`]: 'public.hap.characteristic.identifier',
[`000000E7${UuidSuffix}`]: 'public.hap.characteristic.active-identifier', // since iOS 12
[`000000E8${UuidSuffix}`]: 'public.hap.characteristic.sleep-discovery-mode',
[`000000E9${UuidSuffix}`]: 'public.hap.characteristic.volume-control-type',
[`000000EA${UuidSuffix}`]: 'public.hap.characteristic.volume-selector',
[`00000114${UuidSuffix}`]: 'public.hap.characteristic.supported-video-stream-configuration', // since iOS 10
[`00000115${UuidSuffix}`]: 'public.hap.characteristic.supported-audio-configuration', // since iOS 10
[`00000116${UuidSuffix}`]: 'public.hap.characteristic.supported-rtp-configuration', // since iOS 10
[`00000117${UuidSuffix}`]: 'public.hap.characteristic.selected-rtp-stream-configuration', // since iOS 10
[`00000118${UuidSuffix}`]: 'public.hap.characteristic.setup-endpoints', // since iOS 10
[`00000119${UuidSuffix}`]: 'public.hap.characteristic.volume', // since iOS 10
[`0000011A${UuidSuffix}`]: 'public.hap.characteristic.mute', // since iOS 10
[`0000011B${UuidSuffix}`]: 'public.hap.characteristic.night-vision', // since iOS 10
[`0000011C${UuidSuffix}`]: 'public.hap.characteristic.zoom-optical', // since iOS 10
[`0000011D${UuidSuffix}`]: 'public.hap.characteristic.zoom-digital', // since iOS 10
[`0000011E${UuidSuffix}`]: 'public.hap.characteristic.image-rotation', // since iOS 10
[`0000011F${UuidSuffix}`]: 'public.hap.characteristic.image-mirror', // since iOS 10 - image-mirroring??
[`00000120${UuidSuffix}`]: 'public.hap.characteristic.streaming-status', // since iOS 10
[`00000123${UuidSuffix}`]: 'public.hap.characteristic.supported-target-configuration', // since iOS 12
[`00000124${UuidSuffix}`]: 'public.hap.characteristic.target-list', // since iOS 12
[`00000126${UuidSuffix}`]: 'public.hap.characteristic.button-event', // since iOS 12
[`00000128${UuidSuffix}`]: 'public.hap.characteristic.selected-audio-stream-configuration', // since iOS 12
[`00000130${UuidSuffix}`]: 'public.hap.characteristic.supported-data-stream-transport-configuration', // since iOS 12
[`00000131${UuidSuffix}`]: 'public.hap.characteristic.setup-data-stream-transport', // since iOS 12
[`00000132${UuidSuffix}`]: 'public.hap.characteristic.siri.input-type', // since iOS 12
[`00000134${UuidSuffix}`]: 'public.hap.characteristic.target-visibility-state',
[`00000135${UuidSuffix}`]: 'public.hap.characteristic.current-visibility-state',
[`00000136${UuidSuffix}`]: 'public.hap.characteristic.display-order',
[`00000137${UuidSuffix}`]: 'public.hap.characteristic.target-media-state',
[`00000138${UuidSuffix}`]: 'public.hap.characteristic.data-stream.hap-transport', // since iOS 14
[`00000139${UuidSuffix}`]: 'public.hap.characteristic.data-stream.hap-transport-interrupt', // since iOS 14
[`00000143${UuidSuffix}`]: 'public.hap.characteristic.characteristic-value-transition-control', // since iOS 14
[`00000144${UuidSuffix}`]: 'public.hap.characteristic.supported-characteristic-value-transition-configuration', // since iOS 14
[`00000201${UuidSuffix}`]: 'public.hap.characteristic.setup-transfer-transport', // since iOS 13.4
[`00000202${UuidSuffix}`]: 'public.hap.characteristic.supported-transfer-transport-configuration', // since iOS 13.4
[`00000205${UuidSuffix}`]: 'public.hap.characteristic.supported-camera-recording-configuration',
[`00000206${UuidSuffix}`]: 'public.hap.characteristic.supported-video-recording-configuration',
[`00000207${UuidSuffix}`]: 'public.hap.characteristic.supported-audio-recording-configuration',
[`00000209${UuidSuffix}`]: 'public.hap.characteristic.selected-camera-recording-configuration',
[`0000020C${UuidSuffix}`]: 'public.hap.characteristic.network-client-control', // network-client-profile-control??
[`0000020D${UuidSuffix}`]: 'public.hap.characteristic.network-client-status-control',
[`0000020E${UuidSuffix}`]: 'public.hap.characteristic.router-status',
[`00000210${UuidSuffix}`]: 'public.hap.characteristic.supported-router-configuration',
[`00000211${UuidSuffix}`]: 'public.hap.characteristic.wan-configuration-list',
[`00000212${UuidSuffix}`]: 'public.hap.characteristic.wan-status-list',
[`00000215${UuidSuffix}`]: 'public.hap.characteristic.managed-network-enable',
[`0000021B${UuidSuffix}`]: 'public.hap.characteristic.homekit-camera-active',
[`0000021C${UuidSuffix}`]: 'public.hap.characteristic.third-party-camera-active',
[`0000021D${UuidSuffix}`]: 'public.hap.characteristic.camera-operating-mode-indicator',
[`0000021E${UuidSuffix}`]: 'public.hap.characteristic.wifi-satellite-status',
[`0000021F${UuidSuffix}`]: 'public.hap.characteristic.network-access-violation-control',
[`00000220${UuidSuffix}`]: 'public.hap.characteristic.product-data',
[`00000222${UuidSuffix}`]: 'public.hap.characteristic.wake-configuration', // since iOS 13.2
[`00000223${UuidSuffix}`]: 'public.hap.characteristic.event-snapshots-active',
[`00000224${UuidSuffix}`]: 'public.hap.characteristic.diagonal-field-of-view', // since iOS 13.2
[`00000225${UuidSuffix}`]: 'public.hap.characteristic.periodic-snapshots-active',
[`00000226${UuidSuffix}`]: 'public.hap.characteristic.recording-audio-active',
[`00000227${UuidSuffix}`]: 'public.hap.characteristic.manually-disabled',
[`00000229${UuidSuffix}`]: 'public.hap.characteristic.video-analysis-active', // since iOS 14
[`0000022B${UuidSuffix}`]: 'public.hap.characteristic.current-transport', // since iOS 14
[`0000022C${UuidSuffix}`]: 'public.hap.characteristic.wifi-capabilities', // since iOS 14
[`0000022D${UuidSuffix}`]: 'public.hap.characteristic.wifi-configuration-control', // since iOS 14
[`00000232${UuidSuffix}`]: 'public.hap.characteristic.operating-state-response', // since iOS 14
[`00000233${UuidSuffix}`]: 'public.hap.characteristic.supported-firmware-update-configuration',
[`00000234${UuidSuffix}`]: 'public.hap.characteristic.firmware-update-readiness',
[`00000235${UuidSuffix}`]: 'public.hap.characteristic.firmware-update-status',
[`00000238${UuidSuffix}`]: 'public.hap.characteristic.supported-diagnostics-snapshot', // since iOS 14
[`0000023A${UuidSuffix}`]: 'public.hap.characteristic.sleep-interval', // since iOS 14
[`0000023B${UuidSuffix}`]: 'public.hap.characteristic.activity-interval', // since iOS 14
[`0000023C${UuidSuffix}`]: 'public.hap.characteristic.ping', // since iOS 14
[`0000023D${UuidSuffix}`]: 'public.hap.characteristic.event-retransmission-maximum', // since iOS 14
[`0000023E${UuidSuffix}`]: 'public.hap.characteristic.event-transmission-counters', // since iOS 14
[`0000023F${UuidSuffix}`]: 'public.hap.characteristic.received-signal-strength-indication', // since iOS 14
[`00000241${UuidSuffix}`]: 'public.hap.characteristic.signal-to-noise-ratio', // since iOS 14
[`00000242${UuidSuffix}`]: 'public.hap.characteristic.transmit-power', // since iOS 14
[`00000243${UuidSuffix}`]: 'public.hap.characteristic.maximum-transmit-power', // since iOS 14
[`00000244${UuidSuffix}`]: 'public.hap.characteristic.receiver-sensitivity', // since iOS 14
[`00000245${UuidSuffix}`]: 'public.hap.characteristic.cca-signal-detect-threshold', // since iOS 14
[`00000246${UuidSuffix}`]: 'public.hap.characteristic.cca-energy-detect-threshold', // since iOS 14
[`00000247${UuidSuffix}`]: 'public.hap.characteristic.mac.retransmission-maximum', // since iOS 14
[`00000248${UuidSuffix}`]: 'public.hap.characteristic.mac.transmission-counters',
[`00000249${UuidSuffix}`]: 'public.hap.characteristic.staged-firmware-version',
[`0000024A${UuidSuffix}`]: 'public.hap.characteristic.heart-beat', // since iOS 14,
[`0000024B${UuidSuffix}`]: 'public.hap.characteristic.characteristic-value-active-transition-count', // since iOS 14
[`0000024C${UuidSuffix}`]: 'public.hap.characteristic.supported-diagnostics-modes',
[`0000024D${UuidSuffix}`]: 'public.hap.characteristic.selected-diagnostics-modes',
[`00000254${UuidSuffix}`]: 'public.hap.characteristic.siri.endpoint-session-status',
[`00000255${UuidSuffix}`]: 'public.hap.characteristic.siri.enable',
[`00000256${UuidSuffix}`]: 'public.hap.characteristic.siri.listening',
[`00000257${UuidSuffix}`]: 'public.hap.characteristic.siri.touch-to-use',
[`00000258${UuidSuffix}`]: 'public.hap.characteristic.siri.light-on-use',
[`0000025A${UuidSuffix}`]: 'public.hap.characteristic.siri.engine-version',
[`0000025B${UuidSuffix}`]: 'public.hap.characteristic.air-play.enable',
[`00000261${UuidSuffix}`]: 'public.hap.characteristic.access-code.supported-configuration', // since iOS 15
[`00000262${UuidSuffix}`]: 'public.hap.characteristic.access-code.control-point', // since iOS 15
[`00000263${UuidSuffix}`]: 'public.hap.characteristic.configuration-state', // since iOS 15
[`00000264${UuidSuffix}`]: 'public.hap.characteristic.nfc-access-control-point', // since iOS 15
[`00000265${UuidSuffix}`]: 'public.hap.characteristic.nfc-access-supported-configuration', // since iOS 15
[`00000268${UuidSuffix}`]: 'public.hap.characteristic.supported-asset-types',
[`00000269${UuidSuffix}`]: 'public.hap.characteristic.asset-update-readiness',
[`0000026B${UuidSuffix}`]: 'public.hap.characteristic.multifunction-button',
[`0000026C${UuidSuffix}`]: 'public.hap.characteristic.hardware.finish', // since iOS 15
[`00000702${UuidSuffix}`]: 'public.hap.characteristic.thread.node-capabilities',
[`00000703${UuidSuffix}`]: 'public.hap.characteristic.thread.status',
[`00000704${UuidSuffix}`]: 'public.hap.characteristic.thread.control-point',
[`00000706${UuidSuffix}`]: 'public.hap.characteristic.thread.open-thread-version',
};
/* eslint-enable max-len */
const CharacteristicMapByCharacteristic = Object.assign({}, ...Object.entries(CharacteristicMapByUuid).map(([a, b]) => ({ [b]: a })));
/**
* Ensure the type is a valid characteristic UUID, also when short representations is used
*
* @param {string} uuid - Characteristic UUID
* @returns {string} Characteristic UUID as UUID
*/
function ensureCharacteristicUuid(uuid) {
if (uuid.length <= 8) {
uuid = `${uuid.padStart(8, '0')}${UuidSuffix}`;
}
uuid = uuid.toUpperCase();
return uuid;
}
/**
* Get a characteristic name from its UUID.
*
* @param {string} uuid - Characteristic UUID
* @returns {string} Characteristic name
*/
function characteristicFromUuid(uuid) {
uuid = ensureCharacteristicUuid(uuid);
return CharacteristicMapByUuid[uuid] || uuid;
}
/**
* Get a characteristic UUID from its name.
*
* @param {string} characteristic - Characteristic name
* @returns {string} Characteristic UUID
*/
function uuidFromCharacteristic(characteristic) {
return CharacteristicMapByCharacteristic[characteristic] || characteristic;
}
//# sourceMappingURL=characteristic.js.map