Gocator API
 All Classes Files Functions Variables Typedefs Macros Modules Pages
GoSensor.h
Go to the documentation of this file.
1 /**
2  * @file GoSensor.h
3  * @brief Declares the GoSensor class.
4  *
5  * @internal
6  * Copyright (C) 2016-2018 by LMI Technologies Inc.
7  * Licensed under the MIT License.
8  * Redistributed files must retain the above copyright notice.
9  */
10 #ifndef GO_SENSOR_H
11 #define GO_SENSOR_H
12 
13 #include <GoSdk/GoSdkDef.h>
14 #include <GoSdk/GoSetup.h>
15 #include <GoSdk/GoPartModel.h>
16 #include <GoSdk/GoReplay.h>
17 #include <GoSdk/GoTransform.h>
18 #include <GoSdk/GoSensorInfo.h>
19 #include <GoSdk/GoGeoCal.h>
22 #include <GoSdk/Outputs/GoOutput.h>
23 #include <GoSdk/Tools/GoTools.h>
24 
25 kBeginHeader()
26 
27 #define GO_SENSOR_LIVE_JOB_NAME "_live.job" //<<< Represents the active live job on the sensor
28 #define GO_SENSOR_LIVE_LOG_NAME "_live.log" //<<< Represents the log file on the sensor
29 #define GO_SENSOR_LIVE_REPLAY "_live.rec" //<<< Represents the current recording on the sensor
30 #define GO_SENSOR_LIVE_REPLAY_STREAM "_livestream.rec" //<<< Represents the current recording stream on the sensor
31 
32 /**
33  * @class GoSensor
34  * @extends kObject
35  * @ingroup GoSdk
36  * @brief Represents a Gocator sensor.
37  */
38 typedef kObject GoSensor;
39 
40 /**
41  * Initiates a sensor configuration, model file, and transformation synchronization
42  * if modifications are present.
43  *
44  * @public @memberof GoSetup
45  * @version Introduced in firmware 4.0.10.27
46  * @param sensor GoSensor object.
47  * @return Operation status.
48  */
49 GoFx(kStatus) GoSensor_Flush(GoSensor sensor);
50 
51 /**
52  * Configures a sensor's network address settings.
53  *
54  * This function uses UDP broadcasts for sensor configuration; the sensor does not need to
55  * be connected, and can be on a different subnet than the client.
56  *
57  * The sensor will automatically reboot if the address is successfully changed.
58  *
59  * @public @memberof GoSensor
60  * @version Introduced in firmware 4.0.10.27
61  * @param sensor GoSensor object.
62  * @param info New address settings.
63  * @param wait Should this function block until the sensor finishes rebooting?
64  * @return Operation status.
65  * @remark Calling this function will result in writing operations to flash storage. Should the process be disrupted due to power loss or other factors, the sensor may enter Rescue mode.
66  */
67 GoFx(kStatus) GoSensor_SetAddress(GoSensor sensor, const GoAddressInfo* info, kBool wait);
68 
69 /**
70  * Retrieves the sensor's network address settings.
71  *
72  * @public @memberof GoSensor
73  * @version Introduced in firmware 4.0.10.27
74  * @param sensor GoSensor object.
75  * @param info Receives current address configuration.
76  * @return Operation status.
77  */
78 GoFx(kStatus) GoSensor_Address(GoSensor sensor, GoAddressInfo* info);
79 
80 /**
81  * Creates a connection to the sensor.
82  *
83  * @public @memberof GoSensor
84  * @version Introduced in firmware 4.0.10.27
85  * @param sensor GoSensor object.
86  * @return Operation status.
87  */
88 GoFx(kStatus) GoSensor_Connect(GoSensor sensor);
89 
90 /**
91  * Disconnects from the sensor. Do not call this function when state is locked
92  * with GoSensor_LockState().
93  *
94  * @public @memberof GoSensor
95  * @version Introduced in firmware 4.0.10.27
96  * @param sensor GoSensor object.
97  * @return Operation status.
98  */
99 GoFx(kStatus) GoSensor_Disconnect(GoSensor sensor);
100 
101 /**
102  * Reports whether the sensor is currently connected. If sensors are temporarily unreachable, they do not leave
103  * isConnected state. You can use GoSensor_IsResponsive for this and optionaly call GoSensor_Disconnect if
104  * unresponsive for too long.
105  *
106  * @public @memberof GoSensor
107  * @version Introduced in firmware 4.0.10.27
108  * @param sensor GoSensor object.
109  * @return kTRUE if the sensor is connected, kFALSE otherwise.
110  */
111 GoFx(kBool) GoSensor_IsConnected(GoSensor sensor);
112 
113 /**
114  * Reports whether the sensor is currently responsive.
115  *
116  * @public @memberof GoSensor
117  * @version Introduced in firmware 5.0.2.0
118  * @param sensor GoSensor object.
119  * @return kTRUE if the sensor is responsive kFALSE otherwise.
120  */
121 GoFx(kBool) GoSensor_IsResponsive(GoSensor sensor);
122 
123 /**
124  * Reports whether the connected sensor's protocol version is compatible with the SDK's protocol version.
125  *
126  * @public @memberof GoSensor
127  * @version Introduced in firmware 4.4.4.14
128  * @param sensor GoSensor object.
129  * @return kTRUE if the sensor is compatible, kFALSE otherwise.
130  */
131 GoFx(kBool) GoSensor_IsCompatible(GoSensor sensor);
132 
133 /**
134  * Refreshes sensor state.
135  *
136  * Unresponsive sensors will be disconnected, and canceled sensors will be reconnected.
137  * Sensors in any other state will discard all locally-cached information.
138  *
139  * This function should be used to update sensors in the GO_SENSOR_INCONSISTENT state. This
140  * state can arise due to buddy changes performed by remote sensors (e.g. a main sensor boots
141  * and claims ownership of a buddy sensor, but the buddy sensor has already been detected and
142  * loaded as a main sensor by the client).
143  *
144  * @public @memberof GoSensor
145  * @version Introduced in firmware 4.0.10.27
146  * @param sensor GoSensor object.
147  * @return kTRUE if the sensor is connected; kFALSE otherwise.
148  */
149 GoFx(kStatus) GoSensor_Refresh(GoSensor sensor);
150 
151 /**
152  * Assigns a buddy sensor.
153  *
154  * This function is asynchronous, use GoSensor_AddBuddyBlocking() for synchronous version.
155  *
156  * NOTE: The provided buddy sensor handle must already be connected.
157  *
158  * @public @memberof GoSensor
159  * @version Introduced in firmware 4.0.10.27
160  * @param sensor GoSensor object.
161  * @param buddy Sensor to be assigned as buddy.
162  * @return Operation status.
163  * @see GoSensor_Connect, GoSensor_HasBuddy, GoSensor_BuddyId, GoSensor_RemoveBuddy
164  */
165 GoFx(kStatus) GoSensor_AddBuddy(GoSensor sensor, GoSensor buddy);
166 
167 /**
168 * Synchronously assigns a buddy sensor.
169 *
170 * NOTE: The provided buddy sensor handle must already be connected.
171 *
172 * @public @memberof GoSensor
173 * @version Introduced in firmware 4.8.1.65
174 * @param sensor GoSensor object.
175 * @param buddy Sensor to be assigned as buddy.
176 * @return Operation status.
177 * @see GoSensor_Connect, GoSensor_HasBuddy, GoSensor_BuddyId, GoSensor_RemoveBuddy
178 */
179 GoFx(kStatus) GoSensor_AddBuddyBlocking(GoSensor sensor, GoSensor buddy);
180 
181 /**
182  * Removes the current buddy sensor.
183  *
184  * @public @memberof GoSensor
185  * @version Introduced in firmware 4.0.10.27
186  * @param sensor GoSensor object.
187  * @return Operation status.
188  */
189 GoFx(kStatus) GoSensor_RemoveBuddy(GoSensor sensor);
190 
191 /**
192  * Reports whether a buddy had been assigned.
193  *
194  * @public @memberof GoSensor
195  * @version Introduced in firmware 4.0.10.27
196  * @param sensor GoSensor object.
197  * @return kTRUE if sensor has a buddy; kFALSE otherwise.
198  */
199 GoFx(kBool) GoSensor_HasBuddy(GoSensor sensor);
200 
201 /**
202  * Gets the buddy sensor's device ID.
203  *
204  * @public @memberof GoSensor
205  * @version Introduced in firmware 4.0.10.27
206  * @param sensor GoSensor object.
207  * @return Buddy device ID (or k32U_NULL if not assigned).
208  */
209 GoFx(k32u) GoSensor_BuddyId(GoSensor sensor);
210 
211 /**
212  * Gets the sensor's scan mode.
213  *
214  * @public @memberof GoSensor
215  * @version Introduced in firmware 4.0.10.27
216  * @param sensor GoSensor object.
217  * @return Scan mode.
218  */
219 GoFx(GoMode) GoSensor_ScanMode(GoSensor sensor);
220 
221 /**
222  * Enables or disables the sensor's data channel.
223  *
224  * @public @memberof GoSensor
225  * @version Introduced in firmware 4.0.10.27
226  * @param sensor GoSensor object.
227  * @param enable kTRUE to enable, or kFALSE to disable.
228  * @return Operation status.
229  */
230 GoFx(kStatus) GoSensor_EnableData(GoSensor sensor, kBool enable);
231 
232 /**
233  * Starts the sensor.
234  *
235  * @public @memberof GoSensor
236  * @version Introduced in firmware 4.0.10.27
237  * @param sensor GoSensor object.
238  * @return Operation status.
239  */
240 GoFx(kStatus) GoSensor_Start(GoSensor sensor);
241 
242 /**
243  * Checks if the sensor is ready to start, if all assigned buddies are connected.
244  *
245  * @public @memberof GoSensor
246  * @version Introduced in firmware 5.1.6.0
247  * @param sensor GoSensor object.
248  * @return Operation status.
249  */
250 GoFx(kBool) GoSensor_CanStart(GoSensor sensor);
251 
252 /**
253  * Starts the sensor at a scheduled value.
254  *
255  * @public @memberof GoSensor
256  * @version Introduced in firmware 4.1.3.106
257  * @param sensor GoSensor object.
258  * @param value Scheduled start value. uS when time triggered and ticks when encoder triggered.
259  * @return Operation status.
260  * @see GoSetup_SetTriggerSource, GoSetup_TriggerSource, GoSystem_Timestamp, GoSystem_Encoder
261  */
262 GoFx(kStatus) GoSensor_ScheduledStart(GoSensor sensor, k64s value);
263 
264 /**
265  * Stops the sensor.
266  *
267  * @public @memberof GoSensor
268  * @version Introduced in firmware 4.0.10.27
269  * @param sensor GoSensor object.
270  * @return Operation status.
271  */
272 GoFx(kStatus) GoSensor_Stop(GoSensor sensor);
273 
274 /**
275  * Perform alignment using the configured alignment type and target.
276  *
277  * NOTE: This operation will result in a sensor start for the duration of the
278  * alignment. It can be canceled via GoSensor_Stop. This function's operation
279  * status does not correspond to the actual alignment result. In order to
280  * retrieve the alignment result, you must enable the data channel before calling
281  * this function, receive an alignment data message and then check its status.
282  *
283  * @public @memberof GoSensor
284  * @version Introduced in firmware 4.0.10.27
285  * @param sensor GoSensor object.
286  * @return Operation status.
287  * @see GoSensor_EnableData, GoSystem_ReceiveData, GoSetup_AlignmentType, GoSetup_AlignmentMovingTarget, GoSetup_AlignmentStationaryTarget, GoAlignMsg_Status, GoSensor_Stop
288  * @remark Calling this function will result in writing operations to flash storage. Should the process be disrupted due to power loss or other factors, the sensor may enter Rescue mode.
289  */
290 GoFx(kStatus) GoSensor_Align(GoSensor sensor);
291 
292 
293 /**
294  * Clears the current sensor alignment.
295  *
296  * @public @memberof GoSensor
297  * @version Introduced in firmware 4.1.3.106
298  * @param sensor GoSensor object.
299  * @return Operation status.
300  * @see GoSensor_Align
301  * @remark Calling this function will result in writing operations to flash storage. Should the process be disrupted due to power loss or other factors, the sensor may enter Rescue mode.
302  */
303 GoFx(kStatus) GoSensor_ClearAlignment(GoSensor sensor);
304 
305 
306 /**
307  * Perform an exposure auto set.
308  *
309  * NOTE: This operation will result in a sensor start for the duration of the
310  * exposure AutoSet. A successful operation status does NOT modify the configuration.
311  * You must retrieve the resulting exposure value and set it for the appropriate
312  * exposure setting. This involves enabling the data connection prior to running
313  * exposure auto set and then receiving an exposure auto set message, which
314  * you can then use to query the status and access the resulting value.
315  *
316  * @public @memberof GoSensor
317  * @version Introduced in firmware 4.0.10.27
318  * @param sensor GoSensor object.
319  * @param role The role of the device to auto set.
320  * @return Operation status.
321  * @see GoRole, GoSensor_EnableData, GoSystem_ReceiveData, GoExposureCalMsg_Status, GoExposureCalMsg_Exposure
322  */
323 GoFx(kStatus) GoSensor_ExposureAutoSet(GoSensor sensor, GoRole role);
324 
325 /**
326  * Gets the alignment state of the sensor.
327  *
328  * @public @memberof GoSensor
329  * @version Introduced in firmware 4.0.10.27
330  * @param sensor GoSensor object.
331  * @return A GoAlignmentState.
332  */
333 GoFx(GoAlignmentState) GoSensor_AlignmentState(GoSensor sensor);
334 
335 
336 /**
337  * Sets the alignment reference of the sensor.
338  *
339  * @public @memberof GoSensor
340  * @version Introduced in firmware 4.0.10.27
341  * @param sensor GoSensor object.
342  * @param reference The alignment reference value to set.
343  * @return Operation status.
344  */
345 GoFx(kStatus) GoSensor_SetAlignmentReference(GoSensor sensor, GoAlignmentRef reference);
346 
347 /**
348  * Gets the alignment reference of the sensor.
349  *
350  * @public @memberof GoSensor
351  * @version Introduced in firmware 4.0.10.27
352  * @param sensor GoSensor object.
353  * @param reference A pointer that will hold the current alignment reference value.
354  * @return Operation status.
355  */
356 GoFx(kStatus) GoSensor_AlignmentReference(GoSensor sensor, GoAlignmentRef* reference);
357 
358 /**
359  * Reboots the main sensor and any connected buddy sensors.
360  *
361  * @public @memberof GoSensor
362  * @version Introduced in firmware 4.0.10.27
363  * @param sensor GoSensor object.
364  * @param wait kTRUE to wait for reboot and then reconnect.
365  * @return Operation status.
366  */
367 GoFx(kStatus) GoSensor_Reset(GoSensor sensor, kBool wait);
368 
369 /**
370  * Resets the encoder value. NOTE: This is only possible with a direct encoder
371  * connection to a sensor. Resetting the encoder value when connected to a Master
372  * device will not work.
373  *
374  * @public @memberof GoSensor
375  * @version Introduced in firmware 4.5.3.57
376  * @param sensor GoSensor object.
377  * @return Operation status.
378  */
379 GoFx(kStatus) GoSensor_ResetEncoder(GoSensor sensor);
380 
381 /**
382  * Aborts ongoing sensor communication.
383  *
384  * This method asynchronously aborts ongoing communication; the next time that any
385  * I/O operation blocks for an extended period of time, it will be terminated. This method
386  * is thread-safe.
387  *
388  * In order to resume communication, call GoSensor_Refresh or GoSensor_Connect.
389  *
390  * @public @memberof GoSensor
391  * @version Introduced in firmware 4.0.10.27
392  * @param sensor GoSensor object.
393  * @return Operation status.
394  */
395 GoFx(kStatus) GoSensor_Cancel(GoSensor sensor);
396 
397 /**
398  * Gets the current time stamp (common among all synchronized sensors).
399  *
400  * @public @memberof GoSensor
401  * @version Introduced in firmware 4.0.10.27
402  * @param sensor GoSensor object.
403  * @param time Receives the current time stamp(us).
404  * @return Operation status.
405  */
406 GoFx(kStatus) GoSensor_Timestamp(GoSensor sensor, k64u* time);
407 
408 /**
409  * Gets the current encoder count.
410  *
411  * @public @memberof GoSensor
412  * @version Introduced in firmware 4.0.10.27
413  * @param sensor GoSensor object.
414  * @param encoder Receives the encoder count (ticks).
415  * @return Operation status.
416  */
417 GoFx(kStatus) GoSensor_Encoder(GoSensor sensor, k64s* encoder);
418 
419 /**
420  * Sends a software trigger to the sensor.
421  *
422  * This method is used in conjunction with sensors that are configured to accept
423  * software triggers.
424  *
425  * @public @memberof GoSensor
426  * @version Introduced in firmware 4.0.10.27
427  * @param sensor GoSensor object.
428  * @return Operation status.
429  * @see GoSetup_TriggerSource, GoSetup_SetTriggerSource
430  */
431 GoFx(kStatus) GoSensor_Trigger(GoSensor sensor);
432 
433 /**
434  * Schedules a digital output.
435  *
436  * This method requires that the output is configured to trigger on software control.
437  *
438  * @public @memberof GoSensor
439  * @version Introduced in firmware 4.0.10.27
440  * @param sensor GoSensor object.
441  * @param index The digital output index.
442  * @param target The time or position target (us or mm), depending on GoDomain. Ignored if
443  * GoDigital_ScheduleEnabled is false or GoDigital_SignalType is pulsed.
444  * @param value The value of scheduled output (0-Low or 1-High). Ignored if output
445  * GoDigital_SignalType is pulsed.
446  * @return Operation status.
447  */
448 GoFx(kStatus) GoSensor_EmitDigital(GoSensor sensor, k16u index, k64s target, k8u value);
449 
450 /**
451  * Schedules an analog output.
452  *
453  * This method requires that the output be configured to trigger on software control.
454  * NOTE: It is not possible to schedule a continuous output. The operation will
455  * fail accordingly if attempted.
456  *
457  * @public @memberof GoSensor
458  * @version Introduced in firmware 4.0.10.27
459  * @param sensor GoSensor object.
460  * @param index The analog output index.
461  * @param target The time or position target (us or mm), depending on GoDomain. Ignored if
462  * GoAnalog_ScheduleEnabled is false.
463  * @param value The value of the scheduled output (uA).
464  * @return Operation status.
465  */
466 GoFx(kStatus) GoSensor_EmitAnalog(GoSensor sensor, k16u index, k64s target, k32s value);
467 
468 /**
469  * Gets the number of files available from the connected sensor. This includes files that may not be visible through the web interface.
470  *
471  * @public @memberof GoSensor
472  * @version Introduced in firmware 4.0.10.27
473  * @param sensor GoSensor object.
474  * @return File count.
475  */
476 GoFx(kSize) GoSensor_FileCount(GoSensor sensor);
477 
478 /**
479  * Gets the file name at the specified index.
480  *
481  * @public @memberof GoSensor
482  * @version Introduced in firmware 4.0.10.27
483  * @param sensor GoSensor object.
484  * @param index Index of the desired file name.
485  * @param name Receives the name of the file.
486  * @param capacity Capacity of the file name buffer.
487  * @return Operation status.
488  */
489 GoFx(kStatus) GoSensor_FileNameAt(GoSensor sensor, kSize index, kChar* name, kSize capacity);
490 
491 /**
492  * Uploads a file to the connected sensor. The following is a list of
493  * macros representing common files used in this operation:
494  *
495  * @li GO_SENSOR_LIVE_JOB - Represents "_live.job".
496  * @li GO_SENSOR_LIVE_REPLAY - Represents the recording file, "_live.rec".
497  *
498  * @public @memberof GoSensor
499  * @version Introduced in firmware 4.0.10.27
500  * @param sensor GoSensor object.
501  * @param sourcePath Source file system path for the file to be uploaded.
502  * @param destName Destination name for the uploaded file (maximum 63 characters).
503  * @return Operation status.
504  * @remark Calling this function will result in writing operations to flash storage. Should the process be disrupted due to power loss or other factors, the sensor may enter Rescue mode.
505  */
506 GoFx(kStatus) GoSensor_UploadFile(GoSensor sensor, const kChar* sourcePath, const kChar* destName);
507 
508 /**
509  * Downloads a file from the connected sensor. The following is a list of
510  * macros representing common files used in this operation:
511  *
512  * @li GO_SENSOR_LIVE_JOB - Represents "_live.job".
513  * @li GO_SENSOR_LIVE_REPLAY - Represents the recording file, "_live.rec".
514  *
515  * File names of saved jobs may also be specified.
516  *
517  * @public @memberof GoSensor
518  * @version Introduced in firmware 4.0.10.27
519  * @param sensor GoSensor object.
520  * @param sourceName Source name of the file to be downloaded.
521  * @param destPath Destination file system path for the file to be downloaded.
522  * @return Operation status.
523  */
524 GoFx(kStatus) GoSensor_DownloadFile(GoSensor sensor, const kChar* sourceName, const kChar* destPath);
525 
526 /**
527  * Copies a file within the connected sensor.
528  *
529  * @public @memberof GoSensor
530  * @version Introduced in firmware 4.0.10.27
531  * @param sensor GoSensor object.
532  * @param sourceName Source name for the file to be copied.
533  * @param destName Destination name for the file (maximum 63 characters).
534  * @return Operation status.
535  * @remark Calling this function can result in writing operations to flash storage if the destination is not a live file(e.g. "_live.job"). Should the process be disrupted due to power loss or other factors, the sensor may enter Rescue mode.
536  */
537 GoFx(kStatus) GoSensor_CopyFile(GoSensor sensor, const kChar* sourceName, const kChar* destName);
538 
539 /**
540  * Deletes a file within the connected sensor.
541  *
542  * @public @memberof GoSensor
543  * @version Introduced in firmware 4.0.10.27
544  * @param sensor GoSensor object.
545  * @param name Name of the file to be deleted.
546  * @return Operation status.
547  * @remark Calling this function will result in writing operations to flash storage. Should the process be disrupted due to power loss or other factors, the sensor may enter Rescue mode.
548  */
549 GoFx(kStatus) GoSensor_DeleteFile(GoSensor sensor, const kChar* name);
550 
551 /**
552  * Checks whether the specified file is present on the sensor.
553  *
554  * @public @memberof GoSensor
555  * @version Introduced in firmware 4.0.10.27
556  * @param sensor GoSensor object.
557  * @param name Name of the file to be checked.
558  * @return Operation status.
559  */
560 GoFx(kBool) GoSensor_FileExists(GoSensor sensor, const kChar* name);
561 
562 /**
563  * Gets the available storage space remaining for user files.
564  *
565  * @public @memberof GoSensor
566  * @version
567  * @param sensor GoSensor object.
568  * @return Storage space available.
569  */
570 GoFx(k64u) GoSensor_UserStorageFree(GoSensor sensor);
571 
572 /**
573  * Gets the storage space used for user files.
574  *
575  * @public @memberof GoSensor
576  * @version
577  * @param sensor GoSensor object.
578  * @return Storage space used.
579  */
580 GoFx(k64u) GoSensor_UserStorageUsed(GoSensor sensor);
581 
582 /**
583  * Sets a default job file to be loaded on boot.
584  *
585  * @public @memberof GoSensor
586  * @version Introduced in firmware 4.0.10.27
587  * @param sensor GoSensor object.
588  * @param fileName Name of the default file.
589  * @return Operation status.
590  * @remark Calling this function will result in writing operations to flash storage. Should the process be disrupted due to power loss or other factors, the sensor may enter Rescue mode.
591  */
592 GoFx(kStatus) GoSensor_SetDefaultJob(GoSensor sensor, const kChar* fileName);
593 
594 /**
595  * Gets the name of the default job file to be loaded on boot.
596  *
597  * @public @memberof GoSensor
598  * @version Introduced in firmware 4.0.10.27
599  * @param sensor GoSensor object.
600  * @param fileName Receives name of the default file.
601  * @param capacity Name buffer capacity.
602  * @return Operation status.
603  */
604 GoFx(kStatus) GoSensor_DefaultJob(GoSensor sensor, kChar* fileName, kSize capacity);
605 
606 /**
607  * Gets the name of the loaded job file and whether it has been modified since loading.
608  *
609  * @public @memberof GoSensor
610  * @version Introduced in firmware 4.0.10.27
611  * @param sensor GoSensor object.
612  * @param fileName Receives name of the loaded file.
613  * @param capacity Name buffer capacity.
614  * @param changed Receives the status of whether the file has changed.
615  * @return Operation status.
616  */
617 GoFx(kStatus) GoSensor_LoadedJob(GoSensor sensor, kChar* fileName, kSize capacity, kBool* changed);
618 
619 /**
620  * Logs into the sensor using the specified user name and password.
621  *
622  * Logging in is not required in order to programmatically control a sensor. The Gocator log-in feature is
623  * intended only to support administrative user interfaces, by allowing the username and password to be
624  * stored in the sensor.
625  *
626  * @public @memberof GoSensor
627  * @version Introduced in firmware 4.0.10.27
628  * @param sensor GoSensor object.
629  * @param user User account.
630  * @param password User password.
631  * @return Operation status.
632  */
633 GoFx(kStatus) GoSensor_LogIn(GoSensor sensor, GoUser user, const kChar* password);
634 
635 /**
636  * Changes the password associated with the specified user account.
637  *
638  * @public @memberof GoSensor
639  * @version Introduced in firmware 4.0.10.27
640  * @param sensor GoSensor object.
641  * @param user User account.
642  * @param password New password.
643  * @return Operation status.
644  * @remark Calling this function will result in writing operations to flash storage. Should the process be disrupted due to power loss or other factors, the sensor may enter Rescue mode.
645  */
646 GoFx(kStatus) GoSensor_ChangePassword(GoSensor sensor, GoUser user, const kChar* password);
647 
648 /**
649  * Upgrades sensor firmware.
650  *
651  * This function will block until the upgrade is completed.
652  *
653  * This function results in flash storage modifications. If modifications are interrupted due to
654  * power loss, the sensor may reboot into Rescue mode.
655  *
656  * The sensor does not need to be connected to perform an upgrade.
657  *
658  * @public @memberof GoSensor
659  * @version Introduced in firmware 4.0.10.27 and updated in 4.3.3.124
660  * @param sensor GoSensor object.
661  * @param sourcePath Local file system path to the upgrade file.
662  * @param onUpdate Callback function to receive progress updates, or kNULL.
663  * @param context Context handle to be passed to the upgrade callback.
664  * @return Operation status.
665  */
666 GoFx(kStatus) GoSensor_Upgrade(GoSensor sensor, const kChar* sourcePath, GoUpgradeFx onUpdate, kPointer context);
667 
668 /**
669  * Creates a backup of sensor files and downloads the backup to the specified location.
670  *
671  * @public @memberof GoSensor
672  * @version Introduced in firmware 4.0.10.27
673  * @param sensor GoSensor object.
674  * @param destPath Local file system path for the saved backup file.
675  * @return Operation status.
676  */
677 GoFx(kStatus) GoSensor_Backup(GoSensor sensor, const kChar* destPath);
678 
679 /**
680  * Restores a backup of sensor files.
681  *
682  * @public @memberof GoSensor
683  * @version Introduced in firmware 4.0.10.27
684  * @param sensor GoSensor object.
685  * @param sourcePath Local file system path of the saved backup file.
686  * @return Operation status.
687  * @remark Calling this function will result in writing operations to flash storage. Should the process be disrupted due to power loss or other factors, the sensor may enter Rescue mode.
688  */
689 GoFx(kStatus) GoSensor_Restore(GoSensor sensor, const kChar* sourcePath);
690 
691 /**
692  * Restores factory default settings.
693  *
694  * @public @memberof GoSensor
695  * @version Introduced in firmware 4.0.10.27
696  * @param sensor GoSensor object.
697  * @param restoreAddress kTRUE to restore the factory default IP address; False otherwise.
698  * @return Operation status.
699  * @remark Calling this function will result in writing operations to flash storage. Should the process be disrupted due to power loss or other factors, the sensor may enter Rescue mode.
700  */
701 GoFx(kStatus) GoSensor_RestoreDefaults(GoSensor sensor, kBool restoreAddress);
702 
703 /**
704  * Gets the GoSetup instance associated with the sensor.
705  *
706  * @public @memberof GoSensor
707  * @version Introduced in firmware 4.0.10.27
708  * @param sensor GoSensor object.
709  * @return A GoSetup object module
710  */
711 GoFx(GoSetup) GoSensor_Setup(GoSensor sensor);
712 
713 /**
714  * Gets the sensor's tools module, used for measurement configuration.
715  *
716  * @public @memberof GoSensor
717  * @version Introduced in firmware 4.0.10.27
718  * @param sensor GoSensor object.
719  * @return Measurement configuration module.
720  */
721 GoFx(GoTools) GoSensor_Tools(GoSensor sensor);
722 
723 /**
724  * Gets the output module, used for output configuration.
725  *
726  * @public @memberof GoSensor
727  * @version Introduced in firmware 4.0.10.27
728  * @param sensor GoSensor object.
729  * @return Output configuration module.
730  */
731 GoFx(GoOutput) GoSensor_Output(GoSensor sensor);
732 
733 /**
734  * Gets the transform module, used for transformation configuration.
735  *
736  * @public @memberof GoSensor
737  * @version Introduced in firmware 4.0.10.27
738  * @param sensor GoSensor object.
739  * @return Transformation configuration module.
740  */
741 GoFx(GoTransform) GoSensor_Transform(GoSensor sensor);
742 
743 /**
744  * Gets the replay module, used for replay configuration.
745  *
746  * @public @memberof GoSensor
747  * @version Introduced in firmware 4.5.3.57
748  * @param sensor GoSensor object.
749  * @return Replay configuration module.
750  */
751 GoFx(GoReplay) GoSensor_Replay(GoSensor sensor);
752 
753 /**
754  * Gets the device identifier associated with this sensor.
755  *
756  * @public @memberof GoSensor
757  * @version Introduced in firmware 4.0.10.27
758  * @param sensor GoSensor object.
759  * @return The sensor's device ID.
760  */
761 GoFx(k32u) GoSensor_Id(GoSensor sensor);
762 
763 /**
764  * Gets the model number associated with this sensor.
765  *
766  * @public @memberof GoSensor
767  * @version Introduced in firmware 4.0.10.27
768  * @param sensor GoSensor object.
769  * @param model Receives sensor model.
770  * @param capacity Capacity of model buffer.
771  * @return Operation status.
772  */
773 GoFx(kStatus) GoSensor_Model(GoSensor sensor, kChar* model, kSize capacity);
774 
775 /**
776  * Reports the current state of the sensor.
777  *
778  * @public @memberof GoSensor
779  * @version Introduced in firmware 4.0.10.27
780  * @param sensor GoSensor object.
781  * @return Sensor state.
782  */
783 GoFx(GoState) GoSensor_State(GoSensor sensor);
784 
785 /**
786  * Reports the current states of the sensor.
787  *
788  * @public @memberof GoSensor
789  * @version Introduced in firmware 4.0.10.27
790  * @param sensor GoSensor object.
791  * @param states Reference to updated states.
792  * @return Operation status.
793  */
794 GoFx(kStatus) GoSensor_States(GoSensor sensor, GoStates* states);
795 
796 /**
797  * Gets the sensor's current role within the system.
798  *
799  * @public @memberof GoSensor
800  * @version Introduced in firmware 4.0.10.27
801  * @param sensor GoSensor object.
802  * @return Sensor role.
803  */
804 GoFx(GoRole) GoSensor_Role(GoSensor sensor);
805 
806 /**
807  * Reports the user account associated with the current user.
808  *
809  * @public @memberof GoSensor
810  * @version Introduced in firmware 4.0.10.27
811  * @param sensor GoSensor object.
812  * @return User account id.
813  */
814 GoFx(GoUser) GoSensor_User(GoSensor sensor);
815 
816 /**
817  * Gets the sensor's protocol version.
818  *
819  * @public @memberof GoSensor
820  * @version Introduced in firmware 4.0.10.27
821  * @param sensor GoSensor object.
822  * @return Protocol version.
823  */
824 GoFx(kVersion) GoSensor_ProtocolVersion(GoSensor sensor);
825 
826 /**
827  * Gets the sensor's firmware version.
828  *
829  * @public @memberof GoSensor
830  * @version Introduced in firmware 4.0.10.27
831  * @param sensor GoSensor object.
832  * @return Firmware version.
833  */
834 GoFx(kVersion) GoSensor_FirmwareVersion(GoSensor sensor);
835 
836 /**
837  * Sets the recording state of the sensor.
838  *
839  * @public @memberof GoSensor
840  * @version Introduced in firmware 4.0.10.27
841  * @param sensor GoSensor object.
842  * @param enable Enables or disables recording.
843  * @return Operation status.
844  */
845 GoFx(kStatus) GoSensor_EnableRecording(GoSensor sensor, kBool enable);
846 
847 /**
848  * Gets the recording state of the sensor.
849  *
850  * @public @memberof GoSensor
851  * @version Introduced in firmware 4.0.10.27
852  * @param sensor GoSensor object.
853  * @return kTRUE if recording is enabled. kFALSE otherwise.
854  */
855 GoFx(kBool) GoSensor_RecordingEnabled(GoSensor sensor);
856 
857 /**
858  * Sets the input source of the sensor.
859  *
860  * @public @memberof GoSensor
861  * @version Introduced in firmware 4.0.10.27
862  * @param sensor GoSensor object.
863  * @param source The input source to use.
864  * @return Operation status.
865  */
866 GoFx(kStatus) GoSensor_SetInputSource(GoSensor sensor, GoInputSource source);
867 
868 /**
869  * Gets the input source currently used by the sensor.
870  *
871  * @public @memberof GoSensor
872  * @version Introduced in firmware 4.0.10.27
873  * @param sensor GoSensor object.
874  * @return A GoInputSource.
875  */
876 GoFx(GoInputSource) GoSensor_InputSource(GoSensor sensor);
877 
878 /**
879  * Simulates the current frame in the live recording buffer.
880  *
881  * @public @memberof GoSensor
882  * @version Introduced in firmware 4.0.10.27
883  * @param sensor GoSensor object.
884  * @param isBufferValid kTRUE if the source simulation buffer was valid. kFALSE otherwise.
885  * @return Operation status.
886  */
887 GoFx(kStatus) GoSensor_Simulate(GoSensor sensor, kBool* isBufferValid);
888 
889 
890 /**
891  * Advances one frame from the current replay position.
892  *
893  * @public @memberof GoSensor
894  * @version Introduced in firmware 4.0.10.27
895  * @param sensor GoSensor object.
896  * @param direction Direction with which to step.
897  * @return Operation status.
898  */
899 GoFx(kStatus) GoSensor_PlaybackStep(GoSensor sensor, GoSeekDirection direction);
900 
901 /**
902  * Sets the current frame position for a replay.
903  *
904  * @public @memberof GoSensor
905  * @version Introduced in firmware 4.0.10.27
906  * @param sensor GoSensor object.
907  * @param position The frame position to seek.
908  * @return Operation status.
909  */
910 GoFx(kStatus) GoSensor_PlaybackSeek(GoSensor sensor, kSize position);
911 
912 /**
913  * Gets the current replay frame position.
914  *
915  * @public @memberof GoSensor
916  * @version Introduced in firmware 4.0.10.27
917  * @param sensor GoSensor object.
918  * @param position The current frame position index.
919  * @param count The frame count.
920  * @return Operation status.
921  */
922 GoFx(kStatus) GoSensor_PlaybackPosition(GoSensor sensor, kSize* position, kSize* count);
923 
924 /**
925  * Clears the replay buffer.
926  *
927  * @public @memberof GoSensor
928  * @version Introduced in firmware 4.0.10.27
929  * @param sensor GoSensor object.
930  * @return Operation status.
931  */
932 GoFx(kStatus) GoSensor_ClearReplayData(GoSensor sensor);
933 
934 /**
935  * Resets the measurement statistics reported by the health channel
936  *
937  * @public @memberof GoSensor
938  * @version Introduced in firmware 4.0.10.27
939  * @param sensor GoSensor object.
940  * @return A GoAlignmentState.
941  */
942 GoFx(kStatus) GoSensor_ClearMeasurementStats(GoSensor sensor);
943 
944 /**
945  * Exports the current frame of a replay in the form of a bitmap.
946  *
947  * @public @memberof GoSensor
948  * @version Introduced in firmware 4.0.10.27
949  * @param sensor GoSensor object.
950  * @param type The type of data to export.
951  * @param source The device data source to export from.
952  * @param dstFileName The destination file name of the exported bitmap file.
953  * @return Operation status.
954  */
955 GoFx(kStatus) GoSensor_ExportBitmap(GoSensor sensor,
957  GoDataSource source,
958  const kChar* dstFileName);
959 
960 /**
961  * Exports replay data in CSV format.
962  *
963  * @public @memberof GoSensor
964  * @version Introduced in firmware 4.0.10.27
965  * @param sensor GoSensor object.
966  * @param dstFileName The destination file name of the exported CSV file.
967  * @return Operation status.
968  */
969 GoFx(kStatus) GoSensor_ExportCsv(GoSensor sensor, const kChar* dstFileName);
970 
971 /**
972  * Returns an enumerator value representing the current sensor's family.
973  *
974  * @public @memberof GoSensor
975  * @version Introduced in firmware 4.0.10.27
976  * @param sensor GoSensor object.
977  * @return A GoFamily value.
978  */
979 GoFx(GoFamily) GoSensor_Family(GoSensor sensor);
980 
981 /**
982  * Clears the log file (_live.log).
983  *
984  * @public @memberof GoSensor
985  * @version Introduced in firmware 4.0.10.27
986  * @param sensor GoSensor object.
987  * @return Operation status.
988  */
989 GoFx(kStatus) GoSensor_ClearLog(GoSensor sensor);
990 
991 /**
992  * Sets the AutoStart enabled state of the sensor.
993  *
994  * @public @memberof GoSensor
995  * @version Introduced in firmware 4.0.10.27
996  * @param sensor GoSensor object.
997  * @param enable The AutoStart enabled state to use.
998  * @return Operation status.
999  */
1000 GoFx(kStatus) GoSensor_EnableAutoStart(GoSensor sensor, kBool enable);
1001 
1002 /**
1003  * Gets the AutoStart enabled state currently used by the sensor.
1004  *
1005  * @public @memberof GoSensor
1006  * @version Introduced in firmware 4.0.10.27
1007  * @param sensor GoSensor object.
1008  * @return kTRUE if auto start is enabled and kFALSE otherwise.
1009  */
1010 GoFx(kBool) GoSensor_AutoStartEnabled(GoSensor sensor);
1011 
1012 /**
1013 * Set sensor voltage settings (only on G3210)
1014 *
1015 * @public @memberof GoSensor
1016 * @version Introduced in firmware 4.7.5.25
1017 * @param sensor GoSensor object.
1018 * @param voltage Either 48V or 24V operation
1019 * @param cableLength When in 24V operation mode the cable length (meters) must also be supplied
1020 * @return Operation status.
1021 */
1022 GoFx(kStatus) GoSensor_SetVoltage(GoSensor sensor, GoVoltageSetting voltage, k64f cableLength);
1023 
1024 /**
1025 * Get the sensor voltage settings (only on G3210)
1026 *
1027 * @public @memberof GoSensor
1028 * @version Introduced in firmware 4.7.5.25
1029 * @param sensor GoSensor object.
1030 * @param voltage Destination to store voltage (can be kNULL)
1031 * @param cableLength Destination to store cable length (can be kNULL)
1032 * @return Operation status.
1033 */
1034 GoFx(kStatus) GoSensor_GetVoltage(GoSensor sensor, GoVoltageSetting *voltage, k64f *cableLength);
1035 
1036 /**
1037 * Sets the quick edit state of the sensor.
1038 *
1039 * @public @memberof GoSensor
1040 * @version Introduced in firmware 4.7.11.5
1041 * @param sensor GoSensor object.
1042 * @param enable The Quick Edit enabled state to use.
1043 * @return Operation status.
1044 */
1045 GoFx(kStatus) GoSensor_EnableQuickEdit(GoSensor sensor, kBool enable);
1046 
1047 /**
1048 * Gets the quick edit state of the sensor
1049 *
1050 * @public @memberof GoSensor
1051 * @version Introduced in firmware 4.7.11.5
1052 * @param sensor GoSensor object.
1053 * @return kTRUE if Quick Edit is enabled, kFALSE otherwise.
1054 */
1055 GoFx(kBool) GoSensor_QuickEditEnabled(GoSensor sensor);
1056 
1057 /**
1058  * Gets the count of remote sensor information held by the sensor.
1059  *
1060  * @public @memberof GoSensor
1061  * @version Introduced in firmware 4.0.10.27
1062  * @param sensor GoSensor object.
1063  * @return The remote sensor information count.
1064  */
1065 GoFx(kSize) GoSensor_RemoteInfoCount(GoSensor sensor);
1066 
1067 /**
1068  * Gets the remote sensor information at the given index.
1069  *
1070  * @public @memberof GoSensor
1071  * @version Introduced in firmware 4.0.10.27
1072  * @param sensor GoSensor object.
1073  * @param index The index of the remote sensor information to retrieve.
1074  * @return A handle to the selected remote sensor information or kNULL if an invalid index is provided.
1075  */
1076 GoFx(GoSensorInfo) GoSensor_RemoteInfoAt(GoSensor sensor, kSize index);
1077 
1078 /**
1079  * Return the number of files contained in the specified path with an optional extension filter applied.
1080  *
1081  * @public @memberof GoSensor
1082  * @version Introduced in firmware 4.1.3.106
1083  * @param sensor GoSensor object.
1084  * @param extensionFilter An optional extension filter to apply. Send "" to not apply a filter.
1085  * @param path The file system path to retrieve the file count for.
1086  * @param isRecursive kTRUE to include files in sub-folders of the path and kFALSE to only count files in the immediate path.
1087  * @return The number of files contained in the specified path with an optional extension filter applied.
1088  */
1089 GoFx(kSize) GoSensor_DirectoryFileCount(GoSensor sensor, const kChar* extensionFilter, const kChar* path, kBool isRecursive);
1090 
1091 /**
1092  * Retrieves the file name at the specified index for a given path and optional extension filter.
1093  *
1094  * @public @memberof GoSensor
1095  * @version Introduced in firmware 4.1.3.106
1096  * @param sensor GoSensor object.
1097  * @param extensionFilter An optional extension filter to apply. Send "" to not apply a filter.
1098  * @param path The file system path to retrieve the file count for.
1099  * @param isRecursive kTRUE to include files in sub-folders of the path and kFALSE to only count files in the immediate path.
1100  * @param index The index of the file name to retrieve.
1101  * @param fileName The pointer to a character array of which to store the retrieve file name.
1102  * @param capacity The maximum capacity of the character array.
1103  * @return Operation status.
1104  */
1105 GoFx(kStatus) GoSensor_DirectoryFileNameAt(GoSensor sensor, const kChar* extensionFilter, const kChar* path, kBool isRecursive, kSize index, kChar* fileName, kSize capacity);
1106 
1107 /**
1108  * Defines the signature for a custom data message handler.
1109  *
1110  * @public @memberof GoSensor
1111  * @version Introduced in firmware 4.1.3.106
1112  * @param context A pointer to an application context to use with the provided data set.
1113  * @param sensor GoSensor object.
1114  * @param dataSet The data set.
1115  * @return Operation status.
1116  * @see GoSensor_SetDataHandler
1117  */
1118 typedef kStatus (kCall* GoSensorDataSetFx)(kPointer context, GoSensor sensor, GoDataSet dataSet);
1119 
1120 /**
1121  * Sets the data callback function to be used upon receipt of data.
1122  *
1123  * @public @memberof GoSensor
1124  * @version Introduced in firmware 4.1.3.106
1125  * @param sensor GoSensor object.
1126  * @param function The function pointer to use when data has been received from the sensor. Send kNULL to revert back to the GoSystem data set storage behavior.
1127  * @param context The context to use with the function pointer.
1128  * @return Operation status.
1129  * @see GoSensorDataSetFx
1130  */
1131 GoFx(kStatus) GoSensor_SetDataHandler(GoSensor sensor, GoSensorDataSetFx function, kPointer context);
1132 
1133 
1134 /**
1135  * Creates a part matching model based on the current part data.
1136  *
1137  * @public @memberof GoSensor
1138  * @version Introduced in firmware 4.2.4.7
1139  * @param sensor GoSensor object.
1140  * @param name The intended name of the part match model.
1141  * @return Operation status.
1142  */
1143 GoFx(kStatus) GoSensor_PartMatchCreateModel(GoSensor sensor, const kChar* name);
1144 
1145 /**
1146  * Detect the edges of the specified part model.
1147  *
1148  * @public @memberof GoSensor
1149  * @version Introduced in firmware 4.2.4.7
1150  * @param sensor GoSensor object.
1151  * @param name The name of the part match model to detect edges on.
1152  * @param sensitivity The sensitivity to use for model edge detection.
1153  * @return Operation status.
1154  */
1155 GoFx(kStatus) GoSensor_PartMatchDetectModelEdges(GoSensor sensor, const kChar* name, k16u sensitivity);
1156 
1157 /**
1158  * Returns a handle to a part model based on a given name.
1159  *
1160  * @public @memberof GoSensor
1161  * @version Introduced in firmware 4.2.4.7
1162  * @param sensor GoSensor object.
1163  * @param name The name of the part match model to retrieve.
1164  * @return A GoPartModel handle.
1165  */
1166 GoFx(GoPartModel) GoSensor_PartMatchModel(GoSensor sensor, const kChar* name);
1167 
1168 /**
1169  * Returns the number of part match models present in the currently loaded job.
1170  *
1171  * @public @memberof GoSensor
1172  * @version Introduced in firmware 4.2.4.7
1173  * @param sensor GoSensor object.
1174  * @return The count of part match models in the currently loaded job.
1175  */
1176 GoFx(kSize) GoSensor_PartMatchModelCount(GoSensor sensor);
1177 
1178 /**
1179  * Returns a handle to a part model based on a given index.
1180  *
1181  * @public @memberof GoSensor
1182  * @version Introduced in firmware 4.2.4.7
1183  * @param sensor GoSensor object.
1184  * @param index The index of the part model to retrieve.
1185  * @return A GoPartModel handle.
1186  */
1187 GoFx(GoPartModel) GoSensor_PartMatchModelAt(GoSensor sensor, kSize index);
1188 
1189 /**
1190  * Sets the runtime variables from the provided starting index to the specified length
1191  * with the values contained in the provided array.
1192  *
1193  * @public @memberof GoSensor
1194  * @version Introduced in firmware 4.5.3.57
1195  * @param sensor GoSensor object.
1196  * @param startIndex The starting index of the runtime variable values to set.
1197  * @param length The number of runtime variables to set/the length of the array parameter.
1198  * @param values A reference to an array which contains the intended runtime variable values.
1199  * @return Operation status.
1200  */
1201 GoFx(kStatus) GoSensor_SetRuntimeVariables(GoSensor sensor, kSize startIndex, kSize length, k32s* values);
1202 
1203 /**
1204  * Returns the number of runtime variables available on the device.
1205  *
1206  * @public @memberof GoSensor
1207  * @version Introduced in firmware 4.5.3.57
1208  * @param sensor GoSensor object.
1209  * @return The runtime variable count of the device.
1210  */
1211 GoFx(kSize) GoSensor_GetRuntimeVariableCount(GoSensor sensor);
1212 
1213 /**
1214  * Gets the values associated with a given runtime variable starting index and length.
1215  *
1216  * @public @memberof GoSensor
1217  * @version Introduced in firmware 4.5.3.57
1218  * @param sensor GoSensor object.
1219  * @param startIndex The starting index of the runtime variable values to retrieve.
1220  * @param length The number of runtime variables to retrieve.
1221  * @param values A reference to an array which will hold the retrieved runtime variable values.
1222  * @return Operation status.
1223  */
1224 GoFx(kStatus) GoSensor_GetRuntimeVariables(GoSensor sensor, kSize startIndex, kSize length, k32s* values);
1225 
1226 /**
1227  * Gets the value associated with a given runtime variable index.
1228  *
1229  * @public @memberof GoSensor
1230  * @version Introduced in firmware 4.5.3.57
1231  * @param sensor GoSensor object.
1232  * @param index The index of the runtime variable value to retrieve.
1233  * @param value A reference to be updated with the runtime variable value.
1234  * @return Operation status.
1235  */
1236 GoFx(kStatus) GoSensor_GetRuntimeVariableAt(GoSensor sensor, kSize index, k32s* value);
1237 
1238 /**
1239  * Starts recording to a stream.
1240  *
1241  * NOTE: Before calling this function, the sensor should already be running and
1242  * recording. GoSensor_StopRecordingStream() should be called before executing
1243  * any other sensor commands, with the exception of GoSensor_IsRecordingStreaming().
1244  *
1245  * @public @memberof GoSensor
1246  * @version Introduced in firmware 4.6.4.66
1247  * @param sensor GoSensor object.
1248  * @param destFile A local file path to store the .rec data.
1249  * @return Operation status.
1250  */
1251 GoFx(kStatus) GoSensor_StartRecordingStream(GoSensor sensor, kChar* destFile);
1252 
1253 /**
1254  * Stops recording to a stream.
1255  *
1256  * @public @memberof GoSensor
1257  * @version Introduced in firmware 4.6.4.66
1258  * @param sensor GoSensor object.
1259  * @return Operation status.
1260  */
1261 GoFx(kStatus) GoSensor_StopRecordingStream(GoSensor sensor);
1262 
1263 /**
1264  * Reports whether or not recording is streaming.
1265  *
1266  * @public @memberof GoSensor
1267  * @version Introduced in firmware 4.6.4.66
1268  * @param sensor GoSensor object.
1269  * @return kTRUE if recording is streaming, kFALSE otherwise.
1270  */
1271 GoFx(kBool) GoSensor_IsRecordingStreaming(GoSensor sensor);
1272 
1273 /**
1274 * Gets the buddy at a given index.
1275 *
1276 * @public @memberof GoSensorInfo
1277 * @version Introduced in firmware 4.6.4.66
1278 * @param info GoSensorInfo object.
1279 * @param index index of buddy to retrieve.
1280 * @return Device state.
1281 */
1282 GoFx(GoSensorInfo) GoSensor_BuddiesAt(GoSensor info, k32u index);
1283 
1284 /**
1285 * Gets the number of buddies in the sytem.
1286 *
1287 * @public @memberof GoSensor
1288 * @version Introduced in firmware 4.6.4.66
1289 * @param info GoSensor object.
1290 * @return Device state.
1291 */
1292 GoFx(kSize) GoSensor_BuddiesCount(GoSensor info);
1293 
1294 /**
1295 * returns true if the system has any buddies.
1296 *
1297 * @public @memberof GoSensor
1298 * @version Introduced in firmware 4.6.4.66
1299 * @param info GoSensor object.
1300 * @return Device state.
1301 */
1302 GoFx(kBool) GoSensor_HasBuddies(GoSensor info);
1303 
1304 /**
1305 * returns the GeoCal object for querying or Null if it does not exist.
1306 *
1307 * @public @memberof GoSensor
1308 * @version Introduced in firmware 4.7.0.130
1309 * @param info GoSensor object.
1310 * @param geoCal Output: A reference to be updated with the GoGeoCal object
1311 * @return Status of operation
1312 */
1313 GoFx(kStatus) GoSensor_GeoCal(GoSensor info, GoGeoCal *geoCal);
1314 
1315 /**
1316  ** Sets the Data Port.
1317  *
1318  * @public @memberof GoSensor
1319  * @version Introduced in firmware 4.8.2.76
1320  * @param sensor GoSensor object.
1321  * @param port Port number to be used
1322  * @return Status of operation
1323  */
1324 GoFx(kStatus) GoSensor_SetDataPort(GoSensor sensor, k32u port);
1325 
1326 /**
1327  * returns the Data Port.
1328  *
1329  * @public @memberof GoSensor
1330  * @version Introduced in firmware 4.8.2.76
1331  * @param sensor GoSensor object.
1332  * @return Port Number
1333  */
1334 GoFx(k32u) GoSensor_DataPort(GoSensor sensor);
1335 
1336 /**
1337  * Sets the Health Port.
1338  *
1339  * @public @memberof GoSensor
1340  * @version Introduced in firmware 4.8.2.76
1341  * @param sensor GoSensor object.
1342  * @param port Port number to be used
1343  * @return Status of operation
1344  */
1345 GoFx(kStatus) GoSensor_SetHealthPort(GoSensor sensor, k32u port);
1346 
1347 /**
1348  * returns the Health Port.
1349  *
1350  * @public @memberof GoSensor
1351  * @version Introduced in firmware 4.8.2.76
1352  * @param sensor GoSensor object.
1353  * @return Port Number
1354  */
1355 GoFx(k32u) GoSensor_HealthPort(GoSensor sensor);
1356 
1357 /**
1358  ** Sets the Control Port.
1359  *
1360  * @public @memberof GoSensor
1361  * @version Introduced in firmware 4.8.2.76
1362  * @param sensor GoSensor object.
1363  * @param port Port number to be used
1364  * @return Status of operation
1365  */
1366 GoFx(kStatus) GoSensor_SetControlPort(GoSensor sensor, k32u port);
1367 
1368 /**
1369  * returns the Control Port.
1370  *
1371  * @public @memberof GoSensor
1372  * @version Introduced in firmware 4.8.2.76
1373  * @param sensor GoSensor object.
1374  * @return Port Number
1375  */
1376 GoFx(k32u) GoSensor_ControlPort(GoSensor sensor);
1377 
1378 /**
1379  * Sets the Upgrade Port.
1380  *
1381  * @public @memberof GoSensor
1382  * @version Introduced in firmware 4.8.2.76
1383  * @param sensor GoSensor object.
1384  * @param port Port number to be used
1385  * @return Status of operation
1386  */
1387 GoFx(kStatus) GoSensor_SetUpgradePort(GoSensor sensor, k32u port);
1388 
1389 /**
1390  * returns the Upgrade Port.
1391  *
1392  * @public @memberof GoSensor
1393  * @version Introduced in firmware 4.8.2.76
1394  * @param sensor GoSensor object.
1395  * @return Port Number
1396  */
1397 GoFx(k32u) GoSensor_UpgradePort(GoSensor sensor);
1398 
1399 /**
1400 * Waits for all buddies to be connected within a specific timeout.
1401 *
1402 * @public @memberof GoSensor
1403  * @version Introduced in firmware 5.1.6.0
1404 * @param sensor GoSensor object.
1405 * @param timeout a timeout in milliseconds to wait for all required buddies to get connected
1406 * @return Operational status: kOK if all required buddies are connected within specified timeout; otherwise kERROR_TIMEOUT
1407 */
1408 GoFx(kStatus) GoSensor_WaitForBuddies(GoSensor sensor, k64u timeout);
1409 
1410 /**
1411 * Connects and logs into the sensor using the specified user name and password.
1412 * Once security protection is enabled logging in is required in order to programmatically control a sensor.
1413 * This must be used to connect to the sensor instead of anonymous connect method that fails in case security is enabled.
1414 *
1415 * @public @memberof GoSensor
1416  * @version Introduced in firmware 5.1.6.0
1417 * @param sensor GoSensor object.
1418 * @param user User account
1419 * @param password User password
1420 * @return Operational status: kOK if funcions could complete with given login information;
1421 * otherwise GS_ERROR_AUTHENTICATION indicating unauthorized access
1422 */
1423 GoFx(kStatus) GoSensor_ConnectAndLogin(GoSensor sensor, GoUser user, const kChar* password);
1424 
1425 /**
1426 * Sets sensor's security level. This will enabled/disable security protection.
1427 * Only authorized users can change security level that can deny access to specific objects/files to anonymous users
1428 *
1429 * @public @memberof GoSensor
1430  * @version Introduced in firmware 5.1.6.0
1431 * @param sensor GoSensor object.
1432 * @param security new security level
1433 * @return Operational status: kOK if funcions could complete with given login information;
1434 * otherwise GS_ERROR_AUTHENTICATION indicating unauthorized access
1435 */
1436 GoFx(kStatus) GoSensor_SetSecurityLevel(GoSensor sensor, GoSecurityLevel security);
1437 
1438 /**
1439  * Sets a sensor flag value.
1440  *
1441  * @public @memberof GoSensor
1442  * @version Introduced in firmware 5.1.6.0
1443  * @param sensor GoControl object.
1444  * @param name Name of the flag.
1445  * @param value Value of the flag (in text).
1446  * @return Operation status.
1447  */
1448 GoFx(kStatus) GoSensor_SetFlag(GoSensor sensor, const kChar* name, const kChar* value);
1449 
1450 /**
1451  * Gets a sensor flag value.
1452  *
1453  * @public @memberof GoSensor
1454  * @version Introduced in firmware 5.1.6.0
1455  * @param sensor GoControl object.
1456  * @param name Name of the flag.
1457  * @param value String object to receive the value (in text).
1458  * @return Operation status.
1459  */
1460 GoFx(kStatus) GoSensor_GetFlag(GoSensor sensor, const kChar* name, kString value);
1461 
1462 kEndHeader()
1463 #include <GoSdk/GoSensor.x.h>
1464 
1465 #endif
kVersion GoSensor_FirmwareVersion(GoSensor sensor)
Gets the sensor's firmware version.
kBool GoSensor_FileExists(GoSensor sensor, const kChar *name)
Checks whether the specified file is present on the sensor.
kStatus GoSensor_RestoreDefaults(GoSensor sensor, kBool restoreAddress)
Restores factory default settings.
GoReplay GoSensor_Replay(GoSensor sensor)
Gets the replay module, used for replay configuration.
kStatus GoSensor_PlaybackPosition(GoSensor sensor, kSize *position, kSize *count)
Gets the current replay frame position.
Sensor state, login, alignment information, recording state, playback source, uptime, playback information, and auto-start setting state.
Definition: GoSdkDef.h:717
kStatus GoSensor_StopRecordingStream(GoSensor sensor)
Stops recording to a stream.
Represents a data input source.
Represents read-only sensor information.
kStatus GoSensor_ExportBitmap(GoSensor sensor, GoReplayExportSourceType type, GoDataSource source, const kChar *dstFileName)
Exports the current frame of a replay in the form of a bitmap.
kStatus GoSensor_SetAlignmentReference(GoSensor sensor, GoAlignmentRef reference)
Sets the alignment reference of the sensor.
kStatus GoSensor_ResetEncoder(GoSensor sensor)
Resets the encoder value.
kStatus GoSensor_SetUpgradePort(GoSensor sensor, k32u port)
Sets the Upgrade Port.
Represents a playback seek direction.
Represents the replay export source type.
k64u GoSensor_UserStorageUsed(GoSensor sensor)
Gets the storage space used for user files.
kStatus(kCall * GoSensorDataSetFx)(kPointer context, GoSensor sensor, GoDataSet dataSet)
Defines the signature for a custom data message handler.
Definition: GoSensor.h:1118
kStatus GoSensor_EnableAutoStart(GoSensor sensor, kBool enable)
Sets the AutoStart enabled state of the sensor.
kStatus GoSensor_ClearReplayData(GoSensor sensor)
Clears the replay buffer.
kStatus GoSensor_WaitForBuddies(GoSensor sensor, k64u timeout)
Waits for all buddies to be connected within a specific timeout.
kStatus GoSensor_SetControlPort(GoSensor sensor, k32u port)
Sets the Control Port.
kStatus GoSensor_SetRuntimeVariables(GoSensor sensor, kSize startIndex, kSize length, k32s *values)
Sets the runtime variables from the provided starting index to the specified length with the values c...
kStatus GoSensor_Simulate(GoSensor sensor, kBool *isBufferValid)
Simulates the current frame in the live recording buffer.
kStatus GoSensor_ClearLog(GoSensor sensor)
Clears the log file (_live.log).
Declares the GoGeoCal class.
kStatus GoSensor_Backup(GoSensor sensor, const kChar *destPath)
Creates a backup of sensor files and downloads the backup to the specified location.
kSize GoSensor_FileCount(GoSensor sensor)
Gets the number of files available from the connected sensor.
kBool GoSensor_HasBuddies(GoSensor info)
returns true if the system has any buddies.
kStatus GoSensor_Trigger(GoSensor sensor)
Sends a software trigger to the sensor.
Represents the supported Gocator hardware families.
kStatus GoSensor_SetVoltage(GoSensor sensor, GoVoltageSetting voltage, k64f cableLength)
Set sensor voltage settings (only on G3210)
Represents a user role.
kStatus GoSensor_ConnectAndLogin(GoSensor sensor, GoUser user, const kChar *password)
Connects and logs into the sensor using the specified user name and password.
kStatus GoSensor_GetFlag(GoSensor sensor, const kChar *name, kString value)
Gets a sensor flag value.
GoAlignmentState GoSensor_AlignmentState(GoSensor sensor)
Gets the alignment state of the sensor.
Declares the GoOutput class.
kStatus GoSensor_Refresh(GoSensor sensor)
Refreshes sensor state.
kStatus GoSensor_PartMatchCreateModel(GoSensor sensor, const kChar *name)
Creates a part matching model based on the current part data.
kStatus GoSensor_ClearAlignment(GoSensor sensor)
Clears the current sensor alignment.
kStatus GoSensor_Restore(GoSensor sensor, const kChar *sourcePath)
Restores a backup of sensor files.
Represents a data source.
kStatus GoSensor_PlaybackSeek(GoSensor sensor, kSize position)
Sets the current frame position for a replay.
Represents a replay configuration.
GoPartModel GoSensor_PartMatchModelAt(GoSensor sensor, kSize index)
Returns a handle to a part model based on a given index.
kStatus GoSensor_SetFlag(GoSensor sensor, const kChar *name, const kChar *value)
Sets a sensor flag value.
Represents either 48V or 24V (with cable length) operation. Only relevant on G3210.
Declares the GoDataSet class.
kStatus GoSensor_PlaybackStep(GoSensor sensor, GoSeekDirection direction)
Advances one frame from the current replay position.
Declares the GoDiscoveryExtInfo class and related types.
k32u GoSensor_ControlPort(GoSensor sensor)
returns the Control Port.
Declares the GoSensorInfo class.
kStatus GoSensor_UploadFile(GoSensor sensor, const kChar *sourcePath, const kChar *destName)
Uploads a file to the connected sensor.
Represents an alignment state.
kStatus GoSensor_Address(GoSensor sensor, GoAddressInfo *info)
Retrieves the sensor's network address settings.
kStatus GoSensor_LoadedJob(GoSensor sensor, kChar *fileName, kSize capacity, kBool *changed)
Gets the name of the loaded job file and whether it has been modified since loading.
kStatus GoSensor_FileNameAt(GoSensor sensor, kSize index, kChar *name, kSize capacity)
Gets the file name at the specified index.
kStatus GoSensor_DownloadFile(GoSensor sensor, const kChar *sourceName, const kChar *destPath)
Downloads a file from the connected sensor.
Represents output configuration.
kStatus GoSensor_DefaultJob(GoSensor sensor, kChar *fileName, kSize capacity)
Gets the name of the default job file to be loaded on boot.
kStatus GoSensor_SetDataHandler(GoSensor sensor, GoSensorDataSetFx function, kPointer context)
Sets the data callback function to be used upon receipt of data.
kStatus GoSensor_AddBuddyBlocking(GoSensor sensor, GoSensor buddy)
Synchronously assigns a buddy sensor.
Essential SDK declarations.
kStatus GoSensor_DirectoryFileNameAt(GoSensor sensor, const kChar *extensionFilter, const kChar *path, kBool isRecursive, kSize index, kChar *fileName, kSize capacity)
Retrieves the file name at the specified index for a given path and optional extension filter...
kBool GoSensor_IsCompatible(GoSensor sensor)
Reports whether the connected sensor's protocol version is compatible with the SDK's protocol version...
GoFamily GoSensor_Family(GoSensor sensor)
Returns an enumerator value representing the current sensor's family.
kStatus GoSensor_GetVoltage(GoSensor sensor, GoVoltageSetting *voltage, k64f *cableLength)
Get the sensor voltage settings (only on G3210)
k32u GoSensor_BuddyId(GoSensor sensor)
Gets the buddy sensor's device ID.
kStatus GoSensor_EnableRecording(GoSensor sensor, kBool enable)
Sets the recording state of the sensor.
GoInputSource GoSensor_InputSource(GoSensor sensor)
Gets the input source currently used by the sensor.
GoPartModel GoSensor_PartMatchModel(GoSensor sensor, const kChar *name)
Returns a handle to a part model based on a given name.
kStatus GoSensor_LogIn(GoSensor sensor, GoUser user, const kChar *password)
Logs into the sensor using the specified user name and password.
GoState GoSensor_State(GoSensor sensor)
Reports the current state of the sensor.
Declares the GoTransform class.
kStatus GoSensor_PartMatchDetectModelEdges(GoSensor sensor, const kChar *name, k16u sensitivity)
Detect the edges of the specified part model.
kBool GoSensor_IsRecordingStreaming(GoSensor sensor)
Reports whether or not recording is streaming.
kStatus GoSensor_ExportCsv(GoSensor sensor, const kChar *dstFileName)
Exports replay data in CSV format.
kStatus GoSensor_GetRuntimeVariableAt(GoSensor sensor, kSize index, k32s *value)
Gets the value associated with a given runtime variable index.
k32u GoSensor_UpgradePort(GoSensor sensor)
returns the Upgrade Port.
kStatus GoSensor_Flush(GoSensor sensor)
Initiates a sensor configuration, model file, and transformation synchronization if modifications are...
kStatus GoSensor_DeleteFile(GoSensor sensor, const kChar *name)
Deletes a file within the connected sensor.
Represents a collection of data channel or health channel messages.
k32u GoSensor_DataPort(GoSensor sensor)
returns the Data Port.
kStatus GoSensor_Disconnect(GoSensor sensor)
Disconnects from the sensor.
GoTransform GoSensor_Transform(GoSensor sensor)
Gets the transform module, used for transformation configuration.
Represents a collection of tools.
kStatus GoSensor_ExposureAutoSet(GoSensor sensor, GoRole role)
Perform an exposure auto set.
GoSetup GoSensor_Setup(GoSensor sensor)
Gets the GoSetup instance associated with the sensor.
GoTools GoSensor_Tools(GoSensor sensor)
Gets the sensor's tools module, used for measurement configuration.
k32u GoSensor_HealthPort(GoSensor sensor)
returns the Health Port.
kStatus GoSensor_Cancel(GoSensor sensor)
Aborts ongoing sensor communication.
kStatus GoSensor_RemoveBuddy(GoSensor sensor)
Removes the current buddy sensor.
GoMode GoSensor_ScanMode(GoSensor sensor)
Gets the sensor's scan mode.
Represents a user id.
kStatus GoSensor_EmitAnalog(GoSensor sensor, k16u index, k64s target, k32s value)
Schedules an analog output.
kStatus GoSensor_AlignmentReference(GoSensor sensor, GoAlignmentRef *reference)
Gets the alignment reference of the sensor.
kStatus GoSensor_Model(GoSensor sensor, kChar *model, kSize capacity)
Gets the model number associated with this sensor.
kStatus GoSensor_ClearMeasurementStats(GoSensor sensor)
Resets the measurement statistics reported by the health channel.
kStatus GoSensor_EnableQuickEdit(GoSensor sensor, kBool enable)
Sets the quick edit state of the sensor.
Represents an alignment reference.
kStatus GoSensor_Start(GoSensor sensor)
Starts the sensor.
kStatus GoSensor_Align(GoSensor sensor)
Perform alignment using the configured alignment type and target.
GoUser GoSensor_User(GoSensor sensor)
Reports the user account associated with the current user.
kStatus GoSensor_Encoder(GoSensor sensor, k64s *encoder)
Gets the current encoder count.
k32u GoSensor_Id(GoSensor sensor)
Gets the device identifier associated with this sensor.
kStatus GoSensor_SetHealthPort(GoSensor sensor, k32u port)
Sets the Health Port.
kBool GoSensor_QuickEditEnabled(GoSensor sensor)
Gets the quick edit state of the sensor.
k64u GoSensor_UserStorageFree(GoSensor sensor)
Gets the available storage space remaining for user files.
kStatus GoSensor_Connect(GoSensor sensor)
Creates a connection to the sensor.
GoOutput GoSensor_Output(GoSensor sensor)
Gets the output module, used for output configuration.
Declares the GoTool classes.
kStatus GoSensor_GeoCal(GoSensor info, GoGeoCal *geoCal)
returns the GeoCal object for querying or Null if it does not exist.
kStatus GoSensor_CopyFile(GoSensor sensor, const kChar *sourceName, const kChar *destName)
Copies a file within the connected sensor.
kSize GoSensor_BuddiesCount(GoSensor info)
Gets the number of buddies in the sytem.
kStatus GoSensor_SetSecurityLevel(GoSensor sensor, GoSecurityLevel security)
Sets sensor's security level.
kBool GoSensor_HasBuddy(GoSensor sensor)
Reports whether a buddy had been assigned.
Declares the GoSetup class.
kBool GoSensor_AutoStartEnabled(GoSensor sensor)
Gets the AutoStart enabled state currently used by the sensor.
Represents a scan mode.
kStatus GoSensor_Stop(GoSensor sensor)
Stops the sensor.
GoSensorInfo GoSensor_BuddiesAt(GoSensor info, k32u index)
Gets the buddy at a given index.
kStatus GoSensor_SetDefaultJob(GoSensor sensor, const kChar *fileName)
Sets a default job file to be loaded on boot.
kSize GoSensor_RemoteInfoCount(GoSensor sensor)
Gets the count of remote sensor information held by the sensor.
Represents a sensor transformation.
kStatus GoSensor_EnableData(GoSensor sensor, kBool enable)
Enables or disables the sensor's data channel.
kStatus GoSensor_Upgrade(GoSensor sensor, const kChar *sourcePath, GoUpgradeFx onUpdate, kPointer context)
Upgrades sensor firmware.
kBool GoSensor_IsResponsive(GoSensor sensor)
Reports whether the sensor is currently responsive.
kSize GoSensor_DirectoryFileCount(GoSensor sensor, const kChar *extensionFilter, const kChar *path, kBool isRecursive)
Return the number of files contained in the specified path with an optional extension filter applied...
kStatus GoSensor_SetAddress(GoSensor sensor, const GoAddressInfo *info, kBool wait)
Configures a sensor's network address settings.
kStatus GoSensor_StartRecordingStream(GoSensor sensor, kChar *destFile)
Starts recording to a stream.
kStatus GoSensor_GetRuntimeVariables(GoSensor sensor, kSize startIndex, kSize length, k32s *values)
Gets the values associated with a given runtime variable starting index and length.
kVersion GoSensor_ProtocolVersion(GoSensor sensor)
Gets the sensor's protocol version.
kStatus GoSensor_Timestamp(GoSensor sensor, k64u *time)
Gets the current time stamp (common among all synchronized sensors).
kStatus GoSensor_States(GoSensor sensor, GoStates *states)
Reports the current states of the sensor.
kBool GoSensor_RecordingEnabled(GoSensor sensor)
Gets the recording state of the sensor.
kSize GoSensor_GetRuntimeVariableCount(GoSensor sensor)
Returns the number of runtime variables available on the device.
GoSensorInfo GoSensor_RemoteInfoAt(GoSensor sensor, kSize index)
Gets the remote sensor information at the given index.
kStatus GoSensor_AddBuddy(GoSensor sensor, GoSensor buddy)
Assigns a buddy sensor.
Contains the GeoCal data for a sensor. Do not read the GeoCal file directly, use this class to parse ...
kStatus GoSensor_EmitDigital(GoSensor sensor, k16u index, k64s target, k8u value)
Schedules a digital output.
Declares the GoReplay class.
kStatus GoSensor_SetInputSource(GoSensor sensor, GoInputSource source)
Sets the input source of the sensor.
Represents a device configuration.
Represents a Gocator sensor.
kBool GoSensor_CanStart(GoSensor sensor)
Checks if the sensor is ready to start, if all assigned buddies are connected.
kStatus GoSensor_Reset(GoSensor sensor, kBool wait)
Reboots the main sensor and any connected buddy sensors.
kStatus GoSensor_ScheduledStart(GoSensor sensor, k64s value)
Starts the sensor at a scheduled value.
kStatus GoSensor_ChangePassword(GoSensor sensor, GoUser user, const kChar *password)
Changes the password associated with the specified user account.
kStatus GoSensor_SetDataPort(GoSensor sensor, k32u port)
Sets the Data Port.
GoRole GoSensor_Role(GoSensor sensor)
Gets the sensor's current role within the system.
Sensor network address settings.
Definition: GoSdkDef.h:743
Represents the current state of a sensor object.
kSize GoSensor_PartMatchModelCount(GoSensor sensor)
Returns the number of part match models present in the currently loaded job.
kBool GoSensor_IsConnected(GoSensor sensor)
Reports whether the sensor is currently connected.