IProtocolService.cs 2.02 KB
using Rcs.Application.Common;
using Rcs.Domain.Entities;
using Rcs.Domain.Models.VDA5050;

namespace Rcs.Application.Services.Protocol;

/// <summary>
/// 协议服务统一接口
/// 定义不同协议类型(VDA5050、自定义协议等)的通用操作
/// @author zzy
/// </summary>
public interface IProtocolService
{
    /// <summary>
    /// 支持的协议类型
    /// </summary>
    ProtocolType ProtocolType { get; }

    /// <summary>
    /// 发送任务指令
    /// </summary>
    /// <param name="robot">机器人实体</param>
    /// <param name="task">任务</param>
    /// <param name="ct">取消令牌</param>
    Task<ApiResponse> SendOrderAsync(Robot robot, RobotTask task,  CancellationToken ct = default);

    /// <summary>
    /// 取消指定订单
    /// </summary>
    /// <param name="robot">机器人实体</param>
    /// <param name="orderId">订单ID</param>
    /// <param name="ct">取消令牌</param>
    Task CancelOrderAsync(Robot robot, string? orderId, CancellationToken ct = default);

    /// <summary>
    /// 根据机器人取消任务
    /// </summary>
    /// <param name="robot">机器人实体</param>
    /// <param name="ct">取消令牌</param>
    Task CancelRobotTasksAsync(Robot robot, CancellationToken ct = default);

    /// <summary>
    /// 发送即时动作指令
    /// </summary>
    /// <param name="robot">机器人实体</param>
    /// <param name="actions">即时动作</param>
    /// <param name="ct">取消令牌</param>
    Task SendInstantActionAsync(Robot robot, InstantAction actions, CancellationToken ct = default);

    /// <summary>
    /// 复位机器人
    /// </summary>
    /// <param name="robot">机器人实体</param>
    /// <param name="ct">取消令牌</param>
    Task ResetRobotAsync(Robot robot, CancellationToken ct = default);

    /// <summary>
    /// 确认异常
    /// </summary>
    /// <param name="robot">机器人实体</param>
    /// <param name="ct">取消令牌</param>
    Task ConfirmExceptionAsync(Robot robot, CancellationToken ct = default);
}