package eu.hgross.blaubot.android.wifip2p;
import android.net.wifi.WifiManager;
import android.net.wifi.p2p.WifiP2pManager;
import android.net.wifi.p2p.WifiP2pManager.Channel;
import java.util.HashSet;
import java.util.Set;
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.acceptor.IBlaubotConnectionAcceptor;
import eu.hgross.blaubot.core.connector.IBlaubotConnector;
/**
* Adapter implementation for WIFI Direct on android.
*
* @author Henning Gross {@literal (mail.to@henning-gross.de)}
*
*/
public class BlaubotWifiP2PAdapter implements IBlaubotAdapter {
private BlaubotUUIDSet uuidSet;
private IBlaubotConnectionAcceptor acceptor;
private IBlaubotConnector connector;
private WifiP2pManager wifiP2pManager;
private Set<BlaubotWifiP2PDevice> knownDevices;
private Blaubot blaubot;
private ConnectionStateMachineConfig connectionStateMachineConfig;
private BlaubotAdapterConfig adapterConfig;
private Channel acceptorWifiChannel;
private WifiManager wifiManager;
private BlaubotWifiP2PBroadcastReceiver blaubotWifiP2PBroadcastReceiver;
public BlaubotWifiP2PAdapter(BlaubotUUIDSet uuidSet, WifiP2pManager manager, WifiManager wifiManager, Channel acceptorChannel) {
this.uuidSet = uuidSet;
this.wifiP2pManager = manager;
this.wifiManager = wifiManager;
this.acceptorWifiChannel = acceptorChannel;
this.knownDevices = new HashSet<>();
this.blaubotWifiP2PBroadcastReceiver = new BlaubotWifiP2PBroadcastReceiver(manager, acceptorChannel);
this.acceptor = new BlaubotWifiP2PAcceptor(this);
this.connector = new BlaubotWifiP2PConnector(this);
this.connectionStateMachineConfig = new ConnectionStateMachineConfig();
this.adapterConfig = new BlaubotAdapterConfig();
ConnectionStateMachineConfig.validateTimeouts(connectionStateMachineConfig, adapterConfig);
}
@Override
public IBlaubotConnector getConnector() {
return connector;
}
@Override
public IBlaubotConnectionAcceptor getConnectionAcceptor() {
return acceptor;
}
protected BlaubotUUIDSet getUuidSet() {
return uuidSet;
}
protected WifiP2pManager getWifiP2pManager() {
return wifiP2pManager;
}
protected Channel getAcceptorWifiChannel() {
return acceptorWifiChannel;
}
@Override
public void setBlaubot(Blaubot blaubotInstance) {
this.blaubot = blaubotInstance;
}
@Override
public Blaubot getBlaubot() {
return blaubot;
}
@Override
public ConnectionStateMachineConfig getConnectionStateMachineConfig() {
return connectionStateMachineConfig;
}
@Override
public BlaubotAdapterConfig getBlaubotAdapterConfig() {
return adapterConfig;
}
public BlaubotWifiP2PBroadcastReceiver getBlaubotWifiP2PBroadcastReceiver() {
return blaubotWifiP2PBroadcastReceiver;
}
}