Hallo mensch72,
danke für die Hinweise.
Events für EnableNotification würde ich gerne setzten, finde aber keine.
Nur zur Klarstellung:
Ich lese Rssi nicht vom IOS-Device, sonder vom lokalen Host-Stack.
Das sollte eigentlich eine Variable sein die sofort, ohne Transfter over-the-air, auslesbar sein sollte
weil das nur vom eingebauten BT-Chip kommt.
Deshalb havbe ich Polling für Rssi eingebaut über 3sec. Timer:
Code:
if not DeviceCurrent.ReadRemoteRSSI then // Obtain RSSI
begin ...
procedure TS4BleConnectDm.BluetoothLE1ReadRSSI(const Sender: TObject; ARssiValue: Integer; AGattStatus: TBluetoothGattStatus);
begin ...
Es hat für mich auch noch einen anderen Grund:
- Ich habe eine Service Notification beim Gerät registriert, und dieses sendet nur ab und zu wenn der Nutzer eine
Taste drückt, durch das Polling glaube ich das Timing besser Steuerun zu können.
D.h. wenn User eine datenpaket sendet spar ich mir einen Rssi Zyklus (denn beides ist mein KeepAlive Signal).
Wenn du weisst wie man den Rssi-Wert als Event oder Notification ausliest dann hilf mir bitte auf die Sprünge.
Ich habe schon einiges durchgesehen, finde aber nichts.
Jetzt will ich nochmal schauen wie die Beacons das machen, denn das ist ja eigentlich das Gleiche Problem.
Es gibt die neue RssiToDistance Funktion bei den Beacons, aber wie die an den RssiWert kommen muss ich noch checken.
Ich habe hier etwas von David I gefunden, siehe Bild im Anhang
http://de.slideshare.net/embarcadero...llsprintdavidi
Heisst das das mit LastDiscoveredDevice geprüft werden kann ob ein Gerät noch am Leben ist ?
Rollo