using System;
using System.Collections.Generic;
using System.ComponentModel;
using CommonUsage.Protocols.VDA5050.Objects;
namespace CommonUsage.Protocols.VDA5050.Messages
{
///
/// 6.10 Topic: "state" (from AGV to master control)
/// todo: complete all fields required by VDA5050
///
public class stateMessage
{
public uint headerId;
public string timestamp = "";
public string version = "";
public string manufacturer = "";
public string serialNumber = "";
///
/// Unique order identification of the current order or the previously finished order.
/// The orderId is kept until a new order is received.
/// Empty string (""), if no previous orderId is available.
///
public string orderId = "";
///
/// Order update identification to identify, that an order update has been accepted by the AGV.
/// "0" if no previous orderUpdateId is available.
///
public uint orderUpdatedId = 0;
public string lastNodeId;
public uint lastNodeSequenceId;
///
/// Array of nodeState objects that need to be traversed for fulfilling the order (empty array if idle)
///
public nodeState[] nodeStates = [];
///
/// Array of edgeState objects that need to be traversed for fulfilling the order (empty array if idle)
///
public edgeState[] edgeStates = [];
public agvPosition agvPosition;
public velocity velocity;
public load[] loads = [];
public bool driving;
public bool paused;
public bool newBaseRequest;
public double distanceSinceLastNode;
public batteryState batteryState;
public actionState[] actionStates = Array.Empty();
public string operatingMode = "";
public List errors { get; set; } = new List(); // Array of errorState objects
public info[] information = [];
public safetyState safetyState;
}
}