UNPKG

timeline-state-resolver

Version:
118 lines 6.59 kB
"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