99 lines
3.0 KiB
C#
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);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|