UNPKG

homebridge-wideq

Version:
91 lines (90 loc) 4.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AccessoryParser = void 0; var AccessoryParser = /** @class */ (function () { function AccessoryParser(platform, accessoryType) { this.platform = platform; this.accessoryType = accessoryType; } AccessoryParser.prototype.getAccessoryUUID = function (deviceSid, accessoryType) { switch (arguments.length) { case 1: return this.platform.UUIDGen.generate(deviceSid + this.accessoryType); case 2: return this.platform.UUIDGen.generate(deviceSid + accessoryType); default: return null; } }; AccessoryParser.prototype.getAccessoryCategory = function (device) { throw new Error('Not implemented.'); }; AccessoryParser.prototype.getAccessoryInformation = function (device) { return { 'Manufacturer': 'LG', 'Model': device.modelId, 'SerialNumber': device.id, }; }; AccessoryParser.prototype.getCreateAccessories = function (device) { var _this = this; var deviceInfo = device.device; var uuid = this.getAccessoryUUID(deviceInfo.id); var accessory = this.platform.AccessoryUtil.getByUUID(uuid); if (null == accessory) { accessory = new this.platform.PlatformAccessory(deviceInfo.name, uuid, this.getAccessoryCategory(deviceInfo)); var accessoryInformation = this.getAccessoryInformation(deviceInfo); accessory.getService(this.platform.Service.AccessoryInformation) .setCharacteristic(this.platform.Characteristic.Manufacturer, accessoryInformation['Manufacturer'] || 'Undefined') .setCharacteristic(this.platform.Characteristic.Model, accessoryInformation['Model'] || 'Undefined') .setCharacteristic(this.platform.Characteristic.SerialNumber, accessoryInformation['SerialNumber'] || 'Undefined'); this.parserAccessories(device); accessory.reachable = true; accessory.on('identify', function (paired, callback) { _this.platform.log.debug(accessory.displayName + ' Identify!!!'); if (callback) { // callback may not exist callback(); } }); return accessory; } return null; }; AccessoryParser.prototype.parserAccessories = function (device, status) { var uuid = this.getAccessoryUUID(device.device.id); var accessory = this.platform.AccessoryUtil.getByUUID(uuid); if (!accessory) return; return this.updateAccessoryStatuses(device, accessory, status); }; AccessoryParser.prototype.updateAccessoryStatuses = function (device, accessory, status) { throw new Error('Not implemented.'); }; AccessoryParser.prototype.createOrUpdateService = function (accessory, name, serviceType, map) { var service = accessory.getService(name); if (!service) { service = accessory.addService(serviceType, name, name); } map.forEach(function (item) { var characteristic = service.getCharacteristic(item.characteristic); if (item.options) { characteristic.setProps(item.options); } if (item.setter && characteristic.listeners('set').length === 0) { characteristic.on('set', function (value, callback) { return item.setter && item.setter(value) .then(function () { return characteristic.updateValue(value); }) .catch(function (err) { return callback(err); }); }); } if (item.getter) { var currentValue = item.getter(); if (null != currentValue) { characteristic.updateValue(currentValue); } } }); }; return AccessoryParser; }()); exports.AccessoryParser = AccessoryParser;