Files
BQP/srcs/RobotNet10/FleetManager/RobotNet10.FleetManager/Services/RobotController/IRobotController.cs
2026-07-13 09:25:40 +07:00

99 lines
3.0 KiB
C#

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;
/// <summary>
/// Interface for RobotController - instance per robot
/// </summary>
public interface IRobotController : IDisposable
{
/// <summary>
/// Robot ID (SerialNumber)
/// </summary>
string RobotId { get; }
/// <summary>
/// Robot data containing all robot information
/// </summary>
RobotData Data { get; }
/// <summary>
/// Whether robot is online (derived from ConnectionState)
/// </summary>
bool IsOnline { get; }
/// <summary>
/// Whether the robot is ready for the order
/// </summary>
bool IsReady { get; }
/// <summary>
/// Move robot to a specific node by NodeName
/// </summary>
Task<MessageResult> MoveToNodeAsync(string nodeName, double? angle, CancellationToken cancellationToken = default);
/// <summary>
/// Move robot to a specific node by NodeId (string)
/// </summary>
Task<MessageResult> MoveToNodeByIdAsync(string nodeId, double? angle, CancellationToken cancellationToken = default);
/// <summary>
/// Move robot to a specific node by NodeId (Guid)
/// </summary>
Task<MessageResult> MoveToNodeByGuidAsync(Guid nodeId, double? angle, CancellationToken cancellationToken = default);
/// <summary>
/// Move the robot to a taget action and execute action
/// </summary>
/// <param name="nodeName"></param>
/// <param name="action"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
Task<MessageResult> MoveToStationAsync(string nodeName, StationAction action, CancellationToken cancellationToken = default);
/// <summary>
/// Send a single instant action to robot
/// </summary>
Task<MessageResult> SendInstantActionAsync(Action action, CancellationToken cancellationToken = default);
/// <summary>
/// Send order to robot
/// </summary>
Task<MessageResult> SendOrderAsync(OrderMsg order, CancellationToken cancellationToken = default);
/// <summary>
/// Send instant actions message to robot
/// </summary>
Task<MessageResult> SendInstantActionsAsync(InstantActionsMsg instantActions, CancellationToken cancellationToken = default);
/// <summary>
/// Request factsheet from robot
/// </summary>
Task<MessageResult> RequestFactsheetAsync(CancellationToken cancellationToken = default);
/// <summary>
/// Request state from robot
/// </summary>
Task<MessageResult> RequestStateAsync(CancellationToken cancellationToken = default);
/// <summary>
/// Cancel current order
/// </summary>
Task<MessageResult> CancelOrderAsync(CancellationToken cancellationToken = default);
}