suspend fun readCharacteristic(characteristic: BluetoothGattCharacteristic) = ble.async {
        val result = XYBluetoothResult<Boolean>()
        gatt?.let { gatt ->
            result.value = gatt.readCharacteristic(characteristic)
        } ?: run {