Commit 0374d7a1 authored by Anon's avatar Anon
Browse files

Fix listener handling.

parent 7cff04ec
......@@ -42,7 +42,7 @@ object ConnectionService {
private var connection: BluetoothGatt? = null
private var connectionState = BluetoothGatt.STATE_DISCONNECTED
private var gattListeners = mutableListOf<GattListener>()
private var gattListeners = mutableMapOf<String, GattListener>()
private val fileServiceUuid = UUID.fromString("42230100-2342-2342-2342-234223422342")
......@@ -58,8 +58,8 @@ object ConnectionService {
fun isConnected() = connectionState == BluetoothGatt.STATE_CONNECTED
fun addGattListener(listener: GattListener) {
gattListeners.add(listener)
fun addGattListener(tag: String, listener: GattListener) {
gattListeners[tag] = listener
}
fun connect(context: Context) {
......@@ -113,8 +113,6 @@ object ConnectionService {
connectionState = newState
connection = gatt
gattListeners.map { it.onConnectionStateChange(newState) }
when (newState) {
BluetoothGatt.STATE_CONNECTED -> {
gatt?.discoverServices()
......@@ -132,6 +130,8 @@ object ConnectionService {
mtu = newMtu - 3 // Very precise science
leService?.enableNotify(gatt)
gattListeners.values.map { it.onConnectionReady() }
}
override fun onCharacteristicWrite(
......@@ -145,7 +145,7 @@ object ConnectionService {
connection = gatt
gattListeners.map { it.onCharacteristicWrite(characteristic, status) }
gattListeners.values.map { it.onCharacteristicWrite(characteristic, status) }
}
override fun onCharacteristicChanged(gatt: BluetoothGatt?, characteristic: BluetoothGattCharacteristic?) {
......@@ -155,7 +155,7 @@ object ConnectionService {
throw IllegalStateException()
}
gattListeners.map { it.onCharacteristicChanged(characteristic) }
gattListeners.values.map { it.onCharacteristicChanged(characteristic) }
}
}
......
......@@ -27,5 +27,5 @@ import android.bluetooth.BluetoothGattCharacteristic
interface GattListener {
fun onCharacteristicWrite(characteristic: BluetoothGattCharacteristic, status: Int) {}
fun onCharacteristicChanged(characteristic: BluetoothGattCharacteristic) {}
fun onConnectionStateChange(state: Int) {}
fun onConnectionReady() {}
}
\ No newline at end of file
......@@ -77,7 +77,7 @@ class BatchTransferFragment : Fragment(), FileTransferListener, GattListener {
private fun initConnection() {
val ctx = context ?: throw IllegalStateException()
ConnectionService.addGattListener(this)
ConnectionService.addGattListener("batchfiletransfer", this)
ConnectionService.connect(ctx)
}
......@@ -91,6 +91,7 @@ class BatchTransferFragment : Fragment(), FileTransferListener, GattListener {
}
private fun transferNext() {
Thread.sleep(1000)
val item = queue.dequeue()
if (item == null || isCancelled) {
......@@ -122,10 +123,8 @@ class BatchTransferFragment : Fragment(), FileTransferListener, GattListener {
}
}
override fun onConnectionStateChange(state: Int) {
if (state == BluetoothGatt.STATE_CONNECTED) {
startTransfer()
}
override fun onConnectionReady() {
startTransfer()
}
override fun onError() {
......
......@@ -41,7 +41,7 @@ class FileTransfer(
private var currentState = TransferState.IDLE
init {
service.addOnPacketReceivedListener(this)
service.setOnPacketReceivedListener(this)
}
override fun onPacketReceived(packet: Packet) {
......@@ -98,13 +98,13 @@ class FileTransfer(
throw IllegalStateException()
}
currentState = TransferState.START_SENT
service.sendPacket(
Packet(
PacketType.START,
destinationPath.toByteArray(Charset.forName("ASCII"))
)
)
currentState = TransferState.START_SENT
}
private fun sendNext() {
......
......@@ -43,7 +43,7 @@ class LowEffortService(
private val centralRxCharacteristicUuid = UUID.fromString("42230102-2342-2342-2342-234223422342")
private var notifyEnabled = false
private val listeners = mutableListOf<OnPacketReceivedListener>()
private var listener: OnPacketReceivedListener? = null
init {
val tx = service.getCharacteristic(centralTxCharacteristicUuid)
......@@ -58,7 +58,7 @@ class LowEffortService(
centralTx = tx
centralRx = rx
ConnectionService.addGattListener(this)
ConnectionService.addGattListener("filetransfer",this)
}
fun enableNotify(gatt: BluetoothGatt) {
......@@ -89,8 +89,8 @@ class LowEffortService(
return status
}
fun addOnPacketReceivedListener(listener: OnPacketReceivedListener) {
listeners.add(listener)
fun setOnPacketReceivedListener(packetListener: OnPacketReceivedListener) {
listener = packetListener
}
// GattListener methods
......@@ -99,6 +99,6 @@ class LowEffortService(
}
override fun onCharacteristicChanged(characteristic: BluetoothGattCharacteristic) {
listeners.map { it.onPacketReceived(Packet.fromBytes(characteristic.value)) }
listener?.onPacketReceived(Packet.fromBytes(characteristic.value))
}
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment