Files
2024-05-18 23:53:26 +08:00

1601 lines
61 KiB
C

/**
* @file GoSensor.h
* @brief Declares the GoSensor class.
*
* @internal
* Copyright (C) 2016-2021 by LMI Technologies Inc.
* Licensed under the MIT License.
* Redistributed files must retain the above copyright notice.
*/
#ifndef GO_SENSOR_H
#define GO_SENSOR_H
#include <GoSdk/GoSdkDef.h>
#include <GoSdk/GoSetup.h>
#include <GoSdk/GoPartModel.h>
#include <GoSdk/GoReplay.h>
#include <GoSdk/GoTransform.h>
#include <GoSdk/GoSensorInfo.h>
#include <GoSdk/GoGeoCal.h>
#include <GoSdk/Messages/GoDataSet.h>
#include <GoSdk/Messages/GoDiscoveryExtInfo.h>
#include <GoSdk/Outputs/GoOutput.h>
#include <GoSdk/Tools/GoTools.h>
#define GO_SENSOR_LIVE_JOB_NAME "_live.job" //<<< Represents the active live job on the sensor
#define GO_SENSOR_LIVE_LOG_NAME "_live.log" //<<< Represents the log file on the sensor
#define GO_SENSOR_LIVE_REPLAY "_live.rec" //<<< Represents the current recording on the sensor
#define GO_SENSOR_LIVE_REPLAY_STREAM "_livestream.rec" //<<< Represents the current recording stream on the sensor
/**
* @class GoSensor
* @extends kObject
* @ingroup GoSdk
* @brief Represents a Gocator sensor.
*/
typedef kObject GoSensor;
/**
* Initiates a sensor configuration, model file, and transformation synchronization
* if modifications are present.
*
* @public @memberof GoSetup
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_Flush(GoSensor sensor);
/**
* Configures a sensor's network address settings.
*
* WARNING! This operation writes to flash storage.
* Review the user manual for implications.
*
* This function uses UDP broadcasts for sensor configuration; the sensor does not need to
* be connected, and can be on a different subnet than the client.
*
* The sensor will automatically reboot if the address is successfully changed.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param info New address settings.
* @param wait Should this function block until the sensor finishes rebooting?
* @return Operation status.
* @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.
*/
GoFx(kStatus) GoSensor_SetAddress(GoSensor sensor, const GoAddressInfo* info, kBool wait);
/**
* Retrieves the sensor's network address settings.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param info Receives current address configuration.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_Address(GoSensor sensor, GoAddressInfo* info);
/**
* Creates a connection to the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_Connect(GoSensor sensor);
/**
* Disconnects from the sensor. Do not call this function when state is locked
* with GoSensor_LockState().
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_Disconnect(GoSensor sensor);
/**
* Reports whether the sensor is currently connected. If sensors are temporarily unreachable, they do not leave
* isConnected state. You can use GoSensor_IsResponsive for this and optionaly call GoSensor_Disconnect if
* unresponsive for too long.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return kTRUE if the sensor is connected, kFALSE otherwise.
*/
GoFx(kBool) GoSensor_IsConnected(GoSensor sensor);
/**
* Reports whether the sensor is currently responsive.
*
* @public @memberof GoSensor
* @version Introduced in firmware 5.0.2.0
* @param sensor GoSensor object.
* @return kTRUE if the sensor is responsive kFALSE otherwise.
*/
GoFx(kBool) GoSensor_IsResponsive(GoSensor sensor);
/**
* Reports whether the connected sensor's protocol version is compatible with the SDK's protocol version.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.4.4.14
* @param sensor GoSensor object.
* @return kTRUE if the sensor is compatible, kFALSE otherwise.
*/
GoFx(kBool) GoSensor_IsCompatible(GoSensor sensor);
/**
* Refreshes sensor state.
*
* Unresponsive sensors will be disconnected, and canceled sensors will be reconnected.
* Sensors in any other state will discard all locally-cached information.
*
* This function should be used to update sensors in the GO_SENSOR_INCONSISTENT state. This
* state can arise due to buddy changes performed by remote sensors (e.g. a main sensor boots
* and claims ownership of a buddy sensor, but the buddy sensor has already been detected and
* loaded as a main sensor by the client).
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return kTRUE if the sensor is connected; kFALSE otherwise.
*/
GoFx(kStatus) GoSensor_Refresh(GoSensor sensor);
/**
* Assigns a buddy sensor.
*
* This function is asynchronous, use GoSensor_AddBuddyBlocking() for synchronous version.
*
* NOTE: The provided buddy sensor handle must already be connected.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param buddy Sensor to be assigned as buddy.
* @return Operation status.
* @see GoSensor_Connect, GoSensor_HasBuddy, GoSensor_BuddyId, GoSensor_RemoveBuddy
*/
GoFx(kStatus) GoSensor_AddBuddy(GoSensor sensor, GoSensor buddy);
/**
* Synchronously assigns a buddy sensor.
*
* NOTE: The provided buddy sensor handle must already be connected.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.8.1.65
* @param sensor GoSensor object.
* @param buddy Sensor to be assigned as buddy.
* @return Operation status.
* @see GoSensor_Connect, GoSensor_HasBuddy, GoSensor_BuddyId, GoSensor_RemoveBuddy
*/
GoFx(kStatus) GoSensor_AddBuddyBlocking(GoSensor sensor, GoSensor buddy);
/**
* Removes the current buddy sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_RemoveBuddy(GoSensor sensor);
/**
* Reports whether a buddy had been assigned.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return kTRUE if sensor has a buddy; kFALSE otherwise.
*/
GoFx(kBool) GoSensor_HasBuddy(GoSensor sensor);
/**
* Gets the buddy sensor's device ID.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Buddy device ID (or k32U_NULL if not assigned).
*/
GoFx(k32u) GoSensor_BuddyId(GoSensor sensor);
/**
* Gets the sensor's scan mode.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Scan mode.
*/
GoFx(GoMode) GoSensor_ScanMode(GoSensor sensor);
/**
* Enables or disables the sensor's data channel. After using GoSensor_EnableData function, SDK application is responsible
* for disposing of the GoDataSet objects that hold the data received from the sensor on the data connection.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param enable kTRUE to enable, or kFALSE to disable.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_EnableData(GoSensor sensor, kBool enable);
/**
* Starts the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_Start(GoSensor sensor);
/**
* Checks if the sensor is ready to start, if all assigned buddies are connected.
*
* @public @memberof GoSensor
* @version Introduced in firmware 5.2.18.3
* @param sensor GoSensor object.
* @return Operation status.
*/
GoFx(kBool) GoSensor_CanStart(GoSensor sensor);
/**
* Starts the sensor at a scheduled value.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.1.3.106
* @param sensor GoSensor object.
* @param value Scheduled start value. uS when time triggered and ticks when encoder triggered.
* @return Operation status.
* @see GoSetup_SetTriggerSource, GoSetup_TriggerSource, GoSystem_Timestamp, GoSystem_Encoder
*/
GoFx(kStatus) GoSensor_ScheduledStart(GoSensor sensor, k64s value);
/**
* Stops the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_Stop(GoSensor sensor);
/**
* Performs a sensor snapshot.
*
* A snapshot starts the sensor, takes a scan, and immediately stops the sensor.
* Because the sensor is stopped after every snapshot, some asynchronous activities such
* as digital output may not have enough time to occur. Algorithms that maintain memory
* between scans would also be reset for every snapshot. The only guarantee that
* can be made is that the data is delivered over the SDK.
*
* Because of these limitations, GoSensor_Trigger should usually be used instead.
*
* @public @memberof GoSensor
* @version Introduced in firmware 5.2.1.x
* @param sensor GoSensor object.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_Snapshot(GoSensor sensor);
/**
* Perform alignment using the configured alignment type and target.
*
* NOTE: This operation will result in a sensor start for the duration of the
* alignment. It can be canceled via GoSensor_Stop. This function's operation
* status does not correspond to the actual alignment result. In order to
* retrieve the alignment result, you must enable the data channel before calling
* this function, receive an alignment data message and then check its status.
*
* WARNING! This operation may (depending on alignment reference) write to flash storage.
* Review the user manual for implications.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Operation status.
* @see GoSensor_EnableData, GoSystem_ReceiveData, GoSetup_AlignmentType, GoSetup_AlignmentMovingTarget, GoSetup_AlignmentStationaryTarget, GoAlignMsg_Status, GoSensor_Stop
* @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.
*/
GoFx(kStatus) GoSensor_Align(GoSensor sensor);
/**
* Clears the current sensor alignment.
*
* WARNING! This operation writes to flash storage.
* Review the user manual for implications.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.1.3.106
* @param sensor GoSensor object.
* @return Operation status.
* @see GoSensor_Align
* @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.
*/
GoFx(kStatus) GoSensor_ClearAlignment(GoSensor sensor);
/**
* Perform an exposure auto set.
*
* NOTE: This operation will result in a sensor start for the duration of the
* exposure AutoSet. A successful operation status does NOT modify the configuration.
* You must retrieve the resulting exposure value and set it for the appropriate
* exposure setting. This involves enabling the data connection prior to running
* exposure auto set and then receiving an exposure auto set message, which
* you can then use to query the status and access the resulting value.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param role Determines which device to apply changes to. Use GO_ROLE_MAIN or GOROLE_BUDDYIDX(buddyidx). See GoRole for more details.
* @return Operation status.
* @see GoRole, GoSensor_EnableData, GoSystem_ReceiveData, GoExposureCalMsg_Status, GoExposureCalMsg_Exposure
*/
GoFx(kStatus) GoSensor_ExposureAutoSet(GoSensor sensor, GoRole role);
/**
* Gets the alignment state of the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return A GoAlignmentState.
*/
GoFx(GoAlignmentState) GoSensor_AlignmentState(GoSensor sensor);
/**
* Sets the alignment reference of the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param reference The alignment reference value to set.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_SetAlignmentReference(GoSensor sensor, GoAlignmentRef reference);
/**
* Gets the alignment reference of the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param reference A pointer that will hold the current alignment reference value.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_AlignmentReference(GoSensor sensor, GoAlignmentRef* reference);
/**
* Reboots the main sensor and any connected buddy sensors.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param wait kTRUE to wait for reboot and then reconnect.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_Reset(GoSensor sensor, kBool wait);
/**
* Resets the encoder value. NOTE: This is only possible with a direct encoder
* connection to a sensor. Resetting the encoder value when connected to a Master
* device will not work.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.5.3.57
* @param sensor GoSensor object.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_ResetEncoder(GoSensor sensor);
/**
* Aborts ongoing sensor communication.
*
* This method asynchronously aborts ongoing communication; the next time that any
* I/O operation blocks for an extended period of time, it will be terminated. This method
* is thread-safe.
*
* In order to resume communication, call GoSensor_Refresh or GoSensor_Connect.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_Cancel(GoSensor sensor);
/**
* Gets the current time stamp (common among all synchronized sensors).
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param time Receives the current time stamp(us).
* @return Operation status.
*/
GoFx(kStatus) GoSensor_Timestamp(GoSensor sensor, k64u* time);
/**
* Gets the current encoder count from the sensor. This is useful when an encoder value is needed
* while the sensor is not started and thus not producing data with encoder values in the stamp.
*
* Note that this function sends a command to the sensor, where the current encoder value is read
* and then sent back in a reply message. So this is not the most accurate method of reading the
* encoder value. To read the encoder value of a specific frame of data, use the encoder value
* from the GoStamp received as GO_DATA_MESSAGE_TYPE_STAMP.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param encoder Receives the encoder count (ticks).
* @return Operation status.
*/
GoFx(kStatus) GoSensor_Encoder(GoSensor sensor, k64s* encoder);
/**
* Sends a software trigger to the sensor.
*
* This method is used in conjunction with sensors that are configured to accept
* software triggers. The sensor must be running (e.g. by calling GoSensor_Start)
* for triggers to be accepted.
*
* When the trigger mode is set to Software, this command will trigger individual
* frames in Profile or Surface mode. For G2 sensors with other trigger modes,
* this command can also be used to trigger Fixed Length surface generation when
* the Fixed Length Start Trigger option is set to "Software".
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Operation status.
* @see GoSetup_TriggerSource, GoSetup_SetTriggerSource
*/
GoFx(kStatus) GoSensor_Trigger(GoSensor sensor);
/**
* Schedules a digital output.
*
* This method requires that the output is configured to trigger on software control.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param index The digital output index.
* @param target The time or position target (us or mm), depending on GoDomain. Ignored if
* GoDigital_ScheduleEnabled is false or GoDigital_SignalType is pulsed.
* @param value The value of scheduled output (0-Low or 1-High). Ignored if output
* GoDigital_SignalType is pulsed.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_EmitDigital(GoSensor sensor, k16u index, k64s target, k8u value);
/**
* Schedules an analog output.
*
* This method requires that the output be configured to trigger on software control.
* NOTE: It is not possible to schedule a continuous output. The operation will
* fail accordingly if attempted.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param index The analog output index.
* @param target The time or position target (us or mm), depending on GoDomain. Ignored if
* GoAnalog_ScheduleEnabled is false.
* @param value The value of the scheduled output (uA).
* @return Operation status.
*/
GoFx(kStatus) GoSensor_EmitAnalog(GoSensor sensor, k16u index, k64s target, k32s value);
/**
* Gets the number of files available from the connected sensor. This includes files that may not be visible through the web interface.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return File count.
*/
GoFx(kSize) GoSensor_FileCount(GoSensor sensor);
/**
* Gets the file name at the specified index.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param index Index of the desired file name.
* @param name Receives the name of the file.
* @param capacity Capacity of the file name buffer.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_FileNameAt(GoSensor sensor, kSize index, kChar* name, kSize capacity);
/**
* Uploads a file to the connected sensor. The following is a list of
* macros representing common files used in this operation:
*
* @li GO_SENSOR_LIVE_JOB_NAME - Represents "_live.job".
* @li GO_SENSOR_LIVE_REPLAY - Represents the recording file, "_live.rec".
*
* WARNING! This operation writes to flash storage.
* Review the user manual for implications.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param sourcePath Source file system path for the file to be uploaded.
* @param destName Destination name for the uploaded file (maximum 63 characters).
* @return Operation status.
* @remark Calling this function will result in writing operations to flash storage if the destination is not a live file. Should the process be disrupted due to power loss or other factors, the sensor may enter Rescue mode.
*/
GoFx(kStatus) GoSensor_UploadFile(GoSensor sensor, const kChar* sourcePath, const kChar* destName);
/**
* Downloads a file from the connected sensor. The following is a list of
* macros representing common files used in this operation:
*
* @li GO_SENSOR_LIVE_JOB_NAME - Represents "_live.job".
* @li GO_SENSOR_LIVE_REPLAY - Represents the recording file, "_live.rec".
*
* File names of saved jobs, as well as a support file "support.gs", may also be specified.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param sourceName Source name of the file to be downloaded.
* @param destPath Destination file system path for the file to be downloaded.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_DownloadFile(GoSensor sensor, const kChar* sourceName, const kChar* destPath);
/**
* Copies a file within the connected sensor.
*
* If the destination file name is GO_SENSOR_LIVE_JOB_NAME, then the configuration job
* file used by the sensor is changed (ie. a job/load switch operation takes place).
* To do a job load/switch, the sensor is first stopped before the job load/switch.
* After the job load/switch, the sensor remains stopped, to match the behaviour
* of loading/switching a job file from the GUI.
*
* WARNING! This operation writes to flash storage.
* Review the user manual for implications.
*
* NOTE: if doing a job load/switch, this API leaves the sensor stopped. User must
* explicitly start the sensor again.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param sourceName Source name for the file to be copied.
* @param destName Destination name for the file (maximum 63 characters).
* @return Operation status.
* @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.
* @see GoSensor_UploadFile()
*/
GoFx(kStatus) GoSensor_CopyFile(GoSensor sensor, const kChar* sourceName, const kChar* destName);
/**
* Deletes a file within the connected sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param name Name of the file to be deleted.
* @return Operation status.
* @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.
*/
GoFx(kStatus) GoSensor_DeleteFile(GoSensor sensor, const kChar* name);
/**
* Checks whether the specified file is present on the sensor.
*
* WARNING! This operation writes to flash storage.
* Review the user manual for implications.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param name Name of the file to be checked.
* @return Operation status.
*/
GoFx(kBool) GoSensor_FileExists(GoSensor sensor, const kChar* name);
/**
* Gets the available storage space remaining for user files.
*
* @public @memberof GoSensor
* @version
* @param sensor GoSensor object.
* @return Storage space available.
*/
GoFx(k64u) GoSensor_UserStorageFree(GoSensor sensor);
/**
* Gets the storage space used for user files.
*
* @public @memberof GoSensor
* @version
* @param sensor GoSensor object.
* @return Storage space used.
*/
GoFx(k64u) GoSensor_UserStorageUsed(GoSensor sensor);
/**
* Sets a default job file to be loaded on boot.
*
* WARNING! This operation writes to flash storage.
* Review the user manual for implications.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param fileName Name of the default file.
* @return Operation status.
* @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.
*/
GoFx(kStatus) GoSensor_SetDefaultJob(GoSensor sensor, const kChar* fileName);
/**
* Gets the name of the default job file to be loaded on boot.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param fileName Receives name of the default file.
* @param capacity Name buffer capacity.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_DefaultJob(GoSensor sensor, kChar* fileName, kSize capacity);
/**
* Gets the name of the loaded job file and whether it has been modified since loading.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param fileName Receives name of the loaded file.
* @param capacity Name buffer capacity.
* @param changed Receives the status of whether the file has changed.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_LoadedJob(GoSensor sensor, kChar* fileName, kSize capacity, kBool* changed);
/**
* Logs into the sensor using the specified user name and password.
*
* Logging in is not required in order to programmatically control a sensor. The Gocator log-in feature is
* intended only to support administrative user interfaces, by allowing the username and password to be
* stored in the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param user User account.
* @param password User password.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_LogIn(GoSensor sensor, GoUser user, const kChar* password);
/**
* Changes the password associated with the specified user account.
*
* WARNING! This operation writes to flash storage.
* Review the user manual for implications.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param user User account.
* @param password New password.
* @return Operation status.
* @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.
*/
GoFx(kStatus) GoSensor_ChangePassword(GoSensor sensor, GoUser user, const kChar* password);
/**
* Upgrades sensor firmware.
*
* This function will block until the upgrade is completed.
*
* WARNING! This operation writes to flash storage.
* Review the user manual for implications.
*
* This function results in flash storage modifications. If modifications are interrupted due to
* power loss, the sensor may reboot into Rescue mode.
*
* The sensor does not need to be connected to perform an upgrade.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27 and updated in 4.3.3.124
* @param sensor GoSensor object.
* @param sourcePath Local file system path to the upgrade file.
* @param onUpdate Callback function to receive progress updates, or kNULL.
* @param context Context handle to be passed to the upgrade callback.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_Upgrade(GoSensor sensor, const kChar* sourcePath, GoUpgradeFx onUpdate, kPointer context);
/**
* Creates a backup of sensor files and downloads the backup to the specified location.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param destPath Local file system path for the saved backup file.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_Backup(GoSensor sensor, const kChar* destPath);
/**
* Restores a backup of sensor files.
*
* WARNING! This operation writes to flash storage.
* Review the user manual for implications.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param sourcePath Local file system path of the saved backup file.
* @return Operation status.
* @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.
*/
GoFx(kStatus) GoSensor_Restore(GoSensor sensor, const kChar* sourcePath);
/**
* Restores factory default settings.
*
* WARNING! This operation writes to flash storage.
* Review the user manual for implications.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param restoreAddress kTRUE to restore the factory default IP address; False otherwise.
* @return Operation status.
* @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.
*/
GoFx(kStatus) GoSensor_RestoreDefaults(GoSensor sensor, kBool restoreAddress);
/**
* Gets the GoSetup instance associated with the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return A GoSetup object module
*/
GoFx(GoSetup) GoSensor_Setup(GoSensor sensor);
/**
* Gets the sensor's tools module, used for measurement configuration.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Measurement configuration module.
*/
GoFx(GoTools) GoSensor_Tools(GoSensor sensor);
/**
* Gets the output module, used for output configuration.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Output configuration module.
*/
GoFx(GoOutput) GoSensor_Output(GoSensor sensor);
/**
* Gets the transform module, used for transformation configuration.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Transformation configuration module.
*/
GoFx(GoTransform) GoSensor_Transform(GoSensor sensor);
/**
* Gets the replay module, used for replay configuration.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.5.3.57
* @param sensor GoSensor object.
* @return Replay configuration module.
*/
GoFx(GoReplay) GoSensor_Replay(GoSensor sensor);
/**
* Gets the device identifier associated with this sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return The sensor's device ID.
*/
GoFx(k32u) GoSensor_Id(GoSensor sensor);
/**
* Gets the part number associated with this sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 5.3.17.23
* @param sensor GoSensor object.
* @param partNumber A character array pointer.
* @param capacity The character array capacity.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_PartNumber(GoSensor sensor, kChar* partNumber, kSize capacity);
/**
* Gets the model display name associated with this sensor.
*
* @public @memberof GoSensorInfo
* @version Introduced in firmware 5.3.17.23
* @param sensor GoSensor object.
* @param modelDisplayName A character array pointer.
* @param capacity The character array capacity.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_ModelDisplayName(GoSensor sensor, kChar* modelDisplayName, kSize capacity);
/**
* Reports the current state of the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Sensor state.
*/
GoFx(GoState) GoSensor_State(GoSensor sensor);
/**
* Reports the current states of the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param states Reference to updated states.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_States(GoSensor sensor, GoStates* states);
/**
* Gets the sensor's current role within the system.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Sensor role.
*/
GoFx(GoRole) GoSensor_Role(GoSensor sensor);
/**
* Reports the user account associated with the current user.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return User account id.
*/
GoFx(GoUser) GoSensor_User(GoSensor sensor);
/**
* Gets the sensor's protocol version.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Protocol version.
*/
GoFx(kVersion) GoSensor_ProtocolVersion(GoSensor sensor);
/**
* Gets the sensor's firmware version.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Firmware version.
*/
GoFx(kVersion) GoSensor_FirmwareVersion(GoSensor sensor);
/**
* Sets the recording state of the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param enable Enables or disables recording.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_EnableRecording(GoSensor sensor, kBool enable);
/**
* Gets the recording state of the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return kTRUE if recording is enabled. kFALSE otherwise.
*/
GoFx(kBool) GoSensor_RecordingEnabled(GoSensor sensor);
/**
* Sets the input source of the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param source The input source to use.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_SetInputSource(GoSensor sensor, GoInputSource source);
/**
* Gets the input source currently used by the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return A GoInputSource.
*/
GoFx(GoInputSource) GoSensor_InputSource(GoSensor sensor);
/**
* Simulates the current frame in the live recording buffer.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param isBufferValid kTRUE if the source simulation buffer was valid. kFALSE otherwise.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_Simulate(GoSensor sensor, kBool* isBufferValid);
/**
* Advances one frame from the current replay position.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param direction Direction with which to step.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_PlaybackStep(GoSensor sensor, GoSeekDirection direction);
/**
* Sets the current frame position for a replay.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param position The frame position to seek.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_PlaybackSeek(GoSensor sensor, kSize position);
/**
* Gets the current replay frame position.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param position The current frame position index.
* @param count The frame count.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_PlaybackPosition(GoSensor sensor, kSize* position, kSize* count);
/**
* Clears the replay buffer.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_ClearReplayData(GoSensor sensor);
/**
* Resets the measurement statistics reported by the health channel
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_ClearMeasurementStats(GoSensor sensor);
/**
* Exports the current frame of a replay in the form of a bitmap.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param type The type of data to export.
* @param source The device data source to export from.
* @param dstFileName The destination file name of the exported bitmap file.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_ExportBitmap(GoSensor sensor,
GoReplayExportSourceType type,
GoDataSource source,
const kChar* dstFileName);
/**
* Exports replay data in CSV format.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param dstFileName The destination file name of the exported CSV file.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_ExportCsv(GoSensor sensor, const kChar* dstFileName);
/**
* Returns an enumerator value representing the current sensor's family.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return A GoFamily value.
*/
GoFx(GoFamily) GoSensor_Family(GoSensor sensor);
/**
* Clears the log file (_live.log).
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_ClearLog(GoSensor sensor);
/**
* Sets the AutoStart enabled state of the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param enable The AutoStart enabled state to use.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_EnableAutoStart(GoSensor sensor, kBool enable);
/**
* Gets the AutoStart enabled state currently used by the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return kTRUE if auto start is enabled and kFALSE otherwise.
*/
GoFx(kBool) GoSensor_AutoStartEnabled(GoSensor sensor);
/**
* Set sensor voltage settings (only on G3210)
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.7.5.25
* @param sensor GoSensor object.
* @param voltage Either 48V or 24V operation
* @param cableLength When in 24V operation mode the cable length (meter) must also be supplied
* @return Operation status.
*/
GoFx(kStatus) GoSensor_SetVoltage(GoSensor sensor, GoVoltageSetting voltage, k64f cableLength);
/**
* Get the sensor voltage settings (only on G3210)
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.7.5.25
* @param sensor GoSensor object.
* @param voltage Destination to store voltage (can be kNULL)
* @param cableLength Destination to store cable length (meter) (can be kNULL)
* @return Operation status.
*/
GoFx(kStatus) GoSensor_GetVoltage(GoSensor sensor, GoVoltageSetting *voltage, k64f *cableLength);
/**
* Sets the quick edit state of the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.7.11.5
* @param sensor GoSensor object.
* @param enable The Quick Edit enabled state to use.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_EnableQuickEdit(GoSensor sensor, kBool enable);
/**
* Gets the quick edit state of the sensor
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.7.11.5
* @param sensor GoSensor object.
* @return kTRUE if Quick Edit is enabled, kFALSE otherwise.
*/
GoFx(kBool) GoSensor_QuickEditEnabled(GoSensor sensor);
/**
* Gets the count of remote sensor information held by the sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @return The remote sensor information count.
*/
GoFx(kSize) GoSensor_RemoteInfoCount(GoSensor sensor);
/**
* Gets the remote sensor information at the given index.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.0.10.27
* @param sensor GoSensor object.
* @param index The index of the remote sensor information to retrieve.
* @return A handle to the selected remote sensor information or kNULL if an invalid index is provided.
*/
GoFx(GoSensorInfo) GoSensor_RemoteInfoAt(GoSensor sensor, kSize index);
/**
* Return the number of files contained in the specified path with an optional extension filter applied.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.1.3.106
* @param sensor GoSensor object.
* @param extensionFilter An optional extension filter to apply. Send "" to not apply a filter.
* @param path The file system path to retrieve the file count for.
* @param isRecursive kTRUE to include files in sub-folders of the path and kFALSE to only count files in the immediate path.
* @return The number of files contained in the specified path with an optional extension filter applied.
*/
GoFx(kSize) GoSensor_DirectoryFileCount(GoSensor sensor, const kChar* extensionFilter, const kChar* path, kBool isRecursive);
/**
* Retrieves the file name at the specified index for a given path and optional extension filter.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.1.3.106
* @param sensor GoSensor object.
* @param extensionFilter An optional extension filter to apply. Send "" to not apply a filter.
* @param path The file system path to retrieve the file count for.
* @param isRecursive kTRUE to include files in sub-folders of the path and kFALSE to only count files in the immediate path.
* @param index The index of the file name to retrieve.
* @param fileName The pointer to a character array of which to store the retrieve file name.
* @param capacity The maximum capacity of the character array.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_DirectoryFileNameAt(GoSensor sensor, const kChar* extensionFilter, const kChar* path, kBool isRecursive, kSize index, kChar* fileName, kSize capacity);
/**
* Defines the signature for a custom data message handler.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.1.3.106
* @param context A pointer to an application context to use with the provided data set.
* @param sensor GoSensor object.
* @param dataSet The data set.
* @return Operation status.
* @see GoSensor_SetDataHandler
*/
typedef kStatus (kCall* GoSensorDataSetFx)(kPointer context, GoSensor sensor, GoDataSet dataSet);
/**
* Sets the data callback function to be used upon receipt of data.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.1.3.106
* @param sensor GoSensor object.
* @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.
* @param context The context to use with the function pointer.
* @return Operation status.
* @see GoSensorDataSetFx
*/
GoFx(kStatus) GoSensor_SetDataHandler(GoSensor sensor, GoSensorDataSetFx function, kPointer context);
/**
* Creates a part matching model based on the current part data.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.2.4.7
* @param sensor GoSensor object.
* @param name The intended name of the part match model.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_PartMatchCreateModel(GoSensor sensor, const kChar* name);
/**
* Detect the edges of the specified part model.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.2.4.7
* @param sensor GoSensor object.
* @param name The name of the part match model to detect edges on.
* @param sensitivity The sensitivity to use for model edge detection.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_PartMatchDetectModelEdges(GoSensor sensor, const kChar* name, k16u sensitivity);
/**
* Returns a handle to a part model based on a given name.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.2.4.7
* @param sensor GoSensor object.
* @param name The name of the part match model to retrieve.
* @return A GoPartModel handle.
*/
GoFx(GoPartModel) GoSensor_PartMatchModel(GoSensor sensor, const kChar* name);
/**
* Returns the number of part match models present in the currently loaded job.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.2.4.7
* @param sensor GoSensor object.
* @return The count of part match models in the currently loaded job.
*/
GoFx(kSize) GoSensor_PartMatchModelCount(GoSensor sensor);
/**
* Returns a handle to a part model based on a given index.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.2.4.7
* @param sensor GoSensor object.
* @param index The index of the part model to retrieve.
* @return A GoPartModel handle.
*/
GoFx(GoPartModel) GoSensor_PartMatchModelAt(GoSensor sensor, kSize index);
/**
* Sets the runtime variables from the provided starting index to the specified length
* with the values contained in the provided array.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.5.3.57
* @param sensor GoSensor object.
* @param startIndex The starting index of the runtime variable values to set.
* @param length The number of runtime variables to set/the length of the array parameter.
* @param values A reference to an array which contains the intended runtime variable values.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_SetRuntimeVariables(GoSensor sensor, kSize startIndex, kSize length, k32s* values);
/**
* Returns the number of runtime variables available on the device.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.5.3.57
* @param sensor GoSensor object.
* @return The runtime variable count of the device.
*/
GoFx(kSize) GoSensor_GetRuntimeVariableCount(GoSensor sensor);
/**
* Gets the values associated with a given runtime variable starting index and length.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.5.3.57
* @param sensor GoSensor object.
* @param startIndex The starting index of the runtime variable values to retrieve.
* @param length The number of runtime variables to retrieve.
* @param values A reference to an array which will hold the retrieved runtime variable values.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_GetRuntimeVariables(GoSensor sensor, kSize startIndex, kSize length, k32s* values);
/**
* Gets the value associated with a given runtime variable index.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.5.3.57
* @param sensor GoSensor object.
* @param index The index of the runtime variable value to retrieve.
* @param value A reference to be updated with the runtime variable value.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_GetRuntimeVariableAt(GoSensor sensor, kSize index, k32s* value);
/**
* Starts recording to a stream.
*
* NOTE: Before calling this function, the sensor should already be running and
* recording. GoSensor_StopRecordingStream() should be called before executing
* any other sensor commands, with the exception of GoSensor_IsRecordingStreaming().
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.6.4.66
* @param sensor GoSensor object.
* @param destFile A local file path to store the .rec data.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_StartRecordingStream(GoSensor sensor, kChar* destFile);
/**
* Stops recording to a stream.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.6.4.66
* @param sensor GoSensor object.
* @return Operation status.
*/
GoFx(kStatus) GoSensor_StopRecordingStream(GoSensor sensor);
/**
* Reports whether or not recording is streaming.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.6.4.66
* @param sensor GoSensor object.
* @return kTRUE if recording is streaming, kFALSE otherwise.
*/
GoFx(kBool) GoSensor_IsRecordingStreaming(GoSensor sensor);
/**
* Gets the buddy at a given index.
*
* @public @memberof GoSensorInfo
* @version Introduced in firmware 4.6.4.66
* @param info GoSensorInfo object.
* @param index index of buddy to retrieve.
* @return Device state.
*/
GoFx(GoSensorInfo) GoSensor_BuddiesAt(GoSensor info, k32u index);
/**
* Gets the number of buddies in the sytem.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.6.4.66
* @param info GoSensor object.
* @return Device state.
*/
GoFx(kSize) GoSensor_BuddiesCount(GoSensor info);
/**
* returns true if the system has any buddies.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.6.4.66
* @param info GoSensor object.
* @return Device state.
*/
GoFx(kBool) GoSensor_HasBuddies(GoSensor info);
/**
* returns the GeoCal object for querying or Null if it does not exist.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.7.0.130
* @param info GoSensor object.
* @param geoCal Output: A reference to be updated with the GoGeoCal object
* @return Status of operation
*/
GoFx(kStatus) GoSensor_GeoCal(GoSensor info, GoGeoCal *geoCal);
/**
** Sets the Data Port.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.8.2.76
* @param sensor GoSensor object.
* @param port Port number to be used
* @return Status of operation
*/
GoFx(kStatus) GoSensor_SetDataPort(GoSensor sensor, k32u port);
/**
* returns the Data Port.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.8.2.76
* @param sensor GoSensor object.
* @return Port Number
*/
GoFx(k32u) GoSensor_DataPort(GoSensor sensor);
/**
* Sets the Health Port.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.8.2.76
* @param sensor GoSensor object.
* @param port Port number to be used
* @return Status of operation
*/
GoFx(kStatus) GoSensor_SetHealthPort(GoSensor sensor, k32u port);
/**
* returns the Health Port.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.8.2.76
* @param sensor GoSensor object.
* @return Port Number
*/
GoFx(k32u) GoSensor_HealthPort(GoSensor sensor);
/**
** Sets the Control Port.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.8.2.76
* @param sensor GoSensor object.
* @param port Port number to be used
* @return Status of operation
*/
GoFx(kStatus) GoSensor_SetControlPort(GoSensor sensor, k32u port);
/**
* returns the Control Port.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.8.2.76
* @param sensor GoSensor object.
* @return Port Number
*/
GoFx(k32u) GoSensor_ControlPort(GoSensor sensor);
/**
* Sets the Upgrade Port.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.8.2.76
* @param sensor GoSensor object.
* @param port Port number to be used
* @return Status of operation
*/
GoFx(kStatus) GoSensor_SetUpgradePort(GoSensor sensor, k32u port);
/**
* returns the Upgrade Port.
*
* @public @memberof GoSensor
* @version Introduced in firmware 4.8.2.76
* @param sensor GoSensor object.
* @return Port Number
*/
GoFx(k32u) GoSensor_UpgradePort(GoSensor sensor);
/**
* Waits for all buddies to be connected within a specific timeout.
*
* @public @memberof GoSensor
* @version Introduced in firmware 5.2.18.3
* @param sensor GoSensor object.
* @param timeout a timeout in milliseconds to wait for all required buddies to get connected
* @return Operational status: kOK if all required buddies are connected within specified timeout; otherwise kERROR_TIMEOUT
*/
GoFx(kStatus) GoSensor_WaitForBuddies(GoSensor sensor, k64u timeout);
/**
* Connects and logs into the sensor using the specified user name and password.
* Once security protection is enabled logging in is required in order to programmatically control a sensor.
* This must be used to connect to the sensor instead of anonymous connect method that fails in case security is enabled.
*
* @public @memberof GoSensor
* @version Introduced in firmware 5.2.18.3
* @param sensor GoSensor object.
* @param user User account
* @param password User password
* @return Operational status: kOK if funcions could complete with given login information;
* otherwise GS_ERROR_AUTHENTICATION indicating unauthorized access
*/
GoFx(kStatus) GoSensor_ConnectAndLogin(GoSensor sensor, GoUser user, const kChar* password);
/**
* Sets sensor's security level. This will enabled/disable security protection.
* Only authorized users can change security level that can deny access to specific objects/files to anonymous users
*
* @public @memberof GoSensor
* @version Introduced in firmware 5.2.18.3
* @param sensor GoSensor object.
* @param security new security level
* @return Operational status: kOK if funcions could complete with given login information;
* otherwise GS_ERROR_AUTHENTICATION indicating unauthorized access
*/
GoFx(kStatus) GoSensor_SetSecurityLevel(GoSensor sensor, GoSecurityLevel security);
/**
* Sets a sensor flag value.
*
* Sensor flags are an advanced feature that gives the user control over some internal
* system parameters and experimental features. These flags are provided only for the
* purposes of experimentation and demonstration, and may be changed or removed from
* one firwmare version to another.
*
* @public @memberof GoSensor
* @version Introduced in firmware 5.2.18.3
* @param sensor GoControl object.
* @param name Name of the flag.
* @param value Value of the flag (in text).
* @return Operation status.
*/
GoFx(kStatus) GoSensor_SetFlag(GoSensor sensor, const kChar* name, const kChar* value);
/**
* Gets a sensor flag value. See GoSensor_SetFlag for more details.
*
* @public @memberof GoSensor
* @version Introduced in firmware 5.2.18.3
* @param sensor GoControl object.
* @param name Name of the flag.
* @param value String object to receive the value (in text).
* @return Operation status.
*/
GoFx(kStatus) GoSensor_GetFlag(GoSensor sensor, const kChar* name, kString value);
/**
* Returns the acceleration state of a sensor. The state can be used by
* acceleration applications to determine if the
* sensor is available for acceleration or is already accelerated by a host.
*
* @public @memberof GoSensor
* @version Introduced in firmware 5.2.18.3
* @param sensor GoSensor object.
* @return Acceleration state.
*/
GoFx(GoSensorAccelState) GoSensor_AccelState(GoSensor sensor);
/**
* Returns the port numbers used by an accelerated sensor, including web port.
* Can be used by acceleration applications to get the ports used by an
* accelerated sensor.
*
* @public @memberof GoSensor
* @version Introduced in firmware 5.2.18.3
* @param sensor GoSensor object.
* @return Port numbers used by sensor.
*/
GoFx(GoPortInfo) GoSensor_AccelPortInfo(GoSensor sensor);
/**
* Returns the operational mode of the sensor. This can be used by an
* acceleration application to determine if the sensor is a virtual sensor,
* standalone sensor or an accelerated sensor mode.
*
* @public @memberof GoSensor
* @version Introduced in firmware 5.2.18.3
* @param sensor GoSensor object.
* @return Sensor operational mode.
*/
GoFx(GoDiscoveryOpMode) GoSensor_AccelOpMode(GoSensor sensor);
/**
* Returns the physical sensor IP address when sensor is accelerated.
*
* @public @memberof GoSensor
* @version Introduced in firmware 5.2.18.3
* @param sensor GoSensor object.
* @param ipAddress Destination to store the IP Address.
* @return Operational status.
*/
GoFx(kStatus) GoSensor_AccelSensorIpAddress(GoSensor sensor, kIpAddress* ipAddress);
#include <GoSdk/GoSensor.x.h>
#endif