homebridge-pioneer-avr-2025
Version:
A Pioneer AVR plugin for homebridge. This plugin is designed for Pioneer models that use Telnet Commands (e.g., VSX-922). It may not be compatible with newer models (e.g., VSX-LX304).
86 lines • 3.46 kB
JavaScript
"use strict";
// src/telnet-avr/telnetAvr.ts
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TelnetAvr = void 0;
const connection_1 = require("./connection");
class TelnetAvr {
constructor(pioneerAvr) {
this.onData = () => { };
this.onDisconnectCallbacks = []; // List for onDisconnect callbacks
this.onConnectCallbacks = []; // Callbacks for onConnect
this.connectionReady = false;
this.connectionStateForRunningCallbacks = 'disconnected';
// Use the properties from the passed-in PioneerAvr instance
this.host = pioneerAvr.host;
this.port = pioneerAvr.port;
this.log = pioneerAvr.log;
this.avr = pioneerAvr;
this.device = pioneerAvr.device;
this.platform = pioneerAvr.platform;
this.connection = new connection_1.Connection(this);
this.connection.onDisconnect = () => {
if (this.connectionStateForRunningCallbacks === 'disconnected') {
// this.log.debug('onDisconnect called while already disconnected. Skipping.');
return;
}
this.connectionStateForRunningCallbacks = 'disconnected';
this.connectionReady = false;
this.log.debug('Running onDisconnect callbacks...');
for (const callback of this.onDisconnectCallbacks) {
callback();
}
};
this.connection.onConnect = () => {
if (this.connectionStateForRunningCallbacks === 'connected') {
return;
}
this.connectionStateForRunningCallbacks = 'connected';
this.connectionReady = true;
for (const callback of this.onConnectCallbacks) {
callback();
}
};
}
connect(callback) {
this.connection.connect(() => {
this.connectionReady = true;
if (callback) {
callback();
}
});
}
addOnConnectCallback(callback) {
this.onConnectCallbacks.push(callback);
}
addOnDisconnectCallback(callback) {
this.onDisconnectCallbacks.push(callback);
}
sendMessage(message, callbackChars, callback) {
return __awaiter(this, void 0, void 0, function* () {
return this.connection.sendMessage(message, callbackChars, callback);
});
}
displayChanged(message) {
this.log.debug('[DISPLAY] ' + message);
}
fallbackOnData(error, message, callback) {
this.onData(error, message, callback);
}
onDisconnect() {
this.connection.onDisconnect();
}
onConnect() {
this.connection.onConnect();
}
}
exports.TelnetAvr = TelnetAvr;
//# sourceMappingURL=telnetAvr.js.map