motion-master-client 0.0.336 → 0.0.338

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.
@@ -6,38 +6,85 @@ const device_parameter_1 = require("./device-parameter");
6
6
  const parameter_1 = require("./parameter");
7
7
  const util_1 = require("./util");
8
8
  /**
9
- * The DataMonitoring class tracks and collects device parameter values.
9
+ * Tracks and collects device parameter values over time.
10
10
  *
11
- * Unlike {@link MotionMasterClient#startMonitoring}, which returns an observable that never completes on its own,
12
- * this class provides a `stop()` method to complete the monitoring observable, enabling the use of operators like `toArray()` as intended.
11
+ * Unlike {@link MotionMasterClient#startMonitoring}, which returns an
12
+ * observable that does not complete on its own, this class provides
13
+ * explicit control over starting, stopping, and collecting monitoring
14
+ * data. It supports exporting the data in CSV format and provides
15
+ * statistical analysis of the sampling intervals.
13
16
  */
14
17
  class DataMonitoring {
18
+ /**
19
+ * Creates a new `DataMonitoring` instance for collecting device parameter values.
20
+ *
21
+ * @param client - The Motion Master client used to communicate with the device.
22
+ * @param ids - An array of device parameter IDs to monitor. Each ID can be a string
23
+ * or a tuple `[deviceRef, index, subindex]`.
24
+ * @param monitoringInterval - The interval, in milliseconds, at which parameter
25
+ * values should be sampled.
26
+ * @param config - Optional monitoring configuration, such as filters or buffering
27
+ * options.
28
+ */
15
29
  constructor(client, ids, monitoringInterval, config) {
16
30
  this.client = client;
17
31
  this.ids = ids;
18
32
  this.monitoringInterval = monitoringInterval;
19
33
  this.config = config;
20
34
  /**
21
- * The collected data.
35
+ * Stores the collected monitoring data.
22
36
  *
23
- * Use the `clear()` method before starting a new monitoring if you want to collect a fresh set of data.
37
+ * Each element of the outer array represents a single monitoring sample,
38
+ * which is an array of parameter values corresponding to {@link ids}.
39
+ * Use {@link clear} to reset this array before starting a new monitoring session.
24
40
  */
25
41
  this.data = [];
26
42
  /**
27
- * Besides emitting monitored data through the observable created by the {@link #start()} method,
28
- * an instance of this class will also collect data as it arrives.
43
+ * Determines whether incoming monitoring data should be collected.
44
+ *
45
+ * When `true`, each emitted value from the monitoring observable is
46
+ * appended to the {@link data} array. Set to `false` to receive data
47
+ * without storing it.
29
48
  */
30
49
  this.collect = true;
31
50
  /**
32
- * Emit a value to stop the ongoing monitoring.
51
+ * Internal flag indicating whether monitoring has been stopped.
52
+ *
53
+ * Used by {@link start} and {@link stop} to control the observable pipeline.
54
+ * When `true`, the observable returned by `start` completes on the next emission.
33
55
  */
34
- this.finalize$ = new rxjs_1.Subject();
56
+ this.stopped = false;
35
57
  }
36
58
  /**
37
- * Generates a CSV header string using the provided device parameter IDs.
59
+ * Indicates whether monitoring has been stopped.
60
+ *
61
+ * @returns `true` if {@link stop} has been called and the internal
62
+ * stop flag is set, otherwise `false`.
63
+ */
64
+ get isStopped() {
65
+ return this.stopped;
66
+ }
67
+ /**
68
+ * Indicates whether monitoring is currently active.
69
+ *
70
+ * @returns `true` if monitoring has been started via {@link start} and
71
+ * has not yet been stopped, otherwise `false`.
72
+ */
73
+ get isStarted() {
74
+ return !this.stopped;
75
+ }
76
+ /**
77
+ * Generates a CSV header string from the monitored parameter IDs.
78
+ *
79
+ * Each parameter ID in {@link ids} is converted to a string representation
80
+ * using {@link makeParameterId}. String IDs are parsed with
81
+ * {@link splitDeviceParameterId}, while tuple IDs `[deviceRef, index, subindex]`
82
+ * are converted directly.
38
83
  *
39
84
  * @example
40
- * 0x6040:00,0x6060:00,0x6071:00,0x607A:00,0x60FF:00
85
+ * // Possible output: "0x6040:00,0x6060:00,0x6071:00,0x607A:00,0x60FF:00"
86
+ *
87
+ * @returns A comma-separated string representing the header for CSV export.
41
88
  */
42
89
  get header() {
43
90
  return this.ids
@@ -53,21 +100,28 @@ class DataMonitoring {
53
100
  .join(',');
54
101
  }
55
102
  /**
56
- * Converts the collected data to CSV format.
103
+ * Converts the collected monitoring data into CSV (Comma-Separated Values) format.
104
+ *
105
+ * The first row contains the CSV header generated from {@link header},
106
+ * followed by one row per collected sample in {@link data}. Each row
107
+ * represents the parameter values at a given monitoring interval.
108
+ *
109
+ * @returns A string representing the collected data in CSV format,
110
+ * ready for export or analysis.
57
111
  */
58
112
  get csv() {
59
113
  const rows = this.data.map((values) => values.join(','));
60
114
  return [this.header, ...rows].join('\n');
61
115
  }
62
116
  /**
63
- * Finds the index of the timestamp field in the `ids` array.
117
+ * Finds the zero-based index of the timestamp field in the monitored parameters.
64
118
  *
65
- * The timestamp field is identified by object 0x20F0 and subindex 0x00.
66
- * IDs may be strings (parsed using `splitDeviceParameterId`) or tuples
67
- * in the form `[deviceRef, index, subindex]`.
119
+ * The timestamp field is identified as object 0x20F0 with subindex 0x00.
120
+ * Parameter IDs in {@link ids} may be strings (parsed using
121
+ * {@link splitDeviceParameterId}) or tuples in the form `[deviceRef, index, subindex]`.
68
122
  *
69
- * @returns The zero-based index of the timestamp field in `ids`,
70
- * or `-1` if no timestamp entry exists.
123
+ * @returns The index of the timestamp entry in {@link ids}, or `-1` if
124
+ * no timestamp field exists.
71
125
  */
72
126
  get timestampIndex() {
73
127
  const indexOfTimestamp = this.ids.findIndex((id) => {
@@ -82,12 +136,16 @@ class DataMonitoring {
82
136
  return indexOfTimestamp;
83
137
  }
84
138
  /**
85
- * Extracts the timestamp column from the monitoring data.
139
+ * Extracts the timestamp values from the collected monitoring data.
86
140
  *
87
- * Each entry of `data` contains an array of values aligned with `ids`.
88
- * If no timestamp index exists, an empty array is returned.
141
+ * The timestamp column is determined by {@link timestampIndex}, which
142
+ * locates the entry corresponding to object 0x20F0:00 in the monitored
143
+ * parameter list. If no timestamp index is found, an empty array is
144
+ * returned.
89
145
  *
90
- * @returns An array of numeric timestamps extracted from the monitoring data.
146
+ * @returns An array of numeric timestamps aligned with the collected
147
+ * monitoring samples, or an empty array if no timestamp field
148
+ * is configured.
91
149
  */
92
150
  get timestamps() {
93
151
  if (this.timestampIndex === -1) {
@@ -96,12 +154,18 @@ class DataMonitoring {
96
154
  return this.data.map((values) => values[this.timestampIndex]);
97
155
  }
98
156
  /**
99
- * Returns an array of durations (in milliseconds) between consecutive timestamps.
157
+ * Returns the time differences (in milliseconds) between consecutive
158
+ * timestamp values.
159
+ *
160
+ * Each duration is computed as:
161
+ *
162
+ * `durations[i] = timestamps[i] - timestamps[i - 1]`
100
163
  *
101
- * Each duration is calculated as:
102
- * timestamps[i] - timestamps[i - 1]
164
+ * If fewer than two timestamps are available, an empty array is
165
+ * returned.
103
166
  *
104
- * If there are fewer than two timestamps, an empty array is returned.
167
+ * @returns An array of durations representing the time between
168
+ * successive timestamp samples.
105
169
  */
106
170
  get durations() {
107
171
  if (this.timestamps.length < 2) {
@@ -114,45 +178,98 @@ class DataMonitoring {
114
178
  return durations;
115
179
  }
116
180
  /**
117
- * Returns a full analysis of the durations between timestamps.
181
+ * Returns a statistical analysis of the measured timestamp durations.
118
182
  *
119
- * Uses `analyzeTimeDurations` to compute statistics such as:
120
- * - min, max, mean, median, standard deviation
121
- * - percentiles (p95, q1, q3)
122
- * - interquartile range (IQR)
123
- * - filtered durations and filtered statistics (outlier removal via IQR rule)
183
+ * The analysis is computed by {@link analyzeTimeDurations}, which
184
+ * includes a variety of metrics such as minimum, maximum, mean,
185
+ * median, standard deviation, percentiles, and interquartile range.
186
+ * It also provides filtered statistics based on outlier removal using
187
+ * the IQR method.
124
188
  *
125
- * @returns An object containing both raw and filtered statistics for the measured durations.
189
+ * @returns An object containing both raw and filtered duration
190
+ * statistics for the monitoring session.
126
191
  */
127
192
  get analysis() {
128
193
  return (0, util_1.analyzeTimeDurations)(this.durations);
129
194
  }
130
195
  /**
131
- * Clears the previously collected data.
196
+ * Clears all previously collected monitoring data.
197
+ *
198
+ * This resets the {@link data} array to an empty state. Call this
199
+ * method before {@link start} if you want to begin a new monitoring
200
+ * session with no existing samples.
132
201
  */
133
202
  clear() {
134
203
  this.data.length = 0;
135
204
  }
136
205
  /**
137
- * Starts monitoring and, if specified, collects data until `finalize$` emits a value.
206
+ * Starts a new monitoring session and returns an observable that emits
207
+ * device parameter values as they arrive.
208
+ *
209
+ * This method first calls {@link stop} to ensure any existing session is cleanly
210
+ * terminated. It then resets the internal state and, if `clear` is true,
211
+ * removes all previously collected data.
212
+ *
213
+ * The returned observable emits values until {@link stop} is called,
214
+ * at which point the internal {@link stopped} flag is set, causing the stream to
215
+ * complete on its next emission via `takeWhile()`. This mechanism ensures that
216
+ * all internal and external subscriptions are cleanly shut down, preventing
217
+ * resource leaks.
138
218
  *
139
- * NOTE: To receive and collect data, you must subscribe to the returned observable.
219
+ * If {@link collect} is enabled, each emitted value is also appended to the
220
+ * {@link data} array for later retrieval or analysis.
221
+ *
222
+ * @param clear - Whether to clear previously collected data in {@link data} before
223
+ * starting the monitoring session. Defaults to `false`.
224
+ * @returns An observable that emits arrays of parameter values until
225
+ * the monitoring is stopped or the source observable completes.
140
226
  */
141
- start() {
142
- if (this.collect) {
143
- return this.client.startMonitoring(this.ids, this.monitoringInterval, this.config, 5000).pipe((0, rxjs_1.tap)((values) => this.data.push(values)), (0, rxjs_1.takeUntil)(this.finalize$));
144
- }
145
- else {
146
- return this.client
147
- .startMonitoring(this.ids, this.monitoringInterval, this.config, 5000)
148
- .pipe((0, rxjs_1.takeUntil)(this.finalize$));
149
- }
227
+ start(clear = false) {
228
+ this.stop(); // Ensure any previous monitoring is stopped
229
+ this.stopped = false;
230
+ if (clear)
231
+ this.clear();
232
+ const source$ = this.client.startMonitoring(this.ids, this.monitoringInterval, this.config, 5000);
233
+ const monitored$ = this.collect
234
+ ? source$.pipe((0, rxjs_1.tap)((values) => this.data.push(values)), (0, rxjs_1.takeWhile)(() => !this.stopped))
235
+ : source$.pipe((0, rxjs_1.takeWhile)(() => !this.stopped));
236
+ // Defensive cleanup: Guarantees that the subscription reference is cleared
237
+ // and the state flag (this.stopped) is set to true on *any* stream
238
+ // completion, protecting against unexpected termination of the source observable.
239
+ this.subscription = monitored$.subscribe({
240
+ complete: () => {
241
+ var _a;
242
+ (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
243
+ this.subscription = undefined;
244
+ this.stopped = true;
245
+ },
246
+ error: (err) => {
247
+ var _a;
248
+ console.error('DataMonitoring stream terminated by error:', err);
249
+ (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
250
+ this.subscription = undefined;
251
+ this.stopped = true;
252
+ },
253
+ });
254
+ // Return observable for external subscription
255
+ return monitored$;
150
256
  }
151
257
  /**
152
- * Emits a value on `finalize$` to properly stop monitoring and complete the observable.
258
+ * Stops the active monitoring session and unsubscribes from the source observable.
259
+ *
260
+ * This method sets the internal stop flag, causing the observable created in {@link start}
261
+ * to complete on its next emission. If a subscription was created during `start()`,
262
+ * it is explicitly unsubscribed and cleared. This ensures that no monitoring pipeline
263
+ * remains active and prevents resource leaks when creating new `DataMonitoring` instances.
264
+ *
265
+ * Calling this method has no effect if monitoring is not currently active.
153
266
  */
154
267
  stop() {
155
- this.finalize$.next();
268
+ this.stopped = true;
269
+ if (this.subscription) {
270
+ this.subscription.unsubscribe();
271
+ this.subscription = undefined;
272
+ }
156
273
  }
157
274
  }
158
275
  exports.DataMonitoring = DataMonitoring;
@@ -1 +1 @@
1
- {"version":3,"file":"data-monitoring.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/data-monitoring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-monitoring.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/data-monitoring.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Subject } from 'rxjs';
1
+ import { Subject, Subscription } from 'rxjs';
2
2
  import { MotionMasterClient } from './motion-master-client';
3
3
  import { ChirpSignalOptions } from './os-command';
4
4
  import { DeviceRef } from './types';
@@ -12,13 +12,13 @@ import { DeviceRef } from './types';
12
12
  */
13
13
  export interface LimitedRangeSystemIdentificationOptions extends ChirpSignalOptions {
14
14
  /**
15
- * The effective symmetric position excursion limit (±value), expressed in
15
+ * The symmetric position excursion limit (±value), expressed in
16
16
  * position units. This defines the maximum allowable deviation from the
17
17
  * reference position during chirp excitation. As the position error approaches
18
18
  * this limit, the adaptive algorithm reduces the position-loop Kp to keep the
19
19
  * joint within the bounded range.
20
20
  */
21
- rangeLimitEff: number;
21
+ rangeLimit: number;
22
22
  /**
23
23
  * The minimum admissible excursion limit used as a lower bound in internal
24
24
  * scaling calculations. This value prevents division by very small ranges and
@@ -47,6 +47,10 @@ export declare class LimitedRangeSystemIdentification {
47
47
  * Indicates whether the system identification procedure is currently running.
48
48
  */
49
49
  isRunning: boolean;
50
+ /**
51
+ * Subscription for data monitoring during the procedure.
52
+ */
53
+ dataMonitoringSubscription?: Subscription;
50
54
  /**
51
55
  * Creates a new instance of the limited-range system identification routine.
52
56
  *
@@ -35,7 +35,7 @@ class LimitedRangeSystemIdentification {
35
35
  constructor(client, deviceRef, options = {
36
36
  hrdStreamingDuration: 3200,
37
37
  modesOfOperation: cia402_1.ModesOfOperation.CYCLIC_SYNC_POSITION_MODE,
38
- rangeLimitEff: 100000,
38
+ rangeLimit: 10000,
39
39
  rangeLimitMin: 1000,
40
40
  signalType: os_command_1.SystemIdentificationOsCommandSignalType.LINEAR_WITH_CONSTANT_AMPLITUDE,
41
41
  startFrequency: 1000,
@@ -73,6 +73,7 @@ class LimitedRangeSystemIdentification {
73
73
  * @throws Will throw an error if any of the device requests fail.
74
74
  */
75
75
  start() {
76
+ var _a, _b;
76
77
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
77
78
  // Small delay to ensure subscribers to notifications$ are ready
78
79
  yield (0, util_1.resolveAfter)(1);
@@ -98,6 +99,9 @@ class LimitedRangeSystemIdentification {
98
99
  this.notifications$.next(`Warning: startProcedure is currently ${this.options.startProcedure}, but WAIT_FOR_HRD_STREAMING_TO_START (2) is required. Setting the correct start procedure automatically.`);
99
100
  this.options.startProcedure = os_command_1.SystemIdentificationOsCommandStartProcedure.WAIT_FOR_HRD_STREAMING_TO_START;
100
101
  }
102
+ const gearRatio = yield this.client.request.getGearRatio(this.deviceRef);
103
+ const rangeLimitEff = this.options.rangeLimit * gearRatio;
104
+ this.notifications$.next(`Effective range limit (considering gear ratio ${gearRatio}): ${rangeLimitEff}`);
101
105
  // Variables to hold original configurations for restoration later
102
106
  let encCom;
103
107
  let encPos;
@@ -107,11 +111,14 @@ class LimitedRangeSystemIdentification {
107
111
  [this.deviceRef, 0x6064, 0x00], // Position actual value
108
112
  ], 1000 // 1 ms interval
109
113
  );
114
+ dataMonitoring.collect = false;
110
115
  let positionFeedbackFilterType;
111
116
  let pKp;
112
117
  let pKi;
113
118
  let pKd;
114
119
  let pCtrlStrategy;
120
+ let minPosLmt;
121
+ let maxPosLmt;
115
122
  try {
116
123
  // Ensure the drive is in the "Switch On Disabled" state before any motion commands
117
124
  this.notifications$.next('Transitioning to "Switch On Disabled" state...');
@@ -131,6 +138,40 @@ class LimitedRangeSystemIdentification {
131
138
  encCom = yield this.client.request.upload(this.deviceRef, 0x2010, 0x0c);
132
139
  encPos = yield this.client.request.upload(this.deviceRef, 0x2012, 0x09);
133
140
  this.notifications$.next(`Encoder configurations retrieved: ENC_COM = ${encCom}, ENC_POS = ${encPos}`);
141
+ // ENC_POS is set to a valid but different configuration than ENC_COM
142
+ // Adjust position limits to account for differing encoder resolutions before switching to ENC_COM
143
+ if (encPos > 0 && encPos !== encCom) {
144
+ this.notifications$.next('Reading software position limits...');
145
+ minPosLmt = yield this.client.request.upload(this.deviceRef, 0x607d, 0x01);
146
+ maxPosLmt = yield this.client.request.upload(this.deviceRef, 0x607d, 0x02);
147
+ this.notifications$.next(`Software position limits: Min = ${minPosLmt}, Max = ${maxPosLmt}`);
148
+ if (minPosLmt !== -2147483648 || maxPosLmt === 2147483647) {
149
+ this.notifications$.next('Reading encoder resolution for commutation configuration...');
150
+ const resCom = yield this.client.request.upload(this.deviceRef, encCom === 1 ? 0x2110 : 0x2112, 0x03);
151
+ this.notifications$.next(`Encoder resolution for commutation configuration: ${resCom}`);
152
+ this.notifications$.next('Reading encoder resolution for position configuration...');
153
+ const resPos = yield this.client.request.upload(this.deviceRef, encPos === 1 ? 0x2110 : 0x2112, 0x03);
154
+ this.notifications$.next(`Encoder resolution for position configuration: ${resPos}`);
155
+ if (minPosLmt !== -2147483648) {
156
+ let adjustedMinPosLmt = Math.round(minPosLmt * gearRatio * (resCom / resPos));
157
+ if (adjustedMinPosLmt < -2147483648) {
158
+ adjustedMinPosLmt = -2147483648;
159
+ }
160
+ this.notifications$.next(`Adjusting minimum position limit from ${minPosLmt} to ${adjustedMinPosLmt}...`);
161
+ yield this.client.request.download(this.deviceRef, 0x607d, 0x01, adjustedMinPosLmt);
162
+ this.notifications$.next('Minimum position limit adjusted.');
163
+ }
164
+ if (maxPosLmt !== 2147483647) {
165
+ let adjustedMaxPosLmt = Math.round(maxPosLmt * gearRatio * (resCom / resPos));
166
+ if (adjustedMaxPosLmt > 2147483647) {
167
+ adjustedMaxPosLmt = 2147483647;
168
+ }
169
+ this.notifications$.next(`Adjusting maximum position limit from ${maxPosLmt} to ${adjustedMaxPosLmt}...`);
170
+ yield this.client.request.download(this.deviceRef, 0x607d, 0x02, adjustedMaxPosLmt);
171
+ this.notifications$.next('Maximum position limit adjusted.');
172
+ }
173
+ }
174
+ }
134
175
  // If ENC_COM and ENC_POS do not match, update ENC_POS to match ENC_COM
135
176
  if (encCom !== encPos) {
136
177
  this.notifications$.next('Encoder configurations do not match. Updating ENC_POS to match ENC_COM...');
@@ -144,7 +185,6 @@ class LimitedRangeSystemIdentification {
144
185
  this.notifications$.next(`Encoder resolution: ${resolution}`);
145
186
  // Calculate adjusted limit range min based on feed constant and encoder resolution
146
187
  this.notifications$.next('Calculating limit range based on feed constant and resolution...');
147
- const rangeLimitEff = this.options.rangeLimitEff;
148
188
  // feed constant is not disabled and greater than resolution
149
189
  const ratio = feedConstant !== 0xffffffff && feedConstant > resolution ? feedConstant / resolution : 1;
150
190
  const rangeLimitMin = Math.round(this.options.rangeLimitMin * ratio);
@@ -253,9 +293,8 @@ class LimitedRangeSystemIdentification {
253
293
  // Stop data monitoring
254
294
  this.notifications$.next('Stopping data monitoring...');
255
295
  dataMonitoring.stop();
296
+ (_a = this.dataMonitoringSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
256
297
  this.notifications$.next('Data monitoring stopped.');
257
- const analysis = dataMonitoring.analysis;
258
- this.notifications$.next(`Data monitoring analysis: ${JSON.stringify(analysis.filteredStats, null, 2)}`);
259
298
  // Start the system identification procedure without the chirp signal in order to only compute the plant model
260
299
  this.notifications$.next('Starting system identification procedure on Motion Master to compute plant model...');
261
300
  const deviceRefObj = (0, device_1.makeDeviceRefObj)(this.deviceRef);
@@ -273,6 +312,7 @@ class LimitedRangeSystemIdentification {
273
312
  // Stop data monitoring
274
313
  this.notifications$.next('Stopping data monitoring...');
275
314
  dataMonitoring.stop();
315
+ (_b = this.dataMonitoringSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
276
316
  this.notifications$.next('Data monitoring stopped.');
277
317
  // Ensure the drive is in the "Switch On Disabled" after the procedure
278
318
  this.notifications$.next('Transitioning to "Switch On Disabled" state...');
@@ -294,6 +334,20 @@ class LimitedRangeSystemIdentification {
294
334
  this.notifications$.next(`Failed to restore ENC_POS: ${err instanceof Error ? err.message : err}`);
295
335
  }
296
336
  }
337
+ // Restore original position limits if they were changed
338
+ if (minPosLmt !== undefined && maxPosLmt !== undefined) {
339
+ this.notifications$.next('Restoring original position limits...');
340
+ try {
341
+ yield this.client.request.downloadMany([
342
+ [this.deviceRef, 0x607d, 0x01, minPosLmt],
343
+ [this.deviceRef, 0x607d, 0x02, maxPosLmt],
344
+ ]);
345
+ this.notifications$.next('Position limits restored.');
346
+ }
347
+ catch (err) {
348
+ this.notifications$.next(`Failed to restore position limits: ${err instanceof Error ? err.message : err}`);
349
+ }
350
+ }
297
351
  // Restore the position feedback filter if it was changed
298
352
  if (positionFeedbackFilterType !== undefined && positionFeedbackFilterType !== 0) {
299
353
  this.notifications$.next('Restoring the position feedback filter...');
@@ -1 +1 @@
1
- {"version":3,"file":"limited-range-system-identification.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/limited-range-system-identification.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"limited-range-system-identification.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/limited-range-system-identification.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Observable, UnaryFunction } from 'rxjs';
1
+ import { Observable, UnaryFunction, MonoTypeOperatorFunction } from 'rxjs';
2
2
  import { IMotionMasterMessage, MotionMasterMessage, ParameterValueType, StatusKey } from './types';
3
3
  import { DeviceParameter } from './device-parameter';
4
4
  import { MotionMasterReqResClient } from './motion-master-req-res-client';
@@ -18,3 +18,4 @@ export declare function selectMotionMasterMessageByTopic<T>(topic: string): Unar
18
18
  export declare function selectMotionMasterMessageStatusByKey<T>(key: keyof MotionMasterMessage.IStatus): UnaryFunction<Observable<IMotionMasterMessage>, Observable<T>>;
19
19
  export declare function mapMonitoringParameterValuesStatusMessageToParameterValues(): UnaryFunction<Observable<IMotionMasterMessage>, Observable<ParameterValueType[]>>;
20
20
  export declare function mapMonitoringParameterValuesStatusMessageToDeviceParameters(request: MotionMasterReqResClient): UnaryFunction<Observable<IMotionMasterMessage>, Observable<DeviceParameter[]>>;
21
+ export declare function takeUntilCompleteOrError<T>(notifier$: Observable<any>): MonoTypeOperatorFunction<T>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mapMonitoringParameterValuesStatusMessageToDeviceParameters = exports.mapMonitoringParameterValuesStatusMessageToParameterValues = exports.selectMotionMasterMessageStatusByKey = exports.selectMotionMasterMessageByTopic = exports.transformMotionMasterMessageToStatus = exports.extendStatus = exports.selectMotionMasterMessageStatusByMessageId = void 0;
3
+ exports.takeUntilCompleteOrError = exports.mapMonitoringParameterValuesStatusMessageToDeviceParameters = exports.mapMonitoringParameterValuesStatusMessageToParameterValues = exports.selectMotionMasterMessageStatusByKey = exports.selectMotionMasterMessageByTopic = exports.transformMotionMasterMessageToStatus = exports.extendStatus = exports.selectMotionMasterMessageStatusByMessageId = void 0;
4
4
  const rxjs_1 = require("rxjs");
5
5
  const request_status_resolver_1 = require("./request-status-resolver");
6
6
  const parameter_1 = require("./parameter");
@@ -80,4 +80,12 @@ function mapMonitoringParameterValuesStatusMessageToDeviceParameters(request) {
80
80
  }));
81
81
  }
82
82
  exports.mapMonitoringParameterValuesStatusMessageToDeviceParameters = mapMonitoringParameterValuesStatusMessageToDeviceParameters;
83
+ function takeUntilCompleteOrError(notifier$) {
84
+ // Transform notifier to emit a value on complete or error
85
+ const stop$ = notifier$.pipe((0, rxjs_1.materialize)(), // Convert next/error/complete to Notification objects
86
+ (0, rxjs_1.filter)((n) => n.kind === 'C' || n.kind === 'E') // Only react to complete or error
87
+ );
88
+ return (0, rxjs_1.takeUntil)(stop$);
89
+ }
90
+ exports.takeUntilCompleteOrError = takeUntilCompleteOrError;
83
91
  //# sourceMappingURL=operators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"operators.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/operators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operators.js","sourceRoot":"","sources":["../../../../../libs/motion-master-client/src/lib/operators.ts"],"names":[],"mappings":"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"}