62 lines
1.3 KiB
C#
62 lines
1.3 KiB
C#
using RobotApp.Interfaces;
|
|
using RobotApp.VDA5050.Order;
|
|
|
|
namespace RobotApp.Services.Robot.Navigation;
|
|
|
|
public class NavigationController(Logger<NavigationController> Logger) : INavigation
|
|
{
|
|
public NavigationState State { get; private set; } = NavigationState.None;
|
|
public bool Driving { get; private set; }
|
|
|
|
protected const int CycleHandlerMilliseconds = 20;
|
|
private WatchTimer<NavigationController>? NavigationTimer;
|
|
|
|
protected Node[] Nodes = [];
|
|
protected Edge[] Edges = [];
|
|
|
|
protected void HandleNavigationStart()
|
|
{
|
|
NavigationTimer = new(CycleHandlerMilliseconds, NavigationHandler, Logger);
|
|
NavigationTimer.Start();
|
|
}
|
|
|
|
protected void HandleNavigationStop()
|
|
{
|
|
NavigationTimer?.Dispose();
|
|
}
|
|
|
|
protected virtual void NavigationHandler() { }
|
|
|
|
public void CancelMovement()
|
|
{
|
|
}
|
|
|
|
public void Move(Node[] nodes, Edge[] edges)
|
|
{
|
|
Nodes = nodes;
|
|
Edges = edges;
|
|
State = NavigationState.Initializing;
|
|
}
|
|
|
|
public void MoveStraight(double x, double y)
|
|
{
|
|
}
|
|
|
|
public void Paused()
|
|
{
|
|
}
|
|
|
|
public void Resume()
|
|
{
|
|
}
|
|
|
|
public void Rotate(double angle)
|
|
{
|
|
}
|
|
|
|
public void UpdateOrder(int lastBaseSequence)
|
|
{
|
|
State = NavigationState.Initialized;
|
|
}
|
|
}
|