/* * 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 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 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 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 param) { if (msg.From.Contains("Model")) { // Model return true; } else { // Ingredient return param.Item1 == VisionKeys.VisionRecipeKey; } } else return false; } } }