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

106 lines
3.9 KiB
C#

/*
* Copyright (c) 2025 LG Electronics Inc.
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
*/
using Aurora.Api;
using Aurora.Api.DataType;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reactive.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VisionCommon {
public abstract class CameraAgentBase {
protected FovInfo _FovInfo;
protected CameraBase _CamDev;
protected CamConfig _CamConfig;
public CameraAgentBase(FovInfo fovInfo) {
_FovInfo = fovInfo;
UpdateRecipe();
SetObservable();
}
protected void SetObservable() {
var observable = VisionEventId.GetRecipeUpdateObservable();
observable.Subscribe(_ => UpdateRecipe()); ;
}
protected void UpdateRecipe() {
_FovInfo = VisionRecipeManager.GetFovInfo(_FovInfo);
if (_FovInfo == null) {
return;
}
var camRecipe = VisionRecipeManager.GetCamRecipe(_FovInfo);
_CamDev = VisionEnv.AuroraEnv.DeviceManager[camRecipe.CamId.ToString()] as CameraBase;
_CamConfig = VisionEnv.AuroraEnv.DeviceManager.GetDeviceConfig(camRecipe.CamId.ToString()) as CamConfig;
}
public CameraBase GetDevice() => _CamDev;
public abstract int GetGrabImageFromBuffer(ICameraDisplay cameraDisplay, ref object image);
public abstract int GrabSync(ICameraDisplay cameraDisplay, ref object image);
public abstract void StartLive(ICameraDisplay cameraDisplay);
public abstract void StopLive();
public abstract bool IsLiveRunning();
public abstract ImageSize GetImageSize();
public abstract object CloneImageBuffer();
public abstract double GetExposure();
public abstract int SetExposure(double exposureTime_ms);
public abstract int ResetFlipAndRotation(FlipAndRotation flipAndRotation);
#region Activate & Deactivate
public abstract int Activate();
public abstract int Deactivate();
#endregion
#region For Flying
/// <summary>
/// 플라잉 시작
/// </summary>
/// <param name="fovInfo">FOV 정보</param>
/// <param name="param">추가 파라미터</param>
/// <returns>성공 유무</returns>
public abstract int StartFlying(FovInfo fovInfo, object param = null);
/// <summary>
/// 플라잉 종료
/// </summary>
/// <param name="param">추가 파라미터</param>
/// <returns>성공 유무</returns>
public abstract int StopFlying(object param = null);
/// <summary>
/// 플라잉 상태 체크
/// </summary>
/// <returns>성공 유무</returns>
public abstract bool IsFlyingRunning();
/// <summary>
/// 현재 플라잉 인덱스 가져오기
/// </summary>
/// <returns>현재 플라잉 인덱스</returns>
public abstract int GetCurrentFlyingIdx();
/// <summary>
/// 플라잉 이미지 가져오기
/// </summary>
/// <param name="flyingIdx">플라잉 인덱스</param>
/// <returns>플라잉 이미지</returns>
public abstract object GetFlyingImage(int flyingIdx);
/// <summary>
/// 플라잉 이미지 전체 가져오기
/// </summary>
/// <returns>플라잉 이미지 전체</returns>
public abstract object[] GetFlyingImages();
/// <summary>
/// 플라잉 합성(원장) 이미지 가져오기. *원장 : Child 이미지를 조합하여 한 장으로 만듬
/// </summary>
/// <returns>플아잉 합성(원장) 이미지</returns>
public abstract object GetParentImage();
#endregion
#region For Child Image
public abstract int VerifyChildImage(ICameraDisplay cameraDisplay, ref object image);
#endregion
}
}