blob: 5de37a7d1c4bb0b7be7e6268d52b874dfa358e2b [file] [log] [blame]
Martijn Thédb758822016-04-12 14:31:36 +02001% Scapy Bluetooth layer tests
2
Martijn Théaa462952016-04-25 16:53:51 +02003+ HCI Commands
4= LE Create Connection Cancel
5
6expected_cmd_raw_data = "010e2000".decode('hex')
7cmd_raw_data = str(HCI_Hdr() / HCI_Command_Hdr() / HCI_Cmd_LE_Create_Connection_Cancel())
8assert(expected_cmd_raw_data == cmd_raw_data)
9
Martijn Thé1a99f352016-04-25 22:33:06 +020010= Disconnect
11expected_cmd_raw_data = "01060403341213".decode('hex')
12cmd_raw_data = str(HCI_Hdr() / HCI_Command_Hdr() / HCI_Cmd_Disconnect(handle=0x1234))
13assert(expected_cmd_raw_data == cmd_raw_data)
14
Martijn Thé2c28f062016-07-30 15:47:42 +020015= LE Connection Update Command
16expected_cmd_raw_data = "0113200e47000a00140001003c000100ffff".decode('hex')
17cmd_raw_data = str(
18 HCI_Hdr() / HCI_Command_Hdr() / HCI_Cmd_LE_Connection_Update(
19 handle=0x47, min_interval=10, max_interval=20, latency=1, timeout=60,
20 min_ce=1, max_ce=0xffff))
21assert(expected_cmd_raw_data == cmd_raw_data)
22
23
24+ HCI Events
25= LE Connection Update Event
26evt_raw_data = "043e0a03004800140001003c00".decode('hex')
27evt_pkt = HCI_Hdr(evt_raw_data)
28assert(evt_pkt[HCI_LE_Meta_Connection_Update_Complete].handle == 0x48)
29assert(evt_pkt[HCI_LE_Meta_Connection_Update_Complete].interval == 20)
30assert(evt_pkt[HCI_LE_Meta_Connection_Update_Complete].latency == 1)
31assert(evt_pkt[HCI_LE_Meta_Connection_Update_Complete].timeout == 60)
32
33
Martijn Thédb758822016-04-12 14:31:36 +020034+ Bluetooth LE Advertising / Scan Response Data Parsing
35= Parse EIR_Flags, EIR_CompleteList16BitServiceUUIDs, EIR_CompleteLocalName and EIR_TX_Power_Level
36
37ad_report_raw_data = \
38 "043e2b020100016522c00181781f0201020303d9fe1409" \
39 "506562626c652054696d65204c452037314536020a0cde".decode('hex')
40scapy_packet = HCI_Hdr(ad_report_raw_data)
41
42assert(scapy_packet[EIR_Flags].flags == 0x02)
43assert(scapy_packet[EIR_CompleteList16BitServiceUUIDs].svc_uuids == [0xfed9])
44assert(scapy_packet[EIR_CompleteLocalName].local_name == 'Pebble Time LE 71E6')
45assert(scapy_packet[EIR_TX_Power_Level].level == 12)
46
47= Parse EIR_Manufacturer_Specific_Data
48
49scan_resp_raw_data = \
50 "043e2302010401be5e0eb9f04f1716ff5401005f423331" \
51 "3134374432343631fc00030c0000de".decode('hex')
52scapy_packet = HCI_Hdr(scan_resp_raw_data)
53
54assert(scapy_packet[EIR_Manufacturer_Specific_Data].data == '\x00_B31147D2461\xfc\x00\x03\x0c\x00\x00')
55assert(scapy_packet[EIR_Manufacturer_Specific_Data].company_id == 0x154)