Innehållsförteckning:

Läsa värden från en BLE -enhet med CSR1010 och Dragonboard 410c: 6 steg
Läsa värden från en BLE -enhet med CSR1010 och Dragonboard 410c: 6 steg

Video: Läsa värden från en BLE -enhet med CSR1010 och Dragonboard 410c: 6 steg

Video: Läsa värden från en BLE -enhet med CSR1010 och Dragonboard 410c: 6 steg
Video: Amanda chockar juryn och berör med sitt viktiga budskap 2024, November
Anonim
Läsa värden från en BLE -enhet med CSR1010 och Dragonboard 410c
Läsa värden från en BLE -enhet med CSR1010 och Dragonboard 410c

Denna handledning visar hur man läser värden från BLE -enhet CSR1010 med Dragonboard 410c med Linaro

I det här exemplet emulerar CSR1010 en pulssensor.

Steg 1: Skanna BLE -enhet

I det här steget, kontrollera om din BT -klient är redo att skanna BLE -enheter.

root@linaro-alip:/home/linaro# sudo hcitool lescan

LE Scan … 18: EE: 69: 00: CE: 00 (okänd) 18: EE: 69: 00: CE: 00 (okänd) EE: 52: 5B: 04: 00: 02 CSR HR -sensor

Steg 2: Anslut enhet

Vi kommer att använda gatttool för att ansluta vår enhet

-b: Enhetens MAC -adress

-t: LE -adresstyp. Kan vara offentlig eller slumpmässig, behöver kontrollera enhetsspecifikationer. I det här fallet är det offentligt.

-I: gatttool interaktivt läge. Det öppnar en uppmaning att skicka cmds till enheten

root@linaro -alip:/home/linaro# sudo gatttool -b EE: 52: 5B: 04: 00: 02 -t public -I

När uppmaningen är öppen kan vi skicka connect cmd till enheten.

[EE: 52: 5B: 04: 00: 02] [LE]> connect Försöker ansluta till EE: 52: 5B: 04: 00: 02

Anslutningen lyckades

[EE: 52: 5B: 04: 00: 02] [LE]>

Steg 3: Hämta enhetens egenskaper

Hämtar enhetens egenskaper
Hämtar enhetens egenskaper

När enheten är ansluten kan vi läsa alla tillgängliga tjänster genom att skicka cmd "primär"

Baserat på tjänsten UUID kan vi upptäcka servicetypen i GATT -specifikationen

www.bluetooth.com/specifications/gatt/services

Steg 4: Läsa enhetsnamn

Läser enhetsnamn
Läser enhetsnamn

Låt oss utforska egenskaperna som läses på Generic Access Profile (uuid = 1800). Först måste vi få servicehandtagets värden, som beskrivs på första bilden, i det här fallet, börjar från 5 till 11. Nu kan vi hämta alla handtag i detta intervall med hjälp av cmd char-desc

[EE: 52: 5B: 04: 00: 02] [LE]> char-desc 05 11handtag: 0x0005, uuid: 00002800-0000-1000-8000-00805f9b34fb handtag: 0x0006, uuid: 00002803-0000-1000-8000- 00805f9b34fb handtag: 0x0007, uuid: 00002a00-0000-1000-8000-00805f9b34fb handtag: 0x0008, uuid: 00002803-0000-1000-8000-00805f9b34fb handtag: 0x0009, uuid: 00002a01-0000-10008000 uuid: 00002803-0000-1000-8000-00805f9b34fb handtag: 0x000b, uuid: 00002a04-0000-1000-8000-00805f9b34fb handtag: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34fb handtag: 0x000 -1000-8000-00805f9b34fb handtag: 0x000e, uuid: 00002a37-0000-1000-8000-00805f9b34fb handtag: 0x000f, uuid: 00002902-0000-1000-8000-00805f9b34fb handtag: 0x0010, uuid: 00002803- 00805f9b34fb handtag: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb

Enligt specifikationen för generisk åtkomstprofil hänvisar UUID 2A00 till enhetsnamn.

Med tanke på att 2a00 är handtaget 0x0007 i vår enhet, låt oss läsa värdet

[EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 7 Karakteristiskt värde/beskrivning: 43 53 52 20 48 52 20 53 65 6e 73 6f 72

Omvandlar hex till ASCII, är enhetens namn: '' CSR HR Sensor ''

Steg 5: Läser BPM

[EE: 52: 5B: 04: 00: 02] [LE]> primärattr-handtag: 0x0001, änd-grp-handtag: 0x0004 uuid: 00001801-0000-1000-8000-00805f9b34fb attr-handtag: 0x0005, slut-grp-handtag: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb attr-handtag: 0x000c, änd-grp-handtag: 0x0013 uuid: 0000180d-0000-1000-8000-00805f9b34fb attr-handtag: 0x0014, slutet grp-handtag: 0x0017 uuid: 0000180f-00000 00805f9b34fb attr-handtag: 0x0018, end-grp-handtag: 0x0021 uuid: 00001016-d102-11e1-9b23-00025b00a5a5 attr-handtag: 0x0022, änd-grp-handtag: 0xffff uuid: 0000180a-0000-1000-8000-00805f9

Pulstjänsten UUID är 0x180d, så hanteringsintervallet är från 0x000c till 0x0013

[EE: 52: 5B: 04: 00: 02] [LE]> char-desc 0x00c 0x0013

handtag: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34fb handtag: 0x000d, uuid: 00002803-0000-1000-8000-00805f9b34fb handtag: 0x000e, uuid: 00002a37-0000-1000-8000-00805f9b34f: 00002902-0000-1000-8000-00805f9b34fb handtag: 0x0010, uuid: 00002803-0000-1000-8000-00805f9b34fb handtag: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb handtag: 0x0012, uuid: 1000-8000-00805f9b34fb handtag: 0x0013, uuid: 00002a39-0000-1000-8000-00805f9b34fb

Läser alla karaktäristiska deklarationer (UUID 0x2803).

[EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 0x000d

Karakteristiskt värde/beskrivning: 10 0e 00 37 2a [EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 0x0010 Karakteristiskt värde/beskrivning: 02 11 00 38 2a [EE: 52: 5B: 04:00:02] [LE]> char-read-hnd 0x0012 Karakteristiskt värde/deskriptor: 08 13 00 39 2a

Lägg märke till att:

- handtag 0x000d är CCCD för service 2a37 (pulsmätning) med bit 10 (stöd NOTIFY)

- handtag 0x0010 är CCCD för service 2a38 (Body Sensor Location) med bit 02 (stöd LÄS)

- handtag 0x0012 är CCCD för service 2a39 (pulskontrollpunkt) med bit 08 (stöd WRITE)

Nu vet vi att pulsmätning endast fungerar med aviseringar. Det betyder att vi först måste registrera oss för värdeförändringar i dess CCCD (UUID 0x2902), som i detta fall hanterar 0xf

[EE: 52: 5B: 04: 00: 02] [LE]> char-write-req 0x00f 0100

Meddelandehandtag = 0x000e värde: 16 65 f3 01 Karakteristiskt värde skrevs framgångsrikt Meddelandehandtag = 0x000e värde: 16 6d fa 01 Meddelandehandtag = 0x000e värde: 16 6d fa 01 Meddelandehandtag = 0x000e värde: 16 6c f9 01 Meddelandehandtag = 0x000e värde: 16 6a f7 01 Meddelandehandtag = 0x000e värde: 16 69 f6 01

Enligt profilspecifikationen är det andra hexanumret BPM -informationen.

BPM:

6d = 109

6d = 109

6c = 108

6a = 106

69 = 105

Steg 6: Läsa kroppssensorns plats

Läser av kroppssensorns plats
Läser av kroppssensorns plats

Body Sensor Location är UUID 0x2A38. Enligt dess deskriptor stöder denna egenskap grundläggande läsning, så att vi kan läsa dess värde direkt.

[EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 0x11 Karakteristiskt värde/beskrivning: 03

Enligt SIG -specifikationen betyder 03 "Finger"

Rekommenderad: