Polar Measurement Data Specification for 3rd Party
• Abstract
• Introduction
• Gatt Service and Characteristics Declaration
• PMD Measurement Types
• Control Point Error Codes
• Frame types ACC
• Frame types Magnetometer
• Frame types Gyroscope
• Frame types PPG
• Frame types ECG
• Frame types PPI
• Delta frame sample example from Polar Verity Sense (Acc data as example)
• Prerequisite
• Read Features from device
• Request Stream Settings
• Start Stream
• Stop Stream
• Abbreviations
Abstract
This document specifies BLE communication for Polar SDK. Reader should have a good
knowledge about BLE and GATT.
Introduction
This document is intending to explain the measurement data flow on top of Polar proprietary
Polar Measurement Data (PMD) service.
Gatt Service and Characteristics Declaration
Service Optional Security
Characteristic Name Property UUID
Name Property Permission
PMD FB005C80-02E7-F387-
NA
Service 1CAD-8ACD2D8DF0C8
Read,
FB005C81-02E7-F387-
PMD Control Point Write, None
1CAD-8ACD2D8DF0C8
Indicate
PMD Control Point Client
Read,
Characteristic Configuration None
Write
Descriptor
FB005C82-02E7-F387-
PMD Data MTU Characteristic Notify Indicate None
1CAD-8ACD2D8DF0C8
PMD Data MTU Client Characteristic Read,
None
Configuration Descriptor Write
PMD Measurement Types
Measurement Types Description Unit Static Requirements
0 ECG Volt (V) Lifetime
1 PPG Lifetime
2 Acceleration Force per unit mass (g) Lifetime
3 PP Interval Second (s) Lifetime
4 Reserved for Future Use Lifetime
5 Gyroscope Degrees per second (dps) Lifetime
6 Magnetometer Gauss (G) Lifetime
7-255 Reserved for Future Use Not defined Not defined
Control Point Error Codes
Value Description Usage
Response when sent Control Point Command is handled
0 SUCCESS
with success.
Response when sent Control Point Command is not
1 ERROR INVALID OP CODE
supported by device.
Response when requested measurement is not known by
2 ERROR INVALID MEASUREMENT TYPE
the device.
Response when requested measurement is not supported
3 ERROR NOT SUPPORTED
by the device.
Response when given length of doesn't match the
4 ERROR INVALID LENGTH
received number of data.
Response when request contains parameters that prevents
5 ERROR INVALID PARAMETER
handling the request.
6 ERROR ALREADY IN STATE Response when device already in requested state.
Response when requested measurement with a resolution
7 ERROR INVALID RESOLUTION
that is not supported by device.
Response when requested measurement with a sample
8 ERROR INVALID SAMPLE RATE
rate that is not supported by device.
Response when requested measurement with a range that
9 ERROR INVALID RANGE
is not supported by device.
Response when connection MTU is not matching the
10 ERROR INVALID MTU
device required MTU.
Response when measurement request contains invalid
11 ERROR INVALID NUMBER OF CHANNELS
number of channels.
12 ERROR INVALID STATE Response when device in invalid state.
Response when device is in charger and doesn't support
13 ERROR DEVICE IN CHARGER
requested command in the current state.
14 -
RFU Reserved for Future Usage.
255
Frame types ACC
Frame type Size Unit Description
0 3B mG x, y, z 8-bit
1 6B mG x, y, z 16-bit
2 9B mG x, y, z 24-bit
128 n mG Delta frame
3..127,
RFU
129..255
Frame types Magnetometer
Frame type Size Unit Description
128 n Gauss Delta frame
0..127, 129..255 RFU
Frame types Gyroscope
Frame type Size Unit Description
128 n dps Delta frame
0..127, 129..255 RFU
Frame types PPG
Frame type Size Description
Bytes 0..2: ppg0
Bytes 3..5: ppg1
0 12B
Bytes 6..8: ppg2
Bytes 9..11: ambient0
128 n Delta frame
1..127, 129..255 RFU
Frame types ECG
Frame type Size Unit Description
0 3B µV Electrocardiogram
1..255 RFU
Frame types PPI
Frame type Size Description
Byte 0: Heart rate in bpm
Bytes 1..2: Peak to peak in milliseconds
0 6B Bytes 3..4: Error estimate
Byte 5: Flags.
bit0: error bit. If true then PP measurement is invalid for some reason.
bit1: skin contact status
bit2: skin contact status supported
1..255 RFU
Delta frame sample example from Polar Verity Sense
(Acc data as example)
Sample
Index Size Name Description
data hex
When resolution = 16bit and number of
channels = 3 then
Requested measurement Reference D0 FF 65
0
resolution * number of channels sample 01 E4 0F
x channel: 0xFFD0 = -48, y channel:
0x0165 = 357, z channel: 0x0FE4 = 4068
Delta size in
.. 1B 08 Each delta value is 8 bits in length
bits
Delta samples
.. 1B 1D Samples count is 29.
count
delta sample 0:
x channel: 0xFFD0 + 0xFC = 0xFFCC
=> -52
Math.ceil((Delta size in bits *
.. Delta sample FC 07 FF
number of channels)/8) y channel: 0x0165 + 0x07 = 0x016C =>
364
z channel: 0x0FE4 + 0xFF = 0x0FE3 =>
4067
delta sample 1:
x channel: 0xFFCC + 0x0C = 0xFFD8
=> -40
Math.ceil((Delta size in bits *
.. Delta sample 0C 13 F2
number of channels)/8) y channel: 0x016C + 0x13 = 0x017F =>
383
z channel: 0x0FE3 + 0xF2 = 0x0FD5 =>
4053
.. Delta sample ... delta sample 2: ..
Prerequisite
Read Features from device
Request Stream Settings
Start Stream
Stop Stream
Abbreviations
Acronyms and Abbreviations Meaning
PMD Polar Measurement Data
BLE Bluetooth Low Energy
GATT Generic Attribute Profile
MTU Maximum Transmission Unit
ACC Acceleration
ECG Electrocardiogram
PPG Photoplethysmogram
PPI (or PP Interval) Peak-to-Peak interval
dps degrees per second
RFU Reserved for future use