146 lines
7.5 KiB
C#
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;
|
|
}
|
|
}
|
|
} |