Проблемы этого типа, как известно, трудно отладить с помощью Kotlin (по крайней мере, сейчас с 1.3.70). У вас есть две ошибки, которые мешают вам иметь рабочий код:
Первая - вы пытаетесь .combineLatest()
объектов типа Single
, а не Observable
. Таким образом, вы должны использовать либо .flatMapSingle()
в сочетании с Single.zip()
, либо изменить каждое чтение на Observable
, как это rxBleConnection.readCharacteristic().toObservable()
.
Во-вторых, вы пытаетесь использовать конструктор как объект Function8
, который, по-видимому, не может использоваться здесь путь. Вы должны создать эту функцию вручную
device.establishConnection(false)
.flatMapSingle { rxBleConnection ->
Single.zip(
rxBleConnection
.readCharacteristic(jUuid(ManufacturerNameString.toString())),
rxBleConnection
.readCharacteristic(jUuid(ModelNumberString.toString())),
rxBleConnection
.readCharacteristic(jUuid(SerialNumberString.toString())),
rxBleConnection
.readCharacteristic(jUuid(HardwareRevisionString.toString())),
rxBleConnection
.readCharacteristic(jUuid(FirmwareRevisionString.toString())),
rxBleConnection
.readCharacteristic(jUuid(SoftwareRevisionString.toString())),
rxBleConnection
.readCharacteristic(jUuid(SystemID.toString())),
rxBleConnection
.readCharacteristic(jUuid(PnPID.toString())),
Function8 { a, b, c, d, e, f, g, h -> BoseDevice(a, b, c, d, e, f, g, h)}
)
}
.take(1)
.subscribe({}, {})
или
device.establishConnection(false)
.flatMap { rxBleConnection ->
Observable.combineLatest(
rxBleConnection
.readCharacteristic(jUuid(ManufacturerNameString.toString())).toObservable(),
rxBleConnection
.readCharacteristic(jUuid(ModelNumberString.toString())).toObservable(),
rxBleConnection
.readCharacteristic(jUuid(SerialNumberString.toString())).toObservable(),
rxBleConnection
.readCharacteristic(jUuid(HardwareRevisionString.toString())).toObservable(),
rxBleConnection
.readCharacteristic(jUuid(FirmwareRevisionString.toString())).toObservable(),
rxBleConnection
.readCharacteristic(jUuid(SoftwareRevisionString.toString())).toObservable(),
rxBleConnection
.readCharacteristic(jUuid(SystemID.toString())).toObservable(),
rxBleConnection
.readCharacteristic(jUuid(PnPID.toString())).toObservable(),
Function8 { a, b, c, d, e, f, g, h -> BoseDevice(a, b, c, d, e, f, g, h)}
)
}
.take(1)
.subscribe({}, {})