@zaber/motion 6.4.1 → 6.5.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 (99) hide show
  1. package/dist/binding/wasm/zaber-motion-lib.wasm +0 -0
  2. package/dist/lib/ascii/device_io.d.ts +3 -3
  3. package/dist/lib/ascii/device_io.js +3 -3
  4. package/dist/lib/ascii/device_io.js.map +1 -1
  5. package/dist/lib/ascii/oscilloscope_data.d.ts +3 -1
  6. package/dist/lib/ascii/oscilloscope_data.d.ts.map +1 -1
  7. package/dist/lib/ascii/oscilloscope_data.js +3 -1
  8. package/dist/lib/ascii/oscilloscope_data.js.map +1 -1
  9. package/dist/lib/index.d.ts +1 -0
  10. package/dist/lib/index.d.ts.map +1 -1
  11. package/dist/lib/index.js +1 -0
  12. package/dist/lib/index.js.map +1 -1
  13. package/dist/lib/library.js +1 -1
  14. package/dist/lib/library.js.map +1 -1
  15. package/dist/lib/microscopy/autofocus.d.ts +95 -0
  16. package/dist/lib/microscopy/autofocus.d.ts.map +1 -0
  17. package/dist/lib/microscopy/autofocus.js +291 -0
  18. package/dist/lib/microscopy/autofocus.js.map +1 -0
  19. package/dist/lib/microscopy/autofocus_status.d.ts +20 -0
  20. package/dist/lib/microscopy/autofocus_status.d.ts.map +1 -0
  21. package/dist/lib/microscopy/autofocus_status.js +27 -0
  22. package/dist/lib/microscopy/autofocus_status.js.map +1 -0
  23. package/dist/lib/microscopy/index.d.ts +5 -0
  24. package/dist/lib/microscopy/index.d.ts.map +1 -1
  25. package/dist/lib/microscopy/index.js +5 -0
  26. package/dist/lib/microscopy/index.js.map +1 -1
  27. package/dist/lib/microscopy/microscope.d.ts +9 -1
  28. package/dist/lib/microscopy/microscope.d.ts.map +1 -1
  29. package/dist/lib/microscopy/microscope.js +14 -4
  30. package/dist/lib/microscopy/microscope.js.map +1 -1
  31. package/dist/lib/microscopy/microscope_config.d.ts +4 -0
  32. package/dist/lib/microscopy/microscope_config.d.ts.map +1 -1
  33. package/dist/lib/microscopy/microscope_config.js +2 -0
  34. package/dist/lib/microscopy/microscope_config.js.map +1 -1
  35. package/dist/lib/microscopy/objective_changer.d.ts +2 -0
  36. package/dist/lib/microscopy/objective_changer.d.ts.map +1 -1
  37. package/dist/lib/microscopy/objective_changer.js +2 -0
  38. package/dist/lib/microscopy/objective_changer.js.map +1 -1
  39. package/dist/lib/microscopy/third_party_components.d.ts +16 -0
  40. package/dist/lib/microscopy/third_party_components.d.ts.map +1 -0
  41. package/dist/lib/microscopy/third_party_components.js +25 -0
  42. package/dist/lib/microscopy/third_party_components.js.map +1 -0
  43. package/dist/lib/microscopy/wdi_autofocus_provider.d.ts +77 -0
  44. package/dist/lib/microscopy/wdi_autofocus_provider.d.ts.map +1 -0
  45. package/dist/lib/microscopy/wdi_autofocus_provider.js +190 -0
  46. package/dist/lib/microscopy/wdi_autofocus_provider.js.map +1 -0
  47. package/dist/lib/microscopy/wdi_autofocus_provider_status.d.ts +20 -0
  48. package/dist/lib/microscopy/wdi_autofocus_provider_status.d.ts.map +1 -0
  49. package/dist/lib/microscopy/wdi_autofocus_provider_status.js +27 -0
  50. package/dist/lib/microscopy/wdi_autofocus_provider_status.js.map +1 -0
  51. package/dist/lib/named_parameter.d.ts +20 -0
  52. package/dist/lib/named_parameter.d.ts.map +1 -0
  53. package/dist/lib/named_parameter.js +27 -0
  54. package/dist/lib/named_parameter.js.map +1 -0
  55. package/dist/lib/requests/autofocus_focus_request.d.ts +16 -0
  56. package/dist/lib/requests/autofocus_focus_request.d.ts.map +1 -0
  57. package/dist/lib/requests/autofocus_focus_request.js +37 -0
  58. package/dist/lib/requests/autofocus_focus_request.js.map +1 -0
  59. package/dist/lib/requests/autofocus_get_objective_params_request.d.ts +15 -0
  60. package/dist/lib/requests/autofocus_get_objective_params_request.d.ts.map +1 -0
  61. package/dist/lib/requests/autofocus_get_objective_params_request.js +35 -0
  62. package/dist/lib/requests/autofocus_get_objective_params_request.js.map +1 -0
  63. package/dist/lib/requests/autofocus_get_objective_params_response.d.ts +11 -0
  64. package/dist/lib/requests/autofocus_get_objective_params_response.d.ts.map +1 -0
  65. package/dist/lib/requests/autofocus_get_objective_params_response.js +26 -0
  66. package/dist/lib/requests/autofocus_get_objective_params_response.js.map +1 -0
  67. package/dist/lib/requests/autofocus_get_status_response.d.ts +11 -0
  68. package/dist/lib/requests/autofocus_get_status_response.d.ts.map +1 -0
  69. package/dist/lib/requests/autofocus_get_status_response.js +25 -0
  70. package/dist/lib/requests/autofocus_get_status_response.js.map +1 -0
  71. package/dist/lib/requests/autofocus_set_objective_params_request.d.ts +17 -0
  72. package/dist/lib/requests/autofocus_set_objective_params_request.d.ts.map +1 -0
  73. package/dist/lib/requests/autofocus_set_objective_params_request.js +39 -0
  74. package/dist/lib/requests/autofocus_set_objective_params_request.js.map +1 -0
  75. package/dist/lib/requests/empty_autofocus_request.d.ts +14 -0
  76. package/dist/lib/requests/empty_autofocus_request.d.ts.map +1 -0
  77. package/dist/lib/requests/empty_autofocus_request.js +33 -0
  78. package/dist/lib/requests/empty_autofocus_request.js.map +1 -0
  79. package/dist/lib/requests/index.d.ts +9 -0
  80. package/dist/lib/requests/index.d.ts.map +1 -1
  81. package/dist/lib/requests/index.js +9 -0
  82. package/dist/lib/requests/index.js.map +1 -1
  83. package/dist/lib/requests/microscope_find_request.d.ts +12 -0
  84. package/dist/lib/requests/microscope_find_request.d.ts.map +1 -0
  85. package/dist/lib/requests/microscope_find_request.js +28 -0
  86. package/dist/lib/requests/microscope_find_request.js.map +1 -0
  87. package/dist/lib/requests/microscope_init_request.d.ts +2 -0
  88. package/dist/lib/requests/microscope_init_request.d.ts.map +1 -1
  89. package/dist/lib/requests/microscope_init_request.js +3 -0
  90. package/dist/lib/requests/microscope_init_request.js.map +1 -1
  91. package/dist/lib/requests/wdi_generic_request.d.ts +16 -0
  92. package/dist/lib/requests/wdi_generic_request.d.ts.map +1 -0
  93. package/dist/lib/requests/wdi_generic_request.js +38 -0
  94. package/dist/lib/requests/wdi_generic_request.js.map +1 -0
  95. package/dist/lib/requests/wdi_get_status_response.d.ts +11 -0
  96. package/dist/lib/requests/wdi_get_status_response.d.ts.map +1 -0
  97. package/dist/lib/requests/wdi_get_status_response.js +25 -0
  98. package/dist/lib/requests/wdi_get_status_response.js.map +1 -0
  99. package/package.json +2 -1
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+ // ==== THIS FILE IS GENERATED FROM A TEMPLATE ==== //
3
+ // ============= DO NOT EDIT DIRECTLY ============= //
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || function (mod) {
21
+ if (mod && mod.__esModule) return mod;
22
+ var result = {};
23
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
24
+ __setModuleDefault(result, mod);
25
+ return result;
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.Autofocus = void 0;
29
+ const gateway = __importStar(require("../gateway"));
30
+ const requests = __importStar(require("../requests"));
31
+ const units_1 = require("../units");
32
+ /**
33
+ * A generic autofocus device.
34
+ */
35
+ class Autofocus {
36
+ /**
37
+ * The identification of external device providing the capability.
38
+ */
39
+ get providerId() {
40
+ return this._providerId;
41
+ }
42
+ /**
43
+ * The focus axis.
44
+ */
45
+ get focusAxis() {
46
+ return this._focusAxis;
47
+ }
48
+ /**
49
+ * The objective turret device if the microscope has one.
50
+ */
51
+ get objectiveTurret() {
52
+ return this._objectiveTurret;
53
+ }
54
+ /**
55
+ * Creates instance of `Autofocus` based on the given provider id.
56
+ */
57
+ constructor(providerId, focusAxis, objectiveTurret) {
58
+ this._providerId = providerId;
59
+ this._focusAxis = focusAxis;
60
+ this._objectiveTurret = objectiveTurret;
61
+ }
62
+ /**
63
+ * Sets the current focus to be target for the autofocus control loop.
64
+ */
65
+ async setFocusZero() {
66
+ var _a, _b;
67
+ const request = {
68
+ ...requests.EmptyAutofocusRequest.DEFAULT,
69
+ providerId: this.providerId,
70
+ interfaceId: this.focusAxis.device.connection.interfaceId,
71
+ focusAddress: this.focusAxis.device.deviceAddress,
72
+ focusAxis: this.focusAxis.axisNumber,
73
+ turretAddress: (_b = (_a = this.objectiveTurret) === null || _a === void 0 ? void 0 : _a.deviceAddress) !== null && _b !== void 0 ? _b : 0,
74
+ toBinary() {
75
+ return requests.EmptyAutofocusRequest.toBinary(this);
76
+ },
77
+ };
78
+ await gateway.callAsync('autofocus/set_zero', request);
79
+ }
80
+ /**
81
+ * Returns the status of the autofocus.
82
+ * @returns The status of the autofocus.
83
+ */
84
+ async getStatus() {
85
+ var _a, _b;
86
+ const request = {
87
+ ...requests.EmptyAutofocusRequest.DEFAULT,
88
+ providerId: this.providerId,
89
+ interfaceId: this.focusAxis.device.connection.interfaceId,
90
+ focusAddress: this.focusAxis.device.deviceAddress,
91
+ focusAxis: this.focusAxis.axisNumber,
92
+ turretAddress: (_b = (_a = this.objectiveTurret) === null || _a === void 0 ? void 0 : _a.deviceAddress) !== null && _b !== void 0 ? _b : 0,
93
+ toBinary() {
94
+ return requests.EmptyAutofocusRequest.toBinary(this);
95
+ },
96
+ };
97
+ const response = await gateway.callAsync('autofocus/get_status', request, requests.AutofocusGetStatusResponse.fromBinary);
98
+ return response.status;
99
+ }
100
+ /**
101
+ * Moves the device until it's in focus.
102
+ * @param [scan=false] If true, the autofocus will approach from the limit moving until it's in range.
103
+ */
104
+ async focusOnce(scan = false) {
105
+ var _a, _b;
106
+ const request = {
107
+ ...requests.AutofocusFocusRequest.DEFAULT,
108
+ providerId: this.providerId,
109
+ interfaceId: this.focusAxis.device.connection.interfaceId,
110
+ focusAddress: this.focusAxis.device.deviceAddress,
111
+ focusAxis: this.focusAxis.axisNumber,
112
+ turretAddress: (_b = (_a = this.objectiveTurret) === null || _a === void 0 ? void 0 : _a.deviceAddress) !== null && _b !== void 0 ? _b : 0,
113
+ once: true,
114
+ scan: scan,
115
+ toBinary() {
116
+ return requests.AutofocusFocusRequest.toBinary(this);
117
+ },
118
+ };
119
+ await gateway.callAsync('autofocus/focus_once', request);
120
+ }
121
+ /**
122
+ * Moves the focus axis continuously maintaining focus.
123
+ * Starts the autofocus control loop.
124
+ * Note that the control loop may stop if the autofocus comes out of range or a movement error occurs.
125
+ */
126
+ async startFocusLoop() {
127
+ var _a, _b;
128
+ const request = {
129
+ ...requests.AutofocusFocusRequest.DEFAULT,
130
+ providerId: this.providerId,
131
+ interfaceId: this.focusAxis.device.connection.interfaceId,
132
+ focusAddress: this.focusAxis.device.deviceAddress,
133
+ focusAxis: this.focusAxis.axisNumber,
134
+ turretAddress: (_b = (_a = this.objectiveTurret) === null || _a === void 0 ? void 0 : _a.deviceAddress) !== null && _b !== void 0 ? _b : 0,
135
+ toBinary() {
136
+ return requests.AutofocusFocusRequest.toBinary(this);
137
+ },
138
+ };
139
+ await gateway.callAsync('autofocus/start_focus_loop', request);
140
+ }
141
+ /**
142
+ * Stops autofocus control loop.
143
+ * If the focus axis already stopped moving because of an error, an exception will be thrown.
144
+ */
145
+ async stopFocusLoop() {
146
+ var _a, _b;
147
+ const request = {
148
+ ...requests.EmptyAutofocusRequest.DEFAULT,
149
+ providerId: this.providerId,
150
+ interfaceId: this.focusAxis.device.connection.interfaceId,
151
+ focusAddress: this.focusAxis.device.deviceAddress,
152
+ focusAxis: this.focusAxis.axisNumber,
153
+ turretAddress: (_b = (_a = this.objectiveTurret) === null || _a === void 0 ? void 0 : _a.deviceAddress) !== null && _b !== void 0 ? _b : 0,
154
+ toBinary() {
155
+ return requests.EmptyAutofocusRequest.toBinary(this);
156
+ },
157
+ };
158
+ await gateway.callAsync('autofocus/stop_focus_loop', request);
159
+ }
160
+ /**
161
+ * Sets the lower motion limit for the autofocus control loop.
162
+ * Use the limits to prevent the focus axis from crashing into the sample.
163
+ * Changes motion.tracking.limit.min setting of the focus axis.
164
+ * @param limit The lower limit of the focus axis.
165
+ * @param [unit=Units.NATIVE] The units of the limit.
166
+ */
167
+ async setLimitMin(limit, unit = units_1.Units.NATIVE) {
168
+ const request = {
169
+ ...requests.DeviceSetSettingRequest.DEFAULT,
170
+ interfaceId: this.focusAxis.device.connection.interfaceId,
171
+ device: this.focusAxis.device.deviceAddress,
172
+ axis: this.focusAxis.axisNumber,
173
+ setting: 'motion.tracking.limit.min',
174
+ value: limit,
175
+ unit: unit,
176
+ toBinary() {
177
+ return requests.DeviceSetSettingRequest.toBinary(this);
178
+ },
179
+ };
180
+ await gateway.callAsync('device/set_setting', request);
181
+ }
182
+ /**
183
+ * Sets the upper motion limit for the autofocus control loop.
184
+ * Use the limits to prevent the focus axis from crashing into the sample.
185
+ * Changes motion.tracking.limit.max setting of the focus axis.
186
+ * @param limit The upper limit of the focus axis.
187
+ * @param [unit=Units.NATIVE] The units of the limit.
188
+ */
189
+ async setLimitMax(limit, unit = units_1.Units.NATIVE) {
190
+ const request = {
191
+ ...requests.DeviceSetSettingRequest.DEFAULT,
192
+ interfaceId: this.focusAxis.device.connection.interfaceId,
193
+ device: this.focusAxis.device.deviceAddress,
194
+ axis: this.focusAxis.axisNumber,
195
+ setting: 'motion.tracking.limit.max',
196
+ value: limit,
197
+ unit: unit,
198
+ toBinary() {
199
+ return requests.DeviceSetSettingRequest.toBinary(this);
200
+ },
201
+ };
202
+ await gateway.callAsync('device/set_setting', request);
203
+ }
204
+ /**
205
+ * Typically, the control loop parameters and objective are kept synchronized by the library.
206
+ * If the parameters or current objective changes outside of the library, call this method to synchronize them.
207
+ */
208
+ async synchronizeParameters() {
209
+ var _a, _b;
210
+ const request = {
211
+ ...requests.EmptyAutofocusRequest.DEFAULT,
212
+ providerId: this.providerId,
213
+ interfaceId: this.focusAxis.device.connection.interfaceId,
214
+ focusAddress: this.focusAxis.device.deviceAddress,
215
+ focusAxis: this.focusAxis.axisNumber,
216
+ turretAddress: (_b = (_a = this.objectiveTurret) === null || _a === void 0 ? void 0 : _a.deviceAddress) !== null && _b !== void 0 ? _b : 0,
217
+ toBinary() {
218
+ return requests.EmptyAutofocusRequest.toBinary(this);
219
+ },
220
+ };
221
+ await gateway.callAsync('autofocus/sync_params', request);
222
+ }
223
+ /**
224
+ * Sets the parameters for the autofocus objective.
225
+ * @param objective The objective (numbered from 1) to set the parameters for.
226
+ * If your microscope has only one objective, use value of 1.
227
+ * @param parameters The parameters for the autofocus objective.
228
+ */
229
+ async setObjectiveParameters(objective, parameters) {
230
+ var _a, _b;
231
+ const request = {
232
+ ...requests.AutofocusSetObjectiveParamsRequest.DEFAULT,
233
+ providerId: this.providerId,
234
+ interfaceId: this.focusAxis.device.connection.interfaceId,
235
+ focusAddress: this.focusAxis.device.deviceAddress,
236
+ focusAxis: this.focusAxis.axisNumber,
237
+ turretAddress: (_b = (_a = this.objectiveTurret) === null || _a === void 0 ? void 0 : _a.deviceAddress) !== null && _b !== void 0 ? _b : 0,
238
+ objective: objective,
239
+ parameters: parameters,
240
+ toBinary() {
241
+ return requests.AutofocusSetObjectiveParamsRequest.toBinary(this);
242
+ },
243
+ };
244
+ await gateway.callAsync('autofocus/set_objective_params', request);
245
+ }
246
+ /**
247
+ * Returns the parameters for the autofocus objective.
248
+ * @param objective The objective (numbered from 1) to get the parameters for.
249
+ * If your microscope has only one objective, use value of 1.
250
+ * @returns The parameters for the autofocus objective.
251
+ */
252
+ async getObjectiveParameters(objective) {
253
+ var _a, _b;
254
+ const request = {
255
+ ...requests.AutofocusGetObjectiveParamsRequest.DEFAULT,
256
+ providerId: this.providerId,
257
+ interfaceId: this.focusAxis.device.connection.interfaceId,
258
+ focusAddress: this.focusAxis.device.deviceAddress,
259
+ focusAxis: this.focusAxis.axisNumber,
260
+ turretAddress: (_b = (_a = this.objectiveTurret) === null || _a === void 0 ? void 0 : _a.deviceAddress) !== null && _b !== void 0 ? _b : 0,
261
+ objective: objective,
262
+ toBinary() {
263
+ return requests.AutofocusGetObjectiveParamsRequest.toBinary(this);
264
+ },
265
+ };
266
+ const response = await gateway.callAsync('autofocus/get_objective_params', request, requests.AutofocusGetObjectiveParamsResponse.fromBinary);
267
+ return response.parameters;
268
+ }
269
+ /**
270
+ * Returns a string that represents the autofocus.
271
+ * @returns A string that represents the autofocus.
272
+ */
273
+ toString() {
274
+ var _a, _b;
275
+ const request = {
276
+ ...requests.EmptyAutofocusRequest.DEFAULT,
277
+ providerId: this.providerId,
278
+ interfaceId: this.focusAxis.device.connection.interfaceId,
279
+ focusAddress: this.focusAxis.device.deviceAddress,
280
+ focusAxis: this.focusAxis.axisNumber,
281
+ turretAddress: (_b = (_a = this.objectiveTurret) === null || _a === void 0 ? void 0 : _a.deviceAddress) !== null && _b !== void 0 ? _b : 0,
282
+ toBinary() {
283
+ return requests.EmptyAutofocusRequest.toBinary(this);
284
+ },
285
+ };
286
+ const response = gateway.callSync('autofocus/to_string', request, requests.StringResponse.fromBinary);
287
+ return response.value;
288
+ }
289
+ }
290
+ exports.Autofocus = Autofocus;
291
+ //# sourceMappingURL=autofocus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autofocus.js","sourceRoot":"","sources":["../../../src/microscopy/autofocus.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 * as requests from '../requests';\nimport { Device } from '../ascii/device';\nimport { Axis } from '../ascii/axis';\nimport { Angle, Length, Native, Units } from '../units';\nimport { NamedParameter } from '../named_parameter';\nimport { AutofocusStatus } from './autofocus_status';\n\n\n/**\n * A generic autofocus device.\n */\nexport class Autofocus {\n /**\n * The identification of external device providing the capability.\n */\n public get providerId(): number {\n return this._providerId;\n }\n private _providerId: number;\n\n /**\n * The focus axis.\n */\n public get focusAxis(): Axis {\n return this._focusAxis;\n }\n private _focusAxis: Axis;\n\n /**\n * The objective turret device if the microscope has one.\n */\n public get objectiveTurret(): Device | undefined {\n return this._objectiveTurret;\n }\n private _objectiveTurret: Device | undefined;\n\n /**\n * Creates instance of `Autofocus` based on the given provider id.\n */\n constructor(providerId: number, focusAxis: Axis, objectiveTurret?: Device) {\n this._providerId = providerId;\n this._focusAxis = focusAxis;\n this._objectiveTurret = objectiveTurret;\n }\n\n /**\n * Sets the current focus to be target for the autofocus control loop.\n */\n public async setFocusZero(): Promise<void> {\n const request: requests.EmptyAutofocusRequest & gateway.Message = {\n ...requests.EmptyAutofocusRequest.DEFAULT,\n providerId: this.providerId,\n interfaceId: this.focusAxis.device.connection.interfaceId,\n focusAddress: this.focusAxis.device.deviceAddress,\n focusAxis: this.focusAxis.axisNumber,\n turretAddress: this.objectiveTurret?.deviceAddress ?? 0,\n toBinary() {\n return requests.EmptyAutofocusRequest.toBinary(this);\n },\n };\n\n await gateway.callAsync('autofocus/set_zero', request);\n }\n\n /**\n * Returns the status of the autofocus.\n * @returns The status of the autofocus.\n */\n public async getStatus(): Promise<AutofocusStatus> {\n const request: requests.EmptyAutofocusRequest & gateway.Message = {\n ...requests.EmptyAutofocusRequest.DEFAULT,\n providerId: this.providerId,\n interfaceId: this.focusAxis.device.connection.interfaceId,\n focusAddress: this.focusAxis.device.deviceAddress,\n focusAxis: this.focusAxis.axisNumber,\n turretAddress: this.objectiveTurret?.deviceAddress ?? 0,\n toBinary() {\n return requests.EmptyAutofocusRequest.toBinary(this);\n },\n };\n\n const response = await gateway.callAsync<requests.AutofocusGetStatusResponse>(\n 'autofocus/get_status',\n request,\n requests.AutofocusGetStatusResponse.fromBinary);\n return response.status;\n }\n\n /**\n * Moves the device until it's in focus.\n * @param [scan=false] If true, the autofocus will approach from the limit moving until it's in range.\n */\n public async focusOnce(\n scan: boolean = false\n ): Promise<void> {\n const request: requests.AutofocusFocusRequest & gateway.Message = {\n ...requests.AutofocusFocusRequest.DEFAULT,\n providerId: this.providerId,\n interfaceId: this.focusAxis.device.connection.interfaceId,\n focusAddress: this.focusAxis.device.deviceAddress,\n focusAxis: this.focusAxis.axisNumber,\n turretAddress: this.objectiveTurret?.deviceAddress ?? 0,\n once: true,\n scan: scan,\n toBinary() {\n return requests.AutofocusFocusRequest.toBinary(this);\n },\n };\n\n await gateway.callAsync('autofocus/focus_once', request);\n }\n\n /**\n * Moves the focus axis continuously maintaining focus.\n * Starts the autofocus control loop.\n * Note that the control loop may stop if the autofocus comes out of range or a movement error occurs.\n */\n public async startFocusLoop(): Promise<void> {\n const request: requests.AutofocusFocusRequest & gateway.Message = {\n ...requests.AutofocusFocusRequest.DEFAULT,\n providerId: this.providerId,\n interfaceId: this.focusAxis.device.connection.interfaceId,\n focusAddress: this.focusAxis.device.deviceAddress,\n focusAxis: this.focusAxis.axisNumber,\n turretAddress: this.objectiveTurret?.deviceAddress ?? 0,\n toBinary() {\n return requests.AutofocusFocusRequest.toBinary(this);\n },\n };\n\n await gateway.callAsync('autofocus/start_focus_loop', request);\n }\n\n /**\n * Stops autofocus control loop.\n * If the focus axis already stopped moving because of an error, an exception will be thrown.\n */\n public async stopFocusLoop(): Promise<void> {\n const request: requests.EmptyAutofocusRequest & gateway.Message = {\n ...requests.EmptyAutofocusRequest.DEFAULT,\n providerId: this.providerId,\n interfaceId: this.focusAxis.device.connection.interfaceId,\n focusAddress: this.focusAxis.device.deviceAddress,\n focusAxis: this.focusAxis.axisNumber,\n turretAddress: this.objectiveTurret?.deviceAddress ?? 0,\n toBinary() {\n return requests.EmptyAutofocusRequest.toBinary(this);\n },\n };\n\n await gateway.callAsync('autofocus/stop_focus_loop', request);\n }\n\n /**\n * Sets the lower motion limit for the autofocus control loop.\n * Use the limits to prevent the focus axis from crashing into the sample.\n * Changes motion.tracking.limit.min setting of the focus axis.\n * @param limit The lower limit of the focus axis.\n * @param [unit=Units.NATIVE] The units of the limit.\n */\n public async setLimitMin(\n limit: number,\n unit: Length | Angle | Native = Units.NATIVE\n ): Promise<void> {\n const request: requests.DeviceSetSettingRequest & gateway.Message = {\n ...requests.DeviceSetSettingRequest.DEFAULT,\n interfaceId: this.focusAxis.device.connection.interfaceId,\n device: this.focusAxis.device.deviceAddress,\n axis: this.focusAxis.axisNumber,\n setting: 'motion.tracking.limit.min',\n value: limit,\n unit: unit,\n toBinary() {\n return requests.DeviceSetSettingRequest.toBinary(this);\n },\n };\n\n await gateway.callAsync('device/set_setting', request);\n }\n\n /**\n * Sets the upper motion limit for the autofocus control loop.\n * Use the limits to prevent the focus axis from crashing into the sample.\n * Changes motion.tracking.limit.max setting of the focus axis.\n * @param limit The upper limit of the focus axis.\n * @param [unit=Units.NATIVE] The units of the limit.\n */\n public async setLimitMax(\n limit: number,\n unit: Length | Angle | Native = Units.NATIVE\n ): Promise<void> {\n const request: requests.DeviceSetSettingRequest & gateway.Message = {\n ...requests.DeviceSetSettingRequest.DEFAULT,\n interfaceId: this.focusAxis.device.connection.interfaceId,\n device: this.focusAxis.device.deviceAddress,\n axis: this.focusAxis.axisNumber,\n setting: 'motion.tracking.limit.max',\n value: limit,\n unit: unit,\n toBinary() {\n return requests.DeviceSetSettingRequest.toBinary(this);\n },\n };\n\n await gateway.callAsync('device/set_setting', request);\n }\n\n /**\n * Typically, the control loop parameters and objective are kept synchronized by the library.\n * If the parameters or current objective changes outside of the library, call this method to synchronize them.\n */\n public async synchronizeParameters(): Promise<void> {\n const request: requests.EmptyAutofocusRequest & gateway.Message = {\n ...requests.EmptyAutofocusRequest.DEFAULT,\n providerId: this.providerId,\n interfaceId: this.focusAxis.device.connection.interfaceId,\n focusAddress: this.focusAxis.device.deviceAddress,\n focusAxis: this.focusAxis.axisNumber,\n turretAddress: this.objectiveTurret?.deviceAddress ?? 0,\n toBinary() {\n return requests.EmptyAutofocusRequest.toBinary(this);\n },\n };\n\n await gateway.callAsync('autofocus/sync_params', request);\n }\n\n /**\n * Sets the parameters for the autofocus objective.\n * @param objective The objective (numbered from 1) to set the parameters for.\n * If your microscope has only one objective, use value of 1.\n * @param parameters The parameters for the autofocus objective.\n */\n public async setObjectiveParameters(\n objective: number,\n parameters: NamedParameter[]\n ): Promise<void> {\n const request: requests.AutofocusSetObjectiveParamsRequest & gateway.Message = {\n ...requests.AutofocusSetObjectiveParamsRequest.DEFAULT,\n providerId: this.providerId,\n interfaceId: this.focusAxis.device.connection.interfaceId,\n focusAddress: this.focusAxis.device.deviceAddress,\n focusAxis: this.focusAxis.axisNumber,\n turretAddress: this.objectiveTurret?.deviceAddress ?? 0,\n objective: objective,\n parameters: parameters,\n toBinary() {\n return requests.AutofocusSetObjectiveParamsRequest.toBinary(this);\n },\n };\n\n await gateway.callAsync('autofocus/set_objective_params', request);\n }\n\n /**\n * Returns the parameters for the autofocus objective.\n * @param objective The objective (numbered from 1) to get the parameters for.\n * If your microscope has only one objective, use value of 1.\n * @returns The parameters for the autofocus objective.\n */\n public async getObjectiveParameters(\n objective: number\n ): Promise<NamedParameter[]> {\n const request: requests.AutofocusGetObjectiveParamsRequest & gateway.Message = {\n ...requests.AutofocusGetObjectiveParamsRequest.DEFAULT,\n providerId: this.providerId,\n interfaceId: this.focusAxis.device.connection.interfaceId,\n focusAddress: this.focusAxis.device.deviceAddress,\n focusAxis: this.focusAxis.axisNumber,\n turretAddress: this.objectiveTurret?.deviceAddress ?? 0,\n objective: objective,\n toBinary() {\n return requests.AutofocusGetObjectiveParamsRequest.toBinary(this);\n },\n };\n\n const response = await gateway.callAsync<requests.AutofocusGetObjectiveParamsResponse>(\n 'autofocus/get_objective_params',\n request,\n requests.AutofocusGetObjectiveParamsResponse.fromBinary);\n return response.parameters;\n }\n\n /**\n * Returns a string that represents the autofocus.\n * @returns A string that represents the autofocus.\n */\n public toString(): string {\n const request: requests.EmptyAutofocusRequest & gateway.Message = {\n ...requests.EmptyAutofocusRequest.DEFAULT,\n providerId: this.providerId,\n interfaceId: this.focusAxis.device.connection.interfaceId,\n focusAddress: this.focusAxis.device.deviceAddress,\n focusAxis: this.focusAxis.axisNumber,\n turretAddress: this.objectiveTurret?.deviceAddress ?? 0,\n toBinary() {\n return requests.EmptyAutofocusRequest.toBinary(this);\n },\n };\n\n const response = gateway.callSync<requests.StringResponse>(\n 'autofocus/to_string',\n request,\n requests.StringResponse.fromBinary);\n return response.value;\n }\n}\n\nnamespace Autofocus {\n}\n"]}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Status of the autofocus.
3
+ */
4
+ export interface AutofocusStatus {
5
+ /**
6
+ * Indicates whether the autofocus is in focus.
7
+ */
8
+ inFocus: boolean;
9
+ /**
10
+ * Indicates whether the autofocus is in range.
11
+ */
12
+ inRange: boolean;
13
+ }
14
+ export declare const AutofocusStatus: {
15
+ fromBinary: (buffer: Uint8Array) => AutofocusStatus;
16
+ toBinary: (value: AutofocusStatus) => Uint8Array;
17
+ DEFAULT: Readonly<AutofocusStatus>;
18
+ sanitize: (value: AutofocusStatus) => AutofocusStatus;
19
+ };
20
+ //# sourceMappingURL=autofocus_status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autofocus_status.d.ts","sourceRoot":"","sources":["../../../src/microscopy/autofocus_status.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAElB;AAED,eAAO,MAAM,eAAe;yBACL,UAAU,KAAG,eAAe;sBAC/B,eAAe,KAAG,UAAU;;sBAK5B,eAAe,KAAG,eAAe;CAQpD,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AutofocusStatus = void 0;
4
+ /* This file is generated. Do not modify by hand. */
5
+ const bson_1 = require("bson");
6
+ const sanitizer_1 = require("../gateway/sanitizer");
7
+ exports.AutofocusStatus = {
8
+ fromBinary: (buffer) => bson_1.BSON.deserialize(buffer),
9
+ toBinary: (value) => bson_1.BSON.serialize(exports.AutofocusStatus.sanitize(value)),
10
+ DEFAULT: Object.freeze({
11
+ inFocus: false,
12
+ inRange: false,
13
+ }),
14
+ sanitize: (value) => {
15
+ if (value == null) {
16
+ throw new TypeError('Expected AutofocusStatus object but got null or undefined.');
17
+ }
18
+ if (typeof value !== 'object') {
19
+ throw new TypeError(`Expected AutofocusStatus object but got ${typeof value}.`);
20
+ }
21
+ return {
22
+ inFocus: sanitizer_1.sanitizer.sanitizeBool(value.inFocus, 'inFocus'),
23
+ inRange: sanitizer_1.sanitizer.sanitizeBool(value.inRange, 'inRange'),
24
+ };
25
+ },
26
+ };
27
+ //# sourceMappingURL=autofocus_status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autofocus_status.js","sourceRoot":"","sources":["../../../src/microscopy/autofocus_status.ts"],"names":[],"mappings":";;;AAAA,oDAAoD;AACpD,+BAA4B;AAC5B,oDAAiD;AAkBpC,QAAA,eAAe,GAAG;IAC7B,UAAU,EAAE,CAAC,MAAkB,EAAmB,EAAE,CAAC,WAAI,CAAC,WAAW,CAAC,MAAM,CAAoB;IAChG,QAAQ,EAAE,CAAC,KAAsB,EAAc,EAAE,CAAC,WAAI,CAAC,SAAS,CAAC,uBAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjG,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;QACrB,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;KACf,CAA8B;IAC/B,QAAQ,EAAE,CAAC,KAAsB,EAAmB,EAAE;QACpD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAAC,MAAM,IAAI,SAAS,CAAC,4DAA4D,CAAC,CAAA;QAAC,CAAC;QACxG,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAAC,MAAM,IAAI,SAAS,CAAC,2CAA2C,OAAO,KAAK,GAAG,CAAC,CAAA;QAAC,CAAC;QAClH,OAAO;YACL,OAAO,EAAE,qBAAS,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;YACzD,OAAO,EAAE,qBAAS,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;SAC1D,CAAC;IACJ,CAAC;CACF,CAAC","sourcesContent":["/* This file is generated. Do not modify by hand. */\nimport { BSON } from 'bson';\nimport { sanitizer } from '../gateway/sanitizer';\n\n/**\n * Status of the autofocus.\n */\nexport interface AutofocusStatus {\n /**\n * Indicates whether the autofocus is in focus.\n */\n inFocus: boolean;\n\n /**\n * Indicates whether the autofocus is in range.\n */\n inRange: boolean;\n\n}\n\nexport const AutofocusStatus = {\n fromBinary: (buffer: Uint8Array): AutofocusStatus => BSON.deserialize(buffer) as AutofocusStatus,\n toBinary: (value: AutofocusStatus): Uint8Array => BSON.serialize(AutofocusStatus.sanitize(value)),\n DEFAULT: Object.freeze({\n inFocus: false,\n inRange: false,\n }) as Readonly<AutofocusStatus>,\n sanitize: (value: AutofocusStatus): AutofocusStatus => {\n if (value == null) { throw new TypeError('Expected AutofocusStatus object but got null or undefined.') }\n if (typeof value !== 'object') { throw new TypeError(`Expected AutofocusStatus object but got ${typeof value}.`) }\n return {\n inFocus: sanitizer.sanitizeBool(value.inFocus, 'inFocus'),\n inRange: sanitizer.sanitizeBool(value.inRange, 'inRange'),\n };\n },\n};\n"]}
@@ -1,7 +1,12 @@
1
+ export * from './autofocus';
2
+ export * from './autofocus_status';
1
3
  export * from './filter_changer';
2
4
  export * from './illuminator';
3
5
  export * from './illuminator_channel';
4
6
  export * from './microscope';
5
7
  export * from './microscope_config';
6
8
  export * from './objective_changer';
9
+ export * from './third_party_components';
10
+ export * from './wdi_autofocus_provider';
11
+ export * from './wdi_autofocus_provider_status';
7
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/microscopy/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/microscopy/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC"}
@@ -15,10 +15,15 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  /* This file is generated. Do not modify by hand. */
18
+ __exportStar(require("./autofocus"), exports);
19
+ __exportStar(require("./autofocus_status"), exports);
18
20
  __exportStar(require("./filter_changer"), exports);
19
21
  __exportStar(require("./illuminator"), exports);
20
22
  __exportStar(require("./illuminator_channel"), exports);
21
23
  __exportStar(require("./microscope"), exports);
22
24
  __exportStar(require("./microscope_config"), exports);
23
25
  __exportStar(require("./objective_changer"), exports);
26
+ __exportStar(require("./third_party_components"), exports);
27
+ __exportStar(require("./wdi_autofocus_provider"), exports);
28
+ __exportStar(require("./wdi_autofocus_provider_status"), exports);
24
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/microscopy/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAoD;AACpD,mDAAiC;AACjC,gDAA8B;AAC9B,wDAAsC;AACtC,+CAA6B;AAC7B,sDAAoC;AACpC,sDAAoC","sourcesContent":["/* This file is generated. Do not modify by hand. */\nexport * from './filter_changer';\nexport * from './illuminator';\nexport * from './illuminator_channel';\nexport * from './microscope';\nexport * from './microscope_config';\nexport * from './objective_changer';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/microscopy/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAoD;AACpD,8CAA4B;AAC5B,qDAAmC;AACnC,mDAAiC;AACjC,gDAA8B;AAC9B,wDAAsC;AACtC,+CAA6B;AAC7B,sDAAoC;AACpC,sDAAoC;AACpC,2DAAyC;AACzC,2DAAyC;AACzC,kEAAgD","sourcesContent":["/* This file is generated. Do not modify by hand. */\nexport * from './autofocus';\nexport * from './autofocus_status';\nexport * from './filter_changer';\nexport * from './illuminator';\nexport * from './illuminator_channel';\nexport * from './microscope';\nexport * from './microscope_config';\nexport * from './objective_changer';\nexport * from './third_party_components';\nexport * from './wdi_autofocus_provider';\nexport * from './wdi_autofocus_provider_status';\n"]}
@@ -5,6 +5,8 @@ import { Illuminator } from './illuminator';
5
5
  import { ObjectiveChanger } from './objective_changer';
6
6
  import { MicroscopeConfig } from './microscope_config';
7
7
  import { FilterChanger } from './filter_changer';
8
+ import { Autofocus } from './autofocus';
9
+ import { ThirdPartyComponents } from './third_party_components';
8
10
  /**
9
11
  * Represent a microscope.
10
12
  * Parts of the microscope may or may not be instantiated depending on the configuration.
@@ -52,6 +54,11 @@ export declare class Microscope {
52
54
  */
53
55
  get filterChanger(): FilterChanger | undefined;
54
56
  private _filterChanger;
57
+ /**
58
+ * The autofocus feature.
59
+ */
60
+ get autofocus(): Autofocus | undefined;
61
+ private _autofocus;
55
62
  /**
56
63
  * Creates instance of `Microscope` from the given config.
57
64
  * Parts are instantiated depending on device addresses in the config.
@@ -60,9 +67,10 @@ export declare class Microscope {
60
67
  /**
61
68
  * Finds a microscope on a connection.
62
69
  * @param connection Connection on which to detect the microscope.
70
+ * @param thirdPartyComponents Third party components of the microscope that cannot be found on the connection.
63
71
  * @returns New instance of microscope.
64
72
  */
65
- static find(connection: Connection): Promise<Microscope>;
73
+ static find(connection: Connection, thirdPartyComponents?: ThirdPartyComponents): Promise<Microscope>;
66
74
  /**
67
75
  * Initializes the microscope.
68
76
  * Homes all axes, filter changer, and objective changer if they require it.
@@ -1 +1 @@
1
- {"version":3,"file":"microscope.d.ts","sourceRoot":"","sources":["../../../src/microscopy/microscope.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;GAIG;AACH,qBAAa,UAAU;IACrB;;OAEG;IACH,IAAW,UAAU,IAAI,UAAU,CAElC;IACD,OAAO,CAAC,WAAW,CAAa;IAEhC,OAAO,CAAC,OAAO,CAAmB;IAElC;;OAEG;IACH,IAAW,WAAW,IAAI,WAAW,GAAG,SAAS,CAEhD;IACD,OAAO,CAAC,YAAY,CAA0B;IAE9C;;OAEG;IACH,IAAW,SAAS,IAAI,IAAI,GAAG,SAAS,CAEvC;IACD,OAAO,CAAC,UAAU,CAAmB;IAErC;;OAEG;IACH,IAAW,KAAK,IAAI,IAAI,GAAG,SAAS,CAEnC;IACD,OAAO,CAAC,MAAM,CAAmB;IAEjC;;OAEG;IACH,IAAW,KAAK,IAAI,IAAI,GAAG,SAAS,CAEnC;IACD,OAAO,CAAC,MAAM,CAAmB;IAEjC;;OAEG;IACH,IAAW,KAAK,IAAI,SAAS,GAAG,SAAS,CAExC;IACD,OAAO,CAAC,MAAM,CAAwB;IAEtC;;OAEG;IACH,IAAW,gBAAgB,IAAI,gBAAgB,GAAG,SAAS,CAE1D;IACD,OAAO,CAAC,iBAAiB,CAA+B;IAExD;;OAEG;IACH,IAAW,aAAa,IAAI,aAAa,GAAG,SAAS,CAEpD;IACD,OAAO,CAAC,cAAc,CAA4B;IAElD;;;OAGG;gBACS,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB;IAY5D;;;;OAIG;WACiB,IAAI,CACtB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,UAAU,CAAC;IAgBtB;;;;OAIG;IACU,UAAU,CACrB,OAAO,GAAE,UAAU,CAAC,iBAAsB,GACzC,OAAO,CAAC,IAAI,CAAC;IAiBhB;;;OAGG;IACU,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAiB9C;;;OAGG;IACI,QAAQ,IAAI,MAAM;CAgB1B;AAED,kBAAU,UAAU,CAAC;IACnB,UAAiB,iBAAiB;QAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;KACnB;CACF"}
1
+ {"version":3,"file":"microscope.d.ts","sourceRoot":"","sources":["../../../src/microscopy/microscope.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;;;GAIG;AACH,qBAAa,UAAU;IACrB;;OAEG;IACH,IAAW,UAAU,IAAI,UAAU,CAElC;IACD,OAAO,CAAC,WAAW,CAAa;IAEhC,OAAO,CAAC,OAAO,CAAmB;IAElC;;OAEG;IACH,IAAW,WAAW,IAAI,WAAW,GAAG,SAAS,CAEhD;IACD,OAAO,CAAC,YAAY,CAA0B;IAE9C;;OAEG;IACH,IAAW,SAAS,IAAI,IAAI,GAAG,SAAS,CAEvC;IACD,OAAO,CAAC,UAAU,CAAmB;IAErC;;OAEG;IACH,IAAW,KAAK,IAAI,IAAI,GAAG,SAAS,CAEnC;IACD,OAAO,CAAC,MAAM,CAAmB;IAEjC;;OAEG;IACH,IAAW,KAAK,IAAI,IAAI,GAAG,SAAS,CAEnC;IACD,OAAO,CAAC,MAAM,CAAmB;IAEjC;;OAEG;IACH,IAAW,KAAK,IAAI,SAAS,GAAG,SAAS,CAExC;IACD,OAAO,CAAC,MAAM,CAAwB;IAEtC;;OAEG;IACH,IAAW,gBAAgB,IAAI,gBAAgB,GAAG,SAAS,CAE1D;IACD,OAAO,CAAC,iBAAiB,CAA+B;IAExD;;OAEG;IACH,IAAW,aAAa,IAAI,aAAa,GAAG,SAAS,CAEpD;IACD,OAAO,CAAC,cAAc,CAA4B;IAElD;;OAEG;IACH,IAAW,SAAS,IAAI,SAAS,GAAG,SAAS,CAE5C;IACD,OAAO,CAAC,UAAU,CAAwB;IAE1C;;;OAGG;gBACS,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB;IAa5D;;;;;OAKG;WACiB,IAAI,CACtB,UAAU,EAAE,UAAU,EACtB,oBAAoB,CAAC,EAAE,oBAAoB,GAC1C,OAAO,CAAC,UAAU,CAAC;IAiBtB;;;;OAIG;IACU,UAAU,CACrB,OAAO,GAAE,UAAU,CAAC,iBAAsB,GACzC,OAAO,CAAC,IAAI,CAAC;IAiBhB;;;OAGG;IACU,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAiB9C;;;OAGG;IACI,QAAQ,IAAI,MAAM;CAgB1B;AAED,kBAAU,UAAU,CAAC;IACnB,UAAiB,iBAAiB;QAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;KACnB;CACF"}
@@ -35,6 +35,7 @@ const illuminator_1 = require("./illuminator");
35
35
  const objective_changer_1 = require("./objective_changer");
36
36
  const microscope_config_1 = require("./microscope_config");
37
37
  const filter_changer_1 = require("./filter_changer");
38
+ const autofocus_1 = require("./autofocus");
38
39
  /**
39
40
  * Represent a microscope.
40
41
  * Parts of the microscope may or may not be instantiated depending on the configuration.
@@ -89,12 +90,18 @@ class Microscope {
89
90
  get filterChanger() {
90
91
  return this._filterChanger;
91
92
  }
93
+ /**
94
+ * The autofocus feature.
95
+ */
96
+ get autofocus() {
97
+ return this._autofocus;
98
+ }
92
99
  /**
93
100
  * Creates instance of `Microscope` from the given config.
94
101
  * Parts are instantiated depending on device addresses in the config.
95
102
  */
96
103
  constructor(connection, config) {
97
- var _a, _b, _c;
104
+ var _a, _b, _c, _d;
98
105
  this._connection = connection;
99
106
  this._config = microscope_config_1.MicroscopeConfig.fromBinary(microscope_config_1.MicroscopeConfig.toBinary(config));
100
107
  this._illuminator = config.illuminator ? new illuminator_1.Illuminator(new device_1.Device(connection, config.illuminator)) : undefined;
@@ -104,18 +111,21 @@ class Microscope {
104
111
  this._plate = this._xAxis && this._yAxis ? new axis_group_1.AxisGroup([this._xAxis, this._yAxis]) : undefined;
105
112
  this._objectiveChanger = config.objectiveChanger && this._focusAxis ? new objective_changer_1.ObjectiveChanger(new device_1.Device(connection, config.objectiveChanger), this._focusAxis) : undefined;
106
113
  this._filterChanger = config.filterChanger ? new filter_changer_1.FilterChanger(new device_1.Device(connection, config.filterChanger)) : undefined;
114
+ this._autofocus = config.autofocus && this._focusAxis ? new autofocus_1.Autofocus(config.autofocus, this._focusAxis, (_d = this._objectiveChanger) === null || _d === void 0 ? void 0 : _d.turret) : undefined;
107
115
  }
108
116
  /**
109
117
  * Finds a microscope on a connection.
110
118
  * @param connection Connection on which to detect the microscope.
119
+ * @param thirdPartyComponents Third party components of the microscope that cannot be found on the connection.
111
120
  * @returns New instance of microscope.
112
121
  */
113
- static async find(connection) {
122
+ static async find(connection, thirdPartyComponents) {
114
123
  const request = {
115
- ...requests.InterfaceEmptyRequest.DEFAULT,
124
+ ...requests.MicroscopeFindRequest.DEFAULT,
116
125
  interfaceId: connection.interfaceId,
126
+ thirdParty: thirdPartyComponents,
117
127
  toBinary() {
118
- return requests.InterfaceEmptyRequest.toBinary(this);
128
+ return requests.MicroscopeFindRequest.toBinary(this);
119
129
  },
120
130
  };
121
131
  const response = await gateway.callAsync('microscope/detect', request, requests.MicroscopeConfigResponse.fromBinary);
@@ -1 +1 @@
1
- {"version":3,"file":"microscope.js","sourceRoot":"","sources":["../../../src/microscopy/microscope.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 * as requests from '../requests';\nimport { Axis } from '../ascii/axis';\nimport { AxisGroup } from '../ascii/axis_group';\nimport { Device } from '../ascii/device';\nimport { Connection } from '../ascii/connection';\nimport { Illuminator } from './illuminator';\nimport { ObjectiveChanger } from './objective_changer';\nimport { MicroscopeConfig } from './microscope_config';\nimport { FilterChanger } from './filter_changer';\n\n/**\n * Represent a microscope.\n * Parts of the microscope may or may not be instantiated depending on the configuration.\n * Requires at least Firmware 7.34.\n */\nexport class Microscope {\n /**\n * Connection of the microscope.\n */\n public get connection(): Connection {\n return this._connection;\n }\n private _connection: Connection;\n\n private _config: MicroscopeConfig;\n\n /**\n * The illuminator.\n */\n public get illuminator(): Illuminator | undefined {\n return this._illuminator;\n }\n private _illuminator: Illuminator | undefined;\n\n /**\n * The focus axis.\n */\n public get focusAxis(): Axis | undefined {\n return this._focusAxis;\n }\n private _focusAxis: Axis | undefined;\n\n /**\n * The X axis.\n */\n public get xAxis(): Axis | undefined {\n return this._xAxis;\n }\n private _xAxis: Axis | undefined;\n\n /**\n * The Y axis.\n */\n public get yAxis(): Axis | undefined {\n return this._yAxis;\n }\n private _yAxis: Axis | undefined;\n\n /**\n * Axis group consisting of X and Y axes representing the plate of the microscope.\n */\n public get plate(): AxisGroup | undefined {\n return this._plate;\n }\n private _plate: AxisGroup | undefined;\n\n /**\n * The objective changer.\n */\n public get objectiveChanger(): ObjectiveChanger | undefined {\n return this._objectiveChanger;\n }\n private _objectiveChanger: ObjectiveChanger | undefined;\n\n /**\n * The filter changer.\n */\n public get filterChanger(): FilterChanger | undefined {\n return this._filterChanger;\n }\n private _filterChanger: FilterChanger | undefined;\n\n /**\n * Creates instance of `Microscope` from the given config.\n * Parts are instantiated depending on device addresses in the config.\n */\n constructor(connection: Connection, config: MicroscopeConfig) {\n this._connection = connection;\n this._config = MicroscopeConfig.fromBinary(MicroscopeConfig.toBinary(config));\n this._illuminator = config.illuminator ? new Illuminator(new Device(connection, config.illuminator)) : undefined;\n this._focusAxis = config.focusAxis?.device ? new Axis(new Device(connection, config.focusAxis.device), config.focusAxis.axis) : undefined;\n this._xAxis = config.xAxis?.device ? new Axis(new Device(connection, config.xAxis.device), config.xAxis.axis) : undefined;\n this._yAxis = config.yAxis?.device ? new Axis(new Device(connection, config.yAxis.device), config.yAxis.axis) : undefined;\n this._plate = this._xAxis && this._yAxis ? new AxisGroup([this._xAxis, this._yAxis]) : undefined;\n this._objectiveChanger = config.objectiveChanger && this._focusAxis ? new ObjectiveChanger(new Device(connection, config.objectiveChanger), this._focusAxis) : undefined;\n this._filterChanger = config.filterChanger ? new FilterChanger(new Device(connection, config.filterChanger)) : undefined;\n }\n\n /**\n * Finds a microscope on a connection.\n * @param connection Connection on which to detect the microscope.\n * @returns New instance of microscope.\n */\n public static async find(\n connection: Connection\n ): Promise<Microscope> {\n const request: requests.InterfaceEmptyRequest & gateway.Message = {\n ...requests.InterfaceEmptyRequest.DEFAULT,\n interfaceId: connection.interfaceId,\n toBinary() {\n return requests.InterfaceEmptyRequest.toBinary(this);\n },\n };\n\n const response = await gateway.callAsync<requests.MicroscopeConfigResponse>(\n 'microscope/detect',\n request,\n requests.MicroscopeConfigResponse.fromBinary);\n return new Microscope(connection, response.config);\n }\n\n /**\n * Initializes the microscope.\n * Homes all axes, filter changer, and objective changer if they require it.\n * @param [options.force=false] Forces all devices to home even when not required.\n */\n public async initialize(\n options: Microscope.InitializeOptions = {}\n ): Promise<void> {\n const {\n force = false,\n } = options;\n const request: requests.MicroscopeInitRequest & gateway.Message = {\n ...requests.MicroscopeInitRequest.DEFAULT,\n interfaceId: this.connection.interfaceId,\n config: this._config,\n force: force,\n toBinary() {\n return requests.MicroscopeInitRequest.toBinary(this);\n },\n };\n\n await gateway.callAsync('microscope/initialize', request);\n }\n\n /**\n * Checks whether the microscope is initialized.\n * @returns True, when the microscope is initialized. False, otherwise.\n */\n public async isInitialized(): Promise<boolean> {\n const request: requests.MicroscopeEmptyRequest & gateway.Message = {\n ...requests.MicroscopeEmptyRequest.DEFAULT,\n interfaceId: this.connection.interfaceId,\n config: this._config,\n toBinary() {\n return requests.MicroscopeEmptyRequest.toBinary(this);\n },\n };\n\n const response = await gateway.callAsync<requests.BoolResponse>(\n 'microscope/is_initialized',\n request,\n requests.BoolResponse.fromBinary);\n return response.value;\n }\n\n /**\n * Returns a string that represents the microscope.\n * @returns A string that represents the microscope.\n */\n public toString(): string {\n const request: requests.MicroscopeEmptyRequest & gateway.Message = {\n ...requests.MicroscopeEmptyRequest.DEFAULT,\n interfaceId: this.connection.interfaceId,\n config: this._config,\n toBinary() {\n return requests.MicroscopeEmptyRequest.toBinary(this);\n },\n };\n\n const response = gateway.callSync<requests.StringResponse>(\n 'microscope/to_string',\n request,\n requests.StringResponse.fromBinary);\n return response.value;\n }\n}\n\nnamespace Microscope {\n export interface InitializeOptions {\n force?: boolean;\n }\n}\n"]}
1
+ {"version":3,"file":"microscope.js","sourceRoot":"","sources":["../../../src/microscopy/microscope.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 * as requests from '../requests';\nimport { Axis } from '../ascii/axis';\nimport { AxisGroup } from '../ascii/axis_group';\nimport { Device } from '../ascii/device';\nimport { Connection } from '../ascii/connection';\nimport { Illuminator } from './illuminator';\nimport { ObjectiveChanger } from './objective_changer';\nimport { MicroscopeConfig } from './microscope_config';\nimport { FilterChanger } from './filter_changer';\nimport { Autofocus } from './autofocus';\nimport { ThirdPartyComponents } from './third_party_components';\n\n/**\n * Represent a microscope.\n * Parts of the microscope may or may not be instantiated depending on the configuration.\n * Requires at least Firmware 7.34.\n */\nexport class Microscope {\n /**\n * Connection of the microscope.\n */\n public get connection(): Connection {\n return this._connection;\n }\n private _connection: Connection;\n\n private _config: MicroscopeConfig;\n\n /**\n * The illuminator.\n */\n public get illuminator(): Illuminator | undefined {\n return this._illuminator;\n }\n private _illuminator: Illuminator | undefined;\n\n /**\n * The focus axis.\n */\n public get focusAxis(): Axis | undefined {\n return this._focusAxis;\n }\n private _focusAxis: Axis | undefined;\n\n /**\n * The X axis.\n */\n public get xAxis(): Axis | undefined {\n return this._xAxis;\n }\n private _xAxis: Axis | undefined;\n\n /**\n * The Y axis.\n */\n public get yAxis(): Axis | undefined {\n return this._yAxis;\n }\n private _yAxis: Axis | undefined;\n\n /**\n * Axis group consisting of X and Y axes representing the plate of the microscope.\n */\n public get plate(): AxisGroup | undefined {\n return this._plate;\n }\n private _plate: AxisGroup | undefined;\n\n /**\n * The objective changer.\n */\n public get objectiveChanger(): ObjectiveChanger | undefined {\n return this._objectiveChanger;\n }\n private _objectiveChanger: ObjectiveChanger | undefined;\n\n /**\n * The filter changer.\n */\n public get filterChanger(): FilterChanger | undefined {\n return this._filterChanger;\n }\n private _filterChanger: FilterChanger | undefined;\n\n /**\n * The autofocus feature.\n */\n public get autofocus(): Autofocus | undefined {\n return this._autofocus;\n }\n private _autofocus: Autofocus | undefined;\n\n /**\n * Creates instance of `Microscope` from the given config.\n * Parts are instantiated depending on device addresses in the config.\n */\n constructor(connection: Connection, config: MicroscopeConfig) {\n this._connection = connection;\n this._config = MicroscopeConfig.fromBinary(MicroscopeConfig.toBinary(config));\n this._illuminator = config.illuminator ? new Illuminator(new Device(connection, config.illuminator)) : undefined;\n this._focusAxis = config.focusAxis?.device ? new Axis(new Device(connection, config.focusAxis.device), config.focusAxis.axis) : undefined;\n this._xAxis = config.xAxis?.device ? new Axis(new Device(connection, config.xAxis.device), config.xAxis.axis) : undefined;\n this._yAxis = config.yAxis?.device ? new Axis(new Device(connection, config.yAxis.device), config.yAxis.axis) : undefined;\n this._plate = this._xAxis && this._yAxis ? new AxisGroup([this._xAxis, this._yAxis]) : undefined;\n this._objectiveChanger = config.objectiveChanger && this._focusAxis ? new ObjectiveChanger(new Device(connection, config.objectiveChanger), this._focusAxis) : undefined;\n this._filterChanger = config.filterChanger ? new FilterChanger(new Device(connection, config.filterChanger)) : undefined;\n this._autofocus = config.autofocus && this._focusAxis ? new Autofocus(config.autofocus, this._focusAxis, this._objectiveChanger?.turret) : undefined;\n }\n\n /**\n * Finds a microscope on a connection.\n * @param connection Connection on which to detect the microscope.\n * @param thirdPartyComponents Third party components of the microscope that cannot be found on the connection.\n * @returns New instance of microscope.\n */\n public static async find(\n connection: Connection,\n thirdPartyComponents?: ThirdPartyComponents\n ): Promise<Microscope> {\n const request: requests.MicroscopeFindRequest & gateway.Message = {\n ...requests.MicroscopeFindRequest.DEFAULT,\n interfaceId: connection.interfaceId,\n thirdParty: thirdPartyComponents,\n toBinary() {\n return requests.MicroscopeFindRequest.toBinary(this);\n },\n };\n\n const response = await gateway.callAsync<requests.MicroscopeConfigResponse>(\n 'microscope/detect',\n request,\n requests.MicroscopeConfigResponse.fromBinary);\n return new Microscope(connection, response.config);\n }\n\n /**\n * Initializes the microscope.\n * Homes all axes, filter changer, and objective changer if they require it.\n * @param [options.force=false] Forces all devices to home even when not required.\n */\n public async initialize(\n options: Microscope.InitializeOptions = {}\n ): Promise<void> {\n const {\n force = false,\n } = options;\n const request: requests.MicroscopeInitRequest & gateway.Message = {\n ...requests.MicroscopeInitRequest.DEFAULT,\n interfaceId: this.connection.interfaceId,\n config: this._config,\n force: force,\n toBinary() {\n return requests.MicroscopeInitRequest.toBinary(this);\n },\n };\n\n await gateway.callAsync('microscope/initialize', request);\n }\n\n /**\n * Checks whether the microscope is initialized.\n * @returns True, when the microscope is initialized. False, otherwise.\n */\n public async isInitialized(): Promise<boolean> {\n const request: requests.MicroscopeEmptyRequest & gateway.Message = {\n ...requests.MicroscopeEmptyRequest.DEFAULT,\n interfaceId: this.connection.interfaceId,\n config: this._config,\n toBinary() {\n return requests.MicroscopeEmptyRequest.toBinary(this);\n },\n };\n\n const response = await gateway.callAsync<requests.BoolResponse>(\n 'microscope/is_initialized',\n request,\n requests.BoolResponse.fromBinary);\n return response.value;\n }\n\n /**\n * Returns a string that represents the microscope.\n * @returns A string that represents the microscope.\n */\n public toString(): string {\n const request: requests.MicroscopeEmptyRequest & gateway.Message = {\n ...requests.MicroscopeEmptyRequest.DEFAULT,\n interfaceId: this.connection.interfaceId,\n config: this._config,\n toBinary() {\n return requests.MicroscopeEmptyRequest.toBinary(this);\n },\n };\n\n const response = gateway.callSync<requests.StringResponse>(\n 'microscope/to_string',\n request,\n requests.StringResponse.fromBinary);\n return response.value;\n }\n}\n\nnamespace Microscope {\n export interface InitializeOptions {\n force?: boolean;\n }\n}\n"]}
@@ -28,6 +28,10 @@ export interface MicroscopeConfig {
28
28
  * Objective changer device address.
29
29
  */
30
30
  objectiveChanger?: (number | null);
31
+ /**
32
+ * Autofocus identifier.
33
+ */
34
+ autofocus?: (number | null);
31
35
  }
32
36
  export declare const MicroscopeConfig: {
33
37
  fromBinary: (buffer: Uint8Array) => MicroscopeConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"microscope_config.d.ts","sourceRoot":"","sources":["../../../src/microscopy/microscope_config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEjC;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE7B;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE7B;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE9B;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEhC;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAEpC;AAED,eAAO,MAAM,gBAAgB;yBACN,UAAU,KAAG,gBAAgB;sBAChC,gBAAgB,KAAG,UAAU;;sBAS7B,gBAAgB,KAAG,gBAAgB;CAYtD,CAAC"}
1
+ {"version":3,"file":"microscope_config.d.ts","sourceRoot":"","sources":["../../../src/microscopy/microscope_config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEjC;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE7B;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE7B;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE9B;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEhC;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEnC;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAE7B;AAED,eAAO,MAAM,gBAAgB;yBACN,UAAU,KAAG,gBAAgB;sBAChC,gBAAgB,KAAG,UAAU;;sBAU7B,gBAAgB,KAAG,gBAAgB;CAatD,CAAC"}
@@ -15,6 +15,7 @@ exports.MicroscopeConfig = {
15
15
  illuminator: null,
16
16
  filterChanger: null,
17
17
  objectiveChanger: null,
18
+ autofocus: null,
18
19
  }),
19
20
  sanitize: (value) => {
20
21
  if (value == null) {
@@ -30,6 +31,7 @@ exports.MicroscopeConfig = {
30
31
  illuminator: value.illuminator != null ? sanitizer_1.sanitizer.sanitizeInt(value.illuminator, 'illuminator') : null,
31
32
  filterChanger: value.filterChanger != null ? sanitizer_1.sanitizer.sanitizeInt(value.filterChanger, 'filterChanger') : null,
32
33
  objectiveChanger: value.objectiveChanger != null ? sanitizer_1.sanitizer.sanitizeInt(value.objectiveChanger, 'objectiveChanger') : null,
34
+ autofocus: value.autofocus != null ? sanitizer_1.sanitizer.sanitizeInt(value.autofocus, 'autofocus') : null,
33
35
  };
34
36
  },
35
37
  };