Einzelnen Beitrag anzeigen

Prime5

Registriert seit: 28. Okt 2021
1 Beiträge
 
#1

BluetoothLE - onMtuChanged Event

  Alt 28. Okt 2021, 12:53
Hallo Zusammen,

für ein Bluetooth-Projekt in dem unter Androuid die MTU angepasst werden soll ist es für mich notwendig zu erfahren,
auf welchen MTU-Wert sich die verwendeten Geräte nach einem Aufruf der "requestMtu"-Funktion geeinigt haben.

Die "TBluetoothLEDevice.RequestMtu"-Funktion löst dabei im "Android Device Monitor" die folgenden Events aus:

BluetoothGatt: configureMTU() - device: XX:XX:XX:XX:XX:XX mtu: 512
BluetoothGatt: onConnectionUpdated() - Device=XX:XX:XX:XX:XX:XX interval=6 latency=0 timeout=500 status=0
BluetoothGatt: onConfigureMTU() - Device=XX:XX:XX:XX:XX:XX mtu=23 status=0
Nun habe ich gesehen, dass es in der Datei "Androidapi.JNI.Bluetooth.pas" die folgende Deklaration gibt:
Code:
[JavaSignature('android/bluetooth/BluetoothGattCallback')]
  JBluetoothGattCallback = interface(JObject)
    ['{E07848AC-B968-4C94-9F67-4DC5E62CB8D3}']
 ...
    procedure onMtuChanged(gatt: JBluetoothGatt; mtu: Integer; status: Integer); cdecl;
 ...
  end;
Allerdings gibt es hierzu keine weitere Implementierung.

Meine Idee wäre nun gewesen, in der Klasse "TAndroidBluetoothGattListener" aus "System.Android.Bluetooth" die folgende Prozedur anzulegen:
Code:
procedure TAndroidBluetoothGattListener.onMtuChanged(gatt: JBluetoothGatt; mtu, status: Integer);
und hier dann den Wert über weitere Funktionen am Vorbild der anderen Funktionsimplementationen nach oben hin durchzuschleifen:
Code:
  FGatt.DoOnMTUChanged(FGatt, mtu, TBluetoothGattStatus(status))
Zum aktuellen Stand sieht es für mich aber so aus, als wenn die "TAndroidBluetoothGattListener.onMtuChanged"-Funktion gar nicht erst aufgerufen werden würde.
Kann mir jemand von euch einen Tipp geben, wie oder wo ich dieses Event Implementieren kann, sodass ich es durch die verschiedenen Bluetooth-Klassen in meine Logik durchschleifen kann?
  Mit Zitat antworten Zitat