Files
I150/srcs/RobotNet10/RobotApp/RobotNet10.RobotApp/Modules/IRotationModule.cs
2026-07-03 16:37:12 +07:00

55 lines
1.6 KiB
C#

namespace RobotNet10.RobotApp.Modules;
/// <summary>
/// Interface cho Rotation Module - Module điều khiển xoay
/// </summary>
public interface IRotationModule
{
/// <summary>
/// Xoay đến góc cụ thể (absolute angle in degrees)
/// </summary>
/// <param name="angleDegrees">Góc target (degrees)</param>
Task RotateToAngleAsync(double angleDegrees, CancellationToken cancellationToken = default);
/// <summary>
/// Xoay một góc offset (relative angle in degrees)
/// </summary>
/// <param name="angleOffsetDegrees">Góc offset cần xoay (degrees, positive = clockwise, negative = counter-clockwise)</param>
Task RotateOffsetAsync(double angleOffsetDegrees, CancellationToken cancellationToken = default);
/// <summary>
/// Lấy góc hiện tại (degrees)
/// </summary>
Task<double> GetCurrentAngleAsync(CancellationToken cancellationToken = default);
/// <summary>
/// Kiểm tra module đã homed chưa
/// </summary>
Task<bool> IsHomedAsync(CancellationToken cancellationToken = default);
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>
RotationModuleState State { get; }
}
/// <summary>
/// Trạng thái của Rotation Module
/// </summary>
public enum RotationModuleState
{
Uninitialized,
Initializing,
Homing,
Ready,
Moving,
Error
}