@zaber/motion 4.8.0 → 5.1.0
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.
- package/dist/binding/wasm/zaber-motion-lib.wasm +0 -0
- package/dist/lib/ascii/axis.d.ts +6 -0
- package/dist/lib/ascii/axis.js +12 -0
- package/dist/lib/ascii/axis.js.map +1 -1
- package/dist/lib/ascii/device.d.ts +16 -28
- package/dist/lib/ascii/device.js +20 -48
- package/dist/lib/ascii/device.js.map +1 -1
- package/dist/lib/ascii/device_io.d.ts +39 -4
- package/dist/lib/ascii/device_io.js +73 -2
- package/dist/lib/ascii/device_io.js.map +1 -1
- package/dist/lib/ascii/digital_output_action.d.ts +9 -0
- package/dist/lib/ascii/digital_output_action.js +16 -0
- package/dist/lib/ascii/digital_output_action.js.map +1 -0
- package/dist/lib/ascii/index.d.ts +3 -0
- package/dist/lib/ascii/index.js +8 -2
- package/dist/lib/ascii/index.js.map +1 -1
- package/dist/lib/ascii/pvt.d.ts +32 -0
- package/dist/lib/ascii/pvt.js +82 -0
- package/dist/lib/ascii/pvt.js.map +1 -0
- package/dist/lib/ascii/pvt_sequence.d.ts +5 -4
- package/dist/lib/ascii/pvt_sequence.js +2 -2
- package/dist/lib/ascii/pvt_sequence.js.map +1 -1
- package/dist/lib/ascii/stream.d.ts +5 -10
- package/dist/lib/ascii/stream.js +2 -15
- package/dist/lib/ascii/stream.js.map +1 -1
- package/dist/lib/ascii/streams.d.ts +32 -0
- package/dist/lib/ascii/streams.js +82 -0
- package/dist/lib/ascii/streams.js.map +1 -0
- package/dist/lib/ascii/trigger.d.ts +4 -4
- package/dist/lib/ascii/trigger.js +14 -14
- package/dist/lib/ascii/trigger.js.map +1 -1
- package/dist/lib/ascii/trigger_enabled_state.d.ts +1 -1
- package/dist/lib/ascii/trigger_enabled_state.js.map +1 -1
- package/dist/lib/ascii/trigger_state.d.ts +2 -0
- package/dist/lib/ascii/trigger_state.js.map +1 -1
- package/dist/lib/ascii_ns.d.ts +6 -0
- package/dist/lib/ascii_ns.js +3 -0
- package/dist/lib/ascii_ns.js.map +1 -1
- package/dist/lib/protobufs/main_pb.d.ts +220 -60
- package/dist/lib/protobufs/main_pb.js +1679 -424
- package/dist/lib/protobufs/main_pb.js.map +1 -1
- package/package.json +8 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pvt_sequence.js","sourceRoot":"","sources":["../../../src/ascii/pvt_sequence.ts"],"names":[],"mappings":"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","sourcesContent":["// ==== THIS FILE IS GENERATED FROM A TEMPLATE ==== //\n// ============= DO NOT EDIT DIRECTLY ============= //\n\nimport { Device } from './device';\nimport * as gateway from '../gateway';\nimport { Measurement } from '../measurement';\nimport { PvtBuffer } from './pvt_buffer';\nimport { PvtMode } from './pvt_mode';\nimport { PvtAxisDefinition } from './pvt_axis_definition';\n\n/**\n * A handle for a PVT sequence with this number on the device.\n * PVT sequences provide a way execute or store trajectory\n * consisting of points with defined position, velocity, and time.\n * PVT sequence methods append actions to a queue which executes\n * or stores actions in a first in, first out order.\n */\nexport class PvtSequence {\n /**\n * Device that controls this PVT sequence.\n */\n public get device(): Device {\n return this._device;\n }\n private _device: Device;\n\n /**\n * The number that identifies the PVT sequence on the device.\n */\n public get pvtId(): number {\n return this._pvtId;\n }\n private _pvtId: number;\n\n /**\n * Current mode of the PVT sequence.\n */\n public get mode(): PvtMode {\n return this._retrieveMode();\n }\n\n /**\n * An array of axes definitions the PVT sequence is set up to control.\n */\n public get axes(): PvtAxisDefinition[] {\n return this._retrieveAxes();\n }\n\n constructor(device: Device, pvtId: number) {\n this._device = device;\n this._pvtId = pvtId;\n }\n\n /**\n * Setup the PVT sequence to control the specified axes and to queue actions on the device.\n * Allows use of lockstep axes in a PVT sequence.\n * @param axes Definition of the PVT sequence axes.\n */\n public async setupLiveComposite(\n ...axes: PvtAxisDefinition[]\n ): Promise<void> {\n const request = new gateway.StreamSetupLiveCompositeRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setAxesList(axes.map(PvtAxisDefinition.toProtobuf));\n\n await gateway.callAsync('device/stream_setup_live_composite', request);\n }\n\n /**\n * Setup the PVT sequence to control the specified axes and to queue actions on the device.\n * @param axes Numbers of physical axes to setup the PVT sequence on.\n */\n public async setupLive(\n ...axes: number[]\n ): Promise<void> {\n const request = new gateway.StreamSetupLiveRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setAxesList(axes);\n\n await gateway.callAsync('device/stream_setup_live', request);\n }\n\n /**\n * Setup the PVT sequence to use the specified axes and queue actions into a PVT buffer.\n * Allows use of lockstep axes in a PVT sequence.\n * @param pvtBuffer The PVT buffer to queue actions in.\n * @param axes Definition of the PVT sequence axes.\n */\n public async setupStoreComposite(\n pvtBuffer: PvtBuffer,\n ...axes: PvtAxisDefinition[]\n ): Promise<void> {\n const request = new gateway.StreamSetupStoreCompositeRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setPvtBuffer(pvtBuffer.bufferId);\n request.setAxesList(axes.map(PvtAxisDefinition.toProtobuf));\n\n await gateway.callAsync('device/stream_setup_store_composite', request);\n }\n\n /**\n * Setup the PVT sequence to use the specified axes and queue actions into a PVT buffer.\n * @param pvtBuffer The PVT buffer to queue actions in.\n * @param axes Numbers of physical axes to setup the PVT sequence on.\n */\n public async setupStore(\n pvtBuffer: PvtBuffer,\n ...axes: number[]\n ): Promise<void> {\n const request = new gateway.StreamSetupStoreRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setPvtBuffer(pvtBuffer.bufferId);\n request.setAxesList(axes);\n\n await gateway.callAsync('device/stream_setup_store', request);\n }\n\n /**\n * Append the actions in a PVT buffer to the sequence's queue.\n * @param pvtBuffer The PVT buffer to call.\n */\n public async call(\n pvtBuffer: PvtBuffer\n ): Promise<void> {\n const request = new gateway.StreamCallRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setPvtBuffer(pvtBuffer.bufferId);\n\n await gateway.callAsync('device/stream_call', request);\n }\n\n /**\n * Queues a point with absolute coordinates in the PVT sequence.\n * If some or all velocities are not provided, the sequence calculates the velocities\n * from surrounding points using finite difference.\n * The last point of the sequence must have defined velocity (likely zero).\n * @param positions Positions for the axes to move through, relative to their home positions.\n * @param velocities The axes velocities at the given point.\n * Specify an empty array or null for specific axes to make the sequence calculate the velocity.\n * @param time The duration between the previous point in the sequence and this one.\n */\n public async point(\n positions: Measurement[],\n velocities: (Measurement | null)[],\n time: Measurement\n ): Promise<void> {\n const request = new gateway.PvtPointRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setType(gateway.PvtPointRequest.Type.ABS);\n request.setPositionsList(positions.map(Measurement.toProtobuf));\n request.setVelocitiesList(velocities.map(Measurement.toProtobuf));\n request.setTime(Measurement.toProtobuf(time));\n\n await gateway.callAsync('device/stream_point', request);\n }\n\n /**\n * Queues a point with coordinates relative to the previous point in the PVT sequence.\n * If some or all velocities are not provided, the sequence calculates the velocities\n * from surrounding points using finite difference.\n * The last point of the sequence must have defined velocity (likely zero).\n * @param positions Positions for the axes to move through, relative to the previous point.\n * @param velocities The axes velocities at the given point.\n * Specify an empty array or null for specific axes to make the sequence calculate the velocity.\n * @param time The duration between the previous point in the sequence and this one.\n */\n public async pointRelative(\n positions: Measurement[],\n velocities: (Measurement | null)[],\n time: Measurement\n ): Promise<void> {\n const request = new gateway.PvtPointRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setType(gateway.PvtPointRequest.Type.REL);\n request.setPositionsList(positions.map(Measurement.toProtobuf));\n request.setVelocitiesList(velocities.map(Measurement.toProtobuf));\n request.setTime(Measurement.toProtobuf(time));\n\n await gateway.callAsync('device/stream_point', request);\n }\n\n /**\n * Set the value of a digital output channel.\n * @param channelNumber The number of the digital output channel.\n * Channel numbers are numbered from one.\n * @param value The value to set the channel to.\n */\n public async setDigitalOutput(\n channelNumber: number,\n value: boolean\n ): Promise<void> {\n const request = new gateway.StreamSetDigitalOutputRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setChannelNumber(channelNumber);\n request.setValue(value);\n\n await gateway.callAsync('device/stream_set_digital_output', request);\n }\n\n /**\n * Set the value of an analog output channel.\n * @param channelNumber The number of the analog output channel.\n * Channel numbers are numbered from one.\n * @param value The value to set the channel to, in Volts.\n */\n public async setAnalogOutput(\n channelNumber: number,\n value: number\n ): Promise<void> {\n const request = new gateway.StreamSetAnalogOutputRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setChannelNumber(channelNumber);\n request.setValue(value);\n\n await gateway.callAsync('device/stream_set_analog_output', request);\n }\n\n /**\n * Sets values for all digital output channels.\n * @param values True to set the output channel to conducting and false to turn it off.\n */\n public async setAllDigitalOutputs(\n values: boolean[]\n ): Promise<void> {\n const request = new gateway.StreamSetAllDigitalOutputsRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setValuesList(values);\n\n await gateway.callAsync('device/stream_set_all_digital_outputs', request);\n }\n\n /**\n * Sets values for all analog output channels.\n * @param values The values to set the output channels to, in Volts.\n */\n public async setAllAnalogOutputs(\n values: number[]\n ): Promise<void> {\n const request = new gateway.StreamSetAllAnalogOutputsRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setValuesList(values);\n\n await gateway.callAsync('device/stream_set_all_analog_outputs', request);\n }\n\n /**\n * Waits until the live PVT sequence executes all queued actions.\n * @param [options.throwErrorOnFault=true] Determines whether to throw error when fault is observed.\n */\n public async waitUntilIdle(\n options: PvtSequence.WaitUntilIdleOptions = {}\n ): Promise<void> {\n const {\n throwErrorOnFault = true,\n } = options;\n const request = new gateway.StreamWaitUntilIdleRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setThrowErrorOnFault(throwErrorOnFault);\n\n await gateway.callAsync('device/stream_wait_until_idle', request);\n }\n\n /**\n * Cork the front of the PVT sequences's action queue, blocking execution.\n * Execution resumes upon uncorking the queue, or when the number of queued actions reaches its limit.\n * Corking eliminates discontinuities in motion due to subsequent PVT commands reaching the device late.\n * You can only cork an idle live PVT sequence.\n */\n public async cork(): Promise<void> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n await gateway.callAsync('device/stream_cork', request);\n }\n\n /**\n * Uncork the front of the queue, unblocking command execution.\n * You can only uncork an idle live PVT sequence that is corked.\n */\n public async uncork(): Promise<void> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n await gateway.callAsync('device/stream_uncork', request);\n }\n\n /**\n * Returns a boolean value indicating whether the live PVT sequence is executing a queued action.\n * @returns True if the PVT sequence is executing a queued action.\n */\n public async isBusy(): Promise<boolean> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n const response = await gateway.callAsync<gateway.BoolResponse>(\n 'device/stream_is_busy',\n request,\n gateway.BoolResponse);\n return response.getValue();\n }\n\n /**\n * Returns a string which represents the PVT sequence.\n * @returns String which represents the PVT sequence.\n */\n public toString(): string {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n const response = gateway.callSync<gateway.StringResponse>(\n 'device/stream_to_string',\n request,\n gateway.StringResponse);\n return response.getValue();\n }\n\n /**\n * Disables the PVT sequence.\n * If the PVT sequence is not setup, this command does nothing.\n * Once disabled, the PVT sequence will no longer accept PVT commands.\n * The PVT sequence will process the rest of the commands in the queue until it is empty.\n */\n public async disable(): Promise<void> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n await gateway.callAsync('device/stream_disable', request);\n }\n\n /**\n * Sends a generic ASCII command to the PVT sequence.\n * Keeps resending the command while the device rejects with AGAIN reason.\n * @param command Command and its parameters.\n */\n public async genericCommand(\n command: string\n ): Promise<void> {\n const request = new gateway.StreamGenericCommandRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setCommand(command);\n\n await gateway.callAsync('device/stream_generic_command', request);\n }\n\n /**\n * Sends a batch of generic ASCII commands to the PVT sequence.\n * Keeps resending command while the device rejects with AGAIN reason.\n * The batch is atomic in terms of thread safety.\n * @param batch Array of commands.\n */\n public async genericCommandBatch(\n batch: string[]\n ): Promise<void> {\n const request = new gateway.StreamGenericCommandBatchRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setBatchList(batch);\n\n await gateway.callAsync('device/stream_generic_command_batch', request);\n }\n\n /**\n * Queries the PVT sequence status from the device\n * and returns boolean indicating whether the PVT sequence is disabled.\n * Useful to determine if execution was interrupted by other movements.\n * @returns True if the PVT sequence is disabled.\n */\n public async checkDisabled(): Promise<boolean> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n const response = await gateway.callAsync<gateway.BoolResponse>(\n 'device/stream_check_disabled',\n request,\n gateway.BoolResponse);\n return response.getValue();\n }\n\n /**\n * Makes the PVT sequence throw PvtDiscontinuityException when it encounters discontinuities (ND warning flag).\n */\n public treatDiscontinuitiesAsError(): void {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n gateway.callSync('device/stream_treat_discontinuities', request);\n }\n\n /**\n * Prevents PvtDiscontinuityException as a result of expected discontinuity when resuming the sequence.\n */\n public ignoreCurrentDiscontinuity(): void {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n gateway.callSync('device/stream_ignore_discontinuity', request);\n }\n\n /**\n * Gets the axes of the PVT sequence.\n * @returns An array of axis numbers of the axes the PVT sequence is set up to control.\n */\n private _retrieveAxes(): PvtAxisDefinition[] {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n const response = gateway.callSync<gateway.StreamGetAxesResponse>(\n 'device/stream_get_axes',\n request,\n gateway.StreamGetAxesResponse);\n return response.getAxesList().map(a => PvtAxisDefinition.fromProtobuf(a.toObject()));\n }\n\n /**\n * Get the mode of the PVT sequence.\n * @returns Mode of the PVT sequence.\n */\n private _retrieveMode(): PvtMode {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n const response = gateway.callSync<gateway.IntResponse>(\n 'device/stream_get_mode',\n request,\n gateway.IntResponse);\n return response.getValue();\n }\n}\n\nnamespace PvtSequence {\n export interface WaitUntilIdleOptions {\n throwErrorOnFault?: boolean;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pvt_sequence.js","sourceRoot":"","sources":["../../../src/ascii/pvt_sequence.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,sDAAsD;;;;;;;;;;;;;;;;;;;;;;;;;;AAGtD,oDAAsC;AACtC,gDAA6C;AAG7C,+DAA0D;AAG1D;;;;;;GAMG;AACH,MAAa,WAAW;IACtB;;OAEG;IACH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAGD;;OAEG;IACH,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAGD;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED,YAAY,MAAc,EAAE,KAAa;QACvC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,kBAAkB,CAC7B,GAAG,IAAyB;QAE5B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,+BAA+B,EAAE,CAAC;QAC9D,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,uCAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;QAE5D,MAAM,OAAO,CAAC,SAAS,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,SAAS,CACpB,GAAG,IAAc;QAEjB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;QACrD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE1B,MAAM,OAAO,CAAC,SAAS,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,mBAAmB,CAC9B,SAAoB,EACpB,GAAG,IAAyB;QAE5B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,gCAAgC,EAAE,CAAC;QAC/D,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,uCAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;QAE5D,MAAM,OAAO,CAAC,SAAS,CAAC,qCAAqC,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,UAAU,CACrB,SAAoB,EACpB,GAAG,IAAc;QAEjB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;QACtD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE1B,MAAM,OAAO,CAAC,SAAS,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,IAAI,CACf,SAAoB;QAEpB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAChD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEzC,MAAM,OAAO,CAAC,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;;;OASG;IACI,KAAK,CAAC,KAAK,CAChB,SAAwB,EACxB,UAAkC,EAClC,IAAiB;QAEjB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC9C,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAW,CAAC,UAAU,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,yBAAW,CAAC,UAAU,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,OAAO,CAAC,yBAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9C,MAAM,OAAO,CAAC,SAAS,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;;;OASG;IACI,KAAK,CAAC,aAAa,CACxB,SAAwB,EACxB,UAAkC,EAClC,IAAiB;QAEjB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC9C,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAW,CAAC,UAAU,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,yBAAW,CAAC,UAAU,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,OAAO,CAAC,yBAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9C,MAAM,OAAO,CAAC,SAAS,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,gBAAgB,CAC3B,aAAqB,EACrB,KAA0B;QAE1B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,6BAA6B,EAAE,CAAC;QAC5D,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACxC,OAAO,CAAC,QAAQ,CAAC,KAAY,CAAC,CAAC;QAE/B,MAAM,OAAO,CAAC,SAAS,CAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,eAAe,CAC1B,aAAqB,EACrB,KAAa;QAEb,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,4BAA4B,EAAE,CAAC;QAC3D,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAExB,MAAM,OAAO,CAAC,SAAS,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,oBAAoB,CAC/B,MAA6B;QAE7B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,iCAAiC,EAAE,CAAC;QAChE,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,CAAC,aAAa,CAAC,MAAa,CAAC,CAAC;QAErC,MAAM,OAAO,CAAC,SAAS,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,mBAAmB,CAC9B,MAAgB;QAEhB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,gCAAgC,EAAE,CAAC;QAC/D,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE9B,MAAM,OAAO,CAAC,SAAS,CAAC,sCAAsC,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,aAAa,CACxB,UAA4C,EAAE;QAE9C,MAAM,EACJ,iBAAiB,GAAG,IAAI,GACzB,GAAG,OAAO,CAAC;QACZ,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;QACzD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QAEhD,MAAM,OAAO,CAAC,SAAS,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,IAAI;QACf,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACjD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAErB,MAAM,OAAO,CAAC,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,MAAM;QACjB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACjD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAErB,MAAM,OAAO,CAAC,SAAS,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,MAAM;QACjB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACjD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAErB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,CACtC,uBAAuB,EACvB,OAAO,EACP,OAAO,CAAC,YAAY,CAAC,CAAC;QACxB,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACI,QAAQ;QACb,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACjD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAErB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAC/B,yBAAyB,EACzB,OAAO,EACP,OAAO,CAAC,cAAc,CAAC,CAAC;QAC1B,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACjD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAErB,MAAM,OAAO,CAAC,SAAS,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,cAAc,CACzB,OAAe;QAEf,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,2BAA2B,EAAE,CAAC;QAC1D,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAE5B,MAAM,OAAO,CAAC,SAAS,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,mBAAmB,CAC9B,KAAe;QAEf,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,gCAAgC,EAAE,CAAC;QAC/D,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE5B,MAAM,OAAO,CAAC,SAAS,CAAC,qCAAqC,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,aAAa;QACxB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACjD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAErB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,CACtC,8BAA8B,EAC9B,OAAO,EACP,OAAO,CAAC,YAAY,CAAC,CAAC;QACxB,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,2BAA2B;QAChC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACjD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAErB,OAAO,CAAC,QAAQ,CAAC,qCAAqC,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACI,0BAA0B;QAC/B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACjD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAErB,OAAO,CAAC,QAAQ,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACK,aAAa;QACnB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACjD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAErB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAC/B,wBAAwB,EACxB,OAAO,EACP,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACjC,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,uCAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC;IAED;;;OAGG;IACK,aAAa;QACnB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACjD,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAErB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAC/B,wBAAwB,EACxB,OAAO,EACP,OAAO,CAAC,WAAW,CAAC,CAAC;QACvB,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;CACF;AAjeD,kCAieC","sourcesContent":["// ==== THIS FILE IS GENERATED FROM A TEMPLATE ==== //\n// ============= DO NOT EDIT DIRECTLY ============= //\n\nimport { Device } from './device';\nimport * as gateway from '../gateway';\nimport { Measurement } from '../measurement';\nimport { PvtBuffer } from './pvt_buffer';\nimport { PvtMode } from './pvt_mode';\nimport { PvtAxisDefinition } from './pvt_axis_definition';\nimport { DigitalOutputAction } from './digital_output_action';\n\n/**\n * A handle for a PVT sequence with this number on the device.\n * PVT sequences provide a way execute or store trajectory\n * consisting of points with defined position, velocity, and time.\n * PVT sequence methods append actions to a queue which executes\n * or stores actions in a first in, first out order.\n */\nexport class PvtSequence {\n /**\n * Device that controls this PVT sequence.\n */\n public get device(): Device {\n return this._device;\n }\n private _device: Device;\n\n /**\n * The number that identifies the PVT sequence on the device.\n */\n public get pvtId(): number {\n return this._pvtId;\n }\n private _pvtId: number;\n\n /**\n * Current mode of the PVT sequence.\n */\n public get mode(): PvtMode {\n return this._retrieveMode();\n }\n\n /**\n * An array of axes definitions the PVT sequence is set up to control.\n */\n public get axes(): PvtAxisDefinition[] {\n return this._retrieveAxes();\n }\n\n constructor(device: Device, pvtId: number) {\n this._device = device;\n this._pvtId = pvtId;\n }\n\n /**\n * Setup the PVT sequence to control the specified axes and to queue actions on the device.\n * Allows use of lockstep axes in a PVT sequence.\n * @param axes Definition of the PVT sequence axes.\n */\n public async setupLiveComposite(\n ...axes: PvtAxisDefinition[]\n ): Promise<void> {\n const request = new gateway.StreamSetupLiveCompositeRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setAxesList(axes.map(PvtAxisDefinition.toProtobuf));\n\n await gateway.callAsync('device/stream_setup_live_composite', request);\n }\n\n /**\n * Setup the PVT sequence to control the specified axes and to queue actions on the device.\n * @param axes Numbers of physical axes to setup the PVT sequence on.\n */\n public async setupLive(\n ...axes: number[]\n ): Promise<void> {\n const request = new gateway.StreamSetupLiveRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setAxesList(axes);\n\n await gateway.callAsync('device/stream_setup_live', request);\n }\n\n /**\n * Setup the PVT sequence to use the specified axes and queue actions into a PVT buffer.\n * Allows use of lockstep axes in a PVT sequence.\n * @param pvtBuffer The PVT buffer to queue actions in.\n * @param axes Definition of the PVT sequence axes.\n */\n public async setupStoreComposite(\n pvtBuffer: PvtBuffer,\n ...axes: PvtAxisDefinition[]\n ): Promise<void> {\n const request = new gateway.StreamSetupStoreCompositeRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setPvtBuffer(pvtBuffer.bufferId);\n request.setAxesList(axes.map(PvtAxisDefinition.toProtobuf));\n\n await gateway.callAsync('device/stream_setup_store_composite', request);\n }\n\n /**\n * Setup the PVT sequence to use the specified axes and queue actions into a PVT buffer.\n * @param pvtBuffer The PVT buffer to queue actions in.\n * @param axes Numbers of physical axes to setup the PVT sequence on.\n */\n public async setupStore(\n pvtBuffer: PvtBuffer,\n ...axes: number[]\n ): Promise<void> {\n const request = new gateway.StreamSetupStoreRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setPvtBuffer(pvtBuffer.bufferId);\n request.setAxesList(axes);\n\n await gateway.callAsync('device/stream_setup_store', request);\n }\n\n /**\n * Append the actions in a PVT buffer to the sequence's queue.\n * @param pvtBuffer The PVT buffer to call.\n */\n public async call(\n pvtBuffer: PvtBuffer\n ): Promise<void> {\n const request = new gateway.StreamCallRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setPvtBuffer(pvtBuffer.bufferId);\n\n await gateway.callAsync('device/stream_call', request);\n }\n\n /**\n * Queues a point with absolute coordinates in the PVT sequence.\n * If some or all velocities are not provided, the sequence calculates the velocities\n * from surrounding points using finite difference.\n * The last point of the sequence must have defined velocity (likely zero).\n * @param positions Positions for the axes to move through, relative to their home positions.\n * @param velocities The axes velocities at the given point.\n * Specify an empty array or null for specific axes to make the sequence calculate the velocity.\n * @param time The duration between the previous point in the sequence and this one.\n */\n public async point(\n positions: Measurement[],\n velocities: (Measurement | null)[],\n time: Measurement\n ): Promise<void> {\n const request = new gateway.PvtPointRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setType(gateway.PvtPointRequest.Type.ABS);\n request.setPositionsList(positions.map(Measurement.toProtobuf));\n request.setVelocitiesList(velocities.map(Measurement.toProtobuf));\n request.setTime(Measurement.toProtobuf(time));\n\n await gateway.callAsync('device/stream_point', request);\n }\n\n /**\n * Queues a point with coordinates relative to the previous point in the PVT sequence.\n * If some or all velocities are not provided, the sequence calculates the velocities\n * from surrounding points using finite difference.\n * The last point of the sequence must have defined velocity (likely zero).\n * @param positions Positions for the axes to move through, relative to the previous point.\n * @param velocities The axes velocities at the given point.\n * Specify an empty array or null for specific axes to make the sequence calculate the velocity.\n * @param time The duration between the previous point in the sequence and this one.\n */\n public async pointRelative(\n positions: Measurement[],\n velocities: (Measurement | null)[],\n time: Measurement\n ): Promise<void> {\n const request = new gateway.PvtPointRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setType(gateway.PvtPointRequest.Type.REL);\n request.setPositionsList(positions.map(Measurement.toProtobuf));\n request.setVelocitiesList(velocities.map(Measurement.toProtobuf));\n request.setTime(Measurement.toProtobuf(time));\n\n await gateway.callAsync('device/stream_point', request);\n }\n\n /**\n * Set the value of a digital output channel.\n * @param channelNumber The number of the digital output channel.\n * Channel numbers are numbered from one.\n * @param value The type of action to perform on the channel.\n */\n public async setDigitalOutput(\n channelNumber: number,\n value: DigitalOutputAction\n ): Promise<void> {\n const request = new gateway.StreamSetDigitalOutputRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setChannelNumber(channelNumber);\n request.setValue(value as any);\n\n await gateway.callAsync('device/stream_set_digital_output', request);\n }\n\n /**\n * Set the value of an analog output channel.\n * @param channelNumber The number of the analog output channel.\n * Channel numbers are numbered from one.\n * @param value The value to set the channel to, in Volts.\n */\n public async setAnalogOutput(\n channelNumber: number,\n value: number\n ): Promise<void> {\n const request = new gateway.StreamSetAnalogOutputRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setChannelNumber(channelNumber);\n request.setValue(value);\n\n await gateway.callAsync('device/stream_set_analog_output', request);\n }\n\n /**\n * Sets values for all digital output channels.\n * @param values The type of action to perform on the channel.\n */\n public async setAllDigitalOutputs(\n values: DigitalOutputAction[]\n ): Promise<void> {\n const request = new gateway.StreamSetAllDigitalOutputsRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setValuesList(values as any);\n\n await gateway.callAsync('device/stream_set_all_digital_outputs', request);\n }\n\n /**\n * Sets values for all analog output channels.\n * @param values The values to set the output channels to, in Volts.\n */\n public async setAllAnalogOutputs(\n values: number[]\n ): Promise<void> {\n const request = new gateway.StreamSetAllAnalogOutputsRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setValuesList(values);\n\n await gateway.callAsync('device/stream_set_all_analog_outputs', request);\n }\n\n /**\n * Waits until the live PVT sequence executes all queued actions.\n * @param [options.throwErrorOnFault=true] Determines whether to throw error when fault is observed.\n */\n public async waitUntilIdle(\n options: PvtSequence.WaitUntilIdleOptions = {}\n ): Promise<void> {\n const {\n throwErrorOnFault = true,\n } = options;\n const request = new gateway.StreamWaitUntilIdleRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setThrowErrorOnFault(throwErrorOnFault);\n\n await gateway.callAsync('device/stream_wait_until_idle', request);\n }\n\n /**\n * Cork the front of the PVT sequences's action queue, blocking execution.\n * Execution resumes upon uncorking the queue, or when the number of queued actions reaches its limit.\n * Corking eliminates discontinuities in motion due to subsequent PVT commands reaching the device late.\n * You can only cork an idle live PVT sequence.\n */\n public async cork(): Promise<void> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n await gateway.callAsync('device/stream_cork', request);\n }\n\n /**\n * Uncork the front of the queue, unblocking command execution.\n * You can only uncork an idle live PVT sequence that is corked.\n */\n public async uncork(): Promise<void> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n await gateway.callAsync('device/stream_uncork', request);\n }\n\n /**\n * Returns a boolean value indicating whether the live PVT sequence is executing a queued action.\n * @returns True if the PVT sequence is executing a queued action.\n */\n public async isBusy(): Promise<boolean> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n const response = await gateway.callAsync<gateway.BoolResponse>(\n 'device/stream_is_busy',\n request,\n gateway.BoolResponse);\n return response.getValue();\n }\n\n /**\n * Returns a string which represents the PVT sequence.\n * @returns String which represents the PVT sequence.\n */\n public toString(): string {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n const response = gateway.callSync<gateway.StringResponse>(\n 'device/stream_to_string',\n request,\n gateway.StringResponse);\n return response.getValue();\n }\n\n /**\n * Disables the PVT sequence.\n * If the PVT sequence is not setup, this command does nothing.\n * Once disabled, the PVT sequence will no longer accept PVT commands.\n * The PVT sequence will process the rest of the commands in the queue until it is empty.\n */\n public async disable(): Promise<void> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n await gateway.callAsync('device/stream_disable', request);\n }\n\n /**\n * Sends a generic ASCII command to the PVT sequence.\n * Keeps resending the command while the device rejects with AGAIN reason.\n * @param command Command and its parameters.\n */\n public async genericCommand(\n command: string\n ): Promise<void> {\n const request = new gateway.StreamGenericCommandRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setCommand(command);\n\n await gateway.callAsync('device/stream_generic_command', request);\n }\n\n /**\n * Sends a batch of generic ASCII commands to the PVT sequence.\n * Keeps resending command while the device rejects with AGAIN reason.\n * The batch is atomic in terms of thread safety.\n * @param batch Array of commands.\n */\n public async genericCommandBatch(\n batch: string[]\n ): Promise<void> {\n const request = new gateway.StreamGenericCommandBatchRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n request.setBatchList(batch);\n\n await gateway.callAsync('device/stream_generic_command_batch', request);\n }\n\n /**\n * Queries the PVT sequence status from the device\n * and returns boolean indicating whether the PVT sequence is disabled.\n * Useful to determine if execution was interrupted by other movements.\n * @returns True if the PVT sequence is disabled.\n */\n public async checkDisabled(): Promise<boolean> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n const response = await gateway.callAsync<gateway.BoolResponse>(\n 'device/stream_check_disabled',\n request,\n gateway.BoolResponse);\n return response.getValue();\n }\n\n /**\n * Makes the PVT sequence throw PvtDiscontinuityException when it encounters discontinuities (ND warning flag).\n */\n public treatDiscontinuitiesAsError(): void {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n gateway.callSync('device/stream_treat_discontinuities', request);\n }\n\n /**\n * Prevents PvtDiscontinuityException as a result of expected discontinuity when resuming the sequence.\n */\n public ignoreCurrentDiscontinuity(): void {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n gateway.callSync('device/stream_ignore_discontinuity', request);\n }\n\n /**\n * Gets the axes of the PVT sequence.\n * @returns An array of axis numbers of the axes the PVT sequence is set up to control.\n */\n private _retrieveAxes(): PvtAxisDefinition[] {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n const response = gateway.callSync<gateway.StreamGetAxesResponse>(\n 'device/stream_get_axes',\n request,\n gateway.StreamGetAxesResponse);\n return response.getAxesList().map(a => PvtAxisDefinition.fromProtobuf(a.toObject()));\n }\n\n /**\n * Get the mode of the PVT sequence.\n * @returns Mode of the PVT sequence.\n */\n private _retrieveMode(): PvtMode {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.pvtId);\n request.setPvt(true);\n\n const response = gateway.callSync<gateway.IntResponse>(\n 'device/stream_get_mode',\n request,\n gateway.IntResponse);\n return response.getValue();\n }\n}\n\nnamespace PvtSequence {\n export interface WaitUntilIdleOptions {\n throwErrorOnFault?: boolean;\n }\n}\n"]}
|
|
@@ -5,6 +5,7 @@ import { Measurement } from '../measurement';
|
|
|
5
5
|
import { StreamBuffer } from './stream_buffer';
|
|
6
6
|
import { StreamMode } from './stream_mode';
|
|
7
7
|
import { StreamAxisDefinition } from './stream_axis_definition';
|
|
8
|
+
import { DigitalOutputAction } from './digital_output_action';
|
|
8
9
|
/**
|
|
9
10
|
* A handle for a stream with this number on the device.
|
|
10
11
|
* Streams provide a way to execute or store a sequence of actions.
|
|
@@ -234,9 +235,9 @@ export declare class Stream {
|
|
|
234
235
|
* Set the value of a digital output channel.
|
|
235
236
|
* @param channelNumber The number of the digital output channel.
|
|
236
237
|
* Channel numbers are numbered from one.
|
|
237
|
-
* @param value The
|
|
238
|
+
* @param value The type of action to perform on the channel.
|
|
238
239
|
*/
|
|
239
|
-
setDigitalOutput(channelNumber: number, value:
|
|
240
|
+
setDigitalOutput(channelNumber: number, value: DigitalOutputAction): Promise<void>;
|
|
240
241
|
/**
|
|
241
242
|
* Set the value of an analog output channel.
|
|
242
243
|
* @param channelNumber The number of the analog output channel.
|
|
@@ -244,17 +245,11 @@ export declare class Stream {
|
|
|
244
245
|
* @param value The value to set the channel to, in Volts.
|
|
245
246
|
*/
|
|
246
247
|
setAnalogOutput(channelNumber: number, value: number): Promise<void>;
|
|
247
|
-
/**
|
|
248
|
-
* Toggle the value of a digital output channel.
|
|
249
|
-
* @param channelNumber The number of the digital output channel.
|
|
250
|
-
* Channel numbers are numbered from one.
|
|
251
|
-
*/
|
|
252
|
-
toggleDigitalOutput(channelNumber: number): Promise<void>;
|
|
253
248
|
/**
|
|
254
249
|
* Sets values for all digital output channels.
|
|
255
|
-
* @param values
|
|
250
|
+
* @param values The type of action to perform on the channel.
|
|
256
251
|
*/
|
|
257
|
-
setAllDigitalOutputs(values:
|
|
252
|
+
setAllDigitalOutputs(values: DigitalOutputAction[]): Promise<void>;
|
|
258
253
|
/**
|
|
259
254
|
* Sets values for all analog output channels.
|
|
260
255
|
* @param values The values to set the output channels to, in Volts.
|
package/dist/lib/ascii/stream.js
CHANGED
|
@@ -484,7 +484,7 @@ class Stream {
|
|
|
484
484
|
* Set the value of a digital output channel.
|
|
485
485
|
* @param channelNumber The number of the digital output channel.
|
|
486
486
|
* Channel numbers are numbered from one.
|
|
487
|
-
* @param value The
|
|
487
|
+
* @param value The type of action to perform on the channel.
|
|
488
488
|
*/
|
|
489
489
|
async setDigitalOutput(channelNumber, value) {
|
|
490
490
|
const request = new gateway.StreamSetDigitalOutputRequest();
|
|
@@ -510,22 +510,9 @@ class Stream {
|
|
|
510
510
|
request.setValue(value);
|
|
511
511
|
await gateway.callAsync('device/stream_set_analog_output', request);
|
|
512
512
|
}
|
|
513
|
-
/**
|
|
514
|
-
* Toggle the value of a digital output channel.
|
|
515
|
-
* @param channelNumber The number of the digital output channel.
|
|
516
|
-
* Channel numbers are numbered from one.
|
|
517
|
-
*/
|
|
518
|
-
async toggleDigitalOutput(channelNumber) {
|
|
519
|
-
const request = new gateway.StreamToggleDigitalOutputRequest();
|
|
520
|
-
request.setInterfaceId(this.device.connection.interfaceId);
|
|
521
|
-
request.setDevice(this.device.deviceAddress);
|
|
522
|
-
request.setStreamId(this.streamId);
|
|
523
|
-
request.setChannelNumber(channelNumber);
|
|
524
|
-
await gateway.callAsync('device/stream_toggle_digital_output', request);
|
|
525
|
-
}
|
|
526
513
|
/**
|
|
527
514
|
* Sets values for all digital output channels.
|
|
528
|
-
* @param values
|
|
515
|
+
* @param values The type of action to perform on the channel.
|
|
529
516
|
*/
|
|
530
517
|
async setAllDigitalOutputs(values) {
|
|
531
518
|
const request = new gateway.StreamSetAllDigitalOutputsRequest();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../src/ascii/stream.ts"],"names":[],"mappings":"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","sourcesContent":["// ==== THIS FILE IS GENERATED FROM A TEMPLATE ==== //\n// ============= DO NOT EDIT DIRECTLY ============= //\n\nimport { Device } from './device';\nimport { Time, Native, Acceleration, AngularAcceleration, AngularVelocity, Velocity, Units } from '../units';\nimport { RotationDirection } from '../rotation_direction';\nimport * as gateway from '../gateway';\nimport { Measurement } from '../measurement';\nimport { StreamBuffer } from './stream_buffer';\nimport { StreamMode } from './stream_mode';\nimport { StreamAxisDefinition } from './stream_axis_definition';\n\n/**\n * A handle for a stream with this number on the device.\n * Streams provide a way to execute or store a sequence of actions.\n * Stream methods append actions to a queue which executes or stores actions in a first in, first out order.\n */\nexport class Stream {\n /**\n * Device that controls this stream.\n */\n public get device(): Device {\n return this._device;\n }\n private _device: Device;\n\n /**\n * The number that identifies the stream on the device.\n */\n public get streamId(): number {\n return this._streamId;\n }\n private _streamId: number;\n\n /**\n * Current mode of the stream.\n */\n public get mode(): StreamMode {\n return this._retrieveMode();\n }\n\n /**\n * An array of axes definitions the stream is set up to control.\n */\n public get axes(): StreamAxisDefinition[] {\n return this._retrieveAxes();\n }\n\n constructor(device: Device, streamId: number) {\n this._device = device;\n this._streamId = streamId;\n }\n\n /**\n * Setup the stream to control the specified axes and to queue actions on the device.\n * Allows use of lockstep axes in a stream.\n * @param axes Definition of the stream axes.\n */\n public async setupLiveComposite(\n ...axes: StreamAxisDefinition[]\n ): Promise<void> {\n const request = new gateway.StreamSetupLiveCompositeRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setAxesList(axes.map(StreamAxisDefinition.toProtobuf));\n\n await gateway.callAsync('device/stream_setup_live_composite', request);\n }\n\n /**\n * Setup the stream to control the specified axes and to queue actions on the device.\n * @param axes Numbers of physical axes to setup the stream on.\n */\n public async setupLive(\n ...axes: number[]\n ): Promise<void> {\n const request = new gateway.StreamSetupLiveRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setAxesList(axes);\n\n await gateway.callAsync('device/stream_setup_live', request);\n }\n\n /**\n * Setup the stream to control the specified axes and queue actions into a stream buffer.\n * Allows use of lockstep axes in a stream.\n * @param streamBuffer The stream buffer to queue actions in.\n * @param axes Definition of the stream axes.\n */\n public async setupStoreComposite(\n streamBuffer: StreamBuffer,\n ...axes: StreamAxisDefinition[]\n ): Promise<void> {\n const request = new gateway.StreamSetupStoreCompositeRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setStreamBuffer(streamBuffer.bufferId);\n request.setAxesList(axes.map(StreamAxisDefinition.toProtobuf));\n\n await gateway.callAsync('device/stream_setup_store_composite', request);\n }\n\n /**\n * Setup the stream to control the specified axes and queue actions into a stream buffer.\n * @param streamBuffer The stream buffer to queue actions in.\n * @param axes Numbers of physical axes to setup the stream on.\n */\n public async setupStore(\n streamBuffer: StreamBuffer,\n ...axes: number[]\n ): Promise<void> {\n const request = new gateway.StreamSetupStoreRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setStreamBuffer(streamBuffer.bufferId);\n request.setAxesList(axes);\n\n await gateway.callAsync('device/stream_setup_store', request);\n }\n\n /**\n * Setup the stream to use a specified number of axes, and to queue actions in a stream buffer.\n * Afterwards, you may call the resulting stream buffer on arbitrary axes.\n * This mode does not allow for unit conversions.\n * @param streamBuffer The stream buffer to queue actions in.\n * @param axesCount The number of axes in the stream.\n */\n public async setupStoreArbitraryAxes(\n streamBuffer: StreamBuffer,\n axesCount: number\n ): Promise<void> {\n const request = new gateway.StreamSetupStoreArbitraryAxesRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setStreamBuffer(streamBuffer.bufferId);\n request.setAxesCount(axesCount);\n\n await gateway.callAsync('device/stream_setup_store_arbitrary_axes', request);\n }\n\n /**\n * Append the actions in a stream buffer to the queue.\n * @param streamBuffer The stream buffer to call.\n */\n public async call(\n streamBuffer: StreamBuffer\n ): Promise<void> {\n const request = new gateway.StreamCallRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setStreamBuffer(streamBuffer.bufferId);\n\n await gateway.callAsync('device/stream_call', request);\n }\n\n /**\n * Queue an absolute line movement in the stream.\n * @param endpoint Positions for the axes to move to, relative to their home positions.\n */\n public async lineAbsolute(\n ...endpoint: Measurement[]\n ): Promise<void> {\n const request = new gateway.StreamLineRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamLineRequest.Type.ABS);\n request.setEndpointList(endpoint.map(Measurement.toProtobuf));\n\n await gateway.callAsync('device/stream_line', request);\n }\n\n /**\n * Queue a relative line movement in the stream.\n * @param endpoint Positions for the axes to move to, relative to their positions before movement.\n */\n public async lineRelative(\n ...endpoint: Measurement[]\n ): Promise<void> {\n const request = new gateway.StreamLineRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamLineRequest.Type.REL);\n request.setEndpointList(endpoint.map(Measurement.toProtobuf));\n\n await gateway.callAsync('device/stream_line', request);\n }\n\n /**\n * Queue an absolute line movement in the stream, targeting a subset of the stream axes.\n * Requires at least Firmware 7.11.\n * @param targetAxesIndices Indices of the axes in the stream the movement targets.\n * Refers to the axes provided during the stream setup or further execution.\n * Indices are zero-based.\n * @param endpoint Positions for the axes to move to, relative to their home positions.\n */\n public async lineAbsoluteOn(\n targetAxesIndices: number[],\n endpoint: Measurement[]\n ): Promise<void> {\n const request = new gateway.StreamLineRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamLineRequest.Type.ABS);\n request.setTargetAxesIndicesList(targetAxesIndices);\n request.setEndpointList(endpoint.map(Measurement.toProtobuf));\n\n await gateway.callAsync('device/stream_line', request);\n }\n\n /**\n * Queue a relative line movement in the stream, targeting a subset of the stream axes.\n * Requires at least Firmware 7.11.\n * @param targetAxesIndices Indices of the axes in the stream the movement targets.\n * Refers to the axes provided during the stream setup or further execution.\n * Indices are zero-based.\n * @param endpoint Positions for the axes to move to, relative to their positions before movement.\n */\n public async lineRelativeOn(\n targetAxesIndices: number[],\n endpoint: Measurement[]\n ): Promise<void> {\n const request = new gateway.StreamLineRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamLineRequest.Type.REL);\n request.setTargetAxesIndicesList(targetAxesIndices);\n request.setEndpointList(endpoint.map(Measurement.toProtobuf));\n\n await gateway.callAsync('device/stream_line', request);\n }\n\n /**\n * Queue an absolute arc movement on the first two axes of the stream.\n * Absolute meaning that the home positions of the axes is treated as the origin.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle on which the arc exists.\n * @param centerY The second dimension of the position of the center of the circle on which the arc exists.\n * @param endX The first dimension of the end position of the arc.\n * @param endY The second dimension of the end position of the arc.\n */\n public async arcAbsolute(\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement,\n endX: Measurement,\n endY: Measurement\n ): Promise<void> {\n const request = new gateway.StreamArcRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamArcRequest.Type.ABS);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n request.setEndX(Measurement.toProtobuf(endX));\n request.setEndY(Measurement.toProtobuf(endY));\n\n await gateway.callAsync('device/stream_arc', request);\n }\n\n /**\n * Queue a relative arc movement on the first two axes of the stream.\n * Relative meaning that the current position of the axes is treated as the origin.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle on which the arc exists.\n * @param centerY The second dimension of the position of the center of the circle on which the arc exists.\n * @param endX The first dimension of the end position of the arc.\n * @param endY The second dimension of the end position of the arc.\n */\n public async arcRelative(\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement,\n endX: Measurement,\n endY: Measurement\n ): Promise<void> {\n const request = new gateway.StreamArcRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamArcRequest.Type.REL);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n request.setEndX(Measurement.toProtobuf(endX));\n request.setEndY(Measurement.toProtobuf(endY));\n\n await gateway.callAsync('device/stream_arc', request);\n }\n\n /**\n * Queue an absolute arc movement in the stream.\n * The movement will only target the specified subset of axes in the stream.\n * Requires at least Firmware 7.11.\n * @param targetAxesIndices Indices of the axes in the stream the movement targets.\n * Refers to the axes provided during the stream setup or further execution.\n * Indices are zero-based.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle on which the arc exists.\n * @param centerY The second dimension of the position of the center of the circle on which the arc exists.\n * @param endX The first dimension of the end position of the arc.\n * @param endY The second dimension of the end position of the arc.\n */\n public async arcAbsoluteOn(\n targetAxesIndices: number[],\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement,\n endX: Measurement,\n endY: Measurement\n ): Promise<void> {\n const request = new gateway.StreamArcRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamArcRequest.Type.ABS);\n request.setTargetAxesIndicesList(targetAxesIndices);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n request.setEndX(Measurement.toProtobuf(endX));\n request.setEndY(Measurement.toProtobuf(endY));\n\n await gateway.callAsync('device/stream_arc', request);\n }\n\n /**\n * Queue a relative arc movement in the stream.\n * The movement will only target the specified subset of axes in the stream.\n * Requires at least Firmware 7.11.\n * @param targetAxesIndices Indices of the axes in the stream the movement targets.\n * Refers to the axes provided during the stream setup or further execution.\n * Indices are zero-based.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle on which the arc exists.\n * @param centerY The second dimension of the position of the center of the circle on which the arc exists.\n * @param endX The first dimension of the end position of the arc.\n * @param endY The second dimension of the end position of the arc.\n */\n public async arcRelativeOn(\n targetAxesIndices: number[],\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement,\n endX: Measurement,\n endY: Measurement\n ): Promise<void> {\n const request = new gateway.StreamArcRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamArcRequest.Type.REL);\n request.setTargetAxesIndicesList(targetAxesIndices);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n request.setEndX(Measurement.toProtobuf(endX));\n request.setEndY(Measurement.toProtobuf(endY));\n\n await gateway.callAsync('device/stream_arc', request);\n }\n\n /**\n * Queue an absolute helix movement in the stream.\n * Requires at least Firmware 7.28.\n * @param targetAxesIndices Indices of the axes in the stream the movement targets.\n * Refers to the axes provided during the stream setup or further execution.\n * Indices are zero-based.\n * The first two axes refer to the helix's arc component,\n * while the rest refers to the helix's line component.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle on which the helix projects.\n * @param centerY The second dimension of the position of the center of the circle on which the helix projects.\n * @param endX The first dimension of the end position of the helix's arc component.\n * @param endY The second dimension of the end position of the helix's arc component.\n * @param endpoint Positions for the helix's line component axes, relative to their home positions.\n */\n public async helixAbsoluteOn(\n targetAxesIndices: number[],\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement,\n endX: Measurement,\n endY: Measurement,\n ...endpoint: Measurement[]\n ): Promise<void> {\n const request = new gateway.StreamArcRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamArcRequest.Type.ABS);\n request.setTargetAxesIndicesList(targetAxesIndices);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n request.setEndX(Measurement.toProtobuf(endX));\n request.setEndY(Measurement.toProtobuf(endY));\n request.setEndpointList(endpoint.map(Measurement.toProtobuf));\n\n await gateway.callAsync('device/stream_helix', request);\n }\n\n /**\n * Queue a relative helix movement in the stream.\n * Requires at least Firmware 7.28.\n * @param targetAxesIndices Indices of the axes in the stream the movement targets.\n * Refers to the axes provided during the stream setup or further execution.\n * Indices are zero-based.\n * The first two axes refer to the helix's arc component,\n * while the rest refers to the helix's line component.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle on which the helix projects.\n * @param centerY The second dimension of the position of the center of the circle on which the helix projects.\n * @param endX The first dimension of the end position of the helix's arc component.\n * @param endY The second dimension of the end position of the helix's arc component.\n * @param endpoint Positions for the helix's line component axes, relative to their positions before movement.\n */\n public async helixRelativeOn(\n targetAxesIndices: number[],\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement,\n endX: Measurement,\n endY: Measurement,\n ...endpoint: Measurement[]\n ): Promise<void> {\n const request = new gateway.StreamArcRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamArcRequest.Type.REL);\n request.setTargetAxesIndicesList(targetAxesIndices);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n request.setEndX(Measurement.toProtobuf(endX));\n request.setEndY(Measurement.toProtobuf(endY));\n request.setEndpointList(endpoint.map(Measurement.toProtobuf));\n\n await gateway.callAsync('device/stream_helix', request);\n }\n\n /**\n * Queue an absolute circle movement on the first two axes of the stream.\n * Absolute meaning that the home positions of the axes are treated as the origin.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle.\n * @param centerY The second dimension of the position of the center of the circle.\n */\n public async circleAbsolute(\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement\n ): Promise<void> {\n const request = new gateway.StreamCircleRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamCircleRequest.Type.ABS);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n\n await gateway.callAsync('device/stream_circle', request);\n }\n\n /**\n * Queue a relative circle movement on the first two axes of the stream.\n * Relative meaning that the current position of the axes is treated as the origin.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle.\n * @param centerY The second dimension of the position of the center of the circle.\n */\n public async circleRelative(\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement\n ): Promise<void> {\n const request = new gateway.StreamCircleRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamCircleRequest.Type.REL);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n\n await gateway.callAsync('device/stream_circle', request);\n }\n\n /**\n * Queue an absolute circle movement in the stream.\n * The movement will only target the specified subset of axes in the stream.\n * Requires at least Firmware 7.11.\n * @param targetAxesIndices Indices of the axes in the stream the movement targets.\n * Refers to the axes provided during the stream setup or further execution.\n * Indices are zero-based.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle.\n * @param centerY The second dimension of the position of the center of the circle.\n */\n public async circleAbsoluteOn(\n targetAxesIndices: number[],\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement\n ): Promise<void> {\n const request = new gateway.StreamCircleRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamCircleRequest.Type.ABS);\n request.setTargetAxesIndicesList(targetAxesIndices);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n\n await gateway.callAsync('device/stream_circle', request);\n }\n\n /**\n * Queue a relative circle movement in the stream.\n * The movement will only target the specified subset of axes in the stream.\n * Requires at least Firmware 7.11.\n * @param targetAxesIndices Indices of the axes in the stream the movement targets.\n * Refers to the axes provided during the stream setup or further execution.\n * Indices are zero-based.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle.\n * @param centerY The second dimension of the position of the center of the circle.\n */\n public async circleRelativeOn(\n targetAxesIndices: number[],\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement\n ): Promise<void> {\n const request = new gateway.StreamCircleRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamCircleRequest.Type.REL);\n request.setTargetAxesIndicesList(targetAxesIndices);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n\n await gateway.callAsync('device/stream_circle', request);\n }\n\n /**\n * Wait for a digital input channel to reach a given value.\n * @param channelNumber The number of the digital input channel.\n * Channel numbers are numbered from one.\n * @param value The value that the stream should wait for.\n */\n public async waitDigitalInput(\n channelNumber: number,\n value: boolean\n ): Promise<void> {\n const request = new gateway.StreamWaitDigitalInputRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setChannelNumber(channelNumber);\n request.setValue(value);\n\n await gateway.callAsync('device/stream_wait_digital_input', request);\n }\n\n /**\n * Wait for the value of a analog input channel to reach a condition concerning a given value.\n * @param channelNumber The number of the analog input channel.\n * Channel numbers are numbered from one.\n * @param condition A condition (e.g. <, <=, ==, !=).\n * @param value The value that the condition concerns, in Volts.\n */\n public async waitAnalogInput(\n channelNumber: number,\n condition: string,\n value: number\n ): Promise<void> {\n const request = new gateway.StreamWaitAnalogInputRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setChannelNumber(channelNumber);\n request.setCondition(condition);\n request.setValue(value);\n\n await gateway.callAsync('device/stream_wait_analog_input', request);\n }\n\n /**\n * Set the value of a digital output channel.\n * @param channelNumber The number of the digital output channel.\n * Channel numbers are numbered from one.\n * @param value The value to set the channel to.\n */\n public async setDigitalOutput(\n channelNumber: number,\n value: boolean\n ): Promise<void> {\n const request = new gateway.StreamSetDigitalOutputRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setChannelNumber(channelNumber);\n request.setValue(value);\n\n await gateway.callAsync('device/stream_set_digital_output', request);\n }\n\n /**\n * Set the value of an analog output channel.\n * @param channelNumber The number of the analog output channel.\n * Channel numbers are numbered from one.\n * @param value The value to set the channel to, in Volts.\n */\n public async setAnalogOutput(\n channelNumber: number,\n value: number\n ): Promise<void> {\n const request = new gateway.StreamSetAnalogOutputRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setChannelNumber(channelNumber);\n request.setValue(value);\n\n await gateway.callAsync('device/stream_set_analog_output', request);\n }\n\n /**\n * Toggle the value of a digital output channel.\n * @param channelNumber The number of the digital output channel.\n * Channel numbers are numbered from one.\n */\n public async toggleDigitalOutput(\n channelNumber: number\n ): Promise<void> {\n const request = new gateway.StreamToggleDigitalOutputRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setChannelNumber(channelNumber);\n\n await gateway.callAsync('device/stream_toggle_digital_output', request);\n }\n\n /**\n * Sets values for all digital output channels.\n * @param values True to set the output channel to conducting and false to turn it off.\n */\n public async setAllDigitalOutputs(\n values: boolean[]\n ): Promise<void> {\n const request = new gateway.StreamSetAllDigitalOutputsRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setValuesList(values);\n\n await gateway.callAsync('device/stream_set_all_digital_outputs', request);\n }\n\n /**\n * Sets values for all analog output channels.\n * @param values The values to set the output channels to, in Volts.\n */\n public async setAllAnalogOutputs(\n values: number[]\n ): Promise<void> {\n const request = new gateway.StreamSetAllAnalogOutputsRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setValuesList(values);\n\n await gateway.callAsync('device/stream_set_all_analog_outputs', request);\n }\n\n /**\n * Wait a specified time.\n * @param time Amount of time to wait.\n * @param [unit=Units.NATIVE] Units of time.\n */\n public async wait(\n time: number,\n unit: Time | Native = Units.NATIVE\n ): Promise<void> {\n const request = new gateway.StreamWaitRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setTime(time);\n request.setUnit(unit);\n\n await gateway.callAsync('device/stream_wait', request);\n }\n\n /**\n * Waits until the live stream executes all queued actions.\n * @param [options.throwErrorOnFault=true] Determines whether to throw error when fault is observed.\n */\n public async waitUntilIdle(\n options: Stream.WaitUntilIdleOptions = {}\n ): Promise<void> {\n const {\n throwErrorOnFault = true,\n } = options;\n const request = new gateway.StreamWaitUntilIdleRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setThrowErrorOnFault(throwErrorOnFault);\n\n await gateway.callAsync('device/stream_wait_until_idle', request);\n }\n\n /**\n * Cork the front of the stream's action queue, blocking execution.\n * Execution resumes upon uncorking the queue, or when the number of queued actions reaches its limit.\n * Corking eliminates discontinuities in motion due to subsequent stream commands reaching the device late.\n * You can only cork an idle live stream.\n */\n public async cork(): Promise<void> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n await gateway.callAsync('device/stream_cork', request);\n }\n\n /**\n * Uncork the front of the queue, unblocking command execution.\n * You can only uncork an idle live stream that is corked.\n */\n public async uncork(): Promise<void> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n await gateway.callAsync('device/stream_uncork', request);\n }\n\n /**\n * Returns a boolean value indicating whether the live stream is executing a queued action.\n * @returns True if the stream is executing a queued action.\n */\n public async isBusy(): Promise<boolean> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n const response = await gateway.callAsync<gateway.BoolResponse>(\n 'device/stream_is_busy',\n request,\n gateway.BoolResponse);\n return response.getValue();\n }\n\n /**\n * Gets the maximum speed of the live stream.\n * Converts the units using the first axis of the stream.\n * @param [unit=Units.NATIVE] Units of velocity.\n * @returns The maximum speed of the stream.\n */\n public async getMaxSpeed(\n unit: Velocity | AngularVelocity | Native = Units.NATIVE\n ): Promise<number> {\n const request = new gateway.StreamGetMaxSpeedRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setUnit(unit);\n\n const response = await gateway.callAsync<gateway.DoubleResponse>(\n 'device/stream_get_max_speed',\n request,\n gateway.DoubleResponse);\n return response.getValue();\n }\n\n /**\n * Sets the maximum speed of the live stream.\n * Converts the units using the first axis of the stream.\n * @param maxSpeed Maximum speed at which any stream action is executed.\n * @param [unit=Units.NATIVE] Units of velocity.\n */\n public async setMaxSpeed(\n maxSpeed: number,\n unit: Velocity | AngularVelocity | Native = Units.NATIVE\n ): Promise<void> {\n const request = new gateway.StreamSetMaxSpeedRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setMaxSpeed(maxSpeed);\n request.setUnit(unit);\n\n await gateway.callAsync('device/stream_set_max_speed', request);\n }\n\n /**\n * Gets the maximum tangential acceleration of the live stream.\n * Converts the units using the first axis of the stream.\n * @param [unit=Units.NATIVE] Units of acceleration.\n * @returns The maximum tangential acceleration of the live stream.\n */\n public async getMaxTangentialAcceleration(\n unit: Acceleration | AngularAcceleration | Native = Units.NATIVE\n ): Promise<number> {\n const request = new gateway.StreamGetMaxTangentialAccelerationRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setUnit(unit);\n\n const response = await gateway.callAsync<gateway.DoubleResponse>(\n 'device/stream_get_max_tangential_acceleration',\n request,\n gateway.DoubleResponse);\n return response.getValue();\n }\n\n /**\n * Sets the maximum tangential acceleration of the live stream.\n * Converts the units using the first axis of the stream.\n * @param maxTangentialAcceleration Maximum tangential acceleration at which any stream action is executed.\n * @param [unit=Units.NATIVE] Units of acceleration.\n */\n public async setMaxTangentialAcceleration(\n maxTangentialAcceleration: number,\n unit: Acceleration | AngularAcceleration | Native = Units.NATIVE\n ): Promise<void> {\n const request = new gateway.StreamSetMaxTangentialAccelerationRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setMaxTangentialAcceleration(maxTangentialAcceleration);\n request.setUnit(unit);\n\n await gateway.callAsync('device/stream_set_max_tangential_acceleration', request);\n }\n\n /**\n * Gets the maximum centripetal acceleration of the live stream.\n * Converts the units using the first axis of the stream.\n * @param [unit=Units.NATIVE] Units of acceleration.\n * @returns The maximum centripetal acceleration of the live stream.\n */\n public async getMaxCentripetalAcceleration(\n unit: Acceleration | AngularAcceleration | Native = Units.NATIVE\n ): Promise<number> {\n const request = new gateway.StreamGetMaxCentripetalAccelerationRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setUnit(unit);\n\n const response = await gateway.callAsync<gateway.DoubleResponse>(\n 'device/stream_get_max_centripetal_acceleration',\n request,\n gateway.DoubleResponse);\n return response.getValue();\n }\n\n /**\n * Sets the maximum centripetal acceleration of the live stream.\n * Converts the units using the first axis of the stream.\n * @param maxCentripetalAcceleration Maximum centripetal acceleration at which any stream action is executed.\n * @param [unit=Units.NATIVE] Units of acceleration.\n */\n public async setMaxCentripetalAcceleration(\n maxCentripetalAcceleration: number,\n unit: Acceleration | AngularAcceleration | Native = Units.NATIVE\n ): Promise<void> {\n const request = new gateway.StreamSetMaxCentripetalAccelerationRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setMaxCentripetalAcceleration(maxCentripetalAcceleration);\n request.setUnit(unit);\n\n await gateway.callAsync('device/stream_set_max_centripetal_acceleration', request);\n }\n\n /**\n * Returns a string which represents the stream.\n * @returns String which represents the stream.\n */\n public toString(): string {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n const response = gateway.callSync<gateway.StringResponse>(\n 'device/stream_to_string',\n request,\n gateway.StringResponse);\n return response.getValue();\n }\n\n /**\n * Disables the stream.\n * If the stream is not setup, this command does nothing.\n * Once disabled, the stream will no longer accept stream commands.\n * The stream will process the rest of the commands in the queue until it is empty.\n */\n public async disable(): Promise<void> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n await gateway.callAsync('device/stream_disable', request);\n }\n\n /**\n * Sends a generic ASCII command to the stream.\n * Keeps resending the command while the device rejects with AGAIN reason.\n * @param command Command and its parameters.\n */\n public async genericCommand(\n command: string\n ): Promise<void> {\n const request = new gateway.StreamGenericCommandRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setCommand(command);\n\n await gateway.callAsync('device/stream_generic_command', request);\n }\n\n /**\n * Sends a batch of generic ASCII commands to the stream.\n * Keeps resending command while the device rejects with AGAIN reason.\n * The batch is atomic in terms of thread safety.\n * @param batch Array of commands.\n */\n public async genericCommandBatch(\n batch: string[]\n ): Promise<void> {\n const request = new gateway.StreamGenericCommandBatchRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setBatchList(batch);\n\n await gateway.callAsync('device/stream_generic_command_batch', request);\n }\n\n /**\n * Queries the stream status from the device\n * and returns boolean indicating whether the stream is disabled.\n * Useful to determine if streaming was interrupted by other movements.\n * @returns True if the stream is disabled.\n */\n public async checkDisabled(): Promise<boolean> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n const response = await gateway.callAsync<gateway.BoolResponse>(\n 'device/stream_check_disabled',\n request,\n gateway.BoolResponse);\n return response.getValue();\n }\n\n /**\n * Makes the stream throw StreamDiscontinuityException when it encounters discontinuities (ND warning flag).\n */\n public treatDiscontinuitiesAsError(): void {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n gateway.callSync('device/stream_treat_discontinuities', request);\n }\n\n /**\n * Prevents StreamDiscontinuityException as a result of expected discontinuity when resuming streaming.\n */\n public ignoreCurrentDiscontinuity(): void {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n gateway.callSync('device/stream_ignore_discontinuity', request);\n }\n\n /**\n * Gets the axes of the stream.\n * @returns An array of axis numbers of the axes the stream is set up to control.\n */\n private _retrieveAxes(): StreamAxisDefinition[] {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n const response = gateway.callSync<gateway.StreamGetAxesResponse>(\n 'device/stream_get_axes',\n request,\n gateway.StreamGetAxesResponse);\n return response.getAxesList().map(a => StreamAxisDefinition.fromProtobuf(a.toObject()));\n }\n\n /**\n * Get the mode of the stream.\n * @returns Mode of the stream.\n */\n private _retrieveMode(): StreamMode {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n const response = gateway.callSync<gateway.IntResponse>(\n 'device/stream_get_mode',\n request,\n gateway.IntResponse);\n return response.getValue();\n }\n}\n\nnamespace Stream {\n export interface WaitUntilIdleOptions {\n throwErrorOnFault?: boolean;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../src/ascii/stream.ts"],"names":[],"mappings":"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","sourcesContent":["// ==== THIS FILE IS GENERATED FROM A TEMPLATE ==== //\n// ============= DO NOT EDIT DIRECTLY ============= //\n\nimport { Device } from './device';\nimport { Time, Native, Acceleration, AngularAcceleration, AngularVelocity, Velocity, Units } from '../units';\nimport { RotationDirection } from '../rotation_direction';\nimport * as gateway from '../gateway';\nimport { Measurement } from '../measurement';\nimport { StreamBuffer } from './stream_buffer';\nimport { StreamMode } from './stream_mode';\nimport { StreamAxisDefinition } from './stream_axis_definition';\nimport { DigitalOutputAction } from './digital_output_action';\n\n/**\n * A handle for a stream with this number on the device.\n * Streams provide a way to execute or store a sequence of actions.\n * Stream methods append actions to a queue which executes or stores actions in a first in, first out order.\n */\nexport class Stream {\n /**\n * Device that controls this stream.\n */\n public get device(): Device {\n return this._device;\n }\n private _device: Device;\n\n /**\n * The number that identifies the stream on the device.\n */\n public get streamId(): number {\n return this._streamId;\n }\n private _streamId: number;\n\n /**\n * Current mode of the stream.\n */\n public get mode(): StreamMode {\n return this._retrieveMode();\n }\n\n /**\n * An array of axes definitions the stream is set up to control.\n */\n public get axes(): StreamAxisDefinition[] {\n return this._retrieveAxes();\n }\n\n constructor(device: Device, streamId: number) {\n this._device = device;\n this._streamId = streamId;\n }\n\n /**\n * Setup the stream to control the specified axes and to queue actions on the device.\n * Allows use of lockstep axes in a stream.\n * @param axes Definition of the stream axes.\n */\n public async setupLiveComposite(\n ...axes: StreamAxisDefinition[]\n ): Promise<void> {\n const request = new gateway.StreamSetupLiveCompositeRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setAxesList(axes.map(StreamAxisDefinition.toProtobuf));\n\n await gateway.callAsync('device/stream_setup_live_composite', request);\n }\n\n /**\n * Setup the stream to control the specified axes and to queue actions on the device.\n * @param axes Numbers of physical axes to setup the stream on.\n */\n public async setupLive(\n ...axes: number[]\n ): Promise<void> {\n const request = new gateway.StreamSetupLiveRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setAxesList(axes);\n\n await gateway.callAsync('device/stream_setup_live', request);\n }\n\n /**\n * Setup the stream to control the specified axes and queue actions into a stream buffer.\n * Allows use of lockstep axes in a stream.\n * @param streamBuffer The stream buffer to queue actions in.\n * @param axes Definition of the stream axes.\n */\n public async setupStoreComposite(\n streamBuffer: StreamBuffer,\n ...axes: StreamAxisDefinition[]\n ): Promise<void> {\n const request = new gateway.StreamSetupStoreCompositeRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setStreamBuffer(streamBuffer.bufferId);\n request.setAxesList(axes.map(StreamAxisDefinition.toProtobuf));\n\n await gateway.callAsync('device/stream_setup_store_composite', request);\n }\n\n /**\n * Setup the stream to control the specified axes and queue actions into a stream buffer.\n * @param streamBuffer The stream buffer to queue actions in.\n * @param axes Numbers of physical axes to setup the stream on.\n */\n public async setupStore(\n streamBuffer: StreamBuffer,\n ...axes: number[]\n ): Promise<void> {\n const request = new gateway.StreamSetupStoreRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setStreamBuffer(streamBuffer.bufferId);\n request.setAxesList(axes);\n\n await gateway.callAsync('device/stream_setup_store', request);\n }\n\n /**\n * Setup the stream to use a specified number of axes, and to queue actions in a stream buffer.\n * Afterwards, you may call the resulting stream buffer on arbitrary axes.\n * This mode does not allow for unit conversions.\n * @param streamBuffer The stream buffer to queue actions in.\n * @param axesCount The number of axes in the stream.\n */\n public async setupStoreArbitraryAxes(\n streamBuffer: StreamBuffer,\n axesCount: number\n ): Promise<void> {\n const request = new gateway.StreamSetupStoreArbitraryAxesRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setStreamBuffer(streamBuffer.bufferId);\n request.setAxesCount(axesCount);\n\n await gateway.callAsync('device/stream_setup_store_arbitrary_axes', request);\n }\n\n /**\n * Append the actions in a stream buffer to the queue.\n * @param streamBuffer The stream buffer to call.\n */\n public async call(\n streamBuffer: StreamBuffer\n ): Promise<void> {\n const request = new gateway.StreamCallRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setStreamBuffer(streamBuffer.bufferId);\n\n await gateway.callAsync('device/stream_call', request);\n }\n\n /**\n * Queue an absolute line movement in the stream.\n * @param endpoint Positions for the axes to move to, relative to their home positions.\n */\n public async lineAbsolute(\n ...endpoint: Measurement[]\n ): Promise<void> {\n const request = new gateway.StreamLineRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamLineRequest.Type.ABS);\n request.setEndpointList(endpoint.map(Measurement.toProtobuf));\n\n await gateway.callAsync('device/stream_line', request);\n }\n\n /**\n * Queue a relative line movement in the stream.\n * @param endpoint Positions for the axes to move to, relative to their positions before movement.\n */\n public async lineRelative(\n ...endpoint: Measurement[]\n ): Promise<void> {\n const request = new gateway.StreamLineRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamLineRequest.Type.REL);\n request.setEndpointList(endpoint.map(Measurement.toProtobuf));\n\n await gateway.callAsync('device/stream_line', request);\n }\n\n /**\n * Queue an absolute line movement in the stream, targeting a subset of the stream axes.\n * Requires at least Firmware 7.11.\n * @param targetAxesIndices Indices of the axes in the stream the movement targets.\n * Refers to the axes provided during the stream setup or further execution.\n * Indices are zero-based.\n * @param endpoint Positions for the axes to move to, relative to their home positions.\n */\n public async lineAbsoluteOn(\n targetAxesIndices: number[],\n endpoint: Measurement[]\n ): Promise<void> {\n const request = new gateway.StreamLineRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamLineRequest.Type.ABS);\n request.setTargetAxesIndicesList(targetAxesIndices);\n request.setEndpointList(endpoint.map(Measurement.toProtobuf));\n\n await gateway.callAsync('device/stream_line', request);\n }\n\n /**\n * Queue a relative line movement in the stream, targeting a subset of the stream axes.\n * Requires at least Firmware 7.11.\n * @param targetAxesIndices Indices of the axes in the stream the movement targets.\n * Refers to the axes provided during the stream setup or further execution.\n * Indices are zero-based.\n * @param endpoint Positions for the axes to move to, relative to their positions before movement.\n */\n public async lineRelativeOn(\n targetAxesIndices: number[],\n endpoint: Measurement[]\n ): Promise<void> {\n const request = new gateway.StreamLineRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamLineRequest.Type.REL);\n request.setTargetAxesIndicesList(targetAxesIndices);\n request.setEndpointList(endpoint.map(Measurement.toProtobuf));\n\n await gateway.callAsync('device/stream_line', request);\n }\n\n /**\n * Queue an absolute arc movement on the first two axes of the stream.\n * Absolute meaning that the home positions of the axes is treated as the origin.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle on which the arc exists.\n * @param centerY The second dimension of the position of the center of the circle on which the arc exists.\n * @param endX The first dimension of the end position of the arc.\n * @param endY The second dimension of the end position of the arc.\n */\n public async arcAbsolute(\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement,\n endX: Measurement,\n endY: Measurement\n ): Promise<void> {\n const request = new gateway.StreamArcRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamArcRequest.Type.ABS);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n request.setEndX(Measurement.toProtobuf(endX));\n request.setEndY(Measurement.toProtobuf(endY));\n\n await gateway.callAsync('device/stream_arc', request);\n }\n\n /**\n * Queue a relative arc movement on the first two axes of the stream.\n * Relative meaning that the current position of the axes is treated as the origin.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle on which the arc exists.\n * @param centerY The second dimension of the position of the center of the circle on which the arc exists.\n * @param endX The first dimension of the end position of the arc.\n * @param endY The second dimension of the end position of the arc.\n */\n public async arcRelative(\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement,\n endX: Measurement,\n endY: Measurement\n ): Promise<void> {\n const request = new gateway.StreamArcRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamArcRequest.Type.REL);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n request.setEndX(Measurement.toProtobuf(endX));\n request.setEndY(Measurement.toProtobuf(endY));\n\n await gateway.callAsync('device/stream_arc', request);\n }\n\n /**\n * Queue an absolute arc movement in the stream.\n * The movement will only target the specified subset of axes in the stream.\n * Requires at least Firmware 7.11.\n * @param targetAxesIndices Indices of the axes in the stream the movement targets.\n * Refers to the axes provided during the stream setup or further execution.\n * Indices are zero-based.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle on which the arc exists.\n * @param centerY The second dimension of the position of the center of the circle on which the arc exists.\n * @param endX The first dimension of the end position of the arc.\n * @param endY The second dimension of the end position of the arc.\n */\n public async arcAbsoluteOn(\n targetAxesIndices: number[],\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement,\n endX: Measurement,\n endY: Measurement\n ): Promise<void> {\n const request = new gateway.StreamArcRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamArcRequest.Type.ABS);\n request.setTargetAxesIndicesList(targetAxesIndices);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n request.setEndX(Measurement.toProtobuf(endX));\n request.setEndY(Measurement.toProtobuf(endY));\n\n await gateway.callAsync('device/stream_arc', request);\n }\n\n /**\n * Queue a relative arc movement in the stream.\n * The movement will only target the specified subset of axes in the stream.\n * Requires at least Firmware 7.11.\n * @param targetAxesIndices Indices of the axes in the stream the movement targets.\n * Refers to the axes provided during the stream setup or further execution.\n * Indices are zero-based.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle on which the arc exists.\n * @param centerY The second dimension of the position of the center of the circle on which the arc exists.\n * @param endX The first dimension of the end position of the arc.\n * @param endY The second dimension of the end position of the arc.\n */\n public async arcRelativeOn(\n targetAxesIndices: number[],\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement,\n endX: Measurement,\n endY: Measurement\n ): Promise<void> {\n const request = new gateway.StreamArcRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamArcRequest.Type.REL);\n request.setTargetAxesIndicesList(targetAxesIndices);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n request.setEndX(Measurement.toProtobuf(endX));\n request.setEndY(Measurement.toProtobuf(endY));\n\n await gateway.callAsync('device/stream_arc', request);\n }\n\n /**\n * Queue an absolute helix movement in the stream.\n * Requires at least Firmware 7.28.\n * @param targetAxesIndices Indices of the axes in the stream the movement targets.\n * Refers to the axes provided during the stream setup or further execution.\n * Indices are zero-based.\n * The first two axes refer to the helix's arc component,\n * while the rest refers to the helix's line component.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle on which the helix projects.\n * @param centerY The second dimension of the position of the center of the circle on which the helix projects.\n * @param endX The first dimension of the end position of the helix's arc component.\n * @param endY The second dimension of the end position of the helix's arc component.\n * @param endpoint Positions for the helix's line component axes, relative to their home positions.\n */\n public async helixAbsoluteOn(\n targetAxesIndices: number[],\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement,\n endX: Measurement,\n endY: Measurement,\n ...endpoint: Measurement[]\n ): Promise<void> {\n const request = new gateway.StreamArcRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamArcRequest.Type.ABS);\n request.setTargetAxesIndicesList(targetAxesIndices);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n request.setEndX(Measurement.toProtobuf(endX));\n request.setEndY(Measurement.toProtobuf(endY));\n request.setEndpointList(endpoint.map(Measurement.toProtobuf));\n\n await gateway.callAsync('device/stream_helix', request);\n }\n\n /**\n * Queue a relative helix movement in the stream.\n * Requires at least Firmware 7.28.\n * @param targetAxesIndices Indices of the axes in the stream the movement targets.\n * Refers to the axes provided during the stream setup or further execution.\n * Indices are zero-based.\n * The first two axes refer to the helix's arc component,\n * while the rest refers to the helix's line component.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle on which the helix projects.\n * @param centerY The second dimension of the position of the center of the circle on which the helix projects.\n * @param endX The first dimension of the end position of the helix's arc component.\n * @param endY The second dimension of the end position of the helix's arc component.\n * @param endpoint Positions for the helix's line component axes, relative to their positions before movement.\n */\n public async helixRelativeOn(\n targetAxesIndices: number[],\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement,\n endX: Measurement,\n endY: Measurement,\n ...endpoint: Measurement[]\n ): Promise<void> {\n const request = new gateway.StreamArcRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamArcRequest.Type.REL);\n request.setTargetAxesIndicesList(targetAxesIndices);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n request.setEndX(Measurement.toProtobuf(endX));\n request.setEndY(Measurement.toProtobuf(endY));\n request.setEndpointList(endpoint.map(Measurement.toProtobuf));\n\n await gateway.callAsync('device/stream_helix', request);\n }\n\n /**\n * Queue an absolute circle movement on the first two axes of the stream.\n * Absolute meaning that the home positions of the axes are treated as the origin.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle.\n * @param centerY The second dimension of the position of the center of the circle.\n */\n public async circleAbsolute(\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement\n ): Promise<void> {\n const request = new gateway.StreamCircleRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamCircleRequest.Type.ABS);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n\n await gateway.callAsync('device/stream_circle', request);\n }\n\n /**\n * Queue a relative circle movement on the first two axes of the stream.\n * Relative meaning that the current position of the axes is treated as the origin.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle.\n * @param centerY The second dimension of the position of the center of the circle.\n */\n public async circleRelative(\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement\n ): Promise<void> {\n const request = new gateway.StreamCircleRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamCircleRequest.Type.REL);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n\n await gateway.callAsync('device/stream_circle', request);\n }\n\n /**\n * Queue an absolute circle movement in the stream.\n * The movement will only target the specified subset of axes in the stream.\n * Requires at least Firmware 7.11.\n * @param targetAxesIndices Indices of the axes in the stream the movement targets.\n * Refers to the axes provided during the stream setup or further execution.\n * Indices are zero-based.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle.\n * @param centerY The second dimension of the position of the center of the circle.\n */\n public async circleAbsoluteOn(\n targetAxesIndices: number[],\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement\n ): Promise<void> {\n const request = new gateway.StreamCircleRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamCircleRequest.Type.ABS);\n request.setTargetAxesIndicesList(targetAxesIndices);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n\n await gateway.callAsync('device/stream_circle', request);\n }\n\n /**\n * Queue a relative circle movement in the stream.\n * The movement will only target the specified subset of axes in the stream.\n * Requires at least Firmware 7.11.\n * @param targetAxesIndices Indices of the axes in the stream the movement targets.\n * Refers to the axes provided during the stream setup or further execution.\n * Indices are zero-based.\n * @param rotationDirection The direction of the rotation.\n * @param centerX The first dimension of the position of the center of the circle.\n * @param centerY The second dimension of the position of the center of the circle.\n */\n public async circleRelativeOn(\n targetAxesIndices: number[],\n rotationDirection: RotationDirection,\n centerX: Measurement,\n centerY: Measurement\n ): Promise<void> {\n const request = new gateway.StreamCircleRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setType(gateway.StreamCircleRequest.Type.REL);\n request.setTargetAxesIndicesList(targetAxesIndices);\n request.setRotationDirection(rotationDirection as any);\n request.setCenterX(Measurement.toProtobuf(centerX));\n request.setCenterY(Measurement.toProtobuf(centerY));\n\n await gateway.callAsync('device/stream_circle', request);\n }\n\n /**\n * Wait for a digital input channel to reach a given value.\n * @param channelNumber The number of the digital input channel.\n * Channel numbers are numbered from one.\n * @param value The value that the stream should wait for.\n */\n public async waitDigitalInput(\n channelNumber: number,\n value: boolean\n ): Promise<void> {\n const request = new gateway.StreamWaitDigitalInputRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setChannelNumber(channelNumber);\n request.setValue(value);\n\n await gateway.callAsync('device/stream_wait_digital_input', request);\n }\n\n /**\n * Wait for the value of a analog input channel to reach a condition concerning a given value.\n * @param channelNumber The number of the analog input channel.\n * Channel numbers are numbered from one.\n * @param condition A condition (e.g. <, <=, ==, !=).\n * @param value The value that the condition concerns, in Volts.\n */\n public async waitAnalogInput(\n channelNumber: number,\n condition: string,\n value: number\n ): Promise<void> {\n const request = new gateway.StreamWaitAnalogInputRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setChannelNumber(channelNumber);\n request.setCondition(condition);\n request.setValue(value);\n\n await gateway.callAsync('device/stream_wait_analog_input', request);\n }\n\n /**\n * Set the value of a digital output channel.\n * @param channelNumber The number of the digital output channel.\n * Channel numbers are numbered from one.\n * @param value The type of action to perform on the channel.\n */\n public async setDigitalOutput(\n channelNumber: number,\n value: DigitalOutputAction\n ): Promise<void> {\n const request = new gateway.StreamSetDigitalOutputRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setChannelNumber(channelNumber);\n request.setValue(value as any);\n\n await gateway.callAsync('device/stream_set_digital_output', request);\n }\n\n /**\n * Set the value of an analog output channel.\n * @param channelNumber The number of the analog output channel.\n * Channel numbers are numbered from one.\n * @param value The value to set the channel to, in Volts.\n */\n public async setAnalogOutput(\n channelNumber: number,\n value: number\n ): Promise<void> {\n const request = new gateway.StreamSetAnalogOutputRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setChannelNumber(channelNumber);\n request.setValue(value);\n\n await gateway.callAsync('device/stream_set_analog_output', request);\n }\n\n /**\n * Sets values for all digital output channels.\n * @param values The type of action to perform on the channel.\n */\n public async setAllDigitalOutputs(\n values: DigitalOutputAction[]\n ): Promise<void> {\n const request = new gateway.StreamSetAllDigitalOutputsRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setValuesList(values as any);\n\n await gateway.callAsync('device/stream_set_all_digital_outputs', request);\n }\n\n /**\n * Sets values for all analog output channels.\n * @param values The values to set the output channels to, in Volts.\n */\n public async setAllAnalogOutputs(\n values: number[]\n ): Promise<void> {\n const request = new gateway.StreamSetAllAnalogOutputsRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setValuesList(values);\n\n await gateway.callAsync('device/stream_set_all_analog_outputs', request);\n }\n\n /**\n * Wait a specified time.\n * @param time Amount of time to wait.\n * @param [unit=Units.NATIVE] Units of time.\n */\n public async wait(\n time: number,\n unit: Time | Native = Units.NATIVE\n ): Promise<void> {\n const request = new gateway.StreamWaitRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setTime(time);\n request.setUnit(unit);\n\n await gateway.callAsync('device/stream_wait', request);\n }\n\n /**\n * Waits until the live stream executes all queued actions.\n * @param [options.throwErrorOnFault=true] Determines whether to throw error when fault is observed.\n */\n public async waitUntilIdle(\n options: Stream.WaitUntilIdleOptions = {}\n ): Promise<void> {\n const {\n throwErrorOnFault = true,\n } = options;\n const request = new gateway.StreamWaitUntilIdleRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setThrowErrorOnFault(throwErrorOnFault);\n\n await gateway.callAsync('device/stream_wait_until_idle', request);\n }\n\n /**\n * Cork the front of the stream's action queue, blocking execution.\n * Execution resumes upon uncorking the queue, or when the number of queued actions reaches its limit.\n * Corking eliminates discontinuities in motion due to subsequent stream commands reaching the device late.\n * You can only cork an idle live stream.\n */\n public async cork(): Promise<void> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n await gateway.callAsync('device/stream_cork', request);\n }\n\n /**\n * Uncork the front of the queue, unblocking command execution.\n * You can only uncork an idle live stream that is corked.\n */\n public async uncork(): Promise<void> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n await gateway.callAsync('device/stream_uncork', request);\n }\n\n /**\n * Returns a boolean value indicating whether the live stream is executing a queued action.\n * @returns True if the stream is executing a queued action.\n */\n public async isBusy(): Promise<boolean> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n const response = await gateway.callAsync<gateway.BoolResponse>(\n 'device/stream_is_busy',\n request,\n gateway.BoolResponse);\n return response.getValue();\n }\n\n /**\n * Gets the maximum speed of the live stream.\n * Converts the units using the first axis of the stream.\n * @param [unit=Units.NATIVE] Units of velocity.\n * @returns The maximum speed of the stream.\n */\n public async getMaxSpeed(\n unit: Velocity | AngularVelocity | Native = Units.NATIVE\n ): Promise<number> {\n const request = new gateway.StreamGetMaxSpeedRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setUnit(unit);\n\n const response = await gateway.callAsync<gateway.DoubleResponse>(\n 'device/stream_get_max_speed',\n request,\n gateway.DoubleResponse);\n return response.getValue();\n }\n\n /**\n * Sets the maximum speed of the live stream.\n * Converts the units using the first axis of the stream.\n * @param maxSpeed Maximum speed at which any stream action is executed.\n * @param [unit=Units.NATIVE] Units of velocity.\n */\n public async setMaxSpeed(\n maxSpeed: number,\n unit: Velocity | AngularVelocity | Native = Units.NATIVE\n ): Promise<void> {\n const request = new gateway.StreamSetMaxSpeedRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setMaxSpeed(maxSpeed);\n request.setUnit(unit);\n\n await gateway.callAsync('device/stream_set_max_speed', request);\n }\n\n /**\n * Gets the maximum tangential acceleration of the live stream.\n * Converts the units using the first axis of the stream.\n * @param [unit=Units.NATIVE] Units of acceleration.\n * @returns The maximum tangential acceleration of the live stream.\n */\n public async getMaxTangentialAcceleration(\n unit: Acceleration | AngularAcceleration | Native = Units.NATIVE\n ): Promise<number> {\n const request = new gateway.StreamGetMaxTangentialAccelerationRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setUnit(unit);\n\n const response = await gateway.callAsync<gateway.DoubleResponse>(\n 'device/stream_get_max_tangential_acceleration',\n request,\n gateway.DoubleResponse);\n return response.getValue();\n }\n\n /**\n * Sets the maximum tangential acceleration of the live stream.\n * Converts the units using the first axis of the stream.\n * @param maxTangentialAcceleration Maximum tangential acceleration at which any stream action is executed.\n * @param [unit=Units.NATIVE] Units of acceleration.\n */\n public async setMaxTangentialAcceleration(\n maxTangentialAcceleration: number,\n unit: Acceleration | AngularAcceleration | Native = Units.NATIVE\n ): Promise<void> {\n const request = new gateway.StreamSetMaxTangentialAccelerationRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setMaxTangentialAcceleration(maxTangentialAcceleration);\n request.setUnit(unit);\n\n await gateway.callAsync('device/stream_set_max_tangential_acceleration', request);\n }\n\n /**\n * Gets the maximum centripetal acceleration of the live stream.\n * Converts the units using the first axis of the stream.\n * @param [unit=Units.NATIVE] Units of acceleration.\n * @returns The maximum centripetal acceleration of the live stream.\n */\n public async getMaxCentripetalAcceleration(\n unit: Acceleration | AngularAcceleration | Native = Units.NATIVE\n ): Promise<number> {\n const request = new gateway.StreamGetMaxCentripetalAccelerationRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setUnit(unit);\n\n const response = await gateway.callAsync<gateway.DoubleResponse>(\n 'device/stream_get_max_centripetal_acceleration',\n request,\n gateway.DoubleResponse);\n return response.getValue();\n }\n\n /**\n * Sets the maximum centripetal acceleration of the live stream.\n * Converts the units using the first axis of the stream.\n * @param maxCentripetalAcceleration Maximum centripetal acceleration at which any stream action is executed.\n * @param [unit=Units.NATIVE] Units of acceleration.\n */\n public async setMaxCentripetalAcceleration(\n maxCentripetalAcceleration: number,\n unit: Acceleration | AngularAcceleration | Native = Units.NATIVE\n ): Promise<void> {\n const request = new gateway.StreamSetMaxCentripetalAccelerationRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setMaxCentripetalAcceleration(maxCentripetalAcceleration);\n request.setUnit(unit);\n\n await gateway.callAsync('device/stream_set_max_centripetal_acceleration', request);\n }\n\n /**\n * Returns a string which represents the stream.\n * @returns String which represents the stream.\n */\n public toString(): string {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n const response = gateway.callSync<gateway.StringResponse>(\n 'device/stream_to_string',\n request,\n gateway.StringResponse);\n return response.getValue();\n }\n\n /**\n * Disables the stream.\n * If the stream is not setup, this command does nothing.\n * Once disabled, the stream will no longer accept stream commands.\n * The stream will process the rest of the commands in the queue until it is empty.\n */\n public async disable(): Promise<void> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n await gateway.callAsync('device/stream_disable', request);\n }\n\n /**\n * Sends a generic ASCII command to the stream.\n * Keeps resending the command while the device rejects with AGAIN reason.\n * @param command Command and its parameters.\n */\n public async genericCommand(\n command: string\n ): Promise<void> {\n const request = new gateway.StreamGenericCommandRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setCommand(command);\n\n await gateway.callAsync('device/stream_generic_command', request);\n }\n\n /**\n * Sends a batch of generic ASCII commands to the stream.\n * Keeps resending command while the device rejects with AGAIN reason.\n * The batch is atomic in terms of thread safety.\n * @param batch Array of commands.\n */\n public async genericCommandBatch(\n batch: string[]\n ): Promise<void> {\n const request = new gateway.StreamGenericCommandBatchRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n request.setBatchList(batch);\n\n await gateway.callAsync('device/stream_generic_command_batch', request);\n }\n\n /**\n * Queries the stream status from the device\n * and returns boolean indicating whether the stream is disabled.\n * Useful to determine if streaming was interrupted by other movements.\n * @returns True if the stream is disabled.\n */\n public async checkDisabled(): Promise<boolean> {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n const response = await gateway.callAsync<gateway.BoolResponse>(\n 'device/stream_check_disabled',\n request,\n gateway.BoolResponse);\n return response.getValue();\n }\n\n /**\n * Makes the stream throw StreamDiscontinuityException when it encounters discontinuities (ND warning flag).\n */\n public treatDiscontinuitiesAsError(): void {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n gateway.callSync('device/stream_treat_discontinuities', request);\n }\n\n /**\n * Prevents StreamDiscontinuityException as a result of expected discontinuity when resuming streaming.\n */\n public ignoreCurrentDiscontinuity(): void {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n gateway.callSync('device/stream_ignore_discontinuity', request);\n }\n\n /**\n * Gets the axes of the stream.\n * @returns An array of axis numbers of the axes the stream is set up to control.\n */\n private _retrieveAxes(): StreamAxisDefinition[] {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n const response = gateway.callSync<gateway.StreamGetAxesResponse>(\n 'device/stream_get_axes',\n request,\n gateway.StreamGetAxesResponse);\n return response.getAxesList().map(a => StreamAxisDefinition.fromProtobuf(a.toObject()));\n }\n\n /**\n * Get the mode of the stream.\n * @returns Mode of the stream.\n */\n private _retrieveMode(): StreamMode {\n const request = new gateway.StreamEmptyRequest();\n request.setInterfaceId(this.device.connection.interfaceId);\n request.setDevice(this.device.deviceAddress);\n request.setStreamId(this.streamId);\n\n const response = gateway.callSync<gateway.IntResponse>(\n 'device/stream_get_mode',\n request,\n gateway.IntResponse);\n return response.getValue();\n }\n}\n\nnamespace Stream {\n export interface WaitUntilIdleOptions {\n throwErrorOnFault?: boolean;\n }\n}\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Device } from './device';
|
|
2
|
+
import { Stream } from './stream';
|
|
3
|
+
import { StreamBuffer } from './stream_buffer';
|
|
4
|
+
/**
|
|
5
|
+
* Class providing access to device streams.
|
|
6
|
+
* Requires at least Firmware 7.05.
|
|
7
|
+
*/
|
|
8
|
+
export declare class Streams {
|
|
9
|
+
/**
|
|
10
|
+
* Device that these streams belong to.
|
|
11
|
+
*/
|
|
12
|
+
get device(): Device;
|
|
13
|
+
private _device;
|
|
14
|
+
constructor(device: Device);
|
|
15
|
+
/**
|
|
16
|
+
* Gets a Stream class instance which allows you to control a particular stream on the device.
|
|
17
|
+
* @param streamId The ID of the stream to control. Stream IDs start at one.
|
|
18
|
+
* @returns Stream instance.
|
|
19
|
+
*/
|
|
20
|
+
getStream(streamId: number): Stream;
|
|
21
|
+
/**
|
|
22
|
+
* Gets a StreamBuffer class instance which is a handle for a stream buffer on the device.
|
|
23
|
+
* @param streamBufferId The ID of the stream buffer to control. Stream buffer IDs start at one.
|
|
24
|
+
* @returns StreamBuffer instance.
|
|
25
|
+
*/
|
|
26
|
+
getBuffer(streamBufferId: number): StreamBuffer;
|
|
27
|
+
/**
|
|
28
|
+
* Get a list of buffer IDs that are currently in use.
|
|
29
|
+
* @returns List of buffer IDs.
|
|
30
|
+
*/
|
|
31
|
+
listBufferIds(): Promise<number[]>;
|
|
32
|
+
}
|