package pl.llp.aircasting.sensor.bioharness; import pl.llp.aircasting.sensor.AbstractSensor; import pl.llp.aircasting.sensor.BluetoothConnector; import pl.llp.aircasting.sensor.ExternalSensorDescriptor; import pl.llp.aircasting.sensor.ReaderWorker; import pl.llp.aircasting.sensor.WriterWorker; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothSocket; import com.google.common.eventbus.EventBus; import java.io.IOException; public class BioharnessSensor extends AbstractSensor { ReaderWorker readerWorker; WriterWorker writerWorker; public BioharnessSensor(ExternalSensorDescriptor descriptor, EventBus eventBus, BluetoothAdapter adapter) { super(descriptor, eventBus, adapter); } @Override protected BluetoothSocket getSocket(BluetoothConnector connector) { try { return connector.getSocketNormally(); } catch (IOException e) { return null; } } @Override protected void startWorking() { readerWorker.start(); writerWorker.start(); writerWorker.write(PacketType.SummaryPacket.getRequest(Packet.Request.ENABLED)); writerWorker.write(PacketType.RtoRPacket.getRequest(Packet.Request.ENABLED)); } @Override protected void injectSocket(BluetoothSocket socket) { BioharnessDataReader reader = new BioharnessDataReader(socket, eventBus); BioharnessWriter socketWriter = new BioharnessWriter(socket); readerWorker = new ReaderWorker(adapter, device, eventBus, reader); writerWorker = new WriterWorker(device, eventBus, socketWriter); } @Override protected void customStop() { if (readerWorker != null) { readerWorker.stop(); } if (writerWorker != null) { writerWorker.stop(); } } }