2016-04-11 13 views
1

Gibt es eine Begrenzung für die maximale Anzahl von Paketen (LE_DATA), die während eines Verbindungsintervalls von Slave oder Master gesendet werden können?BLE: Maximale Anzahl von Paketen in Verbindungsintervall

Wenn dieses Limit existiert, gibt es bestimmte Bedingungen für dieses Limit (z. B. nur x Anzahl der ATT-Datenpakete)?

Ist Master/Slave erforderlich oder erlaubt, eine solche Grenze durch Spezifikation zu erzwingen?

Antwort

1

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.

1

Es gibt eine maximale Datenrate, die sowohl bei BT als auch bei BLE erreicht werden kann. Sie können diese Datenrate ändern, indem Sie MTU (maximale Übertragungseinheit - Paketgröße) bis zu einer maximalen MTU ändern, die beide Enden der Übertragung verarbeiten können. Aber AFAIK gibt es keine direkte Beschränkung auf die Anzahl der Pakete, neben den physikalischen, die durch die Datenrate auferlegt werden.

Mehr erfahren Sie in der finden spec

+0

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

+0

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 –

1

(ich hoffe, ich bin nicht tot Post wieder auf. Aber ich glaube, den Abschnitt 4.5.1 ist besser dafür geeignet, dies zu beantworten als 4.5.6.)

Die Spezifikation definiert keine Begrenzung von Paketen. Darin heißt es nur folgendes:

4.5.1 Anschluss Events - Bluetooth-Spezifikation Version 4.2 [Vol 6, Teil B]

(...)

Der Start eines Verbindungsereignisses wird Ankerpunkt genannt. Am Ankerpunkt beginnt ein Master mit der Übertragung einer Datenkanal-PDU an den Slave. Der Beginn von Verbindungsereignissen wird regelmäßig mit einem Intervall von connInterval getrennt und darf nicht überlappen. Der Master muss sicherstellen, dass ein Verbindungsereignis mindestens T_IFS vor dem Ankerpunkt des nächsten Verbindungsereignisses schließt. Der Slave hört auf das Paket, das vom Master am Ankerpunkt gesendet wurde.

T_IFS ist die "Inter Frame Space" Zeit und beträgt 150 & mgr; s sein. Einfach gesagt ist es die Aufgabe des Meisters, dieses Problem zu lösen. Soweit ich weiß, beschränkt iOS die Paketnummer beispielsweise auf 4 pro Verbindungsereignis. Android kann abhängig von der Betriebssystemversion andere fest codierte Grenzwerte haben.

+0

Es ist tatsächlich der Bluetooth-Controller (der dedizierte Chip im Telefon), der dies entscheidet. Um in der Lage zu sein, während eines Verbindungsintervalls viele Pakete zu senden, dürfen keine anderen Verbindungen oder WLAN-Dinge vorhanden sein, die das Funkgerät in der Zwischenzeit benutzen wollen. Zweitens kann der Host im HCI-Protokoll auf die gewünschte Länge des Verbindungsereignisses hinweisen. Android setzt dies einfach auf 0, was bedeutet, dass der Controller dies entscheiden kann. Nicht sicher, was iOS setzt. Dann kommt es ganz darauf an, wie schlau der Controller ist. Einige Controller beschränken sie einfach auf 4 Pakete, wenn sie 0 als CE_len angeben. – Emil

+0

@Emil Thx für den Zusatz! Was ich in diesem Conext frage, ist: Berechnet der Controller wirklich, ob die Zeit am Ende eines Verbindungsereignisses zu einem anderen T_IFS passt, oder wählen sie die Werte aus, damit die Anzahl der maximalen Pakete nicht mit der maximalen Paketlänge kollidiert? – vvombat

+0

Danke für die Antwort, aber ich suchte nach Einschränkungen durch die Spezifikation, nicht Implementierungen auferlegt. Pro Spezifikation stoppen Übertragungen in einem CI, wenn beide Seiten ihr MD-Bit zurücksetzen, so dass die Spezifikation keine Begrenzung für die Anzahl der Pakete gibt, die ein Gerät auf einem CI übertragen kann, außer durch die Zeit pro pkt tx. Spec verbietet nicht das selbst auferlegte strengere Limit, das die meisten BLE-Controller tatsächlich auferlegen, wie ich später herausfand. – GPS

Verwandte Themen