2014-03-03 11 views
5

Ich bin neu im Bluetooth-System und versuche die Daten zu verstehen, die für die neue Apple-Technologie verwendet werden: iBeacon.Verstehen von iBeacon-Daten: das Leistungsfeld und andere Bytes

Es gibt schon einige nette Antworten, die erklären, wie es funktioniert und ich habe alles gelesen, was ich finden konnte (besonders die Bluetooth-Spezifikation). Dennoch habe ich einige Punkte bin fehlt und ich werde zuerst ein Beispiel gehen: (Ich habe das Set Werbung Data Command, hier fehlt die hcitool cmd vor dem OGF bin mit)

0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 E2 C5 6D B5 DF FB 48 D2 B0 60 D0 F5 A7 10 96 E0 00 00 00 00 C5 00 

Ich werde hier aufzählen, was ich habe nicht verstanden oder finde Informationen darüber.

  1. Gibt es Informationen überall über die OGF (hier ist es 0x08)? Ich weiß, es steht für OpCode Group Field, aber im Gegensatz zu der OCF, die die OGF folgt, habe ich nichts gefunden.
  2. Was bedeutet die 02 01 1A 1A Bytes Linie? Ich weiß, dass das erste Byte, 1E, die Länge des Rests der Daten angibt und nach dieser Zeile, beginnend mit FF, erhalten Sie die herstellerspezifischen Daten. Aber ich konnte nichts über diese 4 Bytes finden.
  3. Wie funktioniert das Power-Byte? Hier ist es C5. Ich weiß, dass das, was ich bekomme, der dBm-Wert ist, wenn ich meinen iBeacon (zum Beispiel auf meinem iPhone) anwähle. Und ich weiß, dass je höher der Wert (auf dem Leistungsbyte), desto höher ist die Leistung, die mehr Genauigkeit, sondern auch mehr Energieverbrauch bedeutet. Aber wie benutzt du dieses Byte? Was sind die minimalen und maximalen Werte, die Sie einstellen können? Oder gibt es dort irgendeine Art von Formel? Erhalten Sie einen festgelegten dBm-Wert (bei einem Meter von Ihrem iBeacon) für einen eingestellten Wert auf dem Byte?

Vielen Dank.

Antwort

5

Antworten auf die ersten beiden Fragen finden Sie in der gigantischen Bluetooth 4.0 Core spec.

  1. Die OGF von 0x08 Gruppen OCF für LE-Controller-Befehle:

    Für die LE-Controller-Befehle wird das OGF Code als 0x08 festgelegt. (Bluetooth-Spezifikation Version 4.0 [Vol 2], Seite 1114)

    Da die 0x0008 OCF Befehl ein Controller-Befehl ist, müssen Sie den 0x08 OGF Code mit verwenden. Verwirrt? Vergiss es. Sie müssen nur 0x08 0x0008 verwenden, um die Werbedaten mit hcitool festzulegen.

  2. Die Byte-Sequenz, die die Anzeige beginnt, ist wie folgt:

    1E Number of bytes that follow in the advertisement 
    02 Number of bytes that follow in first AD structure 
    01 Flags AD type 
    1A Flags value 0x1A = 000011010 
        bit 0 (OFF) LE Limited Discoverable Mode 
        bit 1 (ON) LE General Discoverable Mode 
        bit 2 (OFF) BR/EDR Not Supported 
        bit 3 (ON) Simultaneous LE and BR/EDR to Same Device Capable (controller) 
        bit 4 (ON) Simultaneous LE and BR/EDR to Same Device Capable (Host) 
    1A Number of bytes that follow in second (and last) AD structure 
    FF Manufacturer specific data AD type 
    4C Company identifier code LSB 
    00 Company identifier code MSB (0x004C == Apple) 
    02 Byte 0 of iBeacon advertisement indicator 
    15 Byte 1 of iBeacon advertisement indicator 
    

    - Bluetooth-Spezifikation Version 4.0 [Vol 3], "WERBUNG UND SCAN RESPONSE DATA FORMAT" p. 375

    - Bluetooth Spezifikation Version 4.0 [Vol 3], Anhang C (NORMATIVE): EIR- UND AD-FORMATE ", p.401

  3. Das Leistungsfeld ist einfach eine Ein-Byte-Zweierkomplementzahl, die die "gemessene Leistung" in RSSI auf einem Meter entfernt darstellt. In einfacheren Worten

    Hier ist, wie das funktioniert:

    1. Halten Sie einen IBeacon Scanner (wie Locate for iBeacon für iOS) einen Meter entfernt von Ihrem IBeacon Sender.
    2. Lesen Sie seine Signalstärke in RSSI. Es wird eine Zahl zwischen -1 und -127 sein. (-1 ist sehr stark, -127 ist sehr schwach)
    3. Konvertieren Sie diese Zahl in ein Hex mit Zweierkomplement. (In 256 konvertiert dann zu hex)

Hinweis: Das Leistungsfeld kann 80-FF sein. Wenn es 00 ist, führt iOS keine Entfernungsberechnung durch. Sie können mehr darüber lesen, wie dies verwendet wird here.

+0

Vielen Dank für Ihre Antwort, die Erklärung auf dem Power-Feld lieferte mir die Verbindung, die ich zwischen diesem Byte und der gemessenen RSSI fehlte. Ich hoffe, bald weitere Informationen über meine anderen Verhöre zu finden. – ySiggen

+0

Ich fand eine nette Antwort von Ihnen, die mir hilft, zu verstehen, wie die Entfernungsmessung funktioniert: http://stackoverflow.com/questions/19719659/how-to-limit-the-advertising-range-of-a-beacon Still auf der Suche nach einigen Informationen über diese armen unbekannten Bytes tho. – ySiggen

+1

OK, offensichtlich hast du meine Neugierde erreicht, weil ich den Rest des Zeugs aufgesucht habe. Beeindruckend. Das Lesen der Bluetooth-Spezifikation ist wirklich langweilig. – davidgyoung