@zaber/motion 2.9.1 → 2.10.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.
Files changed (72) hide show
  1. package/dist/binding/wasm/zaber-motion-lib.wasm +0 -0
  2. package/dist/lib/ascii/device.d.ts +6 -0
  3. package/dist/lib/ascii/device.js +8 -0
  4. package/dist/lib/ascii/device.js.map +1 -1
  5. package/dist/lib/ascii/index.d.ts +3 -0
  6. package/dist/lib/ascii/index.js +7 -1
  7. package/dist/lib/ascii/index.js.map +1 -1
  8. package/dist/lib/ascii/oscilloscope.d.ts +62 -0
  9. package/dist/lib/ascii/oscilloscope.js +153 -0
  10. package/dist/lib/ascii/oscilloscope.js.map +1 -0
  11. package/dist/lib/ascii/oscilloscope_capture_properties.d.ts +16 -0
  12. package/dist/lib/ascii/oscilloscope_capture_properties.js +18 -0
  13. package/dist/lib/ascii/oscilloscope_capture_properties.js.map +1 -0
  14. package/dist/lib/ascii/oscilloscope_data.d.ts +67 -0
  15. package/dist/lib/ascii/oscilloscope_data.js +151 -0
  16. package/dist/lib/ascii/oscilloscope_data.js.map +1 -0
  17. package/dist/lib/ascii/stream.d.ts +7 -0
  18. package/dist/lib/ascii/stream.js +14 -0
  19. package/dist/lib/ascii/stream.js.map +1 -1
  20. package/dist/lib/ascii/stream_axis_definition.js +3 -0
  21. package/dist/lib/ascii/stream_axis_definition.js.map +1 -1
  22. package/dist/lib/ascii/transport.d.ts +4 -0
  23. package/dist/lib/ascii/transport.js +4 -0
  24. package/dist/lib/ascii/transport.js.map +1 -1
  25. package/dist/lib/ascii_ns.d.ts +6 -0
  26. package/dist/lib/ascii_ns.js +3 -0
  27. package/dist/lib/ascii_ns.js.map +1 -1
  28. package/dist/lib/exceptions/index.d.ts +1 -0
  29. package/dist/lib/exceptions/index.js +4 -2
  30. package/dist/lib/exceptions/index.js.map +1 -1
  31. package/dist/lib/exceptions/invalid_operation_exception.d.ts +7 -0
  32. package/dist/lib/exceptions/invalid_operation_exception.js +17 -0
  33. package/dist/lib/exceptions/invalid_operation_exception.js.map +1 -0
  34. package/dist/lib/gateway/convert_exceptions.js +1 -0
  35. package/dist/lib/gateway/convert_exceptions.js.map +1 -1
  36. package/dist/lib/gcode/axis_definition.d.ts +18 -0
  37. package/dist/lib/gcode/{translator_axis_definition.js → axis_definition.js} +11 -10
  38. package/dist/lib/gcode/axis_definition.js.map +1 -0
  39. package/dist/lib/gcode/axis_mapping.js +3 -0
  40. package/dist/lib/gcode/axis_mapping.js.map +1 -1
  41. package/dist/lib/gcode/axis_transformation.d.ts +21 -0
  42. package/dist/lib/gcode/axis_transformation.js +43 -0
  43. package/dist/lib/gcode/axis_transformation.js.map +1 -0
  44. package/dist/lib/gcode/device_definition.d.ts +24 -0
  45. package/dist/lib/gcode/{translator_definition.js → device_definition.js} +14 -9
  46. package/dist/lib/gcode/device_definition.js.map +1 -0
  47. package/dist/lib/gcode/index.d.ts +4 -3
  48. package/dist/lib/gcode/index.js +9 -7
  49. package/dist/lib/gcode/index.js.map +1 -1
  50. package/dist/lib/gcode/{translator_live.d.ts → offline_translator.d.ts} +48 -12
  51. package/dist/lib/gcode/{translator_live.js → offline_translator.js} +87 -23
  52. package/dist/lib/gcode/offline_translator.js.map +1 -0
  53. package/dist/lib/gcode/translator.d.ts +55 -9
  54. package/dist/lib/gcode/translator.js +94 -13
  55. package/dist/lib/gcode/translator.js.map +1 -1
  56. package/dist/lib/gcode/translator_config.d.ts +6 -6
  57. package/dist/lib/gcode/translator_config.js +7 -4
  58. package/dist/lib/gcode/translator_config.js.map +1 -1
  59. package/dist/lib/gcode_ns.d.ts +8 -6
  60. package/dist/lib/gcode_ns.js +4 -3
  61. package/dist/lib/gcode_ns.js.map +1 -1
  62. package/dist/lib/measurement.js +3 -0
  63. package/dist/lib/measurement.js.map +1 -1
  64. package/dist/lib/protobufs/main_pb.d.ts +549 -14
  65. package/dist/lib/protobufs/main_pb.js +4430 -316
  66. package/dist/lib/protobufs/main_pb.js.map +1 -1
  67. package/package.json +1 -1
  68. package/dist/lib/gcode/translator_axis_definition.d.ts +0 -20
  69. package/dist/lib/gcode/translator_axis_definition.js.map +0 -1
  70. package/dist/lib/gcode/translator_definition.d.ts +0 -18
  71. package/dist/lib/gcode/translator_definition.js.map +0 -1
  72. package/dist/lib/gcode/translator_live.js.map +0 -1
@@ -21,15 +21,21 @@ var __importStar = (this && this.__importStar) || function (mod) {
21
21
  return result;
22
22
  };
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
- exports.TranslatorLive = void 0;
24
+ exports.OfflineTranslator = void 0;
25
25
  const gateway = __importStar(require("../gateway"));
26
- const translate_result_1 = require("./translate_result");
26
+ const device_definition_1 = require("./device_definition");
27
27
  const translator_config_1 = require("./translator_config");
28
+ const translate_result_1 = require("./translate_result");
28
29
  const finalizer_1 = require("../finalizer");
29
- class TranslatorLive {
30
+ /**
31
+ * Represents an offline G-Code translator.
32
+ * It allows to translate G-Code blocks to Zaber ASCII protocol stream commands.
33
+ * This translator does not need a connected device to perform translation.
34
+ */
35
+ class OfflineTranslator {
30
36
  constructor(translatorId) {
31
37
  this._translatorId = translatorId;
32
- (0, finalizer_1.registerForFinalization)(this, TranslatorLive._free.bind(null, translatorId));
38
+ (0, finalizer_1.registerForFinalization)(this, OfflineTranslator._free.bind(null, translatorId));
33
39
  }
34
40
  /**
35
41
  * The ID of the translator that serves to identify native resources.
@@ -38,35 +44,48 @@ class TranslatorLive {
38
44
  return this._translatorId;
39
45
  }
40
46
  /**
41
- * Sets up the translator on top of a provided stream.
42
- * @param stream The stream to setup the translator on.
43
- * The stream must be already setup in a live or a store mode.
44
- * @param config Configuration of the translator.
47
+ * Current coordinate system.
48
+ */
49
+ get coordinateSystem() {
50
+ return this._getCurrentCoordinateSystem();
51
+ }
52
+ /**
53
+ * Sets up translator from provided device definition and configuration.
54
+ * @param definition Definition of device and its peripherals.
55
+ * The definition must match a device that later performs the commands.
56
+ * @param config? Configuration of the translator.
45
57
  * @return New instance of translator.
46
58
  */
47
- static setup(stream, config) {
48
- const request = new gateway.TranslatorCreateLiveRequest();
49
- request.setDevice(stream.device.deviceAddress);
50
- request.setInterfaceId(stream.device.connection.interfaceId);
51
- request.setStreamId(stream.streamId);
59
+ static async setup(definition, config) {
60
+ const request = new gateway.TranslatorCreateRequest();
61
+ request.setDefinition(device_definition_1.DeviceDefinition.toProtobuf(definition));
52
62
  request.setConfig(translator_config_1.TranslatorConfig.toProtobuf(config));
53
- const response = gateway.callSync('gcode/create_live', request, gateway.TranslatorCreateResponse);
54
- return new TranslatorLive(response.getTranslatorId());
63
+ const response = await gateway.callAsync('gcode/create', request, gateway.TranslatorCreateResponse);
64
+ return new OfflineTranslator(response.getTranslatorId());
55
65
  }
56
66
  /**
57
67
  * Translates a single block (line) of G-code.
58
- * The commands are queued in the underlying stream to ensure smooth continues movement.
59
- * Returning of this method indicates that the commands are queued (not necessarily executed).
60
68
  * @param block Block (line) of G-code.
61
- * @return Result of translation containing the commands sent to the device.
69
+ * @return Result of translation containing the stream commands.
62
70
  */
63
- async translate(block) {
71
+ translate(block) {
64
72
  const request = new gateway.TranslatorTranslateRequest();
65
73
  request.setTranslatorId(this.translatorId);
66
74
  request.setBlock(block);
67
- const response = await gateway.callAsync('gcode/translate_live', request, gateway.TranslatorTranslateResponse);
75
+ const response = gateway.callSync('gcode/translate', request, gateway.TranslatorTranslateResponse);
68
76
  return translate_result_1.TranslateResult.fromProtobuf(response.toObject());
69
77
  }
78
+ /**
79
+ * Flushes the remaining stream commands waiting in optimization buffer.
80
+ * The flush is also performed by M2 and M30 codes.
81
+ * @return The remaining stream commands.
82
+ */
83
+ flush() {
84
+ const request = new gateway.TranslatorEmptyRequest();
85
+ request.setTranslatorId(this.translatorId);
86
+ const response = gateway.callSync('gcode/flush', request, gateway.TranslatorFlushResponse);
87
+ return response.getCommandsList();
88
+ }
70
89
  /**
71
90
  * Sets the speed at which the device moves when traversing (G0).
72
91
  * @param traverseRate The traverse rate.
@@ -125,6 +144,41 @@ class TranslatorLive {
125
144
  request.setUnit(unit);
126
145
  gateway.callSync('gcode/set_axis_default', request);
127
146
  }
147
+ /**
148
+ * Gets offset of an axis in a given coordinate system.
149
+ * @param coordinateSystem Coordinate system (e.g. G54).
150
+ * @param axis Letter of the axis.
151
+ * @param unit Units of position.
152
+ * @return Offset in translator units of the axis.
153
+ */
154
+ getAxisCoordinateSystemOffset(coordinateSystem, axis, unit) {
155
+ const request = new gateway.TranslatorGetAxisOffsetRequest();
156
+ request.setTranslatorId(this.translatorId);
157
+ request.setCoordinateSystem(coordinateSystem);
158
+ request.setAxis(axis);
159
+ request.setUnit(unit);
160
+ const response = gateway.callSync('gcode/get_axis_offset', request, gateway.TranslatorGetAxisPositionResponse);
161
+ return response.getValue();
162
+ }
163
+ /**
164
+ * Resets internal state after device rejected generated command.
165
+ * Axis positions become uninitialized.
166
+ */
167
+ resetAfterStreamError() {
168
+ const request = new gateway.TranslatorEmptyRequest();
169
+ request.setTranslatorId(this.translatorId);
170
+ gateway.callSync('gcode/reset_after_stream_error', request);
171
+ }
172
+ /**
173
+ * Allows to scale feed rate of the translated code by a coefficient.
174
+ * @param coefficient Coefficient of the original feed rate.
175
+ */
176
+ setFeedRateOverride(coefficient) {
177
+ const request = new gateway.TranslatorSetFeedRateOverrideRequest();
178
+ request.setTranslatorId(this.translatorId);
179
+ request.setCoefficient(coefficient);
180
+ gateway.callSync('gcode/set_feed_rate_override', request);
181
+ }
128
182
  /**
129
183
  * Releases native resources of a translator.
130
184
  * @param translatorId The ID of the translator.
@@ -134,14 +188,24 @@ class TranslatorLive {
134
188
  request.setTranslatorId(translatorId);
135
189
  gateway.callSync('gcode/free', request);
136
190
  }
191
+ /**
192
+ * Gets current coordinate system (e.g. G54).
193
+ * @return Current coordinate system.
194
+ */
195
+ _getCurrentCoordinateSystem() {
196
+ const request = new gateway.TranslatorEmptyRequest();
197
+ request.setTranslatorId(this.translatorId);
198
+ const response = gateway.callSync('gcode/get_current_coordinate_system', request, gateway.TranslatorGetCurrentCoordinateSystemResponse);
199
+ return response.getValue();
200
+ }
137
201
  /**
138
202
  * Releases the native resources of the translator.
139
203
  * Should only be called if your environment does not support FinalizationRegistry.
140
204
  * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry
141
205
  */
142
206
  free() {
143
- TranslatorLive._free(this.translatorId);
207
+ OfflineTranslator._free(this.translatorId);
144
208
  }
145
209
  }
146
- exports.TranslatorLive = TranslatorLive;
147
- //# sourceMappingURL=translator_live.js.map
210
+ exports.OfflineTranslator = OfflineTranslator;
211
+ //# sourceMappingURL=offline_translator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offline_translator.js","sourceRoot":"","sources":["../../../src/gcode/offline_translator.ts"],"names":[],"mappings":"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","sourcesContent":["// ==== THIS FILE IS GENERATED FROM A TEMPLATE ==== //\n// ============= DO NOT EDIT DIRECTLY ============= //\n\nimport * as gateway from '../gateway';\nimport { DeviceDefinition } from './device_definition';\nimport { TranslatorConfig } from './translator_config';\nimport { TranslateResult } from './translate_result';\nimport { Angle, Length, Native, AngularVelocity, Velocity } from '../units';\nimport { registerForFinalization } from '../finalizer';\n\n/**\n * Represents an offline G-Code translator.\n * It allows to translate G-Code blocks to Zaber ASCII protocol stream commands.\n * This translator does not need a connected device to perform translation.\n */\nexport class OfflineTranslator {\n /**\n * The ID of the translator that serves to identify native resources.\n */\n public get translatorId(): number {\n return this._translatorId;\n }\n private _translatorId: number;\n\n /**\n * Current coordinate system.\n */\n public get coordinateSystem(): string {\n return this._getCurrentCoordinateSystem();\n }\n\n constructor(translatorId: number) {\n this._translatorId = translatorId;\n registerForFinalization(this, OfflineTranslator._free.bind(null, translatorId));\n }\n\n /**\n * Sets up translator from provided device definition and configuration.\n * @param definition Definition of device and its peripherals.\n * The definition must match a device that later performs the commands.\n * @param config? Configuration of the translator.\n * @return New instance of translator.\n */\n public static async setup(\n definition: DeviceDefinition,\n config?: TranslatorConfig\n ): Promise<OfflineTranslator> {\n const request = new gateway.TranslatorCreateRequest();\n request.setDefinition(DeviceDefinition.toProtobuf(definition));\n request.setConfig(TranslatorConfig.toProtobuf(config));\n\n const response = await gateway.callAsync<gateway.TranslatorCreateResponse>(\n 'gcode/create',\n request,\n gateway.TranslatorCreateResponse);\n return new OfflineTranslator(response.getTranslatorId());\n }\n\n /**\n * Translates a single block (line) of G-code.\n * @param block Block (line) of G-code.\n * @return Result of translation containing the stream commands.\n */\n public translate(\n block: string\n ): TranslateResult {\n const request = new gateway.TranslatorTranslateRequest();\n request.setTranslatorId(this.translatorId);\n request.setBlock(block);\n\n const response = gateway.callSync<gateway.TranslatorTranslateResponse>(\n 'gcode/translate',\n request,\n gateway.TranslatorTranslateResponse);\n return TranslateResult.fromProtobuf(response.toObject());\n }\n\n /**\n * Flushes the remaining stream commands waiting in optimization buffer.\n * The flush is also performed by M2 and M30 codes.\n * @return The remaining stream commands.\n */\n public flush(): string[] {\n const request = new gateway.TranslatorEmptyRequest();\n request.setTranslatorId(this.translatorId);\n\n const response = gateway.callSync<gateway.TranslatorFlushResponse>(\n 'gcode/flush',\n request,\n gateway.TranslatorFlushResponse);\n return response.getCommandsList();\n }\n\n /**\n * Sets the speed at which the device moves when traversing (G0).\n * @param traverseRate The traverse rate.\n * @param unit Units of the traverse rate.\n */\n public setTraverseRate(\n traverseRate: number,\n unit: Velocity | AngularVelocity | Native\n ): void {\n const request = new gateway.TranslatorSetTraverseRateRequest();\n request.setTranslatorId(this.translatorId);\n request.setTraverseRate(traverseRate);\n request.setUnit(unit);\n\n gateway.callSync('gcode/set_traverse_rate', request);\n }\n\n /**\n * Sets position of translator's axis.\n * Use this method to set position after performing movement outside of the translator.\n * This method does not cause any movement.\n * @param axis Letter of the axis.\n * @param position The position.\n * @param unit Units of position.\n */\n public setAxisPosition(\n axis: string,\n position: number,\n unit: Length | Angle | Native\n ): void {\n const request = new gateway.TranslatorSetAxisPositionRequest();\n request.setTranslatorId(this.translatorId);\n request.setAxis(axis);\n request.setPosition(position);\n request.setUnit(unit);\n\n gateway.callSync('gcode/set_axis_position', request);\n }\n\n /**\n * Gets position of translator's axis.\n * This method does not query device but returns value from translator's state.\n * @param axis Letter of the axis.\n * @param unit Units of position.\n * @return Position of translator's axis.\n */\n public getAxisPosition(\n axis: string,\n unit: Length | Angle | Native\n ): number {\n const request = new gateway.TranslatorGetAxisPositionRequest();\n request.setTranslatorId(this.translatorId);\n request.setAxis(axis);\n request.setUnit(unit);\n\n const response = gateway.callSync<gateway.TranslatorGetAxisPositionResponse>(\n 'gcode/get_axis_position',\n request,\n gateway.TranslatorGetAxisPositionResponse);\n return response.getValue();\n }\n\n /**\n * Sets default position of translator's axis.\n * This position is used by G28.\n * @param axis Letter of the axis.\n * @param position The default position.\n * @param unit Units of position.\n */\n public setAxisDefaultPosition(\n axis: string,\n position: number,\n unit: Length | Angle | Native\n ): void {\n const request = new gateway.TranslatorSetAxisPositionRequest();\n request.setTranslatorId(this.translatorId);\n request.setAxis(axis);\n request.setPosition(position);\n request.setUnit(unit);\n\n gateway.callSync('gcode/set_axis_default', request);\n }\n\n /**\n * Gets offset of an axis in a given coordinate system.\n * @param coordinateSystem Coordinate system (e.g. G54).\n * @param axis Letter of the axis.\n * @param unit Units of position.\n * @return Offset in translator units of the axis.\n */\n public getAxisCoordinateSystemOffset(\n coordinateSystem: string,\n axis: string,\n unit: Length | Angle | Native\n ): number {\n const request = new gateway.TranslatorGetAxisOffsetRequest();\n request.setTranslatorId(this.translatorId);\n request.setCoordinateSystem(coordinateSystem);\n request.setAxis(axis);\n request.setUnit(unit);\n\n const response = gateway.callSync<gateway.TranslatorGetAxisPositionResponse>(\n 'gcode/get_axis_offset',\n request,\n gateway.TranslatorGetAxisPositionResponse);\n return response.getValue();\n }\n\n /**\n * Resets internal state after device rejected generated command.\n * Axis positions become uninitialized.\n */\n public resetAfterStreamError(): void {\n const request = new gateway.TranslatorEmptyRequest();\n request.setTranslatorId(this.translatorId);\n\n gateway.callSync('gcode/reset_after_stream_error', request);\n }\n\n /**\n * Allows to scale feed rate of the translated code by a coefficient.\n * @param coefficient Coefficient of the original feed rate.\n */\n public setFeedRateOverride(\n coefficient: number\n ): void {\n const request = new gateway.TranslatorSetFeedRateOverrideRequest();\n request.setTranslatorId(this.translatorId);\n request.setCoefficient(coefficient);\n\n gateway.callSync('gcode/set_feed_rate_override', request);\n }\n\n /**\n * Releases native resources of a translator.\n * @param translatorId The ID of the translator.\n */\n private static _free(\n translatorId: number\n ): void {\n const request = new gateway.TranslatorEmptyRequest();\n request.setTranslatorId(translatorId);\n\n gateway.callSync('gcode/free', request);\n }\n\n /**\n * Gets current coordinate system (e.g. G54).\n * @return Current coordinate system.\n */\n private _getCurrentCoordinateSystem(): string {\n const request = new gateway.TranslatorEmptyRequest();\n request.setTranslatorId(this.translatorId);\n\n const response = gateway.callSync<gateway.TranslatorGetCurrentCoordinateSystemResponse>(\n 'gcode/get_current_coordinate_system',\n request,\n gateway.TranslatorGetCurrentCoordinateSystemResponse);\n return response.getValue();\n }\n\n /**\n * Releases the native resources of the translator.\n * Should only be called if your environment does not support FinalizationRegistry.\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry\n */\n public free(): void {\n OfflineTranslator._free(this.translatorId);\n }\n}\n"]}
@@ -1,28 +1,51 @@
1
- import { TranslatorDefinition } from './translator_definition';
2
- import { TranslatorConfig } from './translator_config';
3
1
  import { TranslateResult } from './translate_result';
2
+ import { TranslatorConfig } from './translator_config';
3
+ import { Stream } from '../ascii/stream';
4
4
  import { Angle, Length, Native, AngularVelocity, Velocity } from '../units';
5
+ /**
6
+ * Represents a live G-Code translator.
7
+ * It allows to stream G-Code blocks to a connected device.
8
+ * It requires a stream to be setup on the device.
9
+ */
5
10
  export declare class Translator {
6
11
  /**
7
12
  * The ID of the translator that serves to identify native resources.
8
13
  */
9
14
  get translatorId(): number;
10
15
  private _translatorId;
16
+ /**
17
+ * Current coordinate system.
18
+ */
19
+ get coordinateSystem(): string;
11
20
  constructor(translatorId: number);
12
21
  /**
13
- * Sets up translator from provided device definition and configuration.
14
- * @param definition Definition of device and its peripherals.
15
- * The definition must match a device that later performs the commands.
16
- * @param config Configuration of the translator.
22
+ * Sets up the translator on top of a provided stream.
23
+ * @param stream The stream to setup the translator on.
24
+ * The stream must be already setup in a live or a store mode.
25
+ * @param config? Configuration of the translator.
17
26
  * @return New instance of translator.
18
27
  */
19
- static setup(definition: TranslatorDefinition, config: TranslatorConfig): Promise<Translator>;
28
+ static setup(stream: Stream, config?: TranslatorConfig): Promise<Translator>;
20
29
  /**
21
30
  * Translates a single block (line) of G-code.
31
+ * The commands are queued in the underlying stream to ensure smooth continues movement.
32
+ * Returning of this method indicates that the commands are queued (not necessarily executed).
22
33
  * @param block Block (line) of G-code.
23
- * @return Result of translation containing the stream commands.
34
+ * @return Result of translation containing the commands sent to the device.
24
35
  */
25
- translate(block: string): TranslateResult;
36
+ translate(block: string): Promise<TranslateResult>;
37
+ /**
38
+ * Flushes the remaining stream commands waiting in optimization buffer into the underlying stream.
39
+ * The flush is also performed by M2 and M30 codes.
40
+ * @param waitUntilIdle Determines whether to wait for the stream to finish all the movements.
41
+ * @return The remaining stream commands.
42
+ */
43
+ flush(waitUntilIdle?: boolean): Promise<string[]>;
44
+ /**
45
+ * Resets position of the translator from the underlying stream.
46
+ * Call this method after performing a movement outside of translator.
47
+ */
48
+ resetPosition(): Promise<void>;
26
49
  /**
27
50
  * Sets the speed at which the device moves when traversing (G0).
28
51
  * @param traverseRate The traverse rate.
@@ -54,11 +77,34 @@ export declare class Translator {
54
77
  * @param unit Units of position.
55
78
  */
56
79
  setAxisDefaultPosition(axis: string, position: number, unit: Length | Angle | Native): void;
80
+ /**
81
+ * Gets offset of an axis in a given coordinate system.
82
+ * @param coordinateSystem Coordinate system (e.g. G54).
83
+ * @param axis Letter of the axis.
84
+ * @param unit Units of position.
85
+ * @return Offset in translator units of the axis.
86
+ */
87
+ getAxisCoordinateSystemOffset(coordinateSystem: string, axis: string, unit: Length | Angle | Native): number;
88
+ /**
89
+ * Resets internal state after device rejected generated command.
90
+ * Axis positions become uninitialized.
91
+ */
92
+ resetAfterStreamError(): void;
93
+ /**
94
+ * Allows to scale feed rate of the translated code by a coefficient.
95
+ * @param coefficient Coefficient of the original feed rate.
96
+ */
97
+ setFeedRateOverride(coefficient: number): void;
57
98
  /**
58
99
  * Releases native resources of a translator.
59
100
  * @param translatorId The ID of the translator.
60
101
  */
61
102
  private static _free;
103
+ /**
104
+ * Gets current coordinate system (e.g. G54).
105
+ * @return Current coordinate system.
106
+ */
107
+ private _getCurrentCoordinateSystem;
62
108
  /**
63
109
  * Releases the native resources of the translator.
64
110
  * Should only be called if your environment does not support FinalizationRegistry.
@@ -23,10 +23,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.Translator = void 0;
25
25
  const gateway = __importStar(require("../gateway"));
26
- const translator_definition_1 = require("./translator_definition");
27
- const translator_config_1 = require("./translator_config");
28
26
  const translate_result_1 = require("./translate_result");
27
+ const translator_config_1 = require("./translator_config");
29
28
  const finalizer_1 = require("../finalizer");
29
+ /**
30
+ * Represents a live G-Code translator.
31
+ * It allows to stream G-Code blocks to a connected device.
32
+ * It requires a stream to be setup on the device.
33
+ */
30
34
  class Translator {
31
35
  constructor(translatorId) {
32
36
  this._translatorId = translatorId;
@@ -39,31 +43,63 @@ class Translator {
39
43
  return this._translatorId;
40
44
  }
41
45
  /**
42
- * Sets up translator from provided device definition and configuration.
43
- * @param definition Definition of device and its peripherals.
44
- * The definition must match a device that later performs the commands.
45
- * @param config Configuration of the translator.
46
+ * Current coordinate system.
47
+ */
48
+ get coordinateSystem() {
49
+ return this._getCurrentCoordinateSystem();
50
+ }
51
+ /**
52
+ * Sets up the translator on top of a provided stream.
53
+ * @param stream The stream to setup the translator on.
54
+ * The stream must be already setup in a live or a store mode.
55
+ * @param config? Configuration of the translator.
46
56
  * @return New instance of translator.
47
57
  */
48
- static async setup(definition, config) {
49
- const request = new gateway.TranslatorCreateRequest();
50
- request.setDefinition(translator_definition_1.TranslatorDefinition.toProtobuf(definition));
58
+ static async setup(stream, config) {
59
+ const request = new gateway.TranslatorCreateLiveRequest();
60
+ request.setDevice(stream.device.deviceAddress);
61
+ request.setInterfaceId(stream.device.connection.interfaceId);
62
+ request.setStreamId(stream.streamId);
51
63
  request.setConfig(translator_config_1.TranslatorConfig.toProtobuf(config));
52
- const response = await gateway.callAsync('gcode/create', request, gateway.TranslatorCreateResponse);
64
+ const response = await gateway.callAsync('gcode/create_live', request, gateway.TranslatorCreateResponse);
53
65
  return new Translator(response.getTranslatorId());
54
66
  }
55
67
  /**
56
68
  * Translates a single block (line) of G-code.
69
+ * The commands are queued in the underlying stream to ensure smooth continues movement.
70
+ * Returning of this method indicates that the commands are queued (not necessarily executed).
57
71
  * @param block Block (line) of G-code.
58
- * @return Result of translation containing the stream commands.
72
+ * @return Result of translation containing the commands sent to the device.
59
73
  */
60
- translate(block) {
74
+ async translate(block) {
61
75
  const request = new gateway.TranslatorTranslateRequest();
62
76
  request.setTranslatorId(this.translatorId);
63
77
  request.setBlock(block);
64
- const response = gateway.callSync('gcode/translate', request, gateway.TranslatorTranslateResponse);
78
+ const response = await gateway.callAsync('gcode/translate_live', request, gateway.TranslatorTranslateResponse);
65
79
  return translate_result_1.TranslateResult.fromProtobuf(response.toObject());
66
80
  }
81
+ /**
82
+ * Flushes the remaining stream commands waiting in optimization buffer into the underlying stream.
83
+ * The flush is also performed by M2 and M30 codes.
84
+ * @param waitUntilIdle Determines whether to wait for the stream to finish all the movements.
85
+ * @return The remaining stream commands.
86
+ */
87
+ async flush(waitUntilIdle = true) {
88
+ const request = new gateway.TranslatorFlushLiveRequest();
89
+ request.setTranslatorId(this.translatorId);
90
+ request.setWaitUntilIdle(waitUntilIdle);
91
+ const response = await gateway.callAsync('gcode/flush_live', request, gateway.TranslatorFlushResponse);
92
+ return response.getCommandsList();
93
+ }
94
+ /**
95
+ * Resets position of the translator from the underlying stream.
96
+ * Call this method after performing a movement outside of translator.
97
+ */
98
+ async resetPosition() {
99
+ const request = new gateway.TranslatorEmptyRequest();
100
+ request.setTranslatorId(this.translatorId);
101
+ await gateway.callAsync('gcode/reset_position_from_stream', request);
102
+ }
67
103
  /**
68
104
  * Sets the speed at which the device moves when traversing (G0).
69
105
  * @param traverseRate The traverse rate.
@@ -122,6 +158,41 @@ class Translator {
122
158
  request.setUnit(unit);
123
159
  gateway.callSync('gcode/set_axis_default', request);
124
160
  }
161
+ /**
162
+ * Gets offset of an axis in a given coordinate system.
163
+ * @param coordinateSystem Coordinate system (e.g. G54).
164
+ * @param axis Letter of the axis.
165
+ * @param unit Units of position.
166
+ * @return Offset in translator units of the axis.
167
+ */
168
+ getAxisCoordinateSystemOffset(coordinateSystem, axis, unit) {
169
+ const request = new gateway.TranslatorGetAxisOffsetRequest();
170
+ request.setTranslatorId(this.translatorId);
171
+ request.setCoordinateSystem(coordinateSystem);
172
+ request.setAxis(axis);
173
+ request.setUnit(unit);
174
+ const response = gateway.callSync('gcode/get_axis_offset', request, gateway.TranslatorGetAxisPositionResponse);
175
+ return response.getValue();
176
+ }
177
+ /**
178
+ * Resets internal state after device rejected generated command.
179
+ * Axis positions become uninitialized.
180
+ */
181
+ resetAfterStreamError() {
182
+ const request = new gateway.TranslatorEmptyRequest();
183
+ request.setTranslatorId(this.translatorId);
184
+ gateway.callSync('gcode/reset_after_stream_error', request);
185
+ }
186
+ /**
187
+ * Allows to scale feed rate of the translated code by a coefficient.
188
+ * @param coefficient Coefficient of the original feed rate.
189
+ */
190
+ setFeedRateOverride(coefficient) {
191
+ const request = new gateway.TranslatorSetFeedRateOverrideRequest();
192
+ request.setTranslatorId(this.translatorId);
193
+ request.setCoefficient(coefficient);
194
+ gateway.callSync('gcode/set_feed_rate_override', request);
195
+ }
125
196
  /**
126
197
  * Releases native resources of a translator.
127
198
  * @param translatorId The ID of the translator.
@@ -131,6 +202,16 @@ class Translator {
131
202
  request.setTranslatorId(translatorId);
132
203
  gateway.callSync('gcode/free', request);
133
204
  }
205
+ /**
206
+ * Gets current coordinate system (e.g. G54).
207
+ * @return Current coordinate system.
208
+ */
209
+ _getCurrentCoordinateSystem() {
210
+ const request = new gateway.TranslatorEmptyRequest();
211
+ request.setTranslatorId(this.translatorId);
212
+ const response = gateway.callSync('gcode/get_current_coordinate_system', request, gateway.TranslatorGetCurrentCoordinateSystemResponse);
213
+ return response.getValue();
214
+ }
134
215
  /**
135
216
  * Releases the native resources of the translator.
136
217
  * Should only be called if your environment does not support FinalizationRegistry.
@@ -1 +1 @@
1
- {"version":3,"file":"translator.js","sourceRoot":"","sources":["../../../src/gcode/translator.ts"],"names":[],"mappings":"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","sourcesContent":["// ==== THIS FILE IS GENERATED FROM A TEMPLATE ==== //\n// ============= DO NOT EDIT DIRECTLY ============= //\n\nimport * as gateway from '../gateway';\nimport { TranslatorDefinition } from './translator_definition';\nimport { TranslatorConfig } from './translator_config';\nimport { TranslateResult } from './translate_result';\nimport { Angle, Length, Native, AngularVelocity, Velocity } from '../units';\nimport { registerForFinalization } from '../finalizer';\n\nexport class Translator {\n /**\n * The ID of the translator that serves to identify native resources.\n */\n public get translatorId(): number {\n return this._translatorId;\n }\n private _translatorId: number;\n\n constructor(translatorId: number) {\n this._translatorId = translatorId;\n registerForFinalization(this, Translator._free.bind(null, translatorId));\n }\n\n /**\n * Sets up translator from provided device definition and configuration.\n * @param definition Definition of device and its peripherals.\n * The definition must match a device that later performs the commands.\n * @param config Configuration of the translator.\n * @return New instance of translator.\n */\n public static async setup(\n definition: TranslatorDefinition,\n config: TranslatorConfig\n ): Promise<Translator> {\n const request = new gateway.TranslatorCreateRequest();\n request.setDefinition(TranslatorDefinition.toProtobuf(definition));\n request.setConfig(TranslatorConfig.toProtobuf(config));\n\n const response = await gateway.callAsync<gateway.TranslatorCreateResponse>(\n 'gcode/create',\n request,\n gateway.TranslatorCreateResponse);\n return new Translator(response.getTranslatorId());\n }\n\n /**\n * Translates a single block (line) of G-code.\n * @param block Block (line) of G-code.\n * @return Result of translation containing the stream commands.\n */\n public translate(\n block: string\n ): TranslateResult {\n const request = new gateway.TranslatorTranslateRequest();\n request.setTranslatorId(this.translatorId);\n request.setBlock(block);\n\n const response = gateway.callSync<gateway.TranslatorTranslateResponse>(\n 'gcode/translate',\n request,\n gateway.TranslatorTranslateResponse);\n return TranslateResult.fromProtobuf(response.toObject());\n }\n\n /**\n * Sets the speed at which the device moves when traversing (G0).\n * @param traverseRate The traverse rate.\n * @param unit Units of the traverse rate.\n */\n public setTraverseRate(\n traverseRate: number,\n unit: Velocity | AngularVelocity | Native\n ): void {\n const request = new gateway.TranslatorSetTraverseRateRequest();\n request.setTranslatorId(this.translatorId);\n request.setTraverseRate(traverseRate);\n request.setUnit(unit);\n\n gateway.callSync('gcode/set_traverse_rate', request);\n }\n\n /**\n * Sets position of translator's axis.\n * Use this method to set position after performing movement outside of the translator.\n * This method does not cause any movement.\n * @param axis Letter of the axis.\n * @param position The position.\n * @param unit Units of position.\n */\n public setAxisPosition(\n axis: string,\n position: number,\n unit: Length | Angle | Native\n ): void {\n const request = new gateway.TranslatorSetAxisPositionRequest();\n request.setTranslatorId(this.translatorId);\n request.setAxis(axis);\n request.setPosition(position);\n request.setUnit(unit);\n\n gateway.callSync('gcode/set_axis_position', request);\n }\n\n /**\n * Gets position of translator's axis.\n * This method does not query device but returns value from translator's state.\n * @param axis Letter of the axis.\n * @param unit Units of position.\n * @return Position of translator's axis.\n */\n public getAxisPosition(\n axis: string,\n unit: Length | Angle | Native\n ): number {\n const request = new gateway.TranslatorGetAxisPositionRequest();\n request.setTranslatorId(this.translatorId);\n request.setAxis(axis);\n request.setUnit(unit);\n\n const response = gateway.callSync<gateway.TranslatorGetAxisPositionResponse>(\n 'gcode/get_axis_position',\n request,\n gateway.TranslatorGetAxisPositionResponse);\n return response.getValue();\n }\n\n /**\n * Sets default position of translator's axis.\n * This position is used by G28.\n * @param axis Letter of the axis.\n * @param position The default position.\n * @param unit Units of position.\n */\n public setAxisDefaultPosition(\n axis: string,\n position: number,\n unit: Length | Angle | Native\n ): void {\n const request = new gateway.TranslatorSetAxisPositionRequest();\n request.setTranslatorId(this.translatorId);\n request.setAxis(axis);\n request.setPosition(position);\n request.setUnit(unit);\n\n gateway.callSync('gcode/set_axis_default', request);\n }\n\n /**\n * Releases native resources of a translator.\n * @param translatorId The ID of the translator.\n */\n private static _free(\n translatorId: number\n ): void {\n const request = new gateway.TranslatorEmptyRequest();\n request.setTranslatorId(translatorId);\n\n gateway.callSync('gcode/free', request);\n }\n\n /**\n * Releases the native resources of the translator.\n * Should only be called if your environment does not support FinalizationRegistry.\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry\n */\n public free(): void {\n Translator._free(this.translatorId);\n }\n}\n"]}
1
+ {"version":3,"file":"translator.js","sourceRoot":"","sources":["../../../src/gcode/translator.ts"],"names":[],"mappings":"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","sourcesContent":["// ==== THIS FILE IS GENERATED FROM A TEMPLATE ==== //\n// ============= DO NOT EDIT DIRECTLY ============= //\n\nimport * as gateway from '../gateway';\nimport { TranslateResult } from './translate_result';\nimport { TranslatorConfig } from './translator_config';\nimport { Stream } from '../ascii/stream';\nimport { Angle, Length, Native, AngularVelocity, Velocity } from '../units';\nimport { registerForFinalization } from '../finalizer';\n\n/**\n * Represents a live G-Code translator.\n * It allows to stream G-Code blocks to a connected device.\n * It requires a stream to be setup on the device.\n */\nexport class Translator {\n /**\n * The ID of the translator that serves to identify native resources.\n */\n public get translatorId(): number {\n return this._translatorId;\n }\n private _translatorId: number;\n\n /**\n * Current coordinate system.\n */\n public get coordinateSystem(): string {\n return this._getCurrentCoordinateSystem();\n }\n\n constructor(translatorId: number) {\n this._translatorId = translatorId;\n registerForFinalization(this, Translator._free.bind(null, translatorId));\n }\n\n /**\n * Sets up the translator on top of a provided stream.\n * @param stream The stream to setup the translator on.\n * The stream must be already setup in a live or a store mode.\n * @param config? Configuration of the translator.\n * @return New instance of translator.\n */\n public static async setup(\n stream: Stream,\n config?: TranslatorConfig\n ): Promise<Translator> {\n const request = new gateway.TranslatorCreateLiveRequest();\n request.setDevice(stream.device.deviceAddress);\n request.setInterfaceId(stream.device.connection.interfaceId);\n request.setStreamId(stream.streamId);\n request.setConfig(TranslatorConfig.toProtobuf(config));\n\n const response = await gateway.callAsync<gateway.TranslatorCreateResponse>(\n 'gcode/create_live',\n request,\n gateway.TranslatorCreateResponse);\n return new Translator(response.getTranslatorId());\n }\n\n /**\n * Translates a single block (line) of G-code.\n * The commands are queued in the underlying stream to ensure smooth continues movement.\n * Returning of this method indicates that the commands are queued (not necessarily executed).\n * @param block Block (line) of G-code.\n * @return Result of translation containing the commands sent to the device.\n */\n public async translate(\n block: string\n ): Promise<TranslateResult> {\n const request = new gateway.TranslatorTranslateRequest();\n request.setTranslatorId(this.translatorId);\n request.setBlock(block);\n\n const response = await gateway.callAsync<gateway.TranslatorTranslateResponse>(\n 'gcode/translate_live',\n request,\n gateway.TranslatorTranslateResponse);\n return TranslateResult.fromProtobuf(response.toObject());\n }\n\n /**\n * Flushes the remaining stream commands waiting in optimization buffer into the underlying stream.\n * The flush is also performed by M2 and M30 codes.\n * @param waitUntilIdle Determines whether to wait for the stream to finish all the movements.\n * @return The remaining stream commands.\n */\n public async flush(\n waitUntilIdle: boolean = true\n ): Promise<string[]> {\n const request = new gateway.TranslatorFlushLiveRequest();\n request.setTranslatorId(this.translatorId);\n request.setWaitUntilIdle(waitUntilIdle);\n\n const response = await gateway.callAsync<gateway.TranslatorFlushResponse>(\n 'gcode/flush_live',\n request,\n gateway.TranslatorFlushResponse);\n return response.getCommandsList();\n }\n\n /**\n * Resets position of the translator from the underlying stream.\n * Call this method after performing a movement outside of translator.\n */\n public async resetPosition(): Promise<void> {\n const request = new gateway.TranslatorEmptyRequest();\n request.setTranslatorId(this.translatorId);\n\n await gateway.callAsync('gcode/reset_position_from_stream', request);\n }\n\n /**\n * Sets the speed at which the device moves when traversing (G0).\n * @param traverseRate The traverse rate.\n * @param unit Units of the traverse rate.\n */\n public setTraverseRate(\n traverseRate: number,\n unit: Velocity | AngularVelocity | Native\n ): void {\n const request = new gateway.TranslatorSetTraverseRateRequest();\n request.setTranslatorId(this.translatorId);\n request.setTraverseRate(traverseRate);\n request.setUnit(unit);\n\n gateway.callSync('gcode/set_traverse_rate', request);\n }\n\n /**\n * Sets position of translator's axis.\n * Use this method to set position after performing movement outside of the translator.\n * This method does not cause any movement.\n * @param axis Letter of the axis.\n * @param position The position.\n * @param unit Units of position.\n */\n public setAxisPosition(\n axis: string,\n position: number,\n unit: Length | Angle | Native\n ): void {\n const request = new gateway.TranslatorSetAxisPositionRequest();\n request.setTranslatorId(this.translatorId);\n request.setAxis(axis);\n request.setPosition(position);\n request.setUnit(unit);\n\n gateway.callSync('gcode/set_axis_position', request);\n }\n\n /**\n * Gets position of translator's axis.\n * This method does not query device but returns value from translator's state.\n * @param axis Letter of the axis.\n * @param unit Units of position.\n * @return Position of translator's axis.\n */\n public getAxisPosition(\n axis: string,\n unit: Length | Angle | Native\n ): number {\n const request = new gateway.TranslatorGetAxisPositionRequest();\n request.setTranslatorId(this.translatorId);\n request.setAxis(axis);\n request.setUnit(unit);\n\n const response = gateway.callSync<gateway.TranslatorGetAxisPositionResponse>(\n 'gcode/get_axis_position',\n request,\n gateway.TranslatorGetAxisPositionResponse);\n return response.getValue();\n }\n\n /**\n * Sets default position of translator's axis.\n * This position is used by G28.\n * @param axis Letter of the axis.\n * @param position The default position.\n * @param unit Units of position.\n */\n public setAxisDefaultPosition(\n axis: string,\n position: number,\n unit: Length | Angle | Native\n ): void {\n const request = new gateway.TranslatorSetAxisPositionRequest();\n request.setTranslatorId(this.translatorId);\n request.setAxis(axis);\n request.setPosition(position);\n request.setUnit(unit);\n\n gateway.callSync('gcode/set_axis_default', request);\n }\n\n /**\n * Gets offset of an axis in a given coordinate system.\n * @param coordinateSystem Coordinate system (e.g. G54).\n * @param axis Letter of the axis.\n * @param unit Units of position.\n * @return Offset in translator units of the axis.\n */\n public getAxisCoordinateSystemOffset(\n coordinateSystem: string,\n axis: string,\n unit: Length | Angle | Native\n ): number {\n const request = new gateway.TranslatorGetAxisOffsetRequest();\n request.setTranslatorId(this.translatorId);\n request.setCoordinateSystem(coordinateSystem);\n request.setAxis(axis);\n request.setUnit(unit);\n\n const response = gateway.callSync<gateway.TranslatorGetAxisPositionResponse>(\n 'gcode/get_axis_offset',\n request,\n gateway.TranslatorGetAxisPositionResponse);\n return response.getValue();\n }\n\n /**\n * Resets internal state after device rejected generated command.\n * Axis positions become uninitialized.\n */\n public resetAfterStreamError(): void {\n const request = new gateway.TranslatorEmptyRequest();\n request.setTranslatorId(this.translatorId);\n\n gateway.callSync('gcode/reset_after_stream_error', request);\n }\n\n /**\n * Allows to scale feed rate of the translated code by a coefficient.\n * @param coefficient Coefficient of the original feed rate.\n */\n public setFeedRateOverride(\n coefficient: number\n ): void {\n const request = new gateway.TranslatorSetFeedRateOverrideRequest();\n request.setTranslatorId(this.translatorId);\n request.setCoefficient(coefficient);\n\n gateway.callSync('gcode/set_feed_rate_override', request);\n }\n\n /**\n * Releases native resources of a translator.\n * @param translatorId The ID of the translator.\n */\n private static _free(\n translatorId: number\n ): void {\n const request = new gateway.TranslatorEmptyRequest();\n request.setTranslatorId(translatorId);\n\n gateway.callSync('gcode/free', request);\n }\n\n /**\n * Gets current coordinate system (e.g. G54).\n * @return Current coordinate system.\n */\n private _getCurrentCoordinateSystem(): string {\n const request = new gateway.TranslatorEmptyRequest();\n request.setTranslatorId(this.translatorId);\n\n const response = gateway.callSync<gateway.TranslatorGetCurrentCoordinateSystemResponse>(\n 'gcode/get_current_coordinate_system',\n request,\n gateway.TranslatorGetCurrentCoordinateSystemResponse);\n return response.getValue();\n }\n\n /**\n * Releases the native resources of the translator.\n * Should only be called if your environment does not support FinalizationRegistry.\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry\n */\n public free(): void {\n Translator._free(this.translatorId);\n }\n}\n"]}
@@ -1,17 +1,17 @@
1
- import { Measurement } from '../measurement';
2
1
  import { AxisMapping } from './axis_mapping';
2
+ import { AxisTransformation } from './axis_transformation';
3
3
  /**
4
- * Configuration of translator.
4
+ * Configuration of a translator.
5
5
  */
6
6
  export interface TranslatorConfig {
7
7
  /**
8
- * Speed at which the device moves when traversing (G0).
8
+ * Optional custom mapping of translator axes to stream axes.
9
9
  */
10
- traverseRate: Measurement;
10
+ axisMappings?: AxisMapping[];
11
11
  /**
12
- * Optional custom mapping of translator axes to stream axes.
12
+ * Optional transformation of axes.
13
13
  */
14
- axesMapping?: AxisMapping[];
14
+ axisTransformations?: AxisTransformation[];
15
15
  }
16
16
  export declare namespace TranslatorConfig {
17
17
  const __type = "TranslatorConfig";
@@ -23,17 +23,20 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.TranslatorConfig = void 0;
25
25
  const gateway = __importStar(require("../gateway"));
26
- const measurement_1 = require("../measurement");
27
26
  const axis_mapping_1 = require("./axis_mapping");
27
+ const axis_transformation_1 = require("./axis_transformation");
28
28
  var TranslatorConfig;
29
29
  (function (TranslatorConfig) {
30
30
  TranslatorConfig.__type = 'TranslatorConfig';
31
31
  /** @internal */
32
32
  function toProtobuf(source) {
33
- var _a, _b;
33
+ var _a, _b, _c, _d;
34
34
  const pbData = new gateway.TranslatorConfig();
35
- pbData.setTraverseRate(measurement_1.Measurement.toProtobuf(source.traverseRate));
36
- pbData.setAxesMappingList((_b = (_a = source.axesMapping) === null || _a === void 0 ? void 0 : _a.map(item => axis_mapping_1.AxisMapping.toProtobuf(item))) !== null && _b !== void 0 ? _b : []);
35
+ if (source == null) {
36
+ return pbData;
37
+ }
38
+ pbData.setAxisMappingsList((_b = (_a = source.axisMappings) === null || _a === void 0 ? void 0 : _a.map(item => axis_mapping_1.AxisMapping.toProtobuf(item))) !== null && _b !== void 0 ? _b : []);
39
+ pbData.setAxisTransformationsList((_d = (_c = source.axisTransformations) === null || _c === void 0 ? void 0 : _c.map(item => axis_transformation_1.AxisTransformation.toProtobuf(item))) !== null && _d !== void 0 ? _d : []);
37
40
  return pbData;
38
41
  }
39
42
  TranslatorConfig.toProtobuf = toProtobuf;
@@ -1 +1 @@
1
- {"version":3,"file":"translator_config.js","sourceRoot":"","sources":["../../../src/gcode/translator_config.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,sDAAsD;;;;;;;;;;;;;;;;;;;;;;AAEtD,oDAAsC;AACtC,gDAA6C;AAC7C,iDAA6C;AAkB7C,IAAiB,gBAAgB,CAUhC;AAVD,WAAiB,gBAAgB;IAClB,uBAAM,GAAG,kBAAkB,CAAC;IAEzC,gBAAgB;IAChB,SAAgB,UAAU,CAAC,MAAwB;;QACjD,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC9C,MAAM,CAAC,eAAe,CAAC,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,kBAAkB,CAAC,MAAA,MAAA,MAAM,CAAC,WAAW,0CAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,0BAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,mCAAI,EAAE,CAAC,CAAC;QAC/F,OAAO,MAAM,CAAC;IAChB,CAAC;IALe,2BAAU,aAKzB,CAAA;AACH,CAAC,EAVgB,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAUhC","sourcesContent":["// ==== THIS FILE IS GENERATED FROM A TEMPLATE ==== //\n// ============= DO NOT EDIT DIRECTLY ============= //\n\nimport * as gateway from '../gateway';\nimport { Measurement } from '../measurement';\nimport { AxisMapping } from './axis_mapping';\n\n/**\n * Configuration of translator.\n */\nexport interface TranslatorConfig {\n /**\n * Speed at which the device moves when traversing (G0).\n */\n traverseRate: Measurement;\n\n /**\n * Optional custom mapping of translator axes to stream axes.\n */\n axesMapping?: AxisMapping[];\n\n}\n\nexport namespace TranslatorConfig {\n export const __type = 'TranslatorConfig';\n\n /** @internal */\n export function toProtobuf(source: TranslatorConfig): gateway.TranslatorConfig {\n const pbData = new gateway.TranslatorConfig();\n pbData.setTraverseRate(Measurement.toProtobuf(source.traverseRate));\n pbData.setAxesMappingList(source.axesMapping?.map(item => AxisMapping.toProtobuf(item)) ?? []);\n return pbData;\n }\n}\n"]}
1
+ {"version":3,"file":"translator_config.js","sourceRoot":"","sources":["../../../src/gcode/translator_config.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,sDAAsD;;;;;;;;;;;;;;;;;;;;;;AAEtD,oDAAsC;AACtC,iDAA6C;AAC7C,+DAA2D;AAkB3D,IAAiB,gBAAgB,CAchC;AAdD,WAAiB,gBAAgB;IAClB,uBAAM,GAAG,kBAAkB,CAAC;IAEzC,gBAAgB;IAChB,SAAgB,UAAU,CAAC,MAA2C;;QACpE,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC9C,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,OAAO,MAAM,CAAC;SACf;QAED,MAAM,CAAC,mBAAmB,CAAC,MAAA,MAAA,MAAM,CAAC,YAAY,0CAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,0BAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,mCAAI,EAAE,CAAC,CAAC;QACjG,MAAM,CAAC,0BAA0B,CAAC,MAAA,MAAA,MAAM,CAAC,mBAAmB,0CAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,wCAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,mCAAI,EAAE,CAAC,CAAC;QACtH,OAAO,MAAM,CAAC;IAChB,CAAC;IATe,2BAAU,aASzB,CAAA;AACH,CAAC,EAdgB,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAchC","sourcesContent":["// ==== THIS FILE IS GENERATED FROM A TEMPLATE ==== //\n// ============= DO NOT EDIT DIRECTLY ============= //\n\nimport * as gateway from '../gateway';\nimport { AxisMapping } from './axis_mapping';\nimport { AxisTransformation } from './axis_transformation';\n\n/**\n * Configuration of a translator.\n */\nexport interface TranslatorConfig {\n /**\n * Optional custom mapping of translator axes to stream axes.\n */\n axisMappings?: AxisMapping[];\n\n /**\n * Optional transformation of axes.\n */\n axisTransformations?: AxisTransformation[];\n\n}\n\nexport namespace TranslatorConfig {\n export const __type = 'TranslatorConfig';\n\n /** @internal */\n export function toProtobuf(source: TranslatorConfig | null | undefined): gateway.TranslatorConfig {\n const pbData = new gateway.TranslatorConfig();\n if (source == null) {\n return pbData;\n }\n\n pbData.setAxisMappingsList(source.axisMappings?.map(item => AxisMapping.toProtobuf(item)) ?? []);\n pbData.setAxisTransformationsList(source.axisTransformations?.map(item => AxisTransformation.toProtobuf(item)) ?? []);\n return pbData;\n }\n}\n"]}
@@ -4,16 +4,18 @@ export declare namespace gcode {
4
4
  type TranslateMessage = gcodeImport.TranslateMessage;
5
5
  const TranslateResult: typeof gcodeImport.TranslateResult;
6
6
  type TranslateResult = gcodeImport.TranslateResult;
7
- const TranslatorAxisDefinition: typeof gcodeImport.TranslatorAxisDefinition;
8
- type TranslatorAxisDefinition = gcodeImport.TranslatorAxisDefinition;
9
- const TranslatorDefinition: typeof gcodeImport.TranslatorDefinition;
10
- type TranslatorDefinition = gcodeImport.TranslatorDefinition;
7
+ const AxisDefinition: typeof gcodeImport.AxisDefinition;
8
+ type AxisDefinition = gcodeImport.AxisDefinition;
9
+ const DeviceDefinition: typeof gcodeImport.DeviceDefinition;
10
+ type DeviceDefinition = gcodeImport.DeviceDefinition;
11
11
  const TranslatorConfig: typeof gcodeImport.TranslatorConfig;
12
12
  type TranslatorConfig = gcodeImport.TranslatorConfig;
13
13
  const AxisMapping: typeof gcodeImport.AxisMapping;
14
14
  type AxisMapping = gcodeImport.AxisMapping;
15
+ const AxisTransformation: typeof gcodeImport.AxisTransformation;
16
+ type AxisTransformation = gcodeImport.AxisTransformation;
15
17
  const Translator: typeof gcodeImport.Translator;
16
18
  type Translator = gcodeImport.Translator;
17
- const TranslatorLive: typeof gcodeImport.TranslatorLive;
18
- type TranslatorLive = gcodeImport.TranslatorLive;
19
+ const OfflineTranslator: typeof gcodeImport.OfflineTranslator;
20
+ type OfflineTranslator = gcodeImport.OfflineTranslator;
19
21
  }
@@ -25,11 +25,12 @@ var gcode;
25
25
  (function (gcode) {
26
26
  gcode.TranslateMessage = gcodeImport.TranslateMessage;
27
27
  gcode.TranslateResult = gcodeImport.TranslateResult;
28
- gcode.TranslatorAxisDefinition = gcodeImport.TranslatorAxisDefinition;
29
- gcode.TranslatorDefinition = gcodeImport.TranslatorDefinition;
28
+ gcode.AxisDefinition = gcodeImport.AxisDefinition;
29
+ gcode.DeviceDefinition = gcodeImport.DeviceDefinition;
30
30
  gcode.TranslatorConfig = gcodeImport.TranslatorConfig;
31
31
  gcode.AxisMapping = gcodeImport.AxisMapping;
32
+ gcode.AxisTransformation = gcodeImport.AxisTransformation;
32
33
  gcode.Translator = gcodeImport.Translator;
33
- gcode.TranslatorLive = gcodeImport.TranslatorLive;
34
+ gcode.OfflineTranslator = gcodeImport.OfflineTranslator;
34
35
  })(gcode = exports.gcode || (exports.gcode = {}));
35
36
  //# sourceMappingURL=gcode_ns.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gcode_ns.js","sourceRoot":"","sources":["../../src/gcode_ns.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAuC;AAEvC,IAAiB,KAAK,CAiBrB;AAjBD,WAAiB,KAAK;IACP,sBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAEhD,qBAAe,GAAG,WAAW,CAAC,eAAe,CAAC;IAE9C,8BAAwB,GAAG,WAAW,CAAC,wBAAwB,CAAC;IAEhE,0BAAoB,GAAG,WAAW,CAAC,oBAAoB,CAAC;IAExD,sBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAEhD,iBAAW,GAAG,WAAW,CAAC,WAAW,CAAC;IAEtC,gBAAU,GAAG,WAAW,CAAC,UAAU,CAAC;IAEpC,oBAAc,GAAG,WAAW,CAAC,cAAc,CAAC;AAE3D,CAAC,EAjBgB,KAAK,GAAL,aAAK,KAAL,aAAK,QAiBrB","sourcesContent":["import * as gcodeImport from './gcode';\n\nexport namespace gcode {\n export const TranslateMessage = gcodeImport.TranslateMessage;\n export type TranslateMessage = gcodeImport.TranslateMessage;\n export const TranslateResult = gcodeImport.TranslateResult;\n export type TranslateResult = gcodeImport.TranslateResult;\n export const TranslatorAxisDefinition = gcodeImport.TranslatorAxisDefinition;\n export type TranslatorAxisDefinition = gcodeImport.TranslatorAxisDefinition;\n export const TranslatorDefinition = gcodeImport.TranslatorDefinition;\n export type TranslatorDefinition = gcodeImport.TranslatorDefinition;\n export const TranslatorConfig = gcodeImport.TranslatorConfig;\n export type TranslatorConfig = gcodeImport.TranslatorConfig;\n export const AxisMapping = gcodeImport.AxisMapping;\n export type AxisMapping = gcodeImport.AxisMapping;\n export const Translator = gcodeImport.Translator;\n export type Translator = gcodeImport.Translator;\n export const TranslatorLive = gcodeImport.TranslatorLive;\n export type TranslatorLive = gcodeImport.TranslatorLive;\n}\n"]}
1
+ {"version":3,"file":"gcode_ns.js","sourceRoot":"","sources":["../../src/gcode_ns.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAuC;AAEvC,IAAiB,KAAK,CAmBrB;AAnBD,WAAiB,KAAK;IACP,sBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAEhD,qBAAe,GAAG,WAAW,CAAC,eAAe,CAAC;IAE9C,oBAAc,GAAG,WAAW,CAAC,cAAc,CAAC;IAE5C,sBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAEhD,sBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAEhD,iBAAW,GAAG,WAAW,CAAC,WAAW,CAAC;IAEtC,wBAAkB,GAAG,WAAW,CAAC,kBAAkB,CAAC;IAEpD,gBAAU,GAAG,WAAW,CAAC,UAAU,CAAC;IAEpC,uBAAiB,GAAG,WAAW,CAAC,iBAAiB,CAAC;AAEjE,CAAC,EAnBgB,KAAK,GAAL,aAAK,KAAL,aAAK,QAmBrB","sourcesContent":["import * as gcodeImport from './gcode';\n\nexport namespace gcode {\n export const TranslateMessage = gcodeImport.TranslateMessage;\n export type TranslateMessage = gcodeImport.TranslateMessage;\n export const TranslateResult = gcodeImport.TranslateResult;\n export type TranslateResult = gcodeImport.TranslateResult;\n export const AxisDefinition = gcodeImport.AxisDefinition;\n export type AxisDefinition = gcodeImport.AxisDefinition;\n export const DeviceDefinition = gcodeImport.DeviceDefinition;\n export type DeviceDefinition = gcodeImport.DeviceDefinition;\n export const TranslatorConfig = gcodeImport.TranslatorConfig;\n export type TranslatorConfig = gcodeImport.TranslatorConfig;\n export const AxisMapping = gcodeImport.AxisMapping;\n export type AxisMapping = gcodeImport.AxisMapping;\n export const AxisTransformation = gcodeImport.AxisTransformation;\n export type AxisTransformation = gcodeImport.AxisTransformation;\n export const Translator = gcodeImport.Translator;\n export type Translator = gcodeImport.Translator;\n export const OfflineTranslator = gcodeImport.OfflineTranslator;\n export type OfflineTranslator = gcodeImport.OfflineTranslator;\n}\n"]}
@@ -29,6 +29,9 @@ var Measurement;
29
29
  /** @internal */
30
30
  function toProtobuf(source) {
31
31
  const pbData = new gateway.Measurement();
32
+ if (source == null) {
33
+ return pbData;
34
+ }
32
35
  pbData.setValue(source.value);
33
36
  pbData.setUnit(source.unit);
34
37
  return pbData;