-
-
Notifications
You must be signed in to change notification settings - Fork 62
Expand file tree
/
Copy pathSimpleBluetoothDeviceInterfaceImpl.kt
More file actions
65 lines (53 loc) · 2.58 KB
/
SimpleBluetoothDeviceInterfaceImpl.kt
File metadata and controls
65 lines (53 loc) · 2.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.harrysoft.androidbluetoothserial
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers
import java.io.InputStream
import java.io.OutputStream
/**
* Implementation of SimpleBluetoothDeviceInterface, package-private
*/
internal class SimpleBluetoothDeviceInterfaceImpl(override val device: BluetoothSerialDeviceImpl) : SimpleBluetoothDeviceInterface {
private val compositeDisposable = CompositeDisposable()
private var messageReceivedListener: SimpleBluetoothDeviceInterface.OnMessageReceivedListener? = null
private var messageSentListener: SimpleBluetoothDeviceInterface.OnMessageSentListener? = null
private var errorListener: SimpleBluetoothDeviceInterface.OnErrorListener? = null
init {
compositeDisposable.add(device.openMessageStream()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ messageReceivedListener?.onMessageReceived(it) }, { errorListener?.onError(it) }))
}
override fun sendMessage(message: String) {
device.checkNotClosed()
compositeDisposable.add(device.send(message)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ messageSentListener?.onMessageSent(message) }, { errorListener?.onError(it) }))
}
override fun setListeners(messageReceivedListener: SimpleBluetoothDeviceInterface.OnMessageReceivedListener?,
messageSentListener: SimpleBluetoothDeviceInterface.OnMessageSentListener?,
errorListener: SimpleBluetoothDeviceInterface.OnErrorListener?) {
this.messageReceivedListener = messageReceivedListener
this.messageSentListener = messageSentListener
this.errorListener = errorListener
}
override fun setMessageReceivedListener(listener: SimpleBluetoothDeviceInterface.OnMessageReceivedListener?) {
messageReceivedListener = listener
}
override fun setMessageSentListener(listener: SimpleBluetoothDeviceInterface.OnMessageSentListener?) {
messageSentListener = listener
}
override fun setErrorListener(listener: SimpleBluetoothDeviceInterface.OnErrorListener?) {
errorListener = listener
}
override fun getOutputStream(): OutputStream {
return device.outputStream
}
override fun getInputStream(): InputStream {
return device.inputStream
}
fun close() {
compositeDisposable.dispose()
}
}