AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi BluetoothLE - onMtuChanged Event
Thema durchsuchen
Ansicht
Themen-Optionen

BluetoothLE - onMtuChanged Event

Ein Thema von Prime5 · begonnen am 28. Okt 2021 · letzter Beitrag vom 29. Okt 2021
Antwort Antwort
Prime5

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

BluetoothLE - onMtuChanged Event

  Alt 28. Okt 2021, 11: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
Rollo62

Registriert seit: 15. Mär 2007
3.901 Beiträge
 
Delphi 12 Athens
 
#2

AW: BluetoothLE - onMtuChanged Event

  Alt 29. Okt 2021, 06:46
Vieleicht hängt es auch einfach von der Implementierung des IoT-Gerätes ab.
https://punchthrough.com/android-ble-guide/

Zitat:
Unfortunately, we’ve also seen the onMtuChanged() callback not getting delivered sometimes when working with closed source firmware, which can put a damper on things if the app is relying on the callback being delivered before proceeding with something. Our advice is to always assume the worst case — that the ATT MTU is at its minimum value of 23 — and to plan around that when working with closed source firmware, with any successful onMtuChanged() calls being considered as added bonuses.
Ich bin nicht sicher ob der Event automatisch bei Verbindung gesendet wird, oder erst auf Anfrage nach requestMTU.
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz