Skip to content
Snippets Groups Projects
Commit 0374d7a1 authored by Anon's avatar Anon
Browse files

Fix listener handling.

parent 7cff04ec
No related branches found
No related tags found
No related merge requests found
......@@ -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,11 +123,9 @@ class BatchTransferFragment : Fragment(), FileTransferListener, GattListener {
}
}
override fun onConnectionStateChange(state: Int) {
if (state == BluetoothGatt.STATE_CONNECTED) {
override fun onConnectionReady() {
startTransfer()
}
}
override fun onError() {
activity?.runOnUiThread {
......
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment