hap-controller
Version:
Library to implement a HAP (HomeKit) controller
121 lines • 6.41 kB
JavaScript
;
/**
* Service types.
*
* See Chapters 6 and 9.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.ensureServiceUuid = ensureServiceUuid;
exports.serviceFromUuid = serviceFromUuid;
exports.uuidFromService = uuidFromService;
const UuidSuffix = '-0000-1000-8000-0026BB765291';
const ServiceMapByUuid = {
[`0000003E${UuidSuffix}`]: 'public.hap.service.accessory-information',
[`00000040${UuidSuffix}`]: 'public.hap.service.fan',
[`00000041${UuidSuffix}`]: 'public.hap.service.garage-door-opener',
[`00000043${UuidSuffix}`]: 'public.hap.service.lightbulb',
[`00000044${UuidSuffix}`]: 'public.hap.service.lock-management',
[`00000045${UuidSuffix}`]: 'public.hap.service.lock-mechanism',
[`00000047${UuidSuffix}`]: 'public.hap.service.outlet',
[`00000049${UuidSuffix}`]: 'public.hap.service.switch',
[`0000004A${UuidSuffix}`]: 'public.hap.service.thermostat',
[`00000055${UuidSuffix}`]: 'public.hap.service.pairing',
[`00000056${UuidSuffix}`]: 'public.hap.service.tunneled-btle-accessory',
[`0000005A${UuidSuffix}`]: 'public.hap.service.relay',
[`00000062${UuidSuffix}`]: 'public.hap.service.bridging-state',
[`0000007E${UuidSuffix}`]: 'public.hap.service.security-system',
[`0000007F${UuidSuffix}`]: 'public.hap.service.sensor.carbon-monoxide',
[`00000080${UuidSuffix}`]: 'public.hap.service.sensor.contact',
[`00000081${UuidSuffix}`]: 'public.hap.service.door',
[`00000082${UuidSuffix}`]: 'public.hap.service.sensor.humidity',
[`00000083${UuidSuffix}`]: 'public.hap.service.sensor.leak',
[`00000084${UuidSuffix}`]: 'public.hap.service.sensor.light',
[`00000085${UuidSuffix}`]: 'public.hap.service.sensor.motion',
[`00000086${UuidSuffix}`]: 'public.hap.service.sensor.occupancy',
[`00000087${UuidSuffix}`]: 'public.hap.service.sensor.smoke',
[`00000088${UuidSuffix}`]: 'public.hap.service.stateful-programmable-switch',
[`00000089${UuidSuffix}`]: 'public.hap.service.stateless-programmable-switch',
[`0000008A${UuidSuffix}`]: 'public.hap.service.sensor.temperature',
[`0000008B${UuidSuffix}`]: 'public.hap.service.window',
[`0000008C${UuidSuffix}`]: 'public.hap.service.window-covering',
[`0000008D${UuidSuffix}`]: 'public.hap.service.sensor.air-quality',
[`00000096${UuidSuffix}`]: 'public.hap.service.battery',
[`00000097${UuidSuffix}`]: 'public.hap.service.sensor.carbon-dioxide',
[`00000099${UuidSuffix}`]: 'public.hap.service.time-information',
[`000000A1${UuidSuffix}`]: 'public.hap.service.bridge-configuration',
[`000000A2${UuidSuffix}`]: 'public.hap.service.protocol.information.service',
[`000000B7${UuidSuffix}`]: 'public.hap.service.fanv2',
[`000000B9${UuidSuffix}`]: 'public.hap.service.vertical-slat',
[`000000BA${UuidSuffix}`]: 'public.hap.service.filter-maintenance',
[`000000BB${UuidSuffix}`]: 'public.hap.service.air-purifier',
[`000000BC${UuidSuffix}`]: 'public.hap.service.heater-cooler',
[`000000BD${UuidSuffix}`]: 'public.hap.service.humidifier-dehumidifier',
[`000000CC${UuidSuffix}`]: 'public.hap.service.service-label',
[`000000CF${UuidSuffix}`]: 'public.hap.service.irrigation-system',
[`000000D0${UuidSuffix}`]: 'public.hap.service.valve',
[`000000D7${UuidSuffix}`]: 'public.hap.service.faucet',
[`000000D8${UuidSuffix}`]: 'public.hap.service.television',
[`000000D9${UuidSuffix}`]: 'public.hap.service.input-source',
[`000000DA${UuidSuffix}`]: 'public.hap.service.access-control',
[`00000110${UuidSuffix}`]: 'public.hap.service.camera-rtp-stream-management',
[`00000111${UuidSuffix}`]: 'public.hap.service.camera-control',
[`00000112${UuidSuffix}`]: 'public.hap.service.microphone',
[`00000113${UuidSuffix}`]: 'public.hap.service.speaker',
[`00000121${UuidSuffix}`]: 'public.hap.service.doorbell',
[`00000122${UuidSuffix}`]: 'public.hap.service.target-control-management',
[`00000125${UuidSuffix}`]: 'public.hap.service.target-control',
[`00000127${UuidSuffix}`]: 'public.hap.service.audio-stream-management',
[`00000129${UuidSuffix}`]: 'public.hap.service.data-stream-transport-management',
[`00000133${UuidSuffix}`]: 'public.hap.service.siri',
[`00000203${UuidSuffix}`]: 'public.hap.service.transfer-transport-management',
[`00000204${UuidSuffix}`]: 'public.hap.service.camera-recording-management',
[`0000020A${UuidSuffix}`]: 'public.hap.service.wifi-router',
[`0000020F${UuidSuffix}`]: 'public.hap.service.wifi-satellite',
[`0000021A${UuidSuffix}`]: 'public.hap.service.camera-operating-mode',
[`00000221${UuidSuffix}`]: 'public.hap.service.power-management',
[`00000228${UuidSuffix}`]: 'public.hap.service.smart-speaker',
[`0000022A${UuidSuffix}`]: 'public.hap.service.wifi-transport',
[`00000237${UuidSuffix}`]: 'public.hap.service.diagnostics',
[`00000239${UuidSuffix}`]: 'public.hap.service.accessory-runtime-information',
[`00000253${UuidSuffix}`]: 'public.hap.service.siri-endpoint',
[`00000260${UuidSuffix}`]: 'public.hap.service.access-code', // since iOS 15
[`00000266${UuidSuffix}`]: 'public.hap.service.nfc-access', // since iOS 15
[`00000267${UuidSuffix}`]: 'public.hap.service.asset-update',
[`0000026A${UuidSuffix}`]: 'public.hap.service.assistant',
[`00000270${UuidSuffix}`]: 'public.hap.service.accessory-metrics',
[`00000701${UuidSuffix}`]: 'public.hap.service.thread-transport',
};
const ServiceMapByService = Object.assign({}, ...Object.entries(ServiceMapByUuid).map(([a, b]) => ({ [b]: a })));
/**
* Ensure the type is a valid service UUID, also when short representations is used
*
* @param {string} uuid - Service UUID
* @returns {string} Service UUID as UUID
*/
function ensureServiceUuid(uuid) {
if (uuid.length <= 8) {
uuid = `${uuid.padStart(8, '0')}${UuidSuffix}`;
}
uuid = uuid.toUpperCase();
return uuid;
}
/**
* Get a service name from its UUID.
*
* @param {string} uuid - Service UUID
* @returns {string} Service name
*/
function serviceFromUuid(uuid) {
uuid = ensureServiceUuid(uuid);
return ServiceMapByUuid[uuid] || uuid;
}
/**
* Get a service UUID from its name.
*
* @param {string} service - Service name
* @returns {string} Service UUID
*/
function uuidFromService(service) {
return ServiceMapByService[service] || service;
}
//# sourceMappingURL=service.js.map