package eu.hgross.blaubot.android.wifi; import android.net.ConnectivityManager; import android.net.wifi.WifiManager; import eu.hgross.blaubot.core.Blaubot; import eu.hgross.blaubot.core.BlaubotAdapterConfig; import eu.hgross.blaubot.core.BlaubotUUIDSet; import eu.hgross.blaubot.core.ConnectionStateMachineConfig; import eu.hgross.blaubot.core.IBlaubotAdapter; import eu.hgross.blaubot.core.IBlaubotDevice; import eu.hgross.blaubot.core.acceptor.IBlaubotConnectionAcceptor; import eu.hgross.blaubot.core.connector.IBlaubotConnector; /** * Using ap mode for the acceptor/connector. */ public class BlaubotWifiAdapter implements IBlaubotAdapter { private static final int KING_TIMEOUT_WITHOUT_PEASANTS = 35000; private static final int CROWNING_PREPARATION_TIME_FACTOR = 3; private final ConnectionStateMachineConfig connectionStateMachineConfig; private final BlaubotAdapterConfig adapterConfig; private final BlaubotWifiAcceptor acceptor; private final BlaubotWifiConnector connector; private Blaubot blaubot; public BlaubotWifiAdapter(IBlaubotDevice ownDevice, BlaubotUUIDSet uuidSet, int acceptorPort, WifiManager wifiManager, ConnectivityManager connectivityManager) { this.acceptor = new BlaubotWifiAcceptor(this, ownDevice, uuidSet, wifiManager, connectivityManager, acceptorPort); this.connector = new BlaubotWifiConnector(this, ownDevice, uuidSet, wifiManager, connectivityManager); // config this.adapterConfig = new BlaubotAdapterConfig(); this.connectionStateMachineConfig = new ConnectionStateMachineConfig(); this.connectionStateMachineConfig.setCrowningPreparationTimeout(CROWNING_PREPARATION_TIME_FACTOR * adapterConfig.getKeepAliveInterval()); this.connectionStateMachineConfig.setKingWithoutPeasantsTimeout(KING_TIMEOUT_WITHOUT_PEASANTS); ConnectionStateMachineConfig.validateTimeouts(connectionStateMachineConfig, adapterConfig); } @Override public IBlaubotConnector getConnector() { return this.connector; } @Override public IBlaubotConnectionAcceptor getConnectionAcceptor() { return this.acceptor; } @Override public void setBlaubot(Blaubot blaubotInstance) { this.blaubot = blaubotInstance; } @Override public Blaubot getBlaubot() { return this.blaubot; } @Override public ConnectionStateMachineConfig getConnectionStateMachineConfig() { return connectionStateMachineConfig; } @Override public BlaubotAdapterConfig getBlaubotAdapterConfig() { return adapterConfig; } }