LanYinWsMessage.cs 4.75 KB
using System.Text.Json.Serialization;

namespace Rcs.Cyaninetech.Models
{
    /// <summary>
    /// WebSocket 订阅请求
    /// @author zzy
    /// </summary>
    public class LanYinWsSubscribeRequest
    {
        [JsonPropertyName("action")]
        public string Action { get; set; } = "subscribe";

        [JsonPropertyName("data")]
        public List<string> Data { get; set; } = new();
    }

    /// <summary>
    /// WebSocket 消息基类
    /// @author zzy
    /// </summary>
    public class LanYinWsMessage
    {
        [JsonPropertyName("type")]
        public string Type { get; set; } = string.Empty;

        [JsonPropertyName("name")]
        public string Name { get; set; } = string.Empty;
    }

    /// <summary>
    /// WebSocket 消息(泛型)
    /// @author zzy
    /// </summary>
    public class LanYinWsMessage<T> : LanYinWsMessage
    {
        [JsonPropertyName("data")]
        public T? Data { get; set; }
    }

    /// <summary>
    /// 机器人状态数据
    /// @author zzy
    /// </summary>
    public class LanYinRobotStatus
    {
        [JsonPropertyName("headerId")]
        public int HeaderId { get; set; }

        [JsonPropertyName("timestamp")]
        public long Timestamp { get; set; }

        [JsonPropertyName("version")]
        public string Version { get; set; } = string.Empty;

        [JsonPropertyName("manufacturer")]
        public string Manufacturer { get; set; } = string.Empty;

        [JsonPropertyName("serialNumber")]
        public string SerialNumber { get; set; } = string.Empty;

        [JsonPropertyName("orderId")]
        public string OrderId { get; set; } = string.Empty;

        [JsonPropertyName("driving")]
        public bool Driving { get; set; }

        [JsonPropertyName("paused")]
        public bool Paused { get; set; }

        [JsonPropertyName("batteryState")]
        public LanYinBatteryState? BatteryState { get; set; }

        [JsonPropertyName("operatingMode")]
        public string OperatingMode { get; set; } = string.Empty;

        [JsonPropertyName("errors")]
        public List<LanYinError> Errors { get; set; } = new();

        [JsonPropertyName("position")]
        public LanYinPosition? Position { get; set; }

        [JsonPropertyName("agvStatus")]
        public string AgvStatus { get; set; } = string.Empty;
    }

    public class LanYinBatteryState
    {
        [JsonPropertyName("batteryCharge")]
        public int BatteryCharge { get; set; }

        [JsonPropertyName("charging")]
        public bool Charging { get; set; }
    }

    public class LanYinError
    {
        [JsonPropertyName("errorType")]
        public string ErrorType { get; set; } = string.Empty;

        [JsonPropertyName("errorLevel")]
        public string ErrorLevel { get; set; } = string.Empty;

        [JsonPropertyName("errorDescription")]
        public string ErrorDescription { get; set; } = string.Empty;
    }

    public class LanYinPosition
    {
        [JsonPropertyName("x")]
        public double X { get; set; }

        [JsonPropertyName("y")]
        public double Y { get; set; }

        [JsonPropertyName("rad")]
        public double Rad { get; set; }
    }

    /// <summary>
    /// 机器人信息数据
    /// @author zzy
    /// </summary>
    public class LanYinRobotInfo
    {
        [JsonPropertyName("id")]
        public string Id { get; set; } = string.Empty;

        [JsonPropertyName("ip")]
        public string Ip { get; set; } = string.Empty;

        [JsonPropertyName("alias")]
        public string Alias { get; set; } = string.Empty;

        [JsonPropertyName("map_id")]
        public string MapId { get; set; } = string.Empty;

        [JsonPropertyName("robot_type")]
        public string RobotType { get; set; } = string.Empty;

        [JsonPropertyName("scheduling_status")]
        public string SchedulingStatus { get; set; } = string.Empty;

        [JsonPropertyName("operation_status")]
        public string OperationStatus { get; set; } = string.Empty;

        [JsonPropertyName("task_status")]
        public string TaskStatus { get; set; } = string.Empty;

        [JsonPropertyName("running_status")]
        public string RunningStatus { get; set; } = string.Empty;

        [JsonPropertyName("current_battery")]
        public int CurrentBattery { get; set; }
        
        [JsonPropertyName("auto_charging")] 
        public bool AutoCharging { get; set; } = false;
        
        [JsonPropertyName("current_task")]
        public string CurrentTask { get; set; } = string.Empty;

        [JsonPropertyName("error_code")]
        public List<int> ErrorCode { get; set; } = new();
    }

    /// <summary>
    /// 机器人实时路径数据
    /// @author zzy
    /// </summary>
    public class LanYinRobotRealtimePath : Dictionary<string, List<List<double>>>
    {
    }
}