Generic Attribute Profile (GATT)
Generic Attribute Profile (GATT) is a specification in the Bluetooth Low Energy (BLE) protocol stack. It is built on top of the Attribute Protocol. It defines the structure in which data is exchanged between two devices and how ATT attributes are grouped into sets to form services.
The top level of the GATT hierarchy is a profile. A GATT profile defines the use case of the device and groups together services. Services define functions the BLE device supports. Each service has one or more characteristics which is a value with properties and configuration information. Usually, only one of each characteristic is in each instance of a service.
For example, to enable a device to obtain blood pressure measurements, the Blood Pressure Profile is used. The Blood Pressure Profile needs to include the Blood Pressure Service which exposes blood pressure data. One of the characteristics of the Blood Pressure Service is a Blood Pressure Measurement. An instance of the Blood Pressure Service contains only one instance of the Blood Pressure Measurement characteristic which has one value field.