BLE Transmit fix blank state and check device supports advertising (#2500)

* Check if device supports BLE transmitter

* Always send a state instead of blank string

* Add attribute if transmitter is supported instead of sensor availability
This commit is contained in:
Daniel Shokouhi 2022-05-08 10:11:48 -07:00 committed by GitHub
parent 66c57d5768
commit b504492f40
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 2 deletions

View file

@ -6,6 +6,7 @@ import android.os.Build
import io.homeassistant.companion.android.bluetooth.ble.IBeaconTransmitter
import io.homeassistant.companion.android.bluetooth.ble.TransmitterManager
import io.homeassistant.companion.android.common.bluetooth.BluetoothUtils
import io.homeassistant.companion.android.common.bluetooth.BluetoothUtils.supportsTransmitter
import io.homeassistant.companion.android.common.sensors.SensorManager
import io.homeassistant.companion.android.database.AppDatabase
import io.homeassistant.companion.android.database.sensor.SensorSetting
@ -242,18 +243,20 @@ class BluetoothSensorManager : SensorManager {
TransmitterManager.stopTransmitting(bleTransmitterDevice)
}
val lastState = AppDatabase.getInstance(context).sensorDao().get(bleTransmitter.id)?.state ?: "unknown"
val state = if (isBtOn(context)) bleTransmitterDevice.state else "Bluetooth is turned off"
val icon = if (bleTransmitterDevice.transmitting) "mdi:bluetooth" else "mdi:bluetooth-off"
onSensorUpdated(
context,
bleTransmitter,
state,
if (state != "") state else lastState,
icon,
mapOf(
"id" to bleTransmitterDevice.uuid + "-" + bleTransmitterDevice.major + "-" + bleTransmitterDevice.minor,
"Transmitting power" to bleTransmitterDevice.transmitPowerSetting,
"Advertise mode" to bleTransmitterDevice.advertiseModeSetting,
"Measured power" to bleTransmitterDevice.measuredPowerSetting
"Measured power" to bleTransmitterDevice.measuredPowerSetting,
"Supports transmitter" to supportsTransmitter(context)
)
)
}

View file

@ -65,4 +65,11 @@ object BluetoothUtils {
throw IllegalStateException(e)
}
}
fun supportsTransmitter(context: Context): Boolean {
val bluetoothManager =
context.applicationContext.getSystemService<BluetoothManager>()!!
val adapter = bluetoothManager.adapter
return adapter?.isMultipleAdvertisementSupported ?: false
}
}