BlueHeron.HCI.Event.LEMeta.AdvertisingReport.Device (blue_heron v0.4.1) View Source
A struct representing a single device within a LE Advertising Report.
The LE Advertising Report event indicates that one or more Bluetooth devices have responded to an active scan or have broadcast advertisements that were received during a passive scan. The Controller may queue these advertising reports and send information from multiple devices in one LE Advertising Report event.
This event shall only be generated if scanning was enabled using the LE Set Scan Enable command. It only reports advertising events that used legacy advertising PDUs.
Reference: Version 5.0, Vol 2, Part E, 7.7.65.2
The :data
field of an BlueHeron.HCI.Event.LEMeta.AdvertisingReport.Device
struct represents AD
Structures.
The significant part contains a sequence of AD structures. Each AD structure shall have a Length field of one octet, which contains the Length value, and a Data field of Length octets.
Reference: Version 5.0, Vol 3, Part C, 11
Link to this section Summary
Functions
Deserializes a LE Advertising Report Event.
Deserializes AD Structures.
Deserializes AD Structures into basic Bluetooth data types.
Serializes a list of BlueHeron.HCI.Event.LEMeta.AdvertisingReport
structs into a LE Advertising
Report Event.
Serializes basic Bluetooth data types into AD Structures.
Serializes a BlueHeron.HCI.Event.LEMeta.AdvertisingData.Device
structs' :data
field into AD
Structures.
Link to this section Types
Specs
Link to this section Functions
Deserializes a LE Advertising Report Event.
iex> Device.deserialize(
...> <<2, 0, 1, 1, 2, 2, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 7, 6, 32, 1, 0, 0, 0, 2, 4,
...> 7>>
...> )
{:ok, [
%Device{
event_type: 0,
address_type: 1,
address: 2,
data: [],
rss: 4
},
%Device{
event_type: 1,
address_type: 2,
address: 5,
data: [{"Service Data - 32-bit UUID", %{uuid: 1, data: <<2>>}}],
rss: 7
}
]}
Deserializes AD Structures.
iex> deserialize_ads(<<0xFF, 76, 2, 0x15, 1::size(168)>>)
{:ok,
{"Manufacturer Specific Data",
{"Apple, Inc.", {"iBeacon", %{major: 0, minor: 0, tx_power: 1, uuid: 0}}}}}
iex> deserialize_ads(<<0x20, 1::size(40)>>)
{:ok, {"Service Data - 32-bit UUID", %{uuid: 0, data: <<1>>}}}
iex> deserialize_ads(<<0xFF>>)
{:error, {"Manufacturer Specific Data", <<>>}}
Deserializes AD Structures into basic Bluetooth data types.
iex> deserialize_advertising_data(<<25, 255, 76, 2, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
...> 0, 0, 0, 1, 0, 1, 0, 2, 3, 6, 32, 1, 0, 0, 0, 2>>)
{:ok, [
{"Manufacturer Specific Data", {"Apple, Inc.", {"iBeacon", %{
major: 1,
minor: 2,
tx_power: 3,
uuid: 1
}}}},
{"Service Data - 32-bit UUID", %{uuid: 1, data: <<2>>}}]
}
Serializes a list of BlueHeron.HCI.Event.LEMeta.AdvertisingReport
structs into a LE Advertising
Report Event.
iex> Device.serialize([
...> %Device{
...> event_type: 0,
...> address_type: 1,
...> address: 2,
...> data: [],
...> rss: 4
...> },
...> %Device{
...> event_type: 1,
...> address_type: 2,
...> address: 5,
...> data: [{"Service Data - 32-bit UUID", %{uuid: 1, data: <<2>>}}],
...> rss: 7
...> }
...> ])
{:ok,
<<2, 0, 1, 1, 2, 2, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 7, 6, 32, 1, 0, 0, 0, 2, 4, 7>>}
Serializes basic Bluetooth data types into AD Structures.
iex> serialize_advertising_data([
...> {"Manufacturer Specific Data",
...> {"Apple, Inc.",
...> {"iBeacon",
...> %{
...> major: 1,
...> minor: 2,
...> tx_power: 3,
...> uuid: 1
...> }}}},
...> {"Service Data - 32-bit UUID", %{uuid: 1, data: <<2>>}}
...> ])
{:ok,
<<25, 255, 76, 2, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 2, 3, 6, 32,
1, 0, 0, 0, 2>>}
Serializes a BlueHeron.HCI.Event.LEMeta.AdvertisingData.Device
structs' :data
field into AD
Structures.
iex> serialize_device_data(
...> %Device{
...> address: 1,
...> address_type: 2,
...> data: [
...> {"Manufacturer Specific Data",
...> {"Apple, Inc.",
...> {"iBeacon",
...> %{
...> major: 4,
...> minor: 5,
...> tx_power: 6,
...> uuid: 7
...> }}}},
...> {"Service Data - 32-bit UUID", %{uuid: 8, data: <<9>>}}
...> ],
...> event_type: 1,
...> rss: 2
...> }
...> )
%Device{
address: 1,
address_type: 2,
data: <<25, 255, 76, 2, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 4, 0, 5,
6, 6, 32, 8, 0, 0, 0, 9>>,
event_type: 1,
rss: 2
}