Files
Denso/srcs/RobotNet10/RobotApp/RobotNet10.RobotApp/Modules/ILiftModule.cs
2026-07-03 16:31:37 +07:00

85 lines
2.4 KiB
C#

namespace RobotNet10.RobotApp.Modules;
/// <summary>
/// Interface cho Lift Module - Module điều khiển nâng hạ
/// </summary>
public interface ILiftModule
{
/// <summary>
/// Nâng lên (lift up)
/// </summary>
Task LiftUpAsync(CancellationToken cancellationToken = default);
/// <summary>
/// Hạ xuống (lift down)
/// </summary>
Task LiftDownAsync(CancellationToken cancellationToken = default);
/// <summary>
/// Dừng nâng/hạ ngay lập tức (khi đang di chuyển)
/// </summary>
Task LiftStopAsync(CancellationToken cancellationToken = default);
/// <summary>
/// Di chuyển đến vị trí cụ thể
/// </summary>
/// <param name="position">Vị trí target (encoder counts)</param>
Task LiftToPositionAsync(int position, CancellationToken cancellationToken = default);
/// <summary>
/// Lấy vị trí hiện tại
/// </summary>
Task<int> GetCurrentPositionAsync(CancellationToken cancellationToken = default);
/// <summary>
/// Kiểm tra module đã homed chưa
/// </summary>
Task<bool> IsHomedAsync(CancellationToken cancellationToken = default);
/// <summary>
/// Thực hiện homing thủ công (nếu cần gọi lại sau khi fault hoặc thay đổi cơ khí)
/// </summary>
Task HomeAsync(CancellationToken cancellationToken = default);
/// <summary>
/// Chuyển chiều cao (m) sang vị trí encoder. Dùng cho action liftCameraByHeight.
/// </summary>
/// <param name="heightM">Chiều cao theo mét (trong khoảng MinHeightM..MaxHeightM từ config)</param>
/// <returns>Vị trí encoder tương ứng</returns>
int GetPositionFromHeightM(double heightM);
bool Enable { get; }
/// <summary>
/// Kiểm tra module đã sẵn sàng chưa (initialized và homed)
/// </summary>
bool IsReady { get; }
/// <summary>
/// Lấy trạng thái hiện tại của module
/// </summary>
LiftModuleState State { get; }
LiftPosition Position { get; }
}
public enum LiftPosition
{
Bottom,
Middle,
Top,
}
/// <summary>
/// Trạng thái của Lift Module
/// </summary>
public enum LiftModuleState
{
Uninitialized,
Initializing,
Homing,
Ready,
Moving,
Error
}