60 lines
2.4 KiB
C#
60 lines
2.4 KiB
C#
/*
|
|
* Copyright (c) 2025 LG Electronics Inc.
|
|
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
|
|
*/
|
|
using System;
|
|
using System.Collections.ObjectModel;
|
|
using System.Reactive.Linq;
|
|
using Aurora;
|
|
using Aurora.Api;
|
|
|
|
namespace VisionCommon {
|
|
public class VisionSettingManager {
|
|
public static VisionSetting VisionSetting { get; set; }
|
|
|
|
private static bool _IsInitialized = false;
|
|
|
|
public static void Initialize() {
|
|
if (!_IsInitialized) {
|
|
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_SETTING_CHANGED)
|
|
.Where(msg => (string)msg.Param == VisionKeys.VisionSettingKey).Subscribe(x => UpdateVisionSetting());
|
|
|
|
UpdateVisionSetting();
|
|
_IsInitialized = true;
|
|
}
|
|
}
|
|
|
|
private static void UpdateVisionSetting() {
|
|
VisionSetting = VisionEnv.AuroraEnv.SettingEntry[VisionKeys.VisionSettingKey] as VisionSetting;
|
|
CheckCamPatternSetting();
|
|
}
|
|
|
|
private static void CheckCamPatternSetting() {
|
|
if (_IsInitialized) {
|
|
if (!VisionSetting.UseCamPattern) {
|
|
foreach (var fovInfo in VisionRecipeManager.GetFovInfos()) {
|
|
var fovRecipe = VisionRecipeManager.GetFovRecipe(fovInfo);
|
|
foreach (var procPattern in fovRecipe.PatternRecipe.ProcPatternInfos) {
|
|
if (!procPattern.IsFovPattern) {
|
|
procPattern.IsFovPattern = true;
|
|
procPattern.PatternId = -1;
|
|
}
|
|
}
|
|
if (!fovRecipe.CalFovRecipe.IsFovPattern) {
|
|
fovRecipe.CalFovRecipe.IsFovPattern = true;
|
|
fovRecipe.CalFovRecipe.PatternId = -1;
|
|
}
|
|
if (fovRecipe.FovSetupRecipe.VisionRepeatRecipe != null) {
|
|
if (!fovRecipe.FovSetupRecipe.VisionRepeatRecipe.IsFovPattern) {
|
|
fovRecipe.FovSetupRecipe.VisionRepeatRecipe.IsFovPattern = true;
|
|
fovRecipe.FovSetupRecipe.VisionRepeatRecipe.PatternId = -1;
|
|
}
|
|
}
|
|
}
|
|
RecipeFileManager.SaveVisionRecipe();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|