100% found this document useful (2 votes)
822 views12 pages

Polar Measurement Data Specification

This document specifies the Bluetooth Low Energy communication for Polar's proprietary Polar Measurement Data (PMD) service. It defines the GATT service and characteristics for transmitting different biometric sensor data types like ECG, PPG, acceleration, gyroscope, and magnetometer readings. The document also outlines the control point error codes, sample frame formats for each sensor type, and an example of transmitting delta encoded acceleration samples.

Uploaded by

mmm_ggg
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
822 views12 pages

Polar Measurement Data Specification

This document specifies the Bluetooth Low Energy communication for Polar's proprietary Polar Measurement Data (PMD) service. It defines the GATT service and characteristics for transmitting different biometric sensor data types like ECG, PPG, acceleration, gyroscope, and magnetometer readings. The document also outlines the control point error codes, sample frame formats for each sensor type, and an example of transmitting delta encoded acceleration samples.

Uploaded by

mmm_ggg
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

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

You might also like