using RobotNet.VDA5050.InstantAction; using RobotNet.VDA5050.Order; using RobotNet10.FleetManager.Script; using RobotNet10.FleetManager.Services.RobotManager.Models; using RobotNet10.Shared; using Action = RobotNet.VDA5050.InstantAction.Action; namespace RobotNet10.FleetManager.Services.RobotController; /// /// Interface for RobotController - instance per robot /// public interface IRobotController : IDisposable { /// /// Robot ID (SerialNumber) /// string RobotId { get; } /// /// Robot data containing all robot information /// RobotData Data { get; } /// /// Whether robot is online (derived from ConnectionState) /// bool IsOnline { get; } /// /// Whether the robot is ready for the order /// bool IsReady { get; } /// /// Move robot to a specific node by NodeName /// Task MoveToNodeAsync(string nodeName, double? angle, CancellationToken cancellationToken = default); /// /// Move robot to a specific node by NodeId (string) /// Task MoveToNodeByIdAsync(string nodeId, double? angle, CancellationToken cancellationToken = default); /// /// Move robot to a specific node by NodeId (Guid) /// Task MoveToNodeByGuidAsync(Guid nodeId, double? angle, CancellationToken cancellationToken = default); /// /// Move the robot to a taget action and execute action /// /// /// /// /// Task MoveToStationAsync(string nodeName, StationAction action, CancellationToken cancellationToken = default); /// /// Send a single instant action to robot /// Task SendInstantActionAsync(Action action, CancellationToken cancellationToken = default); /// /// Send order to robot /// Task SendOrderAsync(OrderMsg order, CancellationToken cancellationToken = default); /// /// Send instant actions message to robot /// Task SendInstantActionsAsync(InstantActionsMsg instantActions, CancellationToken cancellationToken = default); /// /// Request factsheet from robot /// Task RequestFactsheetAsync(CancellationToken cancellationToken = default); /// /// Request state from robot /// Task RequestStateAsync(CancellationToken cancellationToken = default); /// /// Cancel current order /// Task CancelOrderAsync(CancellationToken cancellationToken = default); }