Ich stieß auf ein Problem mit der Interoperabilität zwischen einem Android -Zentral/Client (CompilesDK = 35), der sich mit einem peripheren/Server verbindet, der seine eigene MTU -Verhandlung initiiert: Die Service -Entdeckung scheint stecken zu bleiben, und OnservicesDecovered () wird nie genannt. Rufen Sie an Bluetoothgatt.RequestMtu () an, nachdem sich das Gerät verbindet. Bei diesem bestimmten BLE -Gerät fungiert es auch bei nominell als peripheren/Server konfiguriert override fun onConnectionStateChange(gatt: BluetoothGatt, status: Int, newState: Int) {
if (status == BluetoothGatt.GATT_SUCCESS) {
when (newState) {
BluetoothProfile.STATE_CONNECTED -> {
// initiate MTU negotiation and service discovery
gatt.requestMtu(512)
gatt.discoverServices()
}
BluetoothProfile.STATE_DISCONNECTED -> {
// Disconnected from device
}
}
}
}
override fun onServicesDiscovered(gatt: BluetoothGatt, status: Int) {
if (status == BluetoothGatt.GATT_SUCCESS) {
// Services discovered, enable notifications if needed
.
.
.
}
}
< /code>
Wenn ich den Anruf nach Bluetoothgatt.RequestMtu () entferne, dann kein Problem, aber das funktioniert offensichtlich nicht mit anderen BLE -Geräten, die keine MTU -Verhandlungen initiieren. Wenn ich die vom Peripherie initiierte MTU-Verhandlung deaktiviere, dann ist kein Problem. />
Datum /Uhrzeit < /th>
pid-tid < /th>
Tag < /th>
log Level < /th>
Nachricht < /th>
< /> < /> < />
< /> < />
< /> < /> 2025-07-11 17: 47: 49.116 < /td>
8165-8165 < /td>
BluetoothAdapter < /td>
< /td>
< /> < />
GetbleNablear (): auf < /td>
GetbleAnteal (): auf < /td>
GetbleNabledaRray (): auf < /td>
GetbleAnableAnableer (): auf < /td>
GetbleAnablear (): auf < /td>
GetbleNablear (): auf < /td>
GetbleAnsAray (): on />
2025-07-11 17: 47: 49.118 < /td>
8165-8165 < /td>
bluetoothgatt < /td>
d < /td>
connect ()-Geräte: Geräte: Geräte: Geräte: Geräte: Geräte: XX:XX:XX:XX:77:30, auto: false
2025-07-11 17:47:49.118
8165-8165
BluetoothGatt
D
registerApp()
2025-07-11 17:47:49.119
8165-8165
BluetoothGatt
d < /td>
RegisterApp ()-UUID = A616F277-DD9B-4D9C-87C9-199CAFE1CFC8 < /TD>
< /Tr>
2025-07-11 17: 49.124
2025-07-11 17: 49. 49. 49.124
2025-07-11 17: 47: 49. 49.124
2025-07-11 17: 49: 49. 49.124
2025-07-11 17: 49: 49. 49. 49. 49. 49. 49. 49. 49. 49. 49. 49. 49: 49. 49. 49: 49.124). />8165-9333
BluetoothGatt
D
onClientRegistered() - status=0 clientIf=12
2025-07-11 17:47:49.126
8165-9333
BluetoothAdapter
D
getBleEnabledArray(): ON
2025-07-11 17: 47: 50,596 < /td>
8165-9333 < /td>
bluetoothgatt < /td>
d < /td>
onclientSconnectionState ()-STATUS: Gerät = xx: xx: xx: xx: 77: 30 < /td>
< /tr>
2025-07-11 17: 47: 50.600 < /td>
8165-9333 < /td>
brabluetoothgatt < /td>
Bluetoothgatt < /td>
brabluetoothgatt < /td>
brabluetoothgatt < /td>
brabluetoothgatth. /> d < /td>
configuremtu ()-Gerät: xx: xx: xx: xx: 77: 30 mTU: 512 < /td>
< /tr>
2025-07-11 17: 47: 50.603 < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td> < /td>
8165-9333
BluetoothGatt
D
discoverServices() - device: XX:XX:XX:XX:77:30
2025-07-11 17:47:51.120
8165-9333
BluetoothGatt
D
onConnectionUpdated() - Gerät = xx: xx: xx: xx: 77: 30 intervall = 6 latency />BluetoothGatt
D
onConfigureMTU() - Device=XX:XX:XX:XX:77:30 mtu=247 status=0
2025-07-11 17:47:51.569
8165-9333
BluetoothGatt
D
onConnectionUpdated() - Device=XX:XX:XX:XX:77:30 interval=36 latency=0 timeout = 500 status = 0 < /td>
< /tr>
< /tbody>
< /table> < /div>
und dasselbe, aber mit der peripheralen initiierten MTU-Verhandlung deaktiviert: < /p>
Datum /Uhrzeit < /th>
pid-tid < /th>
Tag < /th>
log Level < /th>
Nachricht < /th>
< /> < /> < />
< /> < />
< /> < /> 2025-07-11 17:52:18.055
8165-8165
BluetoothAdapter
D
getBleEnabledArray(): ON
2025-07-11 17: 52: 18.058 < /td>
8165-8165 < /td>
Bluetoothgatt < /td>
d < /td>
connect ()-Geräte: Geräte: Geräte: Geräte: Geräte: Geräte: Gerät: XX:XX:XX:XX:77:30, auto: false
2025-07-11 17:52:18.058
8165-8165
BluetoothGatt
D
registerApp()
2025-07-11 17:52:18.058
8165-8165
BluetoothGatt
d < /td>
RegisterApp ()-UUID = C055AE54-E1D1-4F45-A276-9281537E3E2F < /td>
< /tr>
2025-07-11 17: 52: 18.063 2025-07-11 17: 52: 18.063 2025-07-11 17: 52: 52: 18.063 ^ />8165-8181
BluetoothGatt
D
onClientRegistered() - status=0 clientIf=13
2025-07-11 17:52:18.065
8165-8181
BluetoothAdapter
D
getBleEnabledArray(): ON
2025-07-11 17: 52: 18.480 < /td>
8165-8181 < /td>
bluetoothgatt < /td>
d < /td>
onclientSconnectionState ()-STATUS = 0> onclientState ()-STATUS = STATION Id. device=XX:XX:XX:XX:77:30
2025-07-11 17:52:18.482
8165-8181
BluetoothGatt
d < /td>
configuremtu ()-Gerät: xx: xx: xx: xx: 77: 30 mTU: 512 < /td>
< /tr>
2025-07-11 17: 52: 18.484 < /td> < /td>
8165-8181 < /td>
Bluetoothgatt < /td>
d < /td>
Erkenntnisse () - Gerät: xx: xx: xx: 77: 30 < /td>
< /> < /> < /> < /> < /< /tr>
< /> < /< /tr> < /
2025-07-11 17:52:19.001
8165-8181
BluetoothGatt
D
onConnectionUpdated() - Gerät = xx: xx: xx: xx: 77: 30 intervall = 6 latency />BluetoothGatt
D
onConfigureMTU() - Device=XX:XX:XX:XX:77:30 mtu=247 status=0
2025-07-11 17:52:19.425
8165-8181
BluetoothGatt
D
onSearchComplete() = Device=XX:XX:XX:XX:77:30 Status=0
2025-07-11 17:52:19.425
8165-8181
BluetoothGatt
D
setCharacteristicNotification() - uuid: 85fc567e-31d9-4185-87c6-339924d1c5be enable: true
2025-07-11 17:52:19.496
8165-8181
bluetoothgatt < /td>
d < /td>
OnconnectionUpdated () - Device = xx: xx: xx: xx: 77: 30 intervall = 36 Latency /> < /table> < /div>
Nachdem ich diese Spuren erfasst habe override fun onConnectionStateChange(gatt: BluetoothGatt, status: Int, newState: Int) {
if (status == BluetoothGatt.GATT_SUCCESS) {
when (newState) {
BluetoothProfile.STATE_CONNECTED -> {
// initiate service discovery
gatt.discoverServices()
}
BluetoothProfile.STATE_DISCONNECTED -> {
// Disconnected from device
}
}
}
}
override fun onServicesDiscovered(gatt: BluetoothGatt, status: Int) {
if (status == BluetoothGatt.GATT_SUCCESS) {
// now initiate MTU negotiation
gatt.requestMtu(512)
}
}
override fun onMtuChanged(gatt: BluetoothGatt, mtu: Int, status: Int) {
if (status == BluetoothGatt.GATT_SUCCESS) {
// services discovered and MTU negotiated, enable notifications if needed
.
.
.
}
}
< /code>
Ist das ein Fehler? Ich sehe nichts in den Bluetoothgatt -Dokumenten, die sagen, RequestMtu () und DiscoverServices () kann nicht zusammengerufen werden.
OnservicesDiscovered () nicht angerufen, wenn RequestMtu () und entdeckt () () zusammengerufen wird, wenn sie eine Verbi ⇐ Android
-
- Similar Topics
- Replies
- Views
- Last post
-
-
Kann meine API nicht sehen, dass meine API auf Frontend Console angerufen wird?
by Anonymous » » in C# - 0 Replies
- 10 Views
-
Last post by Anonymous
-