timeline-state-resolver
Version:
Have timeline, control stuff
118 lines • 6.59 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ViscaOverIpDevice = void 0;
const device_1 = require("../../service/device");
const timeline_state_resolver_types_1 = require("timeline-state-resolver-types");
const ConnectionEnums = require("./connection/enums");
const connection_1 = require("./connection");
const visca_1 = require("./connection/commands/visca");
const focusCommand_1 = require("./connection/commands/visca/focusCommand");
const focusModeCommand_1 = require("./connection/commands/visca/focusModeCommand");
const focusOnePushTriggerCommand_1 = require("./connection/commands/visca/focusOnePushTriggerCommand");
const inquiry_1 = require("./connection/commands/inquiry");
const ViscaValueConverter_1 = require("./connection/lib/ViscaValueConverter");
class ViscaOverIpDevice extends device_1.Device {
constructor() {
super(...arguments);
this._terminated = false;
this.converter = new ViscaValueConverter_1.ViscaValueConverter();
this.actions = {
[timeline_state_resolver_types_1.ViscaOverIPActions.RecallPreset]: async (_id, payload) => {
const presetCommand = new visca_1.PresetCommand(ConnectionEnums.PresetOperation.Recall, payload.presetNumber);
return this.safelySendActionCommand(presetCommand);
},
[timeline_state_resolver_types_1.ViscaOverIPActions.StorePreset]: async (_id, payload) => {
const presetCommand = new visca_1.PresetCommand(ConnectionEnums.PresetOperation.Set, payload.presetNumber);
return this.safelySendActionCommand(presetCommand);
},
[timeline_state_resolver_types_1.ViscaOverIPActions.ResetPreset]: async (_id, payload) => {
const presetCommand = new visca_1.PresetCommand(ConnectionEnums.PresetOperation.Reset, payload.presetNumber);
return this.safelySendActionCommand(presetCommand);
},
[timeline_state_resolver_types_1.ViscaOverIPActions.SetPanTiltSpeed]: async (_id, payload) => {
const panTiltCommand = new visca_1.PanTiltDriveCommand(this.converter.mapPanTiltSpeedToViscaDirection(payload.panSpeed, payload.tiltSpeed), this.converter.mapPanTiltSpeedToVisca(payload.panSpeed), this.converter.mapPanTiltSpeedToVisca(payload.tiltSpeed));
return this.safelySendActionCommand(panTiltCommand);
},
[timeline_state_resolver_types_1.ViscaOverIPActions.GetPanTiltPosition]: async (_id) => this.safelyExecuteCommand(async () => this.converter.mapPanTiltPositionFromVisca(await this.connection.sendCommand(new inquiry_1.PanTiltPositionInquiryCommand()))),
[timeline_state_resolver_types_1.ViscaOverIPActions.SetZoomSpeed]: async (_id, payload) => {
const zoomCommand = new visca_1.ZoomCommand(this.converter.mapZoomSpeedToViscaDirection(payload.zoomSpeed), this.converter.mapZoomSpeedToVisca(payload.zoomSpeed));
return this.safelySendActionCommand(zoomCommand);
},
[timeline_state_resolver_types_1.ViscaOverIPActions.GetZoomPosition]: async (_id) => this.safelyExecuteCommand(async () => this.converter.mapZoomPositionFromVisca(await this.connection.sendCommand(new inquiry_1.ZoomPositionInquiryCommand()))),
[timeline_state_resolver_types_1.ViscaOverIPActions.SetFocusSpeed]: async (_id, payload) => {
const focusCommand = new focusCommand_1.FocusCommand(this.converter.mapFocusSpeedToViscaDirection(payload.focusSpeed), this.converter.mapFocusSpeedToVisca(payload.focusSpeed));
return this.safelySendActionCommand(focusCommand);
},
[timeline_state_resolver_types_1.ViscaOverIPActions.SetFocusMode]: async (_id, payload) => {
const focusCommand = new focusModeCommand_1.FocusModeCommand(this.converter.mapFocusModeToVisca(payload.mode));
return this.safelySendActionCommand(focusCommand);
},
[timeline_state_resolver_types_1.ViscaOverIPActions.TriggerOnePushFocus]: async (_id) => {
const focusCommand = new focusOnePushTriggerCommand_1.FocusOnePushTriggerCommand();
return this.safelySendActionCommand(focusCommand);
},
[timeline_state_resolver_types_1.ViscaOverIPActions.GetFocusPosition]: async (_id) => this.safelyExecuteCommand(async () => this.converter.mapFocusPositionFromVisca(await this.connection.sendCommand(new inquiry_1.FocusPositionInquiryCommand()))),
[timeline_state_resolver_types_1.ViscaOverIPActions.GetFocusMode]: async (_id) => this.safelyExecuteCommand(async () => this.converter.mapFocusModeFromVisca(await this.connection.sendCommand(new inquiry_1.FocusModeInquiryCommand()))),
};
}
async init(options) {
this.connection = new connection_1.ViscaDevice(options.host, options.port, true, (...args) => this.context.logger.debug(JSON.stringify(args)));
this.connection.connect();
return true;
}
async terminate() {
this._terminated = true;
this.connection?.disconnect();
}
get connected() {
return false;
}
getStatus() {
return {
statusCode: timeline_state_resolver_types_1.StatusCode.GOOD,
messages: [],
};
}
async safelyExecuteCommand(fun) {
let resultData = undefined;
try {
resultData = await fun();
}
catch {
return {
result: timeline_state_resolver_types_1.ActionExecutionResultCode.Error,
};
}
return {
result: timeline_state_resolver_types_1.ActionExecutionResultCode.Ok,
resultData,
};
}
async safelySendActionCommand(command) {
let resultData = undefined;
try {
resultData = await this.connection?.sendCommand(command);
}
catch {
return {
result: timeline_state_resolver_types_1.ActionExecutionResultCode.Error,
};
}
return {
result: timeline_state_resolver_types_1.ActionExecutionResultCode.Ok,
resultData,
};
}
convertTimelineStateToDeviceState(state) {
return state;
}
diffStates(_oldState, _newState) {
const commands = [];
return commands;
}
async sendCommand() {
return Promise.resolve();
}
}
exports.ViscaOverIpDevice = ViscaOverIpDevice;
//# sourceMappingURL=index.js.map