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

146 lines
7.5 KiB
C#

/*
* Copyright (c) 2025 LG Electronics Inc.
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
*/
using Aurora.Api;
using System;
using System.Reactive.Linq;
namespace VisionCommon {
public class VisionEventId {
// Common
public static string SHOW_FOV_CAMERA_VIEW_WINDOW = "SHOW_FOV_CAMERA_VIEW_WINDOW";
public static string SHOW_CAM_DEVICE_SETTING_WINDOW = "SHOW_CAM_DEVICE_SETTING_WINDOW";
public static string SHOW_REGISTER_PATTERN_WINDOW = "SHOW_REGISTER_PATTERN_WINDOW";
public static string SHOW_PATTERN_SETTING_WINDOW = "SHOW_PATTERN_SETTING_WINDOW";
public static string SHOW_PATTERN_SETTING_WINDOW_FORCE_OK = "SHOW_PATTERN_SETTING_WINDOW_FORCE_OK";
// Camera
public static string UPDATE_GRAB_IMAGE_BUFFER = "CAMERA_UPDATE_GRAB_IMAGE_BUFFER";
// Pattern
public static string REQUEST_PATTERN_FORCE_OK = "REQUEST_PATTERN_FORCE_OK";
// Vision UI Update
public static string UPDATE_CAL_SUB_SEQ_LOG = "UPDATE_CAL_SUB_SEQ_LOG";
// Vision Setup
public static string NOTIFY_CENTERTUNING_COMPLETED = "NOTIFY_CENTERTUNING_COMPLETED";
public static string NOTIFY_VISION_REPEAT_SAVE_PARAMS = "NOTIFY_VISION_REPEAT_SAVE_PARAMS";
// Update Proc Result
public static string UPDATE_PATTERN_RESULT = "UPDATE_PATTERN_RESULT";
public static string UPDATE_PATTERN_RESULTS = "UPDATE_PATTERN_RESULTS";
public static string UPDATE_PATTERN_DISTANCE_RESULTS = "UPDATE_PATTERN_DISTANCE_RESULTS";
public static string UPDATE_ALIGN_RESULT = "UPDATE_ALIGN_RESULT";
public static string UPDATE_ALIGN_RESULTS = "UPDATE_ALIGN_RESULTS";
public static string UPDATE_BCR_RESULT = "UPDATE_BCR_RESULT";
public static string UPDATE_ATTACH_INSP_RESULT = "UPDATE_ATTACH_INSP_RESULT";
// Update Setup Result
public static string CLEAR_AUTO_FOCUS_LOG = "CLEAR_AUTO_FOCUS_LOG";
public static string UPDATE_AUTO_FOCUS_LOG = "UPDATE_AUTO_FOCUS_LOG";
public static string UPDATE_AUTO_FOCUS_BEST_POS = "UPDATE_AUTO_FOCUS_BEST_POS";
public static string UPDATE_VISION_REPEAT_LOG = "UPDATE_VISION_REPEAT_LOG";
// Vision Image Test
public static string CLOSE_VISION_IMAGE_TEST = "CLOSE_VISION_IMAGE_TEST";
// Save Child Image Buffer Setting
public static string SAVE_CHILD_IMAGE_SETTING = "SAVE_CHILD_IMAGE_SETTING";
// 다른 레시피/모델로 변경 및 항목 변경
public static IObservable<EventMessage> GetRecipeUpdateObservable() {
var visionSetting = VisionSettingManager.VisionSetting;
if (visionSetting.RecipeModelType == eRecipeModelType.AuroraModel) {
return Observable.Merge(
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_RECIPE_ACTIVATED),
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_MODEL_NAME_CHANGED),
//VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_MODEL_RELOADED),
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_MODEL_ITEM_CHANGED))
.Where(msg => CheckEventParam(msg));
}
else if (visionSetting.RecipeModelType == eRecipeModelType.AuroraIngredient) {
return Observable.Merge(
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_INGREDIENT_ACTIVATED),
//VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_INGREDIENT_RELOADED),
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_INGREDIENT_ITEM_CHAGNED))
.Where(msg => CheckEventParam(msg));
}
else {
return Observable.Merge(
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_RECIPE_ACTIVATED),
//VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_RECIPE_RELOADED),
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_RECIPE_ITEM_CHANGED))
.Where(msg => CheckEventParam(msg));
}
}
// 다른 레시피/모델로 변경
public static IObservable<EventMessage> GetRecipeActivatedObservable() {
var visionSetting = VisionSettingManager.VisionSetting;
if (visionSetting.RecipeModelType == eRecipeModelType.AuroraModel) {
return Observable.Merge(
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_RECIPE_ACTIVATED),
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_MODEL_NAME_CHANGED))
.Where(msg => CheckEventParam(msg));
}
else if (visionSetting.RecipeModelType == eRecipeModelType.AuroraIngredient) {
return VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_INGREDIENT_ACTIVATED)
.Where(msg => CheckEventParam(msg));
}
else {
return Observable.Merge(
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_RECIPE_ACTIVATED))
.Where(msg => CheckEventParam(msg));
}
}
// 레시피/모델 항목 변경
public static IObservable<EventMessage> GetRecipeItemChangedObservable() {
var visionSetting = VisionSettingManager.VisionSetting;
if (visionSetting.RecipeModelType == eRecipeModelType.AuroraModel) {
return Observable.Merge(
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_MODEL_RELOADED),
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_MODEL_ITEM_CHANGED))
.Where(msg => CheckEventParam(msg));
}
else if (visionSetting.RecipeModelType == eRecipeModelType.AuroraIngredient) {
return Observable.Merge(
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_INGREDIENT_RELOADED),
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_INGREDIENT_ITEM_CHAGNED))
.Where(msg => CheckEventParam(msg));
}
else {
return Observable.Merge(
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_RECIPE_RELOADED),
VisionEnv.AuroraEnv.EventObservable.AsObservable(AuroraSysEvent.SYS_RECIPE_ITEM_CHANGED))
.Where(msg => CheckEventParam(msg));
}
}
private static bool IsActivatedParam(EventMessage msg) {
return (string)msg.Param == string.Empty;
}
private static bool CheckEventParam(EventMessage msg) {
if (msg.Param is RecipeInfo recipeInfo)
return true;
else if (msg.Param is string) {
return (string)msg.Param == string.Empty || (string)msg.Param == VisionKeys.VisionRecipeKey;
}
else if (msg.Param is ValueTuple<string, string> param) {
if (msg.From.Contains("Model")) {
// Model
return true;
}
else {
// Ingredient
return param.Item1 == VisionKeys.VisionRecipeKey;
}
}
else
return false;
}
}
}