Files
handleaiuinew/env/LMI/include/GoSdk/GoAdvanced.c
T

1386 lines
41 KiB
C
Raw Normal View History

2024-05-18 23:53:26 +08:00
/**
* @file GoAdvanced.c
*
* @internal
* Copyright (C) 2016-2021 by LMI Technologies Inc.
* Licensed under the MIT License.
* Redistributed files must retain the above copyright notice.
*/
#include <GoSdk/GoAdvanced.h>
#include <GoSdk/GoSensor.h>
#include <GoSdk/GoUtils.h>
#define GO_SPOT_THRESHOLD_MIN 1
#define GO_SPOT_THRESHOLD_MAX 255
#define GO_SURFACE_CONTRAST_THRESHOLD_MIN 1
#define GO_SURFACE_CONTRAST_THRESHOLD_MAX 50
kBeginClassEx(Go, GoAdvanced)
kAddVMethod(GoAdvanced, kObject, VRelease)
kEndClassEx()
GoFx(kStatus) GoAdvanced_Construct(GoAdvanced* advanced, kObject sensor, kAlloc allocator)
{
kAlloc alloc = kAlloc_Fallback(allocator);
kStatus status;
kCheck(kAlloc_GetObject(alloc, kTypeOf(GoAdvanced), advanced));
if (!kSuccess(status = GoAdvanced_Init(*advanced, kTypeOf(GoAdvanced), sensor, alloc)))
{
kAlloc_FreeRef(alloc, advanced);
}
return status;
}
GoFx(kStatus) GoAdvanced_Init(GoAdvanced advanced, kType type, kObject sensor, kAlloc alloc)
{
kObjR(GoAdvanced, advanced);
kStatus exception = kOK;
kCheck(kObject_Init(advanced, type, alloc));
kZero(obj->xml);
kZero(obj->xmlItem);
obj->typeSystemValue = GO_ADVANCED_TYPE_CUSTOM;
obj->typeUsed = kFALSE;
kZero(obj->spotThreshold);
obj->spotThreshold.min = GO_SPOT_THRESHOLD_MIN;
obj->spotThreshold.max = GO_SPOT_THRESHOLD_MAX;
kZero(obj->spotWidthMax);
obj->systemSpotSelectionType = GO_SPOT_SELECTION_TYPE_BEST;
obj->spotSelectionTypeUsed = kFALSE;
obj->spotSelectionTypeOptions = kNULL;
obj->spotContinuitySortingMinimumSegmentSize = 0;
obj->spotContinuitySortingSearchWindowX = 0;
obj->spotContinuitySortingSearchWindowY = 0;
kZero(obj->spotTranslucentSortingOpaqueWidth);
kZero(obj->spotTranslucentSortingTranslucentWidth);
kZero(obj->spotTranslucentSortingMinLength);
kZero(obj->spotTranslucentSortingThreadingMode);
obj->spotTranslucentSortingThreadingModeOptions = kNULL;
kZero(obj->spotWidthMin);
kZero(obj->widthThreshold);
kZero(obj->spotSumMin);
kZero(obj->sobelEdgeWindow);
kZero(obj->cameraGainAnalog);
kZero(obj->cameraGainDigital);
kZero(obj->dynamicSensitivity);
kZero(obj->dynamicThreshold);
kZero(obj->gammaType);
kZero(obj->sensitivityCompensationEnabled);
kZero(obj->encoding);
obj->encoding.value = GO_SURFACE_ENCODING_STANDARD;
obj->phaseFilter = GO_SURFACE_PHASE_FILTER_NONE;
obj->sensor = sensor;
obj->type = GO_ADVANCED_TYPE_DIFFUSE;
obj->spotSelectionType = GO_SPOT_SELECTION_TYPE_BEST;
kZero(obj->contrastThreshold);
obj->contrastThreshold.min = GO_SURFACE_CONTRAST_THRESHOLD_MIN;
obj->contrastThreshold.max = GO_SURFACE_CONTRAST_THRESHOLD_MAX;
kTry
{
kTest(kArrayList_Construct(&obj->spotSelectionTypeOptions, kTypeOf(GoSpotSelectionType), 0, alloc));
kTest(kArrayList_Construct(&obj->spotTranslucentSortingThreadingModeOptions, kTypeOf(GoTranslucentThreadingMode), 0, alloc));
}
kCatch(&exception)
{
GoAdvanced_VRelease(advanced);
kEndCatch(exception);
}
return kOK;
}
GoFx(kStatus) GoAdvanced_VRelease(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
kCheck(kDisposeRef(&obj->spotSelectionTypeOptions));
kCheck(kDisposeRef(&obj->spotTranslucentSortingThreadingModeOptions));
return kObject_VRelease(advanced);
}
GoFx(kStatus) GoAdvanced_ReadTunableParams(GoAdvanced advanced, kChar* paramStr, GoElement32u* element, kXml xml, kXmlItem item)
{
kXmlItem tempItem = kNULL;
kBool tempBool;
if (kXml_ChildExists(xml, item, paramStr))
{
kCheckArgs(!kIsNull(tempItem = kXml_Child(xml, item, paramStr)));
kCheck(kXml_Item32u(xml, tempItem, &element->value));
kCheck(kXml_AttrBool(xml, tempItem, "used", &element->enabled));
kCheck(kXml_Attr32u(xml, tempItem, "min", &element->min));
kCheck(kXml_Attr32u(xml, tempItem, "max", &element->max));
if (element->enabled && kXml_AttrExists(xml, tempItem, "readonly"))
{
kCheck(kXml_AttrBool(xml, tempItem, "readonly", &tempBool));
element->enabled = !tempBool;
}
}
return kOK;
}
GoFx(kStatus) GoAdvanced_Read(GoAdvanced advanced, kXml xml, kXmlItem item)
{
kObj(GoAdvanced, advanced);
kXmlItem tempItem = kNULL;
kText256 tempText;
kBool tempBool;
obj->xml = xml;
obj->xmlItem = item;
// Type -------------------------------------------------------------------
kCheckArgs(!kIsNull(tempItem = kXml_Child(xml, item, "Type")));
kCheck(kXml_Item32s(xml, tempItem, &obj->type));
kCheck(kXml_AttrBool(xml, tempItem, "used", &obj->typeUsed));
kCheck(kXml_Attr32s(xml, tempItem, "value", &obj->typeSystemValue));
// SpotThreshold ----------------------------------------------------------
kCheckArgs(!kIsNull(tempItem = kXml_Child(xml, item, "SpotThreshold")));
kCheck(kXml_Item32u(xml, tempItem, &obj->spotThreshold.value));
kCheck(kXml_AttrBool(xml, tempItem, "used", &obj->spotThreshold.enabled));
// Enabled if used AND writeable.
if (obj->spotThreshold.enabled && kXml_AttrExists(xml, tempItem, "readonly"))
{
kCheck(kXml_AttrBool(xml, tempItem, "readonly", &tempBool));
obj->spotThreshold.enabled = !tempBool;
}
kCheck(kXml_Attr32u(xml, tempItem, "value", &obj->spotThreshold.systemValue));
if (kXml_AttrExists(xml, tempItem, "min") && kXml_AttrExists(xml, tempItem, "max"))
{
kCheck(kXml_Attr32u(xml, tempItem, "min", &obj->spotThreshold.min));
kCheck(kXml_Attr32u(xml, tempItem, "max", &obj->spotThreshold.max));
}
// SpotWidthMax -----------------------------------------------------------
kCheckArgs(!kIsNull(tempItem = kXml_Child(xml, item, "SpotWidthMax")));
kCheck(kXml_Item32u(xml, tempItem, &obj->spotWidthMax.value));
kCheck(kXml_AttrBool(xml, tempItem, "used", &obj->spotWidthMax.enabled));
kCheck(kXml_Attr32u(xml, tempItem, "value", &obj->spotWidthMax.systemValue));
kCheck(kXml_Attr32u(xml, tempItem, "min", &obj->spotWidthMax.min));
kCheck(kXml_Attr32u(xml, tempItem, "max", &obj->spotWidthMax.max));
// SpotSelectionType ------------------------------------------------------
kCheckArgs(!kIsNull(tempItem = kXml_Child(xml, item, "SpotSelectionType")));
kCheck(kXml_Item32s(xml, tempItem, &obj->spotSelectionType));
kCheck(kXml_AttrBool(xml, tempItem, "used", &obj->spotSelectionTypeUsed));
kCheck(kXml_Attr32s(xml, tempItem, "value", &obj->systemSpotSelectionType));
if (kXml_AttrExists(xml, tempItem, "options"))
{
kCheck(kXml_AttrText(xml, tempItem, "options", tempText, kCountOf(tempText)));
kCheck(kArrayList_Clear(obj->spotSelectionTypeOptions));
kCheck(GoOptionList_ParseList32u(tempText, obj->spotSelectionTypeOptions));
}
// Tunable parameters -----------------------------------------------------------
kCheck(GoAdvanced_ReadTunableParams(advanced, "SpotWidthMin", &obj->spotWidthMin, xml, item));
kCheck(GoAdvanced_ReadTunableParams(advanced, "WidthThreshold", &obj->widthThreshold, xml, item));
kCheck(GoAdvanced_ReadTunableParams(advanced, "SpotSumMin", &obj->spotSumMin, xml, item));
kCheck(GoAdvanced_ReadTunableParams(advanced, "SobelEdgeWindow", &obj->sobelEdgeWindow, xml, item));
// SpotContinuitySorting --------------------------------------------------
if (kXml_ChildExists(xml, item, "SpotContinuitySorting"))
{
kCheckArgs(!kIsNull(tempItem = kXml_Child(xml, item, "SpotContinuitySorting")));
kCheck(kXml_Child32u(xml, tempItem, "MinimumSegmentSize", &obj->spotContinuitySortingMinimumSegmentSize));
kCheck(kXml_Child32u(xml, tempItem, "SearchWindow/X", &obj->spotContinuitySortingSearchWindowX));
kCheck(kXml_Child32u(xml, tempItem, "SearchWindow/Y", &obj->spotContinuitySortingSearchWindowY));
}
// SpotTranslucentSorting --------------------------------------------------
if (kXml_ChildExists(xml, item, "SpotTranslucentSorting/OpaqueWidth"))
{
kCheckArgs(!kIsNull(tempItem = kXml_Child(xml, item, "SpotTranslucentSorting/OpaqueWidth")));
kCheck(kXml_Item32u(xml, tempItem, &obj->spotTranslucentSortingOpaqueWidth.value));
kCheck(kXml_AttrBool(xml, tempItem, "used", &obj->spotTranslucentSortingOpaqueWidth.enabled));
kCheck(kXml_Attr32u(xml, tempItem, "value", &obj->spotTranslucentSortingOpaqueWidth.systemValue));
kCheck(kXml_Attr32u(xml, tempItem, "min", &obj->spotTranslucentSortingOpaqueWidth.min));
kCheck(kXml_Attr32u(xml, tempItem, "max", &obj->spotTranslucentSortingOpaqueWidth.max));
}
if (kXml_ChildExists(xml, item, "SpotTranslucentSorting/TranslucentWidth"))
{
kCheckArgs(!kIsNull(tempItem = kXml_Child(xml, item, "SpotTranslucentSorting/TranslucentWidth")));
kCheck(kXml_Item32u(xml, tempItem, &obj->spotTranslucentSortingTranslucentWidth.value));
kCheck(kXml_AttrBool(xml, tempItem, "used", &obj->spotTranslucentSortingTranslucentWidth.enabled));
kCheck(kXml_Attr32u(xml, tempItem, "value", &obj->spotTranslucentSortingTranslucentWidth.systemValue));
kCheck(kXml_Attr32u(xml, tempItem, "min", &obj->spotTranslucentSortingTranslucentWidth.min));
kCheck(kXml_Attr32u(xml, tempItem, "max", &obj->spotTranslucentSortingTranslucentWidth.max));
}
if (kXml_ChildExists(xml, item, "SpotTranslucentSorting/MinLength"))
{
kCheckArgs(!kIsNull(tempItem = kXml_Child(xml, item, "SpotTranslucentSorting/MinLength")));
kCheck(kXml_Item32u(xml, tempItem, &obj->spotTranslucentSortingMinLength.value));
kCheck(kXml_AttrBool(xml, tempItem, "used", &obj->spotTranslucentSortingMinLength.enabled));
kCheck(kXml_Attr32u(xml, tempItem, "value", &obj->spotTranslucentSortingMinLength.systemValue));
kCheck(kXml_Attr32u(xml, tempItem, "min", &obj->spotTranslucentSortingMinLength.min));
kCheck(kXml_Attr32u(xml, tempItem, "max", &obj->spotTranslucentSortingMinLength.max));
}
if (kXml_ChildExists(xml, item, "SpotTranslucentSorting/ThreadingMode"))
{
kCheckArgs(!kIsNull(tempItem = kXml_Child(xml, item, "SpotTranslucentSorting/ThreadingMode")));
kCheck(kXml_Item32s(xml, tempItem, &obj->spotTranslucentSortingThreadingMode.value));
kCheck(kXml_AttrBool(xml, tempItem, "used", &obj->spotTranslucentSortingThreadingMode.enabled));
kCheck(kXml_Attr32s(xml, tempItem, "value", &obj->spotTranslucentSortingThreadingMode.systemValue));
if (kXml_AttrExists(xml, tempItem, "options"))
{
kCheck(kXml_AttrText(xml, tempItem, "options", tempText, kCountOf(tempText)));
kCheck(kArrayList_Clear(obj->spotTranslucentSortingThreadingModeOptions));
kCheck(GoOptionList_ParseList32s(tempText, obj->spotTranslucentSortingThreadingModeOptions));
}
}
// CameraGainAnalog -------------------------------------------------------
kCheckArgs(!kIsNull(tempItem = kXml_Child(xml, item, "CameraGainAnalog")));
kCheck(kXml_Item64f(xml, tempItem, &obj->cameraGainAnalog.value));
kCheck(kXml_AttrBool(xml, tempItem, "used", &obj->cameraGainAnalog.enabled));
kCheck(kXml_Attr64f(xml, tempItem, "value", &obj->cameraGainAnalog.systemValue));
kCheck(kXml_Attr64f(xml, tempItem, "min", &obj->cameraGainAnalog.min));
kCheck(kXml_Attr64f(xml, tempItem, "max", &obj->cameraGainAnalog.max));
// CameraGainDigital ------------------------------------------------------
kCheckArgs(!kIsNull(tempItem = kXml_Child(xml, item, "CameraGainDigital")));
kCheck(kXml_Item64f(xml, tempItem, &obj->cameraGainDigital.value));
kCheck(kXml_AttrBool(xml, tempItem, "used", &obj->cameraGainDigital.enabled));
kCheck(kXml_Attr64f(xml, tempItem, "value", &obj->cameraGainDigital.systemValue));
kCheck(kXml_Attr64f(xml, tempItem, "min", &obj->cameraGainDigital.min));
kCheck(kXml_Attr64f(xml, tempItem, "max", &obj->cameraGainDigital.max));
// DynamicSensitivity -----------------------------------------------------
kCheckArgs(!kIsNull(tempItem = kXml_Child(xml, item, "DynamicSensitivity")));
kCheck(kXml_Item64f(xml, tempItem, &obj->dynamicSensitivity.value));
kCheck(kXml_AttrBool(xml, tempItem, "used", &obj->dynamicSensitivity.enabled));
kCheck(kXml_Attr64f(xml, tempItem, "value", &obj->dynamicSensitivity.systemValue));
kCheck(kXml_Attr64f(xml, tempItem, "min", &obj->dynamicSensitivity.min));
kCheck(kXml_Attr64f(xml, tempItem, "max", &obj->dynamicSensitivity.max));
// DynamicThreshold -------------------------------------------------------
kCheckArgs(!kIsNull(tempItem = kXml_Child(xml, item, "DynamicThreshold")));
kCheck(kXml_Item32u(xml, tempItem, &obj->dynamicThreshold.value));
kCheck(kXml_AttrBool(xml, tempItem, "used", &obj->dynamicThreshold.enabled));
kCheck(kXml_Attr32u(xml, tempItem, "value", &obj->dynamicThreshold.systemValue));
kCheck(kXml_Attr32u(xml, tempItem, "min", &obj->dynamicThreshold.min));
kCheck(kXml_Attr32u(xml, tempItem, "max", &obj->dynamicThreshold.max));
// GammaType --------------------------------------------------------------
kCheckArgs(!kIsNull(tempItem = kXml_Child(xml, item, "GammaType")));
kCheck(kXml_Item32u(xml, tempItem, &obj->gammaType.value));
kCheck(kXml_AttrBool(xml, tempItem, "used", &obj->gammaType.enabled));
kCheck(kXml_Attr32u(xml, tempItem, "value", &obj->gammaType.systemValue));
// SensitivityCompensationEnabled -----------------------------------------
if (kXml_ChildExists(xml, item, "SensitivityCompensationEnabled"))
{
kCheckArgs(!kIsNull(tempItem = kXml_Child(xml, item, "SensitivityCompensationEnabled")));
kCheck(kXml_ItemBool(xml, tempItem, &obj->sensitivityCompensationEnabled.value));
kCheck(kXml_AttrBool(xml, tempItem, "used", &obj->sensitivityCompensationEnabled.enabled));
kCheck(kXml_AttrBool(xml, tempItem, "value", &obj->sensitivityCompensationEnabled.systemValue));
}
// SurfaceEncoding --------------------------------------------------------
if (kXml_ChildExists(xml, item, "SurfaceEncoding"))
{
tempItem = kXml_Child(xml, item, "SurfaceEncoding");
kCheck(kXml_Item32u(xml, tempItem, &obj->encoding.value));
kCheck(kXml_AttrBool(xml, tempItem, "used", &obj->encoding.enabled));
// Enabled if used && writeable.
if (obj->encoding.enabled && kXml_AttrExists(xml, tempItem, "readonly"))
{
kCheck(kXml_AttrBool(xml, tempItem, "readonly", &tempBool));
obj->encoding.enabled = !tempBool;
}
kCheck(kXml_Attr32u(xml, tempItem, "value", &obj->encoding.systemValue));
}
// SurfacePhaseFilter -----------------------------------------------------
if (kXml_ChildExists(xml, item, "SurfacePhaseFilter"))
{
kCheck(kXml_Child32s(xml, item, "SurfacePhaseFilter", &obj->phaseFilter));
}
// ContrastThreshold ------------------------------------------------------
if (kXml_ChildExists(xml, item, "ContrastThreshold"))
{
// Contrast Threshold only became available in 5.3.12.6 when GOC-5534 was implemented.
// Earlier versions should still proceed with the read, and calls to
// GoAdvanced_IsContrastThresholdUsed() will return false.
tempItem = kXml_Child(xml, item, "ContrastThreshold");
kCheck(kXml_Item32u(xml, tempItem, &obj->contrastThreshold.value));
kCheck(kXml_AttrBool(xml, tempItem, "used", &obj->contrastThreshold.enabled));
// Enabled if used && writeable.
if (obj->contrastThreshold.enabled && kXml_AttrExists(xml, tempItem, "readonly"))
{
kCheck(kXml_AttrBool(xml, tempItem, "readonly", &tempBool));
obj->contrastThreshold.enabled = !tempBool;
}
kCheck(kXml_Attr32u(xml, tempItem, "value", &obj->contrastThreshold.systemValue));
kCheck(kXml_Attr32u(xml, tempItem, "min", &obj->contrastThreshold.min));
kCheck(kXml_Attr32u(xml, tempItem, "max", &obj->contrastThreshold.max));
}
return kOK;
}
GoFx(kStatus) GoAdvanced_Write(GoAdvanced advanced, kXml xml, kXmlItem item)
{
kObj(GoAdvanced, advanced);
kXmlItem tempItem = kNULL;
kCheck(kXml_SetChild32s(xml, item, "Type", obj->type));
kCheck(kXml_SetChild32u(xml, item, "SpotThreshold", obj->spotThreshold.value));
kCheck(kXml_SetChild32u(xml, item, "SpotWidthMax", obj->spotWidthMax.value));
kCheck(kXml_SetChild32s(xml, item, "SpotSelectionType", obj->spotSelectionType));
kCheck(kXml_SetChild32u(xml, item, "SpotWidthMin", obj->spotWidthMin.value));
kCheck(kXml_SetChild32u(xml, item, "WidthThreshold", obj->widthThreshold.value));
kCheck(kXml_SetChild32u(xml, item, "SpotSumMin", obj->spotSumMin.value));
kCheck(kXml_SetChild32u(xml, item, "SobelEdgeWindow", obj->sobelEdgeWindow.value));
kCheck(kXml_AddItem(xml, item, "SpotContinuitySorting", &tempItem));
kCheck(kXml_SetChild32u(xml, tempItem, "MinimumSegmentSize", obj->spotContinuitySortingMinimumSegmentSize));
kCheck(kXml_SetChild32u(xml, tempItem, "SearchWindow/X", obj->spotContinuitySortingSearchWindowX));
kCheck(kXml_SetChild32u(xml, tempItem, "SearchWindow/Y", obj->spotContinuitySortingSearchWindowY));
kCheck(kXml_AddItem(xml, item, "SpotTranslucentSorting", &tempItem));
kCheck(kXml_SetChild32u(xml, tempItem, "OpaqueWidth", obj->spotTranslucentSortingOpaqueWidth.value));
kCheck(kXml_SetChild32u(xml, tempItem, "TranslucentWidth", obj->spotTranslucentSortingTranslucentWidth.value));
kCheck(kXml_SetChild32u(xml, tempItem, "MinLength", obj->spotTranslucentSortingMinLength.value));
kCheck(kXml_SetChild32s(xml, tempItem, "ThreadingMode", obj->spotTranslucentSortingThreadingMode.value));
kCheck(kXml_SetChild64f(xml, item, "CameraGainAnalog", obj->cameraGainAnalog.value));
kCheck(kXml_SetChild64f(xml, item, "CameraGainDigital", obj->cameraGainDigital.value));
kCheck(kXml_SetChild64f(xml, item, "DynamicSensitivity", obj->dynamicSensitivity.value));
kCheck(kXml_SetChild32u(xml, item, "DynamicThreshold", obj->dynamicThreshold.value));
kCheck(kXml_SetChild32u(xml, item, "GammaType", obj->gammaType.value));
kCheck(kXml_SetChildBool(xml, item, "SensitivityCompensationEnabled", obj->sensitivityCompensationEnabled.value));
kCheck(kXml_SetChild32u(xml, item, "SurfaceEncoding", obj->encoding.value));
kCheck(kXml_SetChild32s(xml, item, "SurfacePhaseFilter", obj->phaseFilter));
kCheck(kXml_SetChild32u(xml, item, "ContrastThreshold", obj->contrastThreshold.value));
//Forwards Compatibility
kCheck(GoUtils_XmlMerge(obj->xml, obj->xmlItem, xml, item));
return kOK;
}
GoFx(kStatus) GoAdvanced_SetType(GoAdvanced advanced, GoAdvancedType type)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
obj->type = type;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(GoAdvancedType) GoAdvanced_Type(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->type;
}
GoFx(GoAdvancedType) GoAdvanced_TypeSystemValue(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->typeSystemValue;
}
GoFx(kBool) GoAdvanced_IsTypeUsed(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->typeUsed;
}
GoFx(kStatus) GoAdvanced_SetSpotThreshold(GoAdvanced advanced, k32u value)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
kCheckArgs(value >= obj->spotThreshold.min && value <= obj->spotThreshold.max);
obj->spotThreshold.value = value;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(k32u) GoAdvanced_SpotThreshold(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotThreshold.value;
}
GoFx(k32u) GoAdvanced_SpotThresholdLimitMin(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotThreshold.min;
}
GoFx(k32u) GoAdvanced_SpotThresholdLimitMax(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotThreshold.max;
}
GoFx(kBool) GoAdvanced_IsSpotThresholdUsed(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotThreshold.enabled;
}
GoFx(k32u) GoAdvanced_SpotThresholdSystemValue(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotThreshold.systemValue;
}
GoFx(kStatus) GoAdvanced_SetSpotWidthMax(GoAdvanced advanced, k32u value)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
kCheckArgs(value >= obj->spotWidthMax.min && value <= obj->spotWidthMax.max);
obj->spotWidthMax.value = value;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(k32u) GoAdvanced_SpotWidthMax(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotWidthMax.value;
}
GoFx(k32u) GoAdvanced_SpotWidthMaxLimitMin(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotWidthMax.min;
}
GoFx(k32u) GoAdvanced_SpotWidthMaxLimitMax(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotWidthMax.max;
}
GoFx(kBool) GoAdvanced_IsSpotWidthMaxUsed(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotWidthMax.enabled;
}
GoFx(k32u) GoAdvanced_SpotWidthMaxSystemValue(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotWidthMax.systemValue;
}
GoFx(kStatus) GoAdvanced_SetSpotSelectionType(GoAdvanced advanced, GoSpotSelectionType type)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
obj->spotSelectionType = type;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(GoSpotSelectionType) GoAdvanced_SpotSelectionType(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotSelectionType;
}
GoFx(kBool) GoAdvanced_IsSpotSelectionTypeUsed(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotSelectionTypeUsed;
}
GoFx(GoSpotSelectionType) GoAdvanced_SpotSelectionTypeSystemValue(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->systemSpotSelectionType;
}
GoFx(k32u) GoAdvanced_SpotContinuityMinimumSegmentSize(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotContinuitySortingMinimumSegmentSize;
}
GoFx(kStatus) GoAdvanced_SetSpotContinuityMinimumSegmentSize(GoAdvanced advanced, k32u value)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
obj->spotContinuitySortingMinimumSegmentSize = value;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(k32u) GoAdvanced_SpotContinuitySearchWindowX(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotContinuitySortingSearchWindowX;
}
GoFx(kStatus) GoAdvanced_SetSpotContinuitySearchWindowX(GoAdvanced advanced, k32u value)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
obj->spotContinuitySortingSearchWindowX = value;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(k32u) GoAdvanced_SpotContinuitySearchWindowY(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotContinuitySortingSearchWindowY;
}
GoFx(kStatus) GoAdvanced_SetSpotContinuitySearchWindowY(GoAdvanced advanced, k32u value)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
obj->spotContinuitySortingSearchWindowY = value;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(kStatus) GoAdvanced_SetSpotTranslucentOpaqueWidth(GoAdvanced advanced, k32u value)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
kCheckArgs(value >= obj->spotTranslucentSortingOpaqueWidth.min && value <= obj->spotTranslucentSortingOpaqueWidth.max);
obj->spotTranslucentSortingOpaqueWidth.value = value;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(k32u) GoAdvanced_SpotTranslucentOpaqueWidth(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingOpaqueWidth.value;
}
GoFx(k32u) GoAdvanced_SpotTranslucentOpaqueWidthLimitMin(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingOpaqueWidth.min;
}
GoFx(k32u) GoAdvanced_SpotTranslucentOpaqueWidthLimitMax(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingOpaqueWidth.max;
}
GoFx(kBool) GoAdvanced_IsSpotTranslucentOpaqueWidthUsed(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingOpaqueWidth.enabled;
}
GoFx(k32u) GoAdvanced_SpotTranslucentOpaqueWidthSystemValue(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingOpaqueWidth.systemValue;
}
GoFx(kStatus) GoAdvanced_SetSpotTranslucentTranslucentWidth(GoAdvanced advanced, k32u value)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
kCheckArgs(value >= obj->spotTranslucentSortingTranslucentWidth.min && value <= obj->spotTranslucentSortingTranslucentWidth.max);
obj->spotTranslucentSortingTranslucentWidth.value = value;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(k32u) GoAdvanced_SpotTranslucentTranslucentWidth(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingTranslucentWidth.value;
}
GoFx(k32u) GoAdvanced_SpotTranslucentTranslucentWidthLimitMin(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingTranslucentWidth.min;
}
GoFx(k32u) GoAdvanced_SpotTranslucentTranslucentWidthLimitMax(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingTranslucentWidth.max;
}
GoFx(kBool) GoAdvanced_IsSpotTranslucentTranslucentWidthUsed(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingTranslucentWidth.enabled;
}
GoFx(k32u) GoAdvanced_SpotTranslucentTranslucentWidthSystemValue(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingTranslucentWidth.systemValue;
}
GoFx(kStatus) GoAdvanced_SetSpotTranslucentMinimumLength(GoAdvanced advanced, k32u value)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
kCheckArgs(value >= obj->spotTranslucentSortingMinLength.min && value <= obj->spotTranslucentSortingMinLength.max);
obj->spotTranslucentSortingMinLength.value = value;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(k32u) GoAdvanced_SpotTranslucentMinimumLength(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingMinLength.value;
}
GoFx(k32u) GoAdvanced_SpotTranslucentMinimumLengthLimitMin(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingMinLength.min;
}
GoFx(k32u) GoAdvanced_SpotTranslucentMinimumLengthLimitMax(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingMinLength.max;
}
GoFx(kBool) GoAdvanced_IsSpotTranslucentMinimumLengthUsed(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingMinLength.enabled;
}
GoFx(k32u) GoAdvanced_SpotTranslucentMinimumLengthSystemValue(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingMinLength.systemValue;
}
GoFx(kSize) GoAdvanced_SpotTranslucentThreadingModeOptionCount(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return kArrayList_Count(obj->spotTranslucentSortingThreadingModeOptions);
}
GoFx(GoTranslucentThreadingMode) GoAdvanced_SpotTranslucentThreadingModeOptionAt(GoAdvanced advanced, kSize index)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
kAssert(index < GoAdvanced_SpotTranslucentThreadingModeOptionCount(advanced));
return kArrayList_AsT(obj->spotTranslucentSortingThreadingModeOptions, index, GoTranslucentThreadingMode);
}
GoFx(kStatus) GoAdvanced_SetSpotTranslucentThreadingMode(GoAdvanced advanced, GoTranslucentThreadingMode mode)
{
kObj(GoAdvanced, advanced);
kBool isModeValid = kFALSE;
GoTranslucentThreadingMode* threadingMode;
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
for (kSize i = 0; i < kArrayList_Count(obj->spotTranslucentSortingThreadingModeOptions); i++)
{
threadingMode = kArrayList_AtT(obj->spotTranslucentSortingThreadingModeOptions, i, GoTranslucentThreadingMode);
if (*threadingMode == mode)
{
isModeValid = kTRUE;
break;
}
}
kCheckArgs(isModeValid);
obj->spotTranslucentSortingThreadingMode.value = mode;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(GoTranslucentThreadingMode) GoAdvanced_SpotTranslucentThreadingMode(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingThreadingMode.value;
}
GoFx(kBool) GoAdvanced_IsSpotTranslucentThreadingModeUsed(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingThreadingMode.enabled;
}
GoFx(GoTranslucentThreadingMode) GoAdvanced_SpotTranslucentThreadingModeSystemValue(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->spotTranslucentSortingThreadingMode.systemValue;
}
GoFx(kStatus) GoAdvanced_SetCameraGainAnalog(GoAdvanced advanced, k64f value)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
kCheckArgs(value >= obj->cameraGainAnalog.min && value <= obj->cameraGainAnalog.max);
obj->cameraGainAnalog.value = value;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(k64f) GoAdvanced_CameraGainAnalog(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->cameraGainAnalog.value;
}
GoFx(k64f) GoAdvanced_CameraGainAnalogLimitMin(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->cameraGainAnalog.min;
}
GoFx(k64f) GoAdvanced_CameraGainAnalogLimitMax(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->cameraGainAnalog.max;
}
GoFx(kBool) GoAdvanced_IsCameraGainAnalogUsed(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->cameraGainAnalog.enabled;
}
GoFx(k64f) GoAdvanced_CameraGainAnalogSystemValue(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->cameraGainAnalog.systemValue;
}
GoFx(kStatus) GoAdvanced_SetCameraGainDigital(GoAdvanced advanced, k64f value)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
kCheckArgs(value >= obj->cameraGainDigital.min && value <= obj->cameraGainDigital.max);
obj->cameraGainDigital.value = value;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(k64f) GoAdvanced_CameraGainDigital(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->cameraGainDigital.value;
}
GoFx(k64f) GoAdvanced_CameraGainDigitalLimitMin(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->cameraGainDigital.min;
}
GoFx(k64f) GoAdvanced_CameraGainDigitalLimitMax(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->cameraGainDigital.max;
}
GoFx(kBool) GoAdvanced_IsCameraGainDigitalUsed(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->cameraGainDigital.enabled;
}
GoFx(k64f) GoAdvanced_CameraGainDigitalSystemValue(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->cameraGainDigital.systemValue;
}
GoFx(kStatus) GoAdvanced_SetDynamicSensitivity(GoAdvanced advanced, k64f value)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
kCheckArgs(value >= obj->dynamicSensitivity.min && value <= obj->dynamicSensitivity.max);
obj->dynamicSensitivity.value = value;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(k64f) GoAdvanced_DynamicSensitivity(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->dynamicSensitivity.value;
}
GoFx(k64f) GoAdvanced_DynamicSensitivityLimitMin(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->dynamicSensitivity.min;
}
GoFx(k64f) GoAdvanced_DynamicSensitivityLimitMax(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->dynamicSensitivity.max;
}
GoFx(kBool) GoAdvanced_IsDynamicSensitivityUsed(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->dynamicSensitivity.enabled;
}
GoFx(k64f) GoAdvanced_DynamicSensitivitySystemValue(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->dynamicSensitivity.systemValue;
}
GoFx(kStatus) GoAdvanced_SetDynamicThreshold(GoAdvanced advanced, k32u value)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
kCheckArgs(value >= obj->dynamicThreshold.min && value <= obj->dynamicThreshold.max);
obj->dynamicThreshold.value = value;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(k32u) GoAdvanced_DynamicThreshold(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->dynamicThreshold.value;
}
GoFx(k32u) GoAdvanced_DynamicThresholdLimitMin(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->dynamicThreshold.min;
}
GoFx(k32u) GoAdvanced_DynamicThresholdLimitMax(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->dynamicThreshold.max;
}
GoFx(kBool) GoAdvanced_IsDynamicThresholdUsed(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->dynamicThreshold.enabled;
}
GoFx(k32u) GoAdvanced_DynamicThresholdSystemValue(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->dynamicThreshold.systemValue;
}
GoFx(kStatus) GoAdvanced_SetGammaType(GoAdvanced advanced, GoGammaType value)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
obj->gammaType.value = value;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(GoGammaType) GoAdvanced_GammaType(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->gammaType.value;
}
GoFx(kBool) GoAdvanced_IsGammaTypeUsed(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->gammaType.enabled;
}
GoFx(GoGammaType) GoAdvanced_GammaTypeSystemValue(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->gammaType.systemValue;
}
GoFx(kStatus) GoAdvanced_EnableSensitivityCompensation(GoAdvanced advanced, kBool value)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
obj->sensitivityCompensationEnabled.value = value;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(kBool) GoAdvanced_SensitivityCompensationEnabled(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->sensitivityCompensationEnabled.value;
}
GoFx(kBool) GoAdvanced_IsSensitivityCompensationEnabledUsed(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->sensitivityCompensationEnabled.enabled;
}
GoFx(kBool) GoAdvanced_SensitivityCompensationEnabledSystemValue(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->sensitivityCompensationEnabled.systemValue;
}
GoFx(kSize) GoAdvanced_SpotSelectionTypeOptionCount(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return kArrayList_Count(obj->spotSelectionTypeOptions);
}
GoFx(GoSpotSelectionType) GoAdvanced_SpotSelectionTypeOptionAt(GoAdvanced advanced, kSize index)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
kAssert(index < GoAdvanced_SpotSelectionTypeOptionCount(advanced));
return kArrayList_AsT(obj->spotSelectionTypeOptions, index, GoSpotSelectionType);
}
GoFx(kStatus) GoAdvanced_SetSurfaceEncoding(GoAdvanced advanced, GoSurfaceEncoding encoding)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
obj->encoding.value = encoding;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(GoSurfaceEncoding) GoAdvanced_SurfaceEncoding(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->encoding.value;
}
GoFx(kBool) GoAdvanced_IsSurfaceEncodingUsed(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->encoding.enabled;
}
GoFx(GoSurfaceEncoding) GoAdvanced_SurfaceEncodingSystemValue(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->encoding.systemValue;
}
GoFx(kStatus) GoAdvanced_SetSurfacePhaseFilter(GoAdvanced advanced, GoSurfacePhaseFilter phaseFilter)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
obj->phaseFilter = phaseFilter;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(GoSurfacePhaseFilter) GoAdvanced_SurfacePhaseFilter(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->phaseFilter;
}
GoFx(kStatus) GoAdvanced_SetContrastThreshold(GoAdvanced advanced, k32u value)
{
kObj(GoAdvanced, advanced);
kCheckState(GoSensor_IsConfigurable(obj->sensor));
kCheck(GoSensor_CacheConfig(obj->sensor));
kCheckArgs(value >= obj->contrastThreshold.min && value <= obj->contrastThreshold.max);
obj->contrastThreshold.value = value;
kCheck(GoSensor_SetConfigModified(obj->sensor));
return kOK;
}
GoFx(k32u) GoAdvanced_ContrastThreshold(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->contrastThreshold.value;
}
GoFx(k32u) GoAdvanced_ContrastThresholdLimitMin(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->contrastThreshold.min;
}
GoFx(k32u) GoAdvanced_ContrastThresholdLimitMax(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->contrastThreshold.max;
}
GoFx(kBool) GoAdvanced_IsContrastThresholdUsed(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->contrastThreshold.enabled;
}
GoFx(k32u) GoAdvanced_ContrastThresholdSystemValue(GoAdvanced advanced)
{
kObj(GoAdvanced, advanced);
GoSensor_SyncConfig(obj->sensor);
return obj->contrastThreshold.systemValue;
}