Newline driven approach
After debugging a while, I figured out, that the communication is hard newline driven.
synchronized(inputStream) {
try {
val receivedString = **reader.readLine()**
if (!TextUtils.isEmpty(receivedString)) {
emitter.onNext(receivedString)
}
} catch (e: Exception) {
if (!emitter.isCancelled && !closed.get()) {
emitter.onError(e)
}
}
My communication requries a # or \r\n as delimiter. There are several ways to solve this, the easiest and most flexibility providing solution, seems to me, changing from reader.readLine() to a scanner with a regex. Are you interested in a modification like this ?
The problem is that I haven't released the current master branch, which contains a fix for this problem: a method to directly access the OutputStream so you can handle input however you like. I will try to get this release out, I didn't release it as I didn't get enough of a chance to test it...
If you would like to use this now, try using the master branch snapshot release from JitPack