/*
* Copyright (c) 2025 LG Electronics Inc.
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
*/
using Aurora;
using Aurora.Api;
using VisionCommon;
using System;
namespace VisionSequence.Pattern {
///
/// FOV별 Grab, Find 메뉴얼 시퀀스들을 사전에 등록하여 사용한다.
///
public class ManualGrabFindSeqManager {
private static Logger _Logger = new Logger(typeof(ManualGrabFindSeqManager).ToString());
///
/// FOV별 Grab, Find 메뉴얼 시퀀스들을 등록한다.
///
/// Aurora 환경 변수
/// Aurora의 SequenceRegister
public static void RegisterSeq(IAuroraEnvironment auroraEnv, SequenceRegister register) {
try {
RegisterManualFindSeq(register);
RegisterManualGrabFindProcSeq(register);
}
catch (Exception e) {
_Logger.FuncE(e.Message);
}
}
private static void RegisterManualFindSeq(SequenceRegister register) {
register(VisionKeys.ManualFindSeqKey, new FindSeq().Builder(VisionKeys.ManualFindSeqKey));
}
private static void RegisterManualGrabFindProcSeq(SequenceRegister register) {
foreach (var fovInfo in VisionRecipeManager.GetFovInfos()) {
var seqName = GetSeqName(fovInfo);
register(seqName, new GrabFindProcSeq().Builder(seqName));
}
}
///
/// 얼라인 시퀀스를 얻어온다.
///
/// FOV 키 정보
/// 시퀀스
public static ISequence GetSeq(FovInfo fovInfo) {
var seqName = GetSeqName(fovInfo);
return VisionEnv.AuroraEnv.SequenceEntry[seqName];
}
///
/// 시퀀스 이름을 얻어온다.
///
/// FOV 키 정보
/// 시퀀스 이름
public static string GetSeqName(FovInfo fovInfo) {
return VisionKeys.ManualGrabFindProcSeqKey + "_" + fovInfo.GetKey();
}
}
}