ich folgendes in Bluetooth Spec v4.2 finden konnte:
4.5.6 Schluss Verbindung Events
Die MD-Bit von der Der Header der Datenkanal-PDU wird verwendet, um anzuzeigen, dass das Gerät mehr Daten zum Senden hat. Wenn keines der Geräte das MD-Bit in seinen Paketen gesetzt hat, schließt das Paket vom Slave das Verbindungsereignis . Wenn eines oder beide Geräte das Bit MD gesetzt haben, kann der Master das Verbindungsereignis durch Senden eines weiteren Pakets fortsetzen, und der Slave sollte nach dem Senden seines Pakets zuhören. Wenn ein Paket vom Slave nicht vom Master empfangen wird, beendet der Master das Verbindungsereignis . Wenn ein Paket vom Master nicht vom Master empfangen wird, beendet der Slave das Verbindungsereignis.
Zwei aufeinanderfolgende Pakete mit einer ungültigen CRC-Übereinstimmung innerhalb eines Verbindungsereignisses müssen das Ereignis schließen.
Dies bedeutet, dass sowohl der Slave als auch der Master eine selbst auferlegte Begrenzung der Anzahl der Pakete haben, die sie während eines CI übertragen möchten. Wenn eine der beiden Parteien keine weiteren Daten senden möchte, setzen sie dieses Bit auf 0 und andere verstehen es. Dies sollte normalerweise durch die Anzahl der ausstehenden Pakete auf beiden Seiten gesteuert werden.
Da ich wegen Spezifikation oder Protokoll nach logischen Grenzen suchte, beantwortet dies wahrscheinlich meine Frage.
Physikalische Grenzen Anzahl Pakete pro CI würden durch Datenrate geregelt werden, und wie @morynicz erwähnt, auf MTU usw.
Ich wollte speziell die Grenzen der Anzahl der Pakete pro CI kennen. Ich beobachte, dass mein Master-Gerät nie mehr als 4 Pakete pro CI sendet. [[link] (http://stackoverflow.com/questions/36542079/bluedroid-hangs-up-for-45-ms-during-channel-switch)] Könnte dies aufgrund von einigen Verhandlungen sein (zB nur erlaubt für zu übertragen eine begrenzte Zeit) oder aufgrund der begrenzten Anzahl von Puffern auf hw, oder schlechte Codierung in Treibern usw. – GPS
Im mit ähnlichen Problem auf Android und blé peripheren. Ich verbinde mich mit einem BLE-Peripheriegerät und tausche Dutzende von Paketen (sagen wir 300) in ungefähr 20-30 Sekunden und dann wird die Kommunikation sehr langsam, beginnend mit 1,5 Sekunden, um ein Merkmal zu schreiben und seine Antwort zurückzubekommen. Diese Zeitspanne ist für meine Bewerbung nicht akzeptabel. Wenn ich die Verbindung trennen und alle paar hundert Pakete neu verbinden und den Prozess von dort wieder aufnehmen, wird es nie langsamer oder hört auf zu arbeiten. Ist dieses Problem mit der Anzahl der Pakete pro Verbindung oder der Dauer der Verbindung verbunden? Bitte helfen Sie –