package com.dronecontrol.socketcontrol.input;
import com.dronecontrol.droneapi.data.NavData;
import com.dronecontrol.droneapi.listeners.NavDataListener;
import com.dronecontrol.socketcontrol.config.Config;
import com.dronecontrol.socketcontrol.input.events.MovementDataListener;
import com.dronecontrol.socketcontrol.input.events.PilotActionListener;
import com.dronecontrol.socketcontrol.input.socket.SocketClient;
import javax.inject.Inject;
public class SocketController implements NavDataListener
{
private final SocketClient socketClient;
private final SocketDataReceiver socketDataReceiver;
private final SocketDataSender socketDataSender;
private final String hostName;
private final Integer port;
@Inject
public SocketController(Config config, SocketClient socketClient, SocketDataReceiver socketDataReceiver, SocketDataSender socketDataSender)
{
this.socketClient = socketClient;
this.socketDataReceiver = socketDataReceiver;
this.socketDataSender = socketDataSender;
hostName = config.getHostName();
port = config.getPort();
}
public void addMovementDataListener(MovementDataListener listener)
{
socketDataReceiver.addMovementDataListener(listener);
}
public void addPilotActionListener(PilotActionListener listener)
{
socketDataReceiver.addPilotActionListener(listener);
}
public void start()
{
socketClient.connect(hostName, port);
socketClient.addDataListener(socketDataReceiver);
}
public void stop()
{
socketClient.removeDataListener(socketDataReceiver);
socketClient.disconnect();
socketDataReceiver.dispose();
}
@Override
public void onNavData(NavData navData)
{
socketDataSender.onNavData(navData);
}
}