In my recent post we have covered introduction to BLE and some use cases. Now let's discuss some technical insight's and architecture. First we need to understand the BLE paradigm in detail. BLE paradigm operates in a pair where every device performs a role either it can be Central, Peripheral, Receiver or Broadcaster.
First pair in the BLE paradigm would be Central-Peripheral, The central device scans for the peripherals (devices) and advertisements. Where peripheral produces advertisements.
The primary step in Central-Peripheral pair is to establish connection. The central device establishes connection to peripheral and requests for the more data. Basically the pair works on request and response model.
Another pair Broadcaster-Receiver is the best one. Where in this pair we need not to establish connection. The Broadcaster device simply broadcasts data packets continuously without knowing who is consuming it. And receiver receives data packets transmitted from broadcaster device.
This pair is based on No connection, no requests, no response model. Simply transmit data packets in the air and compatible devices will consume it and use for its purpose.
Now we are well aware of roles of BLE devices and can easily differentiate them as per the categories. But before we move further and transmit or receive data we must know the data structure inside device.
Every peripheral device has a profile specification for exposing data. Generic Attribute Profile (GATT) specification determines how these small data will be send and receive over BLE networks. These small data packet is called as Attribute.
Every peripheral device has a profile specification for exposing data. Generic Attribute Profile (GATT) specification determines how these small data will be send and receive over BLE networks. These small data packet is called as Attribute.
GATT is nothing but collection of services. Where services include different Characteristics (functions) for a device. Every Characteristics is explained by a Descriptor. Each function of a service can have multiple descriptors, These descriptors contains metadata about the type of the value or any other configuration information. For example in heart bit proximity sensor, Descriptor can tell about the unit of distance weather it is a feet or meter.