homebridge-sony-audio-extended 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,66 @@
1
+ import { Service, PlatformAccessory, CharacteristicValue, CharacteristicSetCallback, CharacteristicGetCallback } from 'homebridge';
2
+ import { SonyDevice } from './sonyDevice';
3
+ import { ExternalTerminal } from './api';
4
+ import { SonyAudioHomebridgePlatform } from './platform';
5
+ /**
6
+ * Platform Accessory
7
+ * An instance of this class is created for each accessory your platform registers
8
+ * Each accessory may expose multiple services of different service types.
9
+ */
10
+ export declare class SonyAudioAccessory {
11
+ private readonly platform;
12
+ private readonly accessory;
13
+ private serviceTv;
14
+ private serviceTvSpeaker;
15
+ private device;
16
+ private inputSourceIds;
17
+ private inputSources;
18
+ private lastErrorMessage;
19
+ private reconnectTimeout;
20
+ private accessorySettings;
21
+ constructor(platform: SonyAudioHomebridgePlatform, accessory: PlatformAccessory<SonyDevice>);
22
+ /**
23
+ * Create inputs based on terminals supported of the device
24
+ * @param terminals
25
+ */
26
+ buildInputs(terminals: ExternalTerminal[]): Promise<void>;
27
+ /**
28
+ * Init accessory characteristics and if got error, try repeat it after `RECONNECT_TIMEOUT` timeout
29
+ */
30
+ initAccessoryCharacteristics(): void;
31
+ /**
32
+ * Generate an id for the device input terminal
33
+ * @param terminal device inut terminal
34
+ */
35
+ private getInputSubtype;
36
+ /**
37
+ * Create error message for homebridge log
38
+ * @param error
39
+ */
40
+ private getErrorMessage;
41
+ /**
42
+ * Wrap the CharacteristicSetCallback callback for loggin the error
43
+ * and run heartbeat if the device is not available
44
+ * @param callback
45
+ */
46
+ private callbackWrapper;
47
+ onChangeVolume(volume: number): void;
48
+ onChangeMute(mute: boolean): void;
49
+ onChangePower(power: boolean): void;
50
+ onChangeSource(source: string): void;
51
+ setVolume(value: CharacteristicValue, callback: CharacteristicSetCallback): void;
52
+ setMute(value: CharacteristicValue, callback: CharacteristicSetCallback): void;
53
+ setPower(value: CharacteristicValue, callback: CharacteristicSetCallback): void;
54
+ setSource(value: CharacteristicValue, callback: CharacteristicSetCallback): void;
55
+ setRemoteKey(value: CharacteristicValue, callback: CharacteristicSetCallback): void;
56
+ /**
57
+ * Rise when changed the source name
58
+ * @param value
59
+ * @param callback
60
+ */
61
+ setInputSourceConfiguredName(serviceInputSource: Service, value: CharacteristicValue, callback: CharacteristicSetCallback): void;
62
+ setInputSourceTargetVisibilityState(serviceInputSource: Service, value: CharacteristicValue, callback: CharacteristicSetCallback): void;
63
+ getInputSourceCurrentVisibilityState(serviceInputSource: Service, callback: CharacteristicGetCallback): void;
64
+ getInputSourceTargetVisibilityState(serviceInputSource: Service, callback: CharacteristicGetCallback): void;
65
+ }
66
+ //# sourceMappingURL=sonyAudioAccessory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sonyAudioAccessory.d.ts","sourceRoot":"","sources":["../src/sonyAudioAccessory.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAiB,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAoB,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAIzD;;;;GAIG;AACH,qBAAa,kBAAkB;IAc3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAd5B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,gBAAgB,CAAU;IAElC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,YAAY,CAAgC;IAEpD,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,gBAAgB,CAA6B;IAErD,OAAO,CAAC,iBAAiB,CAA8B;gBAGpC,QAAQ,EAAE,2BAA2B,EACrC,SAAS,EAAE,iBAAiB,CAAC,UAAU,CAAC;IA2D3D;;;OAGG;IACG,WAAW,CAAC,SAAS,EAAE,gBAAgB,EAAE;IAmH/C;;OAEG;IACH,4BAA4B;IAqD5B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAKvB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAQvB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IASvB,cAAc,CAAC,MAAM,EAAE,MAAM;IAK7B,YAAY,CAAC,IAAI,EAAE,OAAO;IAK1B,aAAa,CAAC,KAAK,EAAE,OAAO;IAM5B,cAAc,CAAC,MAAM,EAAE,MAAM;IAY7B,SAAS,CAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,yBAAyB;IAQzE,OAAO,CAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,yBAAyB;IAQvE,QAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,yBAAyB;IAOxE,SAAS,CAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,yBAAyB;IAUzE,YAAY,CAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,yBAAyB;IAkD5E;;;;OAIG;IACH,4BAA4B,CAAC,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,yBAAyB;IAOzH,mCAAmC,CAAC,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,yBAAyB;IAQhI,oCAAoC,CAAC,kBAAkB,EAAE,OAAO,EAAE,QAAQ,EAAE,yBAAyB;IAQrG,mCAAmC,CAAC,kBAAkB,EAAE,OAAO,EAAE,QAAQ,EAAE,yBAAyB;CAMrG"}
@@ -0,0 +1,388 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SonyAudioAccessory = void 0;
4
+ const sonyAudioAccessorySettings_1 = require("./sonyAudioAccessorySettings");
5
+ const RECONNECT_TIMEOUT = 5000;
6
+ /**
7
+ * Platform Accessory
8
+ * An instance of this class is created for each accessory your platform registers
9
+ * Each accessory may expose multiple services of different service types.
10
+ */
11
+ class SonyAudioAccessory {
12
+ constructor(platform, accessory) {
13
+ this.platform = platform;
14
+ this.accessory = accessory;
15
+ this.lastErrorMessage = '';
16
+ this.device = accessory.context;
17
+ this.inputSourceIds = new Map();
18
+ this.inputSources = new Map();
19
+ // set accessory information
20
+ this.accessory.getService(this.platform.Service.AccessoryInformation)
21
+ .setCharacteristic(this.platform.Characteristic.Manufacturer, this.device.manufacturer)
22
+ .setCharacteristic(this.platform.Characteristic.Model, this.device.systemInfo.model)
23
+ .setCharacteristic(this.platform.Characteristic.SerialNumber, this.device.systemInfo.serial || this.device.UDN);
24
+ const serviceTvName = this.device.systemInfo.name;
25
+ this.serviceTv = this.accessory.getService(serviceTvName) ||
26
+ this.accessory.addService(this.platform.Service.Television, serviceTvName);
27
+ this.serviceTv
28
+ .setCharacteristic(this.platform.Characteristic.ConfiguredName, this.device.systemInfo.name)
29
+ .setCharacteristic(this.platform.Characteristic.SleepDiscoveryMode, this.platform.Characteristic.SleepDiscoveryMode.ALWAYS_DISCOVERABLE);
30
+ // TODO: maybe need to test are the device for volume / mute support
31
+ const serviceTvSpeakerName = this.device.systemInfo.name + ' Speaker';
32
+ this.serviceTvSpeaker = this.accessory.getService(serviceTvSpeakerName) ||
33
+ this.accessory.addService(this.platform.Service.TelevisionSpeaker, serviceTvSpeakerName);
34
+ this.serviceTvSpeaker.setCharacteristic(this.platform.Characteristic.VolumeControlType, this.platform.Characteristic.VolumeControlType.ABSOLUTE);
35
+ sonyAudioAccessorySettings_1.SonyAudioAccessorySettings.GetInstance(accessory.UUID, platform.api.user.persistPath(), this.platform.log)
36
+ .then(settings => this.accessorySettings = settings)
37
+ .then(() => this.device.getInputs())
38
+ .then(terminals => this.buildInputs(terminals));
39
+ // subcribe to events from device
40
+ this.device.on("volume" /* VOLUME */, volume => this.onChangeVolume(volume));
41
+ this.device.on("mute" /* MUTE */, mute => this.onChangeMute(mute));
42
+ this.device.on("power" /* POWER */, power => this.onChangePower(power));
43
+ this.device.on("source" /* SOURCE */, source => this.onChangeSource(source));
44
+ this.device.on("restore" /* RESTORE */, () => this.initAccessoryCharacteristics());
45
+ this.initAccessoryCharacteristics();
46
+ // register callbacks
47
+ this.serviceTvSpeaker.getCharacteristic(this.platform.Characteristic.VolumeSelector)
48
+ .on('set', this.setVolume.bind(this));
49
+ this.serviceTvSpeaker.getCharacteristic(this.platform.Characteristic.Mute)
50
+ .on('set', this.setMute.bind(this));
51
+ this.serviceTv.getCharacteristic(this.platform.Characteristic.Active)
52
+ .on('set', this.setPower.bind(this));
53
+ this.serviceTv.getCharacteristic(this.platform.Characteristic.ActiveIdentifier)
54
+ .on('set', this.setSource.bind(this));
55
+ this.serviceTv.getCharacteristic(this.platform.Characteristic.RemoteKey)
56
+ .on('set', this.setRemoteKey.bind(this));
57
+ this.serviceTv.addLinkedService(this.serviceTvSpeaker);
58
+ }
59
+ /**
60
+ * Create inputs based on terminals supported of the device
61
+ * @param terminals
62
+ */
63
+ async buildInputs(terminals) {
64
+ for (let index = 0; index < terminals.length; index++) {
65
+ const terminal = terminals[index];
66
+ const inputSourceSubtype = this.getInputSubtype(terminal);
67
+ const identifier = index;
68
+ const serviceInputSource = this.accessory.getService(terminal.uri) ||
69
+ this.accessory.addService(this.platform.Service.InputSource, terminal.uri, inputSourceSubtype);
70
+ serviceInputSource.updateCharacteristic(this.platform.Characteristic.ConfiguredName, await this.accessorySettings.getInputName(inputSourceSubtype, terminal.label ? terminal.label : terminal.title));
71
+ const defaultVisibility = this.platform.Characteristic.CurrentVisibilityState.SHOWN;
72
+ const visibility = await this.accessorySettings.getInputVisibility(inputSourceSubtype, defaultVisibility);
73
+ serviceInputSource.updateCharacteristic(this.platform.Characteristic.TargetVisibilityState, visibility);
74
+ serviceInputSource.updateCharacteristic(this.platform.Characteristic.CurrentVisibilityState, visibility);
75
+ const isConfigured = this.device.isReadonlyTerminal(terminal) ? this.platform.Characteristic.IsConfigured.NOT_CONFIGURED : this.platform.Characteristic.IsConfigured.CONFIGURED;
76
+ serviceInputSource.updateCharacteristic(this.platform.Characteristic.IsConfigured, isConfigured);
77
+ serviceInputSource.updateCharacteristic(this.platform.Characteristic.Identifier, identifier);
78
+ // Determine the input type by the `meta` tag
79
+ let inputSourceType = this.platform.Characteristic.InputSourceType.OTHER;
80
+ switch (terminal.meta) {
81
+ case "meta:audiosystem" /* AUDIOSYSTEM */:
82
+ case "meta:avamp" /* AVAMP */:
83
+ case "meta:bd-dvd" /* BD_DVD */:
84
+ case "meta:camcoder" /* CAMCODER */:
85
+ case "meta:complex" /* COMPLEX */:
86
+ case "meta:disc" /* DISC */:
87
+ case "meta:game" /* GAME */:
88
+ case "meta:hdmi" /* HDMI */:
89
+ case "meta:hdmi:output" /* HDMI_OUTPUT */:
90
+ case "meta:hometheater" /* HOMETHEATER */:
91
+ case "meta:playbackdevice" /* PLAYBACKDEVICE */:
92
+ case "meta:recordingdevice" /* RECORDINGDEVICE */:
93
+ case "meta:tv" /* TV */:
94
+ case "meta:video" /* VIDEO */:
95
+ inputSourceType = this.platform.Characteristic.InputSourceType.HDMI;
96
+ break;
97
+ case "meta:btaudio" /* BTAUDIO */:
98
+ case "meta:btphone" /* BTPHONE */:
99
+ inputSourceType = this.platform.Characteristic.InputSourceType.AIRPLAY;
100
+ break;
101
+ case "meta:composite" /* COMPOSITE */:
102
+ case "meta:coaxial" /* COAXIAL */:
103
+ inputSourceType = this.platform.Characteristic.InputSourceType.COMPOSITE_VIDEO;
104
+ break;
105
+ case "meta:component" /* COMPONENT */:
106
+ case "meta:componentd" /* COMPONENTD */:
107
+ case "meta:composite_componentd" /* COMPOSITE_COMPONENTD */:
108
+ inputSourceType = this.platform.Characteristic.InputSourceType.COMPONENT_VIDEO;
109
+ break;
110
+ case "meta:digitalcamera" /* DIGITALCAMERA */:
111
+ inputSourceType = this.platform.Characteristic.InputSourceType.DVI;
112
+ break;
113
+ case "meta:svideo" /* SVIDEO */:
114
+ inputSourceType = this.platform.Characteristic.InputSourceType.S_VIDEO;
115
+ break;
116
+ case "meta:tape" /* TAPE */:
117
+ case "meta:tuner" /* TUNER */:
118
+ case "meta:tunerdevice" /* TUNERDEVICE */:
119
+ inputSourceType = this.platform.Characteristic.InputSourceType.TUNER;
120
+ break;
121
+ case "meta:usbdac" /* USBDAC */:
122
+ inputSourceType = this.platform.Characteristic.InputSourceType.USB;
123
+ break;
124
+ }
125
+ serviceInputSource.updateCharacteristic(this.platform.Characteristic.InputSourceType, inputSourceType);
126
+ let inputDeviceType = this.platform.Characteristic.InputDeviceType.OTHER;
127
+ switch (terminal.meta) {
128
+ case "meta:sat-catv" /* SAT_CATV */:
129
+ case "meta:tv" /* TV */:
130
+ inputDeviceType = this.platform.Characteristic.InputDeviceType.TV;
131
+ break;
132
+ case "meta:camcoder" /* CAMCODER */:
133
+ case "meta:recordingdevice" /* RECORDINGDEVICE */:
134
+ inputDeviceType = this.platform.Characteristic.InputDeviceType.RECORDING;
135
+ break;
136
+ case "meta:tape" /* TAPE */:
137
+ case "meta:tuner" /* TUNER */:
138
+ case "meta:tunerdevice" /* TUNERDEVICE */:
139
+ inputDeviceType = this.platform.Characteristic.InputDeviceType.TUNER;
140
+ break;
141
+ case "meta:btaudio" /* BTAUDIO */:
142
+ case "meta:disc" /* DISC */:
143
+ case "meta:playbackdevice" /* PLAYBACKDEVICE */:
144
+ case "meta:sacd-cd" /* SACD_CD */:
145
+ inputDeviceType = this.platform.Characteristic.InputDeviceType.PLAYBACK;
146
+ break;
147
+ case "meta:audiosystem" /* AUDIOSYSTEM */:
148
+ case "meta:avamp" /* AVAMP */:
149
+ case "meta:bd-dvd" /* BD_DVD */:
150
+ case "meta:hometheater" /* HOMETHEATER */:
151
+ inputDeviceType = this.platform.Characteristic.InputDeviceType.AUDIO_SYSTEM;
152
+ break;
153
+ }
154
+ serviceInputSource.updateCharacteristic(this.platform.Characteristic.InputDeviceType, inputDeviceType);
155
+ // save Identifier of the source input for future use
156
+ this.inputSourceIds.set(inputSourceSubtype, identifier);
157
+ // save terminals
158
+ this.inputSources.set(identifier, terminal);
159
+ // add handler for name changing on input source
160
+ serviceInputSource.getCharacteristic(this.platform.Characteristic.ConfiguredName)
161
+ .on('set', this.setInputSourceConfiguredName.bind(this, serviceInputSource));
162
+ serviceInputSource.getCharacteristic(this.platform.Characteristic.CurrentVisibilityState)
163
+ .on('get', this.getInputSourceCurrentVisibilityState.bind(this, serviceInputSource));
164
+ serviceInputSource.getCharacteristic(this.platform.Characteristic.TargetVisibilityState)
165
+ .on('set', this.setInputSourceTargetVisibilityState.bind(this, serviceInputSource))
166
+ .on('get', this.getInputSourceTargetVisibilityState.bind(this, serviceInputSource));
167
+ this.serviceTv.addLinkedService(serviceInputSource);
168
+ }
169
+ }
170
+ /**
171
+ * Init accessory characteristics and if got error, try repeat it after `RECONNECT_TIMEOUT` timeout
172
+ */
173
+ initAccessoryCharacteristics() {
174
+ // initAccessoryCharacteristics can be calls by itself and from DEVICE_EVENTS.RESTORE
175
+ // so, if device connection has been restored, we don't need to reinit characteristics after timeout
176
+ if (this.reconnectTimeout) {
177
+ clearTimeout(this.reconnectTimeout);
178
+ }
179
+ Promise.resolve()
180
+ .then(() => this.device.getPowerState()) // get Power Status
181
+ .then(power => this.onChangePower(power))
182
+ .then(() => this.device.getVolumeState()) // get Volume Status
183
+ .then(volumeInfo => {
184
+ // set volume props and volume
185
+ if ((volumeInfo === null || volumeInfo === void 0 ? void 0 : volumeInfo.volume) !== -1) {
186
+ // check absolute or relative
187
+ if ((volumeInfo === null || volumeInfo === void 0 ? void 0 : volumeInfo.maxVolume) === -1) { // the device does not support setting the volume by an absolute value
188
+ this.serviceTvSpeaker.setCharacteristic(this.platform.Characteristic.VolumeControlType, this.platform.Characteristic.VolumeControlType.RELATIVE);
189
+ }
190
+ else {
191
+ this.serviceTvSpeaker.setCharacteristic(this.platform.Characteristic.VolumeControlType, this.platform.Characteristic.VolumeControlType.ABSOLUTE);
192
+ // set volume props
193
+ this.serviceTvSpeaker.getCharacteristic(this.platform.Characteristic.Volume)
194
+ .setProps({
195
+ minValue: volumeInfo === null || volumeInfo === void 0 ? void 0 : volumeInfo.minVolume,
196
+ maxValue: volumeInfo === null || volumeInfo === void 0 ? void 0 : volumeInfo.maxVolume,
197
+ minStep: (volumeInfo === null || volumeInfo === void 0 ? void 0 : volumeInfo.step) === 0 ? 1 : volumeInfo === null || volumeInfo === void 0 ? void 0 : volumeInfo.step,
198
+ });
199
+ if (volumeInfo === null || volumeInfo === void 0 ? void 0 : volumeInfo.volume) {
200
+ this.onChangeVolume(volumeInfo.volume);
201
+ }
202
+ }
203
+ }
204
+ // set mute
205
+ this.onChangeMute((volumeInfo === null || volumeInfo === void 0 ? void 0 : volumeInfo.mute) === 'on');
206
+ })
207
+ .then(() => this.device.getActiveInput()) // get active source
208
+ .then(terminal => terminal && this.onChangeSource(terminal.uri))
209
+ .then(() => this.lastErrorMessage = '') // reset the error
210
+ // .then(() => this.device.subscribe()) // subscribe to notifications
211
+ .catch(err => {
212
+ // log an error if the same error has not been logged before
213
+ if (this.lastErrorMessage !== err.message) {
214
+ this.platform.log.error(this.getErrorMessage(err));
215
+ this.lastErrorMessage = err.message;
216
+ }
217
+ // try init the characteristics again after a while
218
+ this.reconnectTimeout = setTimeout(() => {
219
+ this.platform.log.debug(`Device ${this.device.systemInfo.name}: trying reinit the device...`);
220
+ this.initAccessoryCharacteristics();
221
+ }, RECONNECT_TIMEOUT);
222
+ });
223
+ }
224
+ /**
225
+ * Generate an id for the device input terminal
226
+ * @param terminal device inut terminal
227
+ */
228
+ getInputSubtype(terminal) {
229
+ const id = this.platform.api.hap.uuid.generate(terminal.uri);
230
+ return id;
231
+ }
232
+ /**
233
+ * Create error message for homebridge log
234
+ * @param error
235
+ */
236
+ getErrorMessage(error) {
237
+ const deviceName = this.device.systemInfo.name;
238
+ if (deviceName) {
239
+ return `Device ${deviceName}: ${error.message}`;
240
+ }
241
+ return `${error.message}`;
242
+ }
243
+ /**
244
+ * Wrap the CharacteristicSetCallback callback for loggin the error
245
+ * and run heartbeat if the device is not available
246
+ * @param callback
247
+ */
248
+ callbackWrapper(callback, error, value) {
249
+ if (error) {
250
+ this.platform.log.error(this.getErrorMessage(error));
251
+ // reinit the characteristics because we assume that the connection with the device is lost
252
+ this.initAccessoryCharacteristics();
253
+ }
254
+ callback(error, value);
255
+ }
256
+ onChangeVolume(volume) {
257
+ this.serviceTvSpeaker.updateCharacteristic(this.platform.Characteristic.Volume, volume);
258
+ this.platform.log.debug('Set Characteristic Volume -> ', volume);
259
+ }
260
+ onChangeMute(mute) {
261
+ this.serviceTvSpeaker.updateCharacteristic(this.platform.Characteristic.Mute, mute);
262
+ this.platform.log.debug('Set Characteristic Mute -> ', mute);
263
+ }
264
+ onChangePower(power) {
265
+ this.serviceTv.updateCharacteristic(this.platform.Characteristic.Active, power);
266
+ this.serviceTvSpeaker.updateCharacteristic(this.platform.Characteristic.Active, power);
267
+ this.platform.log.debug('Set Speaker Characteristic Active -> ', power);
268
+ }
269
+ onChangeSource(source) {
270
+ const terminal = this.device.getTerminalBySource(source);
271
+ if (terminal) {
272
+ const inputSubtype = this.getInputSubtype(terminal);
273
+ const inputSourceId = this.inputSourceIds.get(inputSubtype);
274
+ if (inputSourceId) {
275
+ this.serviceTv.updateCharacteristic(this.platform.Characteristic.ActiveIdentifier, inputSourceId);
276
+ this.platform.log.debug('Set Characteristic ActiveIdentifier -> ', inputSourceId);
277
+ }
278
+ }
279
+ }
280
+ setVolume(value, callback) {
281
+ this.platform.log.debug('Set Characteristic VolumeSelector -> ', value);
282
+ const volumeSelector = value === this.platform.Characteristic.VolumeSelector.INCREMENT ? 0 : 1;
283
+ this.device.setVolume(volumeSelector)
284
+ .then(() => this.callbackWrapper(callback))
285
+ .catch(err => this.callbackWrapper(callback, err));
286
+ }
287
+ setMute(value, callback) {
288
+ this.platform.log.debug('Set Characteristic Mute -> ', value);
289
+ const mute = !!value;
290
+ this.device.setMute(mute)
291
+ .then(() => this.callbackWrapper(callback))
292
+ .catch(err => this.callbackWrapper(callback, err));
293
+ }
294
+ setPower(value, callback) {
295
+ this.platform.log.debug('Set Power Characteristic Active -> ', value);
296
+ this.device.setPower(value === this.platform.Characteristic.Active.ACTIVE)
297
+ .then(() => this.callbackWrapper(callback))
298
+ .catch(err => this.callbackWrapper(callback, err));
299
+ }
300
+ setSource(value, callback) {
301
+ this.platform.log.debug('Set Characteristic ActiveIdentifier -> ', value);
302
+ const terminal = this.inputSources.get(value);
303
+ if (terminal) {
304
+ this.device.setSource(terminal)
305
+ .then(() => this.callbackWrapper(callback))
306
+ .catch(err => this.callbackWrapper(callback, err));
307
+ }
308
+ }
309
+ setRemoteKey(value, callback) {
310
+ this.platform.log.debug('Set Characteristic RemoteKey -> ', value);
311
+ switch (value) {
312
+ case this.platform.Characteristic.RemoteKey.ARROW_UP:
313
+ this.device.setUp()
314
+ .then(() => this.callbackWrapper(callback))
315
+ .catch(err => this.callbackWrapper(callback, err));
316
+ break;
317
+ case this.platform.Characteristic.RemoteKey.ARROW_DOWN:
318
+ this.device.setDown()
319
+ .then(() => this.callbackWrapper(callback))
320
+ .catch(err => this.callbackWrapper(callback, err));
321
+ break;
322
+ case this.platform.Characteristic.RemoteKey.ARROW_RIGHT:
323
+ this.device.setRigth()
324
+ .then(() => this.callbackWrapper(callback))
325
+ .catch(err => this.callbackWrapper(callback, err));
326
+ break;
327
+ case this.platform.Characteristic.RemoteKey.ARROW_LEFT:
328
+ this.device.setLeft()
329
+ .then(() => this.callbackWrapper(callback))
330
+ .catch(err => this.callbackWrapper(callback, err));
331
+ break;
332
+ case this.platform.Characteristic.RemoteKey.SELECT:
333
+ this.device.setSelect()
334
+ .then(() => this.callbackWrapper(callback))
335
+ .catch(err => this.callbackWrapper(callback, err));
336
+ break;
337
+ case this.platform.Characteristic.RemoteKey.BACK:
338
+ this.device.setBack()
339
+ .then(() => this.callbackWrapper(callback))
340
+ .catch(err => this.callbackWrapper(callback, err));
341
+ break;
342
+ case this.platform.Characteristic.RemoteKey.INFORMATION:
343
+ this.device.setInformation()
344
+ .then(() => this.callbackWrapper(callback))
345
+ .catch(err => this.callbackWrapper(callback, err));
346
+ break;
347
+ case this.platform.Characteristic.RemoteKey.PLAY_PAUSE:
348
+ this.device.setPause()
349
+ .then(() => this.callbackWrapper(callback))
350
+ .catch(err => this.callbackWrapper(callback, err));
351
+ break;
352
+ default:
353
+ this.callbackWrapper(callback);
354
+ }
355
+ }
356
+ /**
357
+ * Rise when changed the source name
358
+ * @param value
359
+ * @param callback
360
+ */
361
+ setInputSourceConfiguredName(serviceInputSource, value, callback) {
362
+ this.platform.log.debug('Set Characteristic InputSource ConfiguredName -> ', value);
363
+ this.accessorySettings.setInputName(serviceInputSource.subtype, value)
364
+ .then(() => callback(null))
365
+ .catch(err => callback(err));
366
+ }
367
+ setInputSourceTargetVisibilityState(serviceInputSource, value, callback) {
368
+ this.platform.log.debug('Set Characteristic InputSource Target Visibility State -> ', value);
369
+ this.accessorySettings.setInputVisibility(serviceInputSource.subtype, value)
370
+ .then(inputSettings => serviceInputSource.updateCharacteristic(this.platform.Characteristic.CurrentVisibilityState, inputSettings.visibilityState))
371
+ .then(() => callback(null))
372
+ .catch(err => callback(err));
373
+ }
374
+ getInputSourceCurrentVisibilityState(serviceInputSource, callback) {
375
+ this.platform.log.debug('Get Characteristic InputSource Current Visibility State');
376
+ this.accessorySettings.getInputVisibility(serviceInputSource.subtype, serviceInputSource.getCharacteristic(this.platform.Characteristic.CurrentVisibilityState).value)
377
+ .then(inputVisibility => callback(null, inputVisibility))
378
+ .catch(err => callback(err));
379
+ }
380
+ getInputSourceTargetVisibilityState(serviceInputSource, callback) {
381
+ this.platform.log.debug('Get Characteristic InputSource Target Visibility State');
382
+ this.accessorySettings.getInputVisibility(serviceInputSource.subtype, serviceInputSource.getCharacteristic(this.platform.Characteristic.TargetVisibilityState).value)
383
+ .then(inputVisibility => callback(null, inputVisibility))
384
+ .catch(err => callback(err));
385
+ }
386
+ }
387
+ exports.SonyAudioAccessory = SonyAudioAccessory;
388
+ //# sourceMappingURL=sonyAudioAccessory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sonyAudioAccessory.js","sourceRoot":"","sources":["../src/sonyAudioAccessory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { Logger } from 'homebridge';
2
+ declare type InputSettings = {
3
+ /**
4
+ * Id of the input.
5
+ * Used as id from @see SonyAudioAccessory.getInputSubtype
6
+ */
7
+ id: string;
8
+ /**
9
+ * Name of the input.
10
+ */
11
+ name?: string;
12
+ /**
13
+ * Visibility state fo the input.
14
+ */
15
+ visibilityState?: 0 | 1;
16
+ };
17
+ /**
18
+ * Represent a settings of Sony Accessory.
19
+ */
20
+ export declare class SonyAudioAccessorySettings {
21
+ private readonly uuid;
22
+ private readonly storagePath;
23
+ private readonly logger;
24
+ /**
25
+ * Full path of the file with persisted settings
26
+ */
27
+ private filePath;
28
+ private inputs;
29
+ constructor(uuid: string, storagePath: string, logger: Logger);
30
+ static GetInstance(uuid: string, storagePath: string, logger: Logger): Promise<SonyAudioAccessorySettings>;
31
+ private saveSettings;
32
+ private loadSettings;
33
+ private getInput;
34
+ getInputName(id: string, defaultName: string): Promise<string>;
35
+ getInputVisibility(id: string, defaultVisibilityState: 0 | 1): Promise<0 | 1>;
36
+ setInputName(id: string, name: string): Promise<InputSettings>;
37
+ setInputVisibility(id: string, visibilityState: 0 | 1): Promise<InputSettings>;
38
+ /**
39
+ * Gets a key for storing this SonyAudioAccessorySettings in the filesystem, like "SonyAudioAccessorySettings.CC223DE3CEF3.json"
40
+ * @returns
41
+ */
42
+ private persistKey;
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=sonyAudioAccessorySettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sonyAudioAccessorySettings.d.ts","sourceRoot":"","sources":["../src/sonyAudioAccessorySettings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGpC,aAAK,aAAa,GAAG;IACnB;;;SAGK;IACJ,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,qBAAa,0BAA0B;IAQnC,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IATzB;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,MAAM,CAAkB;gBAEb,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM;WAMpB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;YAe5D,YAAY;YAcZ,YAAY;IAc1B,OAAO,CAAC,QAAQ;IAIV,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAQ5C,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,GAAG,CAAC;IAQ5D,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAerC,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,GAAG,CAAC;IAe3D;;;OAGG;IACH,OAAO,CAAC,UAAU;CAInB"}