using RobotNet.RobotShares.Dtos; using RobotNet.RobotShares.VDA5050.Factsheet; using RobotNet.RobotShares.VDA5050.FactsheetExtend; using RobotNet.RobotShares.VDA5050.State; using RobotNet.RobotShares.VDA5050.Visualization; using RobotNet.Shares; namespace RobotNet.RobotManager.Services; public interface IRobotController { string SerialNumber { get; } bool IsOnline { get; set; } bool IsWorking { get; } string State { get; } RobotOrderDto OrderState { get; } RobotActionDto[] ActionStates { get; } AutoResetEvent RobotUpdated { get; set; } StateMsg StateMsg { get; set; } VisualizationMsg VisualizationMsg { get; set; } FactSheetMsg FactSheetMsg { get; set; } FactsheetExtendMsg FactsheetExtendMsg { get; set; } NavigationPathEdge[] BasePath { get; } NavigationPathEdge[] FullPath { get; } string[] CurrentZones { get; } void Log(string message, LogLevel level = LogLevel.Information); Task> InstantAction(RobotNet.RobotShares.VDA5050.InstantAction.Action action, bool waittingFisished); Task MoveToNode(string goalName, IDictionary>? actions = null, double? lastAngle = null); Task MoveRandom(List nodes); Task CancelOrder(); Task CancelAction(); void Initialize(double x, double y, double theta); MessageResult Rotate(double angle); MessageResult MoveStraight(double x, double y); void Dispose(); }