2026-01-26 14:51:28 +09:00

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();
}
}
}
}
}