using RobotNet10.RobotApp.Interfaces;
using RobotNet10.Shared.Sensor;
namespace RobotNet10.RobotApp.Devices;
///
/// Interface cho thiết bị RF Handle (Remote Control Handle) - tay điều khiển RF với joystick
///
public interface IRfHandle
{
///
/// Event được trigger khi dữ liệu được cập nhật
///
event Action? Updated;
// ====================== STATES ===========================
DateTime LastUpdateTime { get; }
int Heartbeat { get; }
bool RemoteReady { get; }
bool EStop { get; }
bool LiftUp { get; }
bool LiftDown { get; }
bool RotateLeft { get; }
bool RotateRight { get; }
bool ModeSelect { get; }
bool Enable { get; }
int Speed { get; }
double Linear { get; }
double Angular { get; }
///
/// Current RF Handle mode (Default, Maintenance, Override, None)
///
RFMode Mode { get; }
///
/// Joy state hiện tại được cache (thread-safe)
///
Joy? CurrentJoyState { get; }
///
/// Đọc joy state từ thiết bị
///
Task ReadJoyStateAsync(CancellationToken cancellationToken = default);
}