0% found this document useful (0 votes)
28 views

CPS v1.1

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
0% found this document useful (0 votes)
28 views

CPS v1.1

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/ 37

Cycling Power Service

Bluetooth® Service Specification

Date 2016-05-03

Revision CPS_v1.1

Group Prepared By Sports and Fitness Working Group

Feedback Email [email protected]

Abstract:
This service exposes power- and force-related data and optionally speed- and cadence-related
data from a Cycling Power sensor intended for sports and fitness applications.

Bluetooth SIG Proprietary


Cycling Power Service
Bluetooth Service Specification

Revision History

Revision
Date Comments
Number
v1.0 2013-04-30 Adopted by the Bluetooth SIG Board of Directors
v1.1 2016-05-03 Adopted by the Bluetooth SIG BoD

Contributors

Name Member
Robert Hughes Intel Corporation
Jari Miettinen Polar
Niclas Granqvist Polar
Guillaume Schatz Polar
Ed Watson Saris
Donny Warbritton Stages Cycling
CPS_v1.1

Bluetooth SIG Proprietary Page 2 of 37


Cycling Power Service
Bluetooth Service Specification

DISCLAIMER AND COPYRIGHT NOTICE


Use of Bluetooth Specifications and any related intellectual property is governed by the Promoters Membership Agreement among
the Promoter Members and Bluetooth SIG (the “Promoters Agreement”), certain membership agreements between Bluetooth SIG and
its Adopter and Associate Members, including, but not limited to, the Membership Application, the Bluetooth Patent/Copyright License
Agreement and the Bluetooth Trademark License Agreement (collectively, the “Membership Agreements”) and the Bluetooth
Specification Early Adopters Agreements (1.2 Early Adopters Agreements) among Early Adopter members of the unincorporated
Bluetooth SIG and the Promoter Members (the “Early Adopters Agreement”). Certain rights and obligations of the Promoter Members
under the Early Adopters Agreements have been assigned to Bluetooth SIG by the Promoter Members.
Use of the Specification by anyone who is not a member of Bluetooth SIG or a party to an Early Adopters Agreement (each such
person or party, a “Member”) is prohibited. The use of any portion of a Bluetooth Specification may involve the use of intellectual
property rights ("IPR"), including pending or issued patents, or copyrights or other rights. Bluetooth SIG has made no search or
investigation for such rights and disclaims any undertaking or duty to do so. The legal rights and obligations of each Member are
governed by the applicable Membership Agreements, Early Adopters Agreement or Promoters Agreement. No license, express or
implied, by estoppel or otherwise, to any intellectual property rights are granted herein.
Any use of the Specification not in compliance with the terms of the applicable Membership Agreements, Early Adopters Agreement
or Promoters Agreement is prohibited and any such prohibited use may result in (i) termination of the applicable Membership
Agreements or Early Adopters Agreement and (ii) liability claims by Bluetooth SIG or any of its Members for patent, copyright and/or
trademark infringement claims permitted by the applicable agreement or by applicable law.
THE SPECIFICATION IS PROVIDED “AS IS” WITH NO WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY OF
MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, SATISFACTORY QUALITY, OR
REASONABLE SKILL OR CARE, OR ANY WARRANTY ARISING OUT OF ANY COURSE OF DEALING, USAGE, TRADE
PRACTICE, PROPOSAL, SPECIFICATION OR SAMPLE.
Each Member hereby acknowledges that products equipped with the Bluetooth wireless technology ("Bluetooth Products") may be
subject to various regulatory controls under the laws and regulations applicable to products using wireless non licensed spectrum of
CPS_v1.1

various governments worldwide. Such laws and regulatory controls may govern, among other things, the combination, operation, use,
implementation and distribution of Bluetooth Products. Examples of such laws and regulatory controls include, but are not limited to,
airline regulatory controls, telecommunications regulations, technology transfer controls and health and safety regulations. Each
Member is solely responsible for the compliance by their Bluetooth Products with any such laws and regulations and for obtaining any
and all required authorizations, permits, or licenses for their Bluetooth Products related to such regulations within the applicable
jurisdictions. Each Member acknowledges that nothing in the Specification provides any information or assistance in connection with
securing such compliance, authorizations or licenses. NOTHING IN THE SPECIFICATION CREATES ANY WARRANTIES, EITHER
EXPRESS OR IMPLIED, REGARDING SUCH LAWS OR REGULATIONS.
ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS OR FOR
NONCOMPLIANCE WITH LAWS, RELATING TO USE OF THE SPECIFICATION IS EXPRESSLY DISCLAIMED. To the extent not
prohibited by law, in no event will Bluetooth SIG or its Members or their affiliates be liable for any damages, including without limitation,
lost revenue, profits, data or programs, or business interruption, or for special, indirect, consequential, incidental or punitive damages,
however caused and regardless of the theory of liability, arising out of or related to any furnishing, practicing, modifying, use or the
performance or implementation of the contents of this Specification, even if Bluetooth SIG or its Members or their affiliates have been
advised of the possibility of such damages. BY USE OF THE SPECIFICATION, EACH MEMBER EXPRESSLY WAIVES ANY CLAIM
AGAINST BLUETOOTH SIG AND ITS MEMBERS OR THEIR AFFILATES RELATED TO USE OF THE SPECIFICATION.
If this Specification is an intermediate draft, it is for comment only. No products should be designed based on it except solely to verify
the prototyping specification at SIG sponsored IOP events and it does not represent any commitment to release or implement any
portion of the intermediate draft, which may be withdrawn, modified, or replaced at any time in the adopted Specification.
Bluetooth SIG reserves the right to adopt any changes or alterations to the Specification it deems necessary or appropriate.
Copyright © 2012–2016. The Bluetooth word mark and logos are owned by Bluetooth SIG, Inc. All copyrights in the Bluetooth
Specifications themselves are owned by Ericsson AB, Lenovo (Singapore) Pte. Ltd., Intel Corporation, Microsoft
Corporation, Motorola Mobility, LLC, Nokia Corporation and Toshiba Corporation. Other third-party brands and names are
the property of their respective owners.

Bluetooth SIG Proprietary Page 3 of 37


Cycling Power Service
Bluetooth Service Specification

Document Terminology
The Bluetooth SIG has adopted portions of the IEEE Standards Style Manual which dictate use
of the words “shall’’, “should”, “may”, and “can” in the development of documentation, as follows:

The word shall is used to indicate mandatory requirements strictly to be followed in order to
conform to the standard and from which no deviation is permitted (shall equals is required to).

The use of the word must is deprecated and shall not be used when stating mandatory
requirements; must is used only to describe unavoidable situations.

The use of the word will is deprecated and shall not be used when stating mandatory
requirements; will is only used in statements of fact.

The word should is used to indicate that among several possibilities one is recommended as
particularly suitable, without mentioning or excluding others; or that a certain course of action is
preferred but not necessarily required; or that (in the negative form) a certain course of action is
deprecated but not prohibited (should equals is recommended that).

The word may is used to indicate a course of action permissible within the limits of the standard
(may equals is permitted).
CPS_v1.1

The word can is used for statements of possibility and capability, whether material, physical, or
causal (can equals is able to).

The term Reserved for Future Use (RFU) is used to indicate Bluetooth SIG assigned values that
are reserved by the Bluetooth SIG and are not otherwise available for use by implementations.

Bluetooth SIG Proprietary Page 4 of 37


Cycling Power Service
Bluetooth Service Specification

Contents
1 Introduction .......................................................................................................................................... 7
1.1 Conformance .................................................................................................................................. 7
1.2 Service Dependency....................................................................................................................... 7
1.3 Bluetooth Core Specification Release Compatibility ...................................................................... 7
1.4 GATT Sub-Procedure Requirements ............................................................................................. 7
1.5 Transport Dependencies ................................................................................................................ 8
1.6 Error Codes .................................................................................................................................... 8
1.7 Byte Transmission Order ................................................................................................................ 8
2 Service Declaration.............................................................................................................................. 9
3 Service Characteristics ..................................................................................................................... 10
3.1 Cycling Power Feature ................................................................................................................. 10
3.1.1 Characteristic Behavior ........................................................................................................... 10
3.2 Cycling Power Measurement ........................................................................................................ 11
3.2.1 Characteristic Behavior ........................................................................................................... 11
3.2.1.1 Flags Field ....................................................................................................................... 12
3.2.1.2 Instantaneous Power Field .............................................................................................. 13
CPS_v1.1

3.2.1.3 Pedal Power Balance Field ............................................................................................. 14


3.2.1.4 Accumulated Torque Field .............................................................................................. 14
3.2.1.5 Wheel Revolution Data Field Pair ................................................................................... 14
3.2.1.6 Crank Revolutions Data Field Pair .................................................................................. 15
3.2.1.7 Extreme Force Magnitudes Field Pair ............................................................................. 15
3.2.1.8 Extreme Torque Magnitudes Field Pair .......................................................................... 16
3.2.1.9 Extreme Angles Field Pair ............................................................................................... 16
3.2.1.10 Top Dead Spot Angle Field ......................................................................................... 16
3.2.1.11 Bottom Dead Spot Angle Field .................................................................................... 17
3.2.1.12 Accumulated Energy Field .......................................................................................... 17
3.2.1.13 Cycling Power Measurement Broadcast Feature ....................................................... 17
3.3 Sensor Location ............................................................................................................................ 18
3.3.1 Characteristic Behavior ........................................................................................................... 18
3.4 Cycling Power Control Point ......................................................................................................... 18
3.4.1 Cycling Power Control Point Procedure Requirements .......................................................... 18
3.4.2 Cycling Power Control Point Behavioral Description............................................................... 21
3.4.2.1 Set Cumulative Value Procedure .................................................................................... 21
3.4.2.2 Update Sensor Location Procedure ................................................................................ 22
3.4.2.3 Request Supported Sensor Locations Procedure........................................................... 22
3.4.2.4 Set Crank Length Procedure........................................................................................... 22

Bluetooth SIG Proprietary Page 5 of 37


Cycling Power Service
Bluetooth Service Specification

3.4.2.5 Request Crank Length Procedure................................................................................... 23


3.4.2.6 Set Chain Length Procedure ........................................................................................... 23
3.4.2.7 Request Chain Length Procedure ................................................................................... 23
3.4.2.8 Set Chain Weight Procedure........................................................................................... 24
3.4.2.9 Request Chain Weight Procedure................................................................................... 24
3.4.2.10 Set Span Length Procedure ........................................................................................ 24
3.4.2.11 Request Span Length Procedure ................................................................................ 25
3.4.2.12 Start Offset Compensation Procedure ........................................................................ 25
3.4.2.13 Mask Cycling Power Measurement Characteristic Content ........................................ 26
3.4.2.14 Request Sampling Rate Procedure............................................................................. 27
3.4.2.15 Request Factory Calibration Date Procedure ............................................................. 27
3.4.3 General Error Handling procedures ........................................................................................ 28
3.4.4 Procedure Timeout .................................................................................................................. 29
3.5 Cycling Power Vector ................................................................................................................... 29
3.5.1 Characteristic Behavior ........................................................................................................... 30
3.5.1.1 Flags Field ....................................................................................................................... 31
3.5.1.2 Crank Revolution Data Field Pair .................................................................................... 31
3.5.1.3 First Crank Measurement Angle Field............................................................................. 32
CPS_v1.1

3.5.1.4 Instantaneous Force Magnitude Array Field ................................................................... 32


3.5.1.5 Instantaneous Torque Magnitude Array Field ................................................................. 33
3.6 Requirements for Time-Sensitive Data......................................................................................... 34
3.7 Requirements for Servers Used for a Distributed Power System ................................................ 34
4 SDP Interoperability........................................................................................................................... 35
5 Acronyms and Abbreviations ........................................................................................................... 36
6 References .......................................................................................................................................... 37

Bluetooth SIG Proprietary Page 6 of 37


Cycling Power Service
Bluetooth Service Specification

1 Introduction
The Cycling Power (CP) Service exposes power- and force-related data and optionally speed-
and cadence-related data from a Cycling Power sensor (Server) intended for sports and fitness
applications.

1.1 Conformance
If a device claims conformance to this service, all capabilities indicated as mandatory for this
service shall be supported in the specified manner (process-mandatory). This also applies for all
optional and conditional capabilities for which support is indicated. All mandatory capabilities,
and optional and conditional capabilities for which support is indicated, are subject to verification
as part of the Bluetooth qualification program.

1.2 Service Dependency


This service is not dependent upon any other services.

1.3 Bluetooth Core Specification Release Compatibility


This specification is compatible with any of the following:
CPS_v1.1

• Bluetooth Core Specification 4.0 with CSA2, CSA3 and CSA4 [1]
• A Bluetooth Core Specification later than 4.0.

1.4 GATT Sub-Procedure Requirements


Requirements in this section represent a minimum set of requirements for a Server. Other
GATT sub-procedures may be used if supported by both Client and Server.

Table 1.1 summarizes additional GATT sub-procedure requirements beyond those required by
all GATT Servers.

GATT Sub-Procedure Requirements


Write Characteristic Value C.1
Notifications M
Indications C.1
Read Characteristic Descriptors M
Write Characteristic Descriptors M

Table 1.1: GATT Sub-procedure Requirements


C.1: Mandatory if the Cycling Power Control Point characteristic is supported, otherwise
excluded for this service.

Bluetooth SIG Proprietary Page 7 of 37


Cycling Power Service
Bluetooth Service Specification

1.5 Transport Dependencies


With the exception of the Cycling Power Measurement Broadcast feature (see Section 3.2.1.13)
used in an advanced mode of operation, there are no transport restrictions imposed by this
service specification. In that case, the LE method of broadcasting is used and broadcasting over
BR/EDR is not supported.

Where the term BR/EDR is used throughout this document, this also includes the use of AMP.

1.6 Error Codes


This service defines the following Attribute Protocol Application Error code:

Name Error Code Description


The notifications of the Cycling Power Vector
Inappropriate Connection
0x80 characteristic cannot be sent due to inappropriate
Parameters
connection parameters.

Table 1.2: Application Error Codes

1.7 Byte Transmission Order


All characteristics used with this service shall be transmitted with the least significant octet first
CPS_v1.1

(i.e., little endian). The least significant octet is identified in the characteristic definitions in [2].

Bluetooth SIG Proprietary Page 8 of 37


Cycling Power Service
Bluetooth Service Specification

2 Service Declaration
The Cycling Power Service should be instantiated as a «Primary Service».

The service UUID shall be set to «Cycling Power Service» defined in [2].
CPS_v1.1

Bluetooth SIG Proprietary Page 9 of 37


Cycling Power Service
Bluetooth Service Specification

3 Service Characteristics
The following characteristics are exposed in the Cycling Power Service. Only one instance of
each characteristic is permitted within this service. The characteristic formats and UUIDs are
defined in [2].

Where a characteristic can be notified or indicated, a Client Characteristic Configuration


descriptor shall be included in that characteristic as required by the Core Specification [1].

Where a characteristic can be broadcasted, a Server Characteristic Configuration descriptor


shall be included in that characteristic as required by the Core Specification [1].

Characteristic Requirement Mandatory Optional Security


Name Properties Properties Permissions
Cycling Power Feature M Read None.
Cycling Power M Notify LE: Broadcast None.
Measurement BR/EDR: None
Sensor Location M Read None.
Cycling Power Control O Write, None.
Point Indicate
CPS_v1.1

Cycling Power Vector O Notify None

Table 3.1: Cycling Power Service characteristics


Notes:
• Security Permissions of “None” means that this service does not impose any
requirements.
• Properties not listed as Mandatory or Optional are Excluded for this version of this
service.

3.1 Cycling Power Feature


The Cycling Power Feature characteristic shall be used to describe the supported features of
the Server.

Reserved for Future Use (RFU) bits in the Cycling Power Feature characteristic value shall be
set to 0.

3.1.1 Characteristic Behavior


When read, the Cycling Power Feature characteristic returns a value that is used by a Client to
determine the supported features of the Server.

The bits of the Cycling Power Feature characteristic may either be static for the lifetime of the
device (i.e., static permanently or until Service Changed is indicated) or guaranteed to be static

Bluetooth SIG Proprietary Page 10 of 37


Cycling Power Service
Bluetooth Service Specification

only during a connection. Although all defined bits (i.e., bits 0 to 21) in this version of this
specification are required to be static during the lifetime of a device, it is possible that some
future bits will be defined as being static only during a connection.

Other than the Distributed System Support bits, when the Server supports a feature, the
associated bit of the Cycling Power Feature characteristic shall be set to 1 (Feature supported),
otherwise, the associated bit shall be set to 0 (Feature not supported). The feature bits are
defined in [2].

If the Server is not designed for use in a distributed system (i.e., the Server measures the total
amount of power generated by the user), it shall set the Distributed System Support bits to 01
(Not for use in a distributed system).

If the Server is designed such that it can be used as part of a distributed system (i.e., the
Instantaneous Power value of the Cycling Power Measurement characteristic might represent
only a portion of the total amount of power generated by the user), it shall set the Distributed
System Support bits to 10 (Can be used in a distributed system).

3.2 Cycling Power Measurement


The Cycling Power Measurement characteristic is used to send power-related data, speed-
CPS_v1.1

related data, and/or cadence-related data. Included in the characteristic value are a Flags field
(for showing the presence of optional fields and measurement status), an Instantaneous Power
field and depending upon the contents of the Flags field, may include one or more optional fields
defined in [2].

3.2.1 Characteristic Behavior


When the Cycling Power Measurement characteristic is configured for notification via the Client
Characteristic Configuration descriptor and a power-related measurement is available, this
characteristic shall be notified. The Server should notify this characteristic at a regular interval,
typically once per second while in a connection and is not configurable by the Client.
If the Cycling Power Measurement Broadcast feature is supported by the LE Server (see
Section 3.2.1.13) and when the Cycling Power Measurement characteristic is configured for
broadcast via the Server Characteristic Configuration descriptor and a power-related
measurement is available, this characteristic shall be broadcasted (e.g., non-connectable
undirected advertisement events) while in a connection (e.g. the Server stops broadcasting
when disconnected). The Server should broadcast this characteristic at a regular interval. This
should be typically broadcasted at the same interval as the notification of this characteristic.
For an LE Server that supports the Cycling Power Measurement Broadcast feature, it shall
support the sending of notifications and broadcasts while in a connection.
If the Server supports the Cycling Power Measurement Characteristic Content Masking feature
and if the Client does not need a particular field of the Cycling Power Measurement
characteristic, the Server may allow the Client to turn off that particular field of the Cycling
Bluetooth SIG Proprietary Page 11 of 37
Cycling Power Service
Bluetooth Service Specification

Power Measurement characteristic as described in Section 3.4.2.13. When a Client turns off
some fields of the Cycling Power Measurement characteristic, this may affect the broadcast of
the Cycling Power Measurement characteristic as described in Section 3.2.1.13 and is left to the
implementation.
Refer to Section 3.7 for additional recommendations for distributed power sensor systems (e.g.,
one Server on each pedal measuring the left and right power contribution).
For LE, all the fields of this characteristic cannot be present simultaneously if using a default
MTU size. For notification, if the characteristic size exceeds the current MTU size, the remaining
optional fields shall be sent in the subsequent notification. Refer to Section 3.2.1.13 for
additional requirements on the Cycling Power Measurement Broadcast feature.
For BR/EDR, this restriction does not exist due to a larger MTU size.
The Cycling Power Measurement characteristic contains time-sensitive data, thus the
requirements for time-sensitive data and data storage defined in Section 3.6 apply.

3.2.1.1 Flags Field


The Flags field shall be included in the Cycling Power Measurement characteristic.

Reserved for Future Use (RFU) bits in the Flags fields shall be set to 0.
CPS_v1.1

The bits of the Flags field, their function, and relationship to bits in the Cycling Power Feature
characteristic are shown in Table 3.2.

Flags Bit Name When Set to 0 When Set to 1 Corresponding Cycling


Power Feature support bit
(see Section 3.1)
Pedal Power Balance Corresponding Corresponding Pedal Power Balance
Present (bit 0), see 3.2.1.3 field not present field present Supported (bit 0)
Pedal Power Balance Unknown Left Pedal Power Balance
Reference (bit 1), see Note Supported (bit 0)
1 and 3.2.1.3
Accumulated Torque Corresponding Corresponding Accumulated Torque
Present (bit 2), see 3.2.1.4 field not present field present Supported (bit 1)
Accumulated Torque Source Wheel Based Crank Based Accumulated Torque
(bit 3), see Note 1 and Supported (bit 1)
3.2.1.4
Wheel Revolution Data Corresponding Corresponding Wheel Revolution Data
Present (bit 4), see 3.2.1.5 field pair not field pair present Supported (bit 2)
present
Crank Revolution Data Corresponding Corresponding Crank Revolution Data
Present (bit 5), see 3.2.1.6 field pair not field pair present Supported (bit 3)
present

Bluetooth SIG Proprietary Page 12 of 37


Cycling Power Service
Bluetooth Service Specification

Flags Bit Name When Set to 0 When Set to 1 Corresponding Cycling


Power Feature support bit
(see Section 3.1)
Extreme Force Magnitudes Corresponding Corresponding Extreme Magnitudes
Present (bit 6), see 3.2.1.7 field pair not field pair present Supported (bit 4) and Sensor
present Measurement Context set to
Force-based (bit 16)
Extreme Torque Magnitudes Corresponding Corresponding Extreme Magnitudes
Present (bit 7), see 3.2.1.8 field pair not field pair present Supported (bit 4) and Sensor
present Measurement Context set to
Torque-based (bit 16)
Extreme Angles Present (bit Corresponding Corresponding Extreme Angles Supported (bit
8), see 3.2.1.9 field pair not field pair present 5)
present
Top Dead Spot Angle Corresponding Corresponding Top and Bottom Dead Spot
Present (bit 9), see 3.2.1.10 field not present field present Angles Supported (bit 6)
Bottom Dead Spot Angle Corresponding Corresponding Top and Bottom Dead Spot
Present (bit 10), see field not present field present Angles Supported (bit 6)
3.2.1.11
CPS_v1.1

Accumulated Energy Corresponding Corresponding Accumulated Energy


Present (bit 11), see field not present field present Supported (bit 7)
3.2.1.12
Offset Compensation No required action Offset Offset Compensation Indicator
Indicator (bit 12), see Note 1 compensation Supported (bit 8)
and 3.4.2.12 action required

Table 3.2: Bit Definitions for the Cycling Power Measurement Characteristic
Note 1: If the corresponding feature bit of the Cycling Power Feature characteristic is set to 0,
then this bit has no meaning and shall be set to 0.
Each of the Flags bits in the table above may change during a connection if the corresponding
support bit in the Cycling Power Feature characteristic is set to 1 indicating that the feature is
supported. If the corresponding support bit is however set to 0, then the corresponding Flags bit
shall also be set to 0 since the feature is not supported.

3.2.1.2 Instantaneous Power Field


The Instantaneous Power field shall be included in the Cycling Power Measurement
characteristic.

The Instantaneous Power field represents the value of the power measured by the Server. It
represents either the total power the user is producing or a part of the total power depending on
the type of sensor (e.g., single sensor or distributed power sensor system). Refer to Section 3.7

Bluetooth SIG Proprietary Page 13 of 37


Cycling Power Service
Bluetooth Service Specification

for additional requirements for distributed power sensor systems (e.g., one Server on each
pedal measuring the left and right power contribution).

3.2.1.3 Pedal Power Balance Field


The Pedal Power Balance field may be included in the Cycling Power Measurement
characteristic if the Server supports the Pedal Power Balance feature (see Table 3.2).

The Pedal Power Balance field represents the ratio between the total amount of power
measured by the sensor and a reference (either unknown or left). For example, if the sensor
provides the power balance referenced to the left pedal, the power balance is calculated as
[LeftPower/(LeftPower + RightPower)]*100 in units of percent.

When supported, the Pedal Power Balance Reference bit of the Flags field (bit 1) describes
whether the value is referenced from ’left’ or the reference is ‘unknown’.

3.2.1.4 Accumulated Torque Field


The Accumulated Torque field may be included in the Cycling Power Measurement
characteristic if the device supports the Accumulated Torque feature (see Table 3.2).

The Accumulated Torque field represents the cumulative value of the torque measured by the
Sensor. When a connection is established, this value starts at 0 Newton meter and is may roll
CPS_v1.1

over.

When supported, the Accumulated Torque Source bit of the Flags field (bit 3) describes whether
the value is ’wheel based’ or ‘crank based’.

The Accumulated Torque value may decrease.

3.2.1.5 Wheel Revolution Data Field Pair


The Wheel Revolution Data field pair (Cumulative Wheel Revolutions and Last Wheel Event
Time fields) may be included in the Cycling Power Measurement characteristic if the device
supports the Wheel Revolution Data feature (see Table 3.2). When present, these fields shall
always be present as a pair.

The Cumulative Wheel Revolution value is not permitted to roll over.

The Cumulative Wheel Revolutions value, which represents the number of times a wheel
rotates, is used in combination with the Last Wheel Event Time and the wheel circumference
value available on the collector device to enable it to calculate 1) the speed of the bicycle, 2) the
distance traveled and 3) and the power if combined with the Crank Revolution Data. In addition,
if there is link loss, the Cumulative Wheel Revolutions value can be used to calculate the
average speed of the bicycle during the link loss. This value is expected to be set to 0 (or
another desired value in case of e.g., a sensor upgrade) at initial installation on a bicycle as
described in Section 3.4.2.1. The Cumulative Wheel Revolutions value may decrement for some
implementations (e.g., If the bicycle is rolled in reverse), but shall not decrease below 0.
Bluetooth SIG Proprietary Page 14 of 37
Cycling Power Service
Bluetooth Service Specification

The ‘wheel event time’ is a free-running-count of 1/2048 second units and it represents the time
when the wheel revolution was detected by the wheel rotation sensor. Since several wheel
events can occur between transmissions, only the Last Wheel Event Time value is transmitted.

See Section 3.4.2.1 for requirements related to setting the value of the Cumulative Wheel
Revolutions field.

The Last Wheel Event Time value rolls over every 32 seconds.

3.2.1.6 Crank Revolutions Data Field Pair


The Crank Revolution Data field pair (Cumulative Crank Revolutions and Last Crank Event
Time fields) may be included in the Cycling Power Measurement characteristic if the device
supports the Crank Revolution Data feature (see Table 3.2). When present, these fields shall
always be present as a pair.

The Cumulative Crank Revolutions value, which represents the number of times a crank rotates,
is used in combination with the Last Crank Event Time to enable the Client to

1. Determine if the cyclist is coasting and

2. Calculate the instantaneous and average cadence


CPS_v1.1

3. Calculate the power if combined with the Wheel Revolution Data

Average cadence is not accurate unless 0 cadence events (i.e., coasting) are subtracted. In
addition, if there is link loss, the Cumulative Crank Revolutions value can be used to calculate
the average cadence during the link loss. This value is intended to roll over and is not
configurable.

The ‘crank event time’ is a free-running-count of 1/1024 second units and it represents the time
when the crank revolution was detected by the crank rotation sensor. Since several crank
events can occur between transmissions, only the Last Crank Event Time value is transmitted.

The Last Crank Event Time value rolls over every 64 seconds.

To enhance the user experience, the Server should ignore the extra crank revolutions that may
be detected when the user is not pedaling (e.g., coasting down the hill) but the sensor is facing
the crank revolution detection system (e.g., a magnet installed on the crankset) and may cause
unwanted crank revolution detections.

3.2.1.7 Extreme Force Magnitudes Field Pair


The Extreme Force Magnitude field pair (Maximum Force Magnitude and Minimum Force
Magnitude fields) may be included in the Cycling Power Measurement characteristic if the
device supports the Extreme Magnitudes feature and the Sensor Measurement Context of the
Cycling Power Feature characteristic is set to 0 (Force-based). Otherwise, this field pair is

Bluetooth SIG Proprietary Page 15 of 37


Cycling Power Service
Bluetooth Service Specification

excluded from this characteristic (see Table 3.2). When present, these fields shall always be
present as a pair.

The Maximum Force Magnitude field represents the maximum force value measured in a single
crank revolution; respectively the Minimum Force Magnitude field represents the minimum force
value measured in a single crank revolution.

Since a Server supports only one measurement context (e.g., Force-based or Torque-based),
the support of these fields excludes the support of the Maximum Torque Magnitude and
Minimum Torque Magnitude fields.

3.2.1.8 Extreme Torque Magnitudes Field Pair


The Extreme Torque Magnitudes field pair (Maximum Torque Magnitude and Minimum Torque
Magnitude fields) may be included in the Cycling Power Measurement characteristic if the
device supports the Extreme Magnitudes feature and the Sensor Measurement Context of the
Cycling Power Feature characteristic is set to 1 (Torque-based). Otherwise, this field pair is
excluded from this characteristic (see Table 3.2). When present, these fields shall always be
present as a pair.

The Maximum Torque Magnitude field represents the maximum torque value measured in a
single crank revolution; respectively the Minimum Torque Magnitude field represents the
CPS_v1.1

minimum torque value measured in a single crank revolution.

Since a Server supports only one measurement context (e.g., Force-based or Torque-based),
the support of these fields excludes the support of the Maximum Force Magnitude and Minimum
Force Magnitude fields.

3.2.1.9 Extreme Angles Field Pair


The Extreme Angles field pair (Maximum Angle and Minimum Angle fields) may be included in
the Cycling Power Measurement characteristic if the device supports the Extreme Angles
feature (see Table 3.2). When present, these fields shall always be present as a pair.

The Maximum Angle field represents the angle of the crank when the maximum value is
measured in a single crank revolution. Similarly the Minimum Angle field represents the angle of
the crank when the minimum value is measured in the same crank revolution. The maximum
and minimum values measured in a single crank revolution refer to either Maximum Force
Magnitude and Minimum Force Magnitude field pairs or Maximum Torque Magnitude and
Minimum Torque Magnitude field pairs.

3.2.1.10 Top Dead Spot Angle Field


The Top Dead Spot Angle field may be included in the Cycling Power Measurement
characteristic if the device supports the Top and Bottom Dead Spot Angles feature (see Table
3.2).

Bluetooth SIG Proprietary Page 16 of 37


Cycling Power Service
Bluetooth Service Specification

The Top Dead Spot Angle field represents the crank angle when the value of the Instantaneous
Power value becomes positive.

3.2.1.11 Bottom Dead Spot Angle Field


The Bottom Dead Spot Angle field may be included in the Cycling Power Measurement
characteristic if the device supports the Top and Bottom Dead Spot Angles feature (see Table
3.2).

The Bottom Dead Spot Angle field represents the crank angle when the value of the
Instantaneous Power value becomes negative.

3.2.1.12 Accumulated Energy Field


The Accumulated Energy field may be included in the Cycling Power Measurement
characteristic if the device supports the Accumulated Energy feature (see Table 3.2).

The Accumulated Energy field represents the accumulated value of the energy measured by the
sensor. When a connection is established, this value starts at 0 kilo Joules and is not expected
to roll over.

3.2.1.13 Cycling Power Measurement Broadcast Feature


The Cycling Power Measurement Broadcast feature is optional when using the LE transport and
CPS_v1.1

it is not applicable to BR/EDR.

When the Cycling Power Measurement Broadcast is enabled by the Client (e.g., via the Server
Characteristic Configuration descriptor), the Server shall send the Cycling Power Measurement
characteristic value in a non-connectable undirected advertising event. The Advertising Data
shall not exceed 31 octets and shall include the AD Structure Data described in Table 3.3:

AD Type AD Data
Advertising Interval advInterval value
Cycling Power Service UUID followed by the Cycling Power
Service Data
Measurement characteristic value
Table 3.3: Broadcast AD Structures Requirements
When the Cycling Power Measurement Broadcast is disabled by the Client (e.g., via the Server
Characteristic Configuration descriptor), the Server shall stop advertising. The Server shall also
stop advertising when disconnected from the Client.

The Server may elect to send different fields of the Cycling Power Measurement characteristic
when broadcasting (non-connectable undirected advertisement) as when notifying. Typically,
the fields included in the broadcast are the mandatory fields (i.e., the Flags field and the
Instantaneous Power field) and the Crank Revolution Data field (i.e., the Cumulative Crank
Revolutions and the Last Crank Event Time field pair).

Bluetooth SIG Proprietary Page 17 of 37


Cycling Power Service
Bluetooth Service Specification

3.3 Sensor Location


The Sensor Location characteristic of the device may be used to describe the physical location
of the Server when correctly fitted.

If the Server supports the Multiple Sensor Locations feature, the value of the Sensor Location
characteristic may be updated while in a connection as described in Section 3.4.2.2. Otherwise,
if the Sensor Location characteristic is present and the Multiple Sensor Locations feature is not
supported, the value of the Sensor Location shall be static for the lifetime of the Server or until
Service Changed characteristic is indicated.

If the Server supports the Multiple Sensor Locations feature, the Client should not assume that
the value of the Sensor Location characteristic of the Server is set to the same value as at the
end of a previous connection. This is primarily because the value may have been altered by a
different Client after the previous connection (e.g., the user has moved his sensor to another
location and configured the new Sensor Location with another Client).

Refer to Section 3.7 for additional recommendations for distributed power sensor systems (e.g.,
one Server on each pedal measuring the left and right power contribution).

3.3.1 Characteristic Behavior


CPS_v1.1

The Sensor Location characteristic returns the sensor location value when read.

3.4 Cycling Power Control Point


If the Cycling Power Control Point is supported, profiles utilizing this service are required to
ensure that the Client configures the Cycling Power Control Point characteristic for indications
(i.e., via the Client Characteristic Configuration descriptor) at the first connection.

Support for this characteristic is mandatory if the Server supports Wheel Revolution Data or
Multiple Sensor Locations features, or if settings are configurable or if the Server allows a Client
to do offset compensation or if the Server allows a Client to request some parameters;
otherwise, it is excluded for this version of the service in accordance with Table 3.1: .

Refer to Section 3.7 for additional recommendations for distributed power sensor systems (e.g.,
one Server on each pedal measuring the left and right power contribution).

3.4.1 Cycling Power Control Point Procedure Requirements


Table 3.4 shows the requirements for the Cycling Power Control Point characteristic in the
context of this service.

A Client shall use the Write Characteristic Value procedure to initiate a procedure defined in
Table 3.4

Bluetooth SIG Proprietary Page 18 of 37


Cycling Power Service
Bluetooth Service Specification

Procedure Requiremen Parameter Applicable Response Response


t Description Value Parameter
Set Cumulative C.1 Cumulative Value Success, Operation Failed, None
Value Invalid Parameter,
Op Code Not Supported
Update Sensor C.2 Sensor Location Success, Operation Failed, None
Location Invalid Parameter,
Op Code Not Supported
Request Supported C.2 None Success Byte array –
Sensor Locations see 3.4.2.3
Operation Failed, None
Op Code Not, Supported
Set Crank Length C.3 Crank Length Success, Operation Failed, None
Invalid Parameter,
Op Code Not Supported
Request Crank C.4 None Success Crank Length
Length Operation Failed, None
Op Code Not Supported
CPS_v1.1

Set Chain Length C.5 Chain Length Success, Operation Failed, None
Invalid Parameter,
Op Code Not Supported
Request Chain C.6 None Success Chain Length
Length Operation Failed, None
Op Code Not Supported
Set Chain Weight C.7 Chain Weight Success, Operation Failed, None
Invalid Parameter,
Op Code Not Supported
Request Chain C.8 None Success Chain Weight
Weight Operation Failed, None
Op Code Not Supported
Set Span Length C.9 Span Length Success, Operation Failed, None
Invalid Parameter,
Op Code Not Supported
Request Span C.10 None Success Span Length
Length Operation Failed, None
Op Code Not Supported
C.11 None Success Raw Data

Bluetooth SIG Proprietary Page 19 of 37


Cycling Power Service
Bluetooth Service Specification

Procedure Requiremen Parameter Applicable Response Response


t Description Value Parameter
Start Offset Operation Failed, None
Compensation Invalid Parameter,
Op Code Not Supported
Mask Cycling C.12 Content Mask Success, Operation Failed, None
Power Invalid Parameter,
Measurement Op Code Not Supported
Characteristic
Content
Request Sampling C.13 None Success Sampling Rate
Rate Operation Failed, None
Op Code Not Supported
Request Factory C.14 None Success Factory
Calibration Date Calibration
Date
Operation Failed, None
Op Code Not Supported
Start Enhanced C.15 None Success, See 3.4.2.16
CPS_v1.1

Offset Operation Failed


Compensation Invalid Parameter, None
Op Code Not Supported

Table 3.4: Cycling Power Control Point Procedure Requirements


C.1: Mandatory if Wheel Revolutions Data feature is supported, otherwise excluded from this
version of this Service.
C.2: Mandatory if Multiple Sensor Locations feature is supported, otherwise excluded from
this version of this Service.C.3: Mandatory if the Crank Length Adjustment feature
is supported, otherwise excluded from this version of this Service.
C.4: Mandatory if the Crank Length Adjustment feature is supported, otherwise optional.
C.5: Mandatory if the Chain Length Adjustment feature is supported, otherwise excluded from
this version of this Service.
C.6: Mandatory if the Chain Length Adjustment feature is supported, otherwise optional.
C.7: Mandatory if the Chain Weight Adjustment feature is supported, otherwise excluded from
this version of this Service.
C.8: Mandatory if the Chain Weight Adjustment feature is supported, otherwise optional.
C.9: Mandatory if the Span Length Adjustment feature is supported, otherwise excluded from
this version of this Service.
C.10: Mandatory if the Span Length Adjustment feature is supported, otherwise optional.

Bluetooth SIG Proprietary Page 20 of 37


Cycling Power Service
Bluetooth Service Specification

C.11: Mandatory if the Offset Compensation feature is supported, otherwise excluded from this
version of this Service.
C.12: Mandatory if the Cycling Power Measurement Characteristic Content Masking feature is
supported, otherwise excluded from this version of this Service.
C.13: Mandatory if the Cycling Power Vector characteristic is supported, otherwise optional.
C.14: Mandatory if the Factory Calibration Date feature is supported, otherwise optional.
C.15: Mandatory if the Enhanced Offset Compensation feature is supported, otherwise
excluded from this version of this Service.

3.4.2 Cycling Power Control Point Behavioral Description


The Cycling Power Control Point is used by a Client to control certain behaviors of the Server.
Procedures are triggered by a Write to this characteristic value that includes an Op Code
specifying the operation (see Table 3.4) which may be followed by a Parameter that is valid
within the context of that Op Code.

3.4.2.1 Set Cumulative Value Procedure


When the Set Cumulative Value Op Code is written to the Cycling Power Control Point and if
the Wheel Revolution Data feature is supported by the Server, the Server shall set the
Cumulative Wheel Revolutions value to the desired cumulative wheel revolution value
CPS_v1.1

transmitted as a Parameter of the Cycling Power Control Point. The format of the Parameter
Value of this Control Point is UINT32 and represents the cumulative value in number of
revolutions with a resolution of 1 revolution. The response shall be indicated when the
Cumulative Wheel Revolutions value is applied using the Response Code Op Code, the
Request Op Code along with “Success” or other appropriate Response Value.

If the operation results in an error condition, or if this Op Code is not supported by the Server,
see Section 3.4.3 for details on handling this condition.

This procedure shall not be used to set the following values since they are not configurable.

• The Cumulative Crank Revolutions value of the Cycling Power Measurement characteristic
or
• The Cumulative Crank Revolutions value of the Cycling Power Vector characteristic or
• The Accumulated Torque value or the Accumulated Energy of the Cycling Power
Measurement characteristic.
This procedure should be used when the bicycle is not moving to avoid erroneous value of
instantaneous speed, which may also impact other values calculated by the collector device
(i.e., average speed, maximum speed).

Bluetooth SIG Proprietary Page 21 of 37


Cycling Power Service
Bluetooth Service Specification

3.4.2.2 Update Sensor Location Procedure


When the Update Sensor Location Op Code is written to the Cycling Power Control Point and if
the Multiple Sensor Locations feature is supported by the Server, the Server shall update the
value of the Sensor Location characteristic with the value of the desired sensor location
transmitted as a Parameter Value of the Cycling Power Control Point. The format of the
Parameter Value of this Control Point is UINT8 and represents the sensor location as defined in
the Sensor Location characteristic [2]. For example, a parameter of 0x0D will set the sensor
location to “Rear Hub”. The response shall be indicated when the sensor location is updated in
the Server using the Response Code Op Code, the Request Op Code along with “Success” or
other appropriate Response Value.

The Server should cache the most recent value of the Sensor Location characteristic to avoid
reconfiguration of this characteristic by the Client each time a connection is established.

If the operation results in an error condition, or if this Op Code is not supported by the Server,
see Section 3.4.3 for details on handling this condition.

This procedure should be used when the bicycle is not moving to avoid unexpected behavior.

3.4.2.3 Request Supported Sensor Locations Procedure


When the Request Supported Sensor Locations Op Code is written to the Cycling Power
CPS_v1.1

Control Point and if the Multiple Sensor Locations feature is supported by the Server, the Server
shall send a list of the supported sensor location values (i.e., a byte array containing values of
each supported sensor location). The response shall be indicated using the Response Code Op
Code, the Request Op Code, the appropriate Response Value and, if the procedure succeeds,
the Response Value shall be set to “Success” followed by a list of supported sensor location
values in the Response Parameter. The format of the Response Parameter, in response to this
Control Point, is a UINT8 array and represents the sensor locations the Server supports.

For LE Transport and a default ATT MTU, a maximum of 17 supported sensor locations can be
sent.

If the operation results in an error condition, or if this Op Code is not supported by the Server,
see Section 3.4.3 for details on handling this condition.

3.4.2.4 Set Crank Length Procedure


When the Set Crank Length Op Code is written to the Cycling Power Control Point and if the
Crank Length Adjustment feature is supported by the Server, the Server shall store the desired
crank length transmitted as a Parameter of the Cycling Power Control Point. The format of the
Parameter Value of this Control Point is UINT16 and represents the crank length in millimeters
with a resolution of 1/2 millimeter. The crank length value is typically used as a parameter for
internal signal processing. The response shall be indicated when the Crank Length is updated in
the Server using the Response Code Op Code, the Request Op Code along with “Success” or
other appropriate Response Value.
Bluetooth SIG Proprietary Page 22 of 37
Cycling Power Service
Bluetooth Service Specification

The Server should cache the most recent value of the crank length to avoid reconfiguration of
this value by the Client each time a connection is established.

If the operation results in an error condition, or if this Op Code is not supported by the Server,
see Section 3.4.3 for details on handling this condition.

This procedure should be used when the bicycle is not moving to avoid unexpected behavior
(e.g., inconsistent instantaneous power value).

3.4.2.5 Request Crank Length Procedure


When the Request Crank Length Op Code is written to the Cycling Power Control Point and if
the Crank Length Adjustment feature is supported by the Server, the Server shall send the
current value of the crank length. The response shall be indicated using the Response Code Op
Code, the Request Op Code, the appropriate Response Value and, if the procedure succeeds,
the Response Value shall be set to “Success” followed by the value of the crank length in the
Response Parameter. The format of the Response Parameter, in response to this Control Point,
is UINT16 and represents the crank length in millimeters with a resolution of 1/2 millimeter.

If the operation results in an error condition, or if this Op Code is not supported by the Server,
see Section 3.4.3 for details on handling this condition.
CPS_v1.1

3.4.2.6 Set Chain Length Procedure


When the Set Chain Length Op Code is written to the Cycling Power Control Point and if the
Chain Length Adjustment feature is supported by the Server, the Server shall store the desired
chain length transmitted as a Parameter of the Cycling Power Control Point. The format of the
Parameter Value of this Control Point is UINT16 and represents the chain length in millimeters
with a resolution of 1 millimeter. The chain length value is typically used as a parameter for
internal signal processing. The response shall be indicated when the Chain Length is updated in
the Server using the Response Code Op Code, the Request Op Code along with “Success” or
other appropriate Response Value.

The Server should cache the most recent value of the chain length to avoid reconfiguration of
this value by the Client each time a connection is established.

If the operation results in an error condition, or if this Op Code is not supported by the Server,
see Section 3.4.3 for details on handling this condition.

This procedure should be used when the bicycle is not moving to avoid unexpected behavior
(e.g., inconsistent instantaneous power value).

3.4.2.7 Request Chain Length Procedure


When the Request Chain Length Op Code is written to the Cycling Power Control Point and if
the Chain Length Adjustment feature is supported by the Server, the Server shall send the
current value of the chain length. The response shall be indicated using the Response Code Op

Bluetooth SIG Proprietary Page 23 of 37


Cycling Power Service
Bluetooth Service Specification

Code, the Request Op Code, the appropriate Response Value and, if the procedure succeeds,
the Response Value shall be set to “Success” followed by the value of the chain length in the
Response Parameter. The format of the Response Parameter, in response to this Control Point
is UINT16 and represents the chain length in millimeters with a resolution of 1 millimeter.

If the operation results in an error condition, or if this Op Code is not supported by the Server,
see Section 3.4.3 for details on handling this condition.

3.4.2.8 Set Chain Weight Procedure


When the Set Chain Weight Op Code is written to the Cycling Power Control Point and if the
Chain Weight Adjustment feature is supported by the Server, the Server shall store the desired
chain weight transmitted as a Parameter of the Cycling Power Control Point. The format of the
Parameter Value of this Control Point is UINT16 and represents the chain weight in grams with
a resolution of 1 gram. The chain weight value is typically used as a parameter for internal
signal processing. The response shall be indicated when the Chain Weight is updated in the
Server using the Response Code Op Code, the Request Op Code along with “Success” or other
appropriate Response Value.

The Server should cache the most recent value of the chain weight to avoid reconfiguration of
this value by the Client each time a connection is established.
CPS_v1.1

If the operation results in an error condition, or if this Op Code is not supported by the Server,
see Section 3.4.3 for details on handling this condition.

This procedure should be used when the bicycle is not moving to avoid unexpected behavior
(e.g., inconsistent instantaneous power value).

3.4.2.9 Request Chain Weight Procedure


When the Request Chain Weight Op Code is written to the Cycling Power Control Point and if
the Chain Weight Adjustment feature is supported by the Server, the Server shall send the
current value of the chain weight. The response shall be indicated using the Response Code Op
Code, the Request Op Code, the appropriate Response Value and, if the procedure succeeds,
the Response Value shall be set to “Success” followed by the value of the chain weight in the
Response Parameter. The format of the Response Parameter, in response to this Control Point
is UINT16 and represents the chain weight in grams with a resolution of 1 gram.

If the operation results in an error condition, or if this Op Code is not supported by the Server,
see Section 3.4.3 for details on handling this condition.

3.4.2.10 Set Span Length Procedure


When the Set Span Length Op Code is written to the Cycling Power Control Point and if the
Span Length Adjustment feature is supported by the Server, the Server shall store the desired
span length transmitted as a Parameter of the Cycling Power Control Point. The format of the
Parameter Value of this Control Point is UINT16 and represents the span length in millimeters

Bluetooth SIG Proprietary Page 24 of 37


Cycling Power Service
Bluetooth Service Specification

with a resolution of 1 millimeter. The span length value is typically used as a parameter for
internal signal processing. The response shall be indicated when the Span Length is updated in
the Server using the Response Code Op Code, the Request Op Code along with “Success” or
other appropriate Response Value.

The Server should cache the most recent value of the span length to avoid reconfiguration of
this value by the Client each time a connection is established.

If the operation results in an error condition, or if this Op Code is not supported by the Server,
see Section 3.4.3 for details on handling this condition.

This procedure should be used when the bicycle is not moving to avoid unexpected behavior
(e.g., inconsistent instantaneous power value).

3.4.2.11 Request Span Length Procedure


When the Request Span Length Op Code is written to the Cycling Power Control Point and if
the Span Length Adjustment feature is supported by the Server, the Server shall send the
current value of the span length. The response shall be indicated using the Response Code Op
Code, the Request Op Code, the appropriate Response Value and, if the procedure succeeds,
the Response Value shall be set to “Success” followed by the value of the span length in the
Response Parameter. The format of the Response Parameter, in response to this Control Point
CPS_v1.1

is UINT16 and represents the span length in millimeters with a resolution of 1 millimeter.

If the operation results in an error condition, or if this Op Code is not supported by the Server,
see Section 3.4.3 for details on handling this condition.

3.4.2.12 Start Offset Compensation Procedure


When the Start Offset Compensation Op Code is written to the Cycling Power Control Point and
if the Offset Compensation feature is supported by the Server, the Server shall initiate the offset
compensation procedure. The response shall be indicated upon completion of the offset
compensation procedure using the Response Code Op Code, the Request Op Code, the
appropriate Response Value and, if the procedure succeeds, the Response Value shall be set
to “Success” followed by the value of the force in Newton or the torque in 1/32 Newton meter
based on the server capabilities (e.g., based on the Sensor Measurement Context bit of the
Cycling Power Feature characteristic as described in Section 3.1) before the offset is
compensated in the Response Parameter.

The format of the Response Parameter Value, in response to this Control Point, is SINT16. This
Parameter Value represents either the raw force in Newton or the raw torque in 1/32 Newton
meter based on the server capabilities (e.g., based on the Sensor Measurement Context of the
Cycling Power Feature characteristic defined in 3.1). If the Server does not support the
measurement of this value, the Server shall use the special value 0xFFFF which means “Not
Available”.

Bluetooth SIG Proprietary Page 25 of 37


Cycling Power Service
Bluetooth Service Specification

If the operation results in an error condition, or if this Op Code is not supported by the Server,
see Section 3.4.3 for details on handling this condition.

3.4.2.13 Mask Cycling Power Measurement Characteristic Content


When the Mask Cycling Power Measurement Characteristic Content Op Code is written to the
Cycling Power Control Point and if the Cycling Power Measurement Characteristic Content
Masking feature is supported by the Server, the Server shall disable unneeded optional fields of
the Cycling Power Measurement characteristic based on the transmitted Parameter of the
Cycling Power Control Point. The format of the Parameter Value of this Control Point is UINT16
and represents the fields of the Cycling Power Measurement characteristic to turn off as
described in Table 3.5.

Bit Number Description


0 Pedal Power Balance
0: Leave as default
1: Turn off
1 Accumulated Torque
0: Leave as default
1: Turn off
2 Wheel Revolution Data
CPS_v1.1

0: Leave as default
1: Turn off
3 Crank Revolution Data
0: Leave as default
1: Turn off
4 Extreme Magnitudes
0: Leave as default
1: Turn off
5 Extreme Angles
0: Leave as default
1: Turn off
6 Top Dead Spot Angle
0: Leave as default
1: Turn off
7 Bottom Dead Spot Angle
0: Leave as default
1: Turn off
8 Accumulated Energy
0: Leave as default
1: Turn off
9-15 Reserved for future use (RFU)

Bluetooth SIG Proprietary Page 26 of 37


Cycling Power Service
Bluetooth Service Specification

Table 3.5: Mask Cycling Power Measurement Characteristic Content Procedure Parameter Requirements
This Control Point is typically used to save power in the Server. When the Client does not need
a particular optional field of the Cycling Power Measurement characteristic, the Client may turn
off that particular field of the Cycling Power Measurement characteristic. This Control Point
procedure affects the content of the notification of the Cycling Power Measurement
characteristic and may also affect the content of the broadcast of the Cycling Power
Measurement characteristic, but this is up to the Server since some data may not be relevant to
broadcast. The response shall be indicated when the content of the Cycling Power
Measurement characteristic is updated in the Server using the Response Code Op Code, the
Request Op Code along with “Success” or other appropriate Response Value.

The Server shall not cache the most recent value of the fields configuration of the Cycling
Power Measurement characteristic and each time a connection is established it shall use its
default configuration (i.e., none of the fields of the Cycling Power Measurement characteristic
are disabled).

If the operation results in an error condition, or if this Op Code is not supported by the Server,
see Section 3.4.3 for details on handling this condition.

3.4.2.14 Request Sampling Rate Procedure


CPS_v1.1

When the Request Sampling Rate Op Code is written to the Cycling Power Control Point and if
the Cycling Power Vector characteristic is supported by the Server, the Server shall send the
current value of the sampling rate. The response shall be indicated using the Response Code
Op Code, the Request Op Code, and the appropriate Response Value and, if the procedure
succeeds, the Response Value shall be set to “Success” followed by the value of the sampling
rate in the Response Parameter. The format of the Response Parameter, in response to this
Control Point, is UINT8 and represents the sampling rate in Hertz with a resolution of 1 Hertz.

If the operation results in an error condition, or if this Op Code is not supported by the Server,
see Section 3.4.3 for details on handling this condition.

3.4.2.15 Request Factory Calibration Date Procedure


When the Request Factory Calibration Date Op Code is written to the Cycling Power Control
Point and if the Factory Calibration Date feature is supported by the Server, the Server shall
send the date of the factory calibration. The response shall be indicated using the Response
Code Op Code, the Request Op Code, the appropriate Response Value and, if the procedure
succeeds, the Response Value shall be set to “Success” followed by the value of the factory
calibration date in the Response Parameter. The format of the Response Parameter value, in
the response to this Control Point, is defined to use the same format as the Date Time
characteristic defined in [2]. However, a value of 0 for the year, month or day fields shall not be
used.

Bluetooth SIG Proprietary Page 27 of 37


Cycling Power Service
Bluetooth Service Specification

If the operation results in an error condition, or if this Op Code is not supported by the Server,
see Section 3.4.3 for details on handling this condition.

3.4.2.16 Start Enhanced Offset Compensation Procedure


When the Start Enhanced Offset Compensation Op Code is written to the Cycling Power
Control Point and if the Enhanced Offset Compensation feature is supported by the Server, the
Server shall initiate the enhanced offset compensation procedure. The response shall be
indicated upon completion of the offset compensation procedure using the Response Code Op
Code, the Request Op Code, the appropriate Response Value and, if the procedure succeeds,
the Response Value shall be set to “Success” followed by the value (UINT16) representing the
force in Newton or the torque in 1/32 Newton meter based on the server capabilities (e.g.,
based on the Sensor Measurement Context bit of the Cycling Power Feature characteristic as
described in Section 3.1) before the offset is compensated followed by a UINT16 value
representing the manufacturer Company ID as given in the SIG assigned numbers, a UINT8
representing the number of octets of manufacturer specific data (e.g., Analog to Digital
Conversion data), and the corresponding manufacturer specific data in the Response
Parameter. A value of 0 for the length of the manufacturer specific data is possible if the Server
has no additional data to send along with the response to this procedure.

If the operation results in an error condition (e.g., the operation failed because the Server is in
CPS_v1.1

an inappropriate position for calibration), the Server shall use the Operation Failed Response
Value and shall also include the following Response Parameter in order to provide more
information on the cause of the error. The Response Parameters are defined in Table 3.6.

Response Parameter Meaning


0x00 Reserved for future use
0x01 Incorrect calibration position
0x02-0xFE Reserved for future use
0xFF Manufacturer specific error follows
Table 3.6: Response Parameter for handling Start Offset Compensation Procedure Errors
If the Response Parameter is 0xFF, the response shall contain manufacturer’s Company ID
(UINT16) as defined in the Bluetooth SIG assigned numbers, a Length field (UINT8), and a
variable length manufacturer specific value with matching length. A value of 0 for the length of
the manufacturer specific data is possible if the Server has no additional data to send along with
the response to this procedure.

If the operation results in any other error condition, or if this Op Code is not supported by the
Server, see Section 3.4.3 for details on handling this condition.

3.4.3 General Error Handling procedures


Other than error handling procedures that are specific to certain Op Codes, the following apply:

Bluetooth SIG Proprietary Page 28 of 37


Cycling Power Service
Bluetooth Service Specification

If an Op Code is written to the Cycling Power Control Point characteristic that is unsupported by
the Server, the Server, after sending a Write Response, shall indicate the Cycling Power Control
Point with a Response Code Op Code, the Request Op Code and Response Value set to Op
Code Not Supported.

If a Parameter is written to the Cycling Power Control Point characteristic that is invalid (e.g., the
Client writes the Update Sensor Location Op Code with a sensor location that is not valid in the
context of the Server, or out of the supported range of the Server), the Server, after sending a
Write Response, shall indicate the Cycling Power Control Point with a Response Code Op
Code, the Request Op Code and Response Value set to Invalid Parameter.

If an Op Code is written to the Cycling Power Control Point characteristic while the Server is
performing a previously triggered Cycling Power Control Point operation (i.e., resulting from
invalid Client behavior), the Server shall return an error response with the Attribute Protocol
error code set to Procedure Already In Progress as defined in CSS Part B, Section 1.2 [3].

If an Op Code is written to the Cycling Power Control Point characteristic and the Client
Characteristic Configuration descriptor of the Cycling Power Control Point is not configured for
indications, the Server shall return an error response with the Attribute Protocol error code set to
Client Characteristic Configuration Descriptor Improperly Configured as defined in CSS Part B,
Section 1.2 [3].
CPS_v1.1

3.4.4 Procedure Timeout


In the context of the Cycling Power Control Point characteristic, a procedure is started when a
write to the Cycling Power Control Point characteristic is successfully completed (i.e., the Server
sends a Write Response). When a procedure is complete, the Server shall indicate the Cycling
Power Control Point with the Op Code set to Response Code.

In the context of the Cycling Power Control Point characteristic, a procedure is not considered
started and not queued in the Server when a write to the Cycling Power Control Point results in
an error response with the Attribute Protocol error code defined in CSS Part B, Section 1.2 [3].

3.5 Cycling Power Vector


The Cycling Power Vector characteristic is used to send raw data (either force or torque).
Included in the characteristic value are a Flags field (for showing the presence of optional fields)
and depending upon the contents of the Flags field, a Crank Revolution Data field (which
includes a Cumulative Crank Revolutions field and Last Crank Event Time field), and a First
Crank Measurement Angle field. The Cycling Power Vector also includes an Instantaneous
Magnitude Array field.

The Server measures the force-related data (or torque-related data) the cyclist is producing and
cadence-related data which represents the number of times per minute the cyclist turns the
crank. The Instantaneous Magnitude values of the Instantaneous Magnitude Array field are

Bluetooth SIG Proprietary Page 29 of 37


Cycling Power Service
Bluetooth Service Specification

related to a crank revolution and because the cadence varies along with the time, the amount of
Instantaneous Magnitude values per crank rotations also varies. The First Crank Measurement
Angle shall be present when the Server detects the beginning of a new crank revolution. If a
cyclist rotates the pedals at a cadence of 90 revolutions per minute and the sampling rate of
Server is 25 Hertz, there should be 16 or 17 Instantaneous Magnitude values per crank
revolution.

3.5.1 Characteristic Behavior


When the Cycling Power Vector characteristic is configured for notification via the Client
Characteristic Configuration descriptor and a force-related measurement (or torque-related
measurement) is available, this characteristic shall be notified. The Server should notify this
characteristic at a regular interval while in a connection and is not configurable by the Client.

In typical applications, the Cycling Power Vector characteristic is notified approximately once
per 100 or 300 milliseconds, depending on the sampling rate of the transmitted data. The
transmission interval is typically related to the sampling rate at which the Server samples the
data. The sampling rate referenced in this section is not necessarily the sampling rate at which
the Server samples the raw signal, but it represents the sampling rate at which the
Instantaneous Magnitude values present in the Cycling Power Vector characteristic are sampled
since those data are typically down sampled from the raw signal.
CPS_v1.1

The value of the sampling rate used to send the Cycling Power Vector data can be requested
using the procedure described in Section 3.4.2.14.

When a Client writes 0x0001 to the Client Characteristic Configuration descriptor to start the
notifications, the Server may request new connection parameters (e.g. using the GAP
Connection Parameter Update procedure described in Volume 3 Part C Section 9.3.9 of [1])
before the notifications are sent if the current connection parameters do not allow the sending of
notification (e.g., the Server requires faster connection interval). If the Client does not change
the connection parameters within a period of time defined by the Server (e.g., 7 seconds or
more if the current connection interval is set to 1 second), the Server shall return an ATT Error
Response to the Write Request with an Error Code set to the Application Error Code 0x80
(Inappropriate Connection Parameters). Otherwise, the Server shall respond with a Write
Response and start sending notifications of the Cycling Power Vector characteristic.

When a Client writes 0x0000 to the Client Characteristic Configuration descriptor to stop the
notifications, the Server should send a request to the Client to set the connection parameters to
the same values as before the Client started the notifications (e.g., using the GAP Connection
Parameter Update procedure described in Volume 3 Part C Section 9.3.9 of [1]).

Refer to Section 3.7 for additional recommendations for distributed power sensor systems (e.g.,
one Server on each pedal measuring the left and right power contribution).

Bluetooth SIG Proprietary Page 30 of 37


Cycling Power Service
Bluetooth Service Specification

The Cycling Power Vector characteristic contains time-sensitive data, thus the requirements for
time-sensitive data and data storage defined in Section 3.6 apply.

3.5.1.1 Flags Field


The Flags field shall be included in the Cycling Power Vector characteristic.

Reserved for Future Use (RFU) bits in the Flags fields shall be set to 0.

The bits of the Flags field, their function, and relationship to bits in the Cycling Power Feature
characteristic are shown in Table 3.7.

Flags Bit Name When Set To Corresponding Cycling


0 Otherwise Power Feature support bit

Crank Revolution Data Corresponding Corresponding Crank Revolution Data


Present (bit 0), see 3.5.1.2 field pair not field pair present Supported (bit 3)
present
First Crank Measurement Corresponding Corresponding Extreme Angles Supported (bit
Angle Present (bit 1), see field not present field present 5).
3.5.1.3
Instantaneous Force Corresponding Corresponding Sensor Measurement Context
CPS_v1.1

Magnitude Array Present field not present field present set to Force-based (bit 16)
(bit 2), see 3.5.1.4
Instantaneous Torque Corresponding Corresponding Sensor Measurement Context
Magnitude Array Present field not present field present set to Torque-based (bit 16)
(bit 3), see 3.5.1.5
Instantaneous Measurement Unknown direction See direction Instantaneous Measurement
Direction (bits 4-5), see definitions in [2] Direction Supported (bit 17)
3.5.1.4 and 3.5.1.5

Table 3.7: Bit Definitions for the Cycling Power Vector Characteristic
Each of the Flags bits in the table above may change during a connection if the corresponding
support bit in the Cycling Power Feature characteristic is set to 1 indicating that the feature is
supported. If the corresponding support bit is however set to 0, then the corresponding Flags bit
shall also be set to 0 since the feature is not supported. See Table 3.3 for further information on
the Cycling Power Feature characteristic support bits and static requirements.

3.5.1.2 Crank Revolution Data Field Pair


The Crank Revolution Data field pair (Cumulative Crank Revolutions and Last Crank Event
Time fields), which represents the number of times a crank rotates, is used in combination with
the Last Crank Event Time to enable the Client to:

1. Determine if the cyclist is coasting,

Bluetooth SIG Proprietary Page 31 of 37


Cycling Power Service
Bluetooth Service Specification

2. Calculate the instantaneous and average cadence and

3. Rebuild a measurement vector based on the Crank Revolution Data and the First Crank
Measurement Angle value.

Average cadence is not accurate unless 0 cadence events (i.e., coasting) are subtracted. In
addition, if there is link loss, the Cumulative Crank Revolutions value can be used to calculate
the average cadence during the link loss. This value is intended to roll over and is not
configurable.

The ‘crank event time’ is a free-running-count of 1/1024 second units and it represents the time
when the crank revolution was detected by the crank rotation sensor. Since several crank
events can occur between transmissions, only the Last Crank Event Time value is transmitted.

The Last Crank Event Time value rolls over every 64 seconds.

To enhance the user experience, the Server should ignore the extra crank revolutions that may
be detected when the user is not pedaling (e.g., coasting down the hill) but the sensor is facing
the magnet installed on the crankset and may cause unwanted crank revolution detections.

3.5.1.3 First Crank Measurement Angle Field


CPS_v1.1

If the Server supports the Extreme Angles feature (see Table 3.7), this field shall be supported,
but is not necessarily required in every packet.

This represents the angle of the first sample at the start of a measurement and is used by the
Client in conjunction with the Instantaneous Magnitude values and the Sampling Rate to
assemble a force (or torque) vector array to show a user the forces throughout a crank rotation.
If there are more Instantaneous Magnitude values for a rotation than will fit within a single
packet, then the next packet shall include the remaining values, however the First Crank
Measurement Angle field shall not be present in the continuation packet.

3.5.1.4 Instantaneous Force Magnitude Array Field


If the Sensor Measurement Context bit of the Cycling Power Feature characteristic is set to 0
(Force-based), then this field shall be supported, but is not necessarily required in every packet
(see Table 3.7). Otherwise, this field is excluded from this characteristic. The support of this field
excludes the support of the Instantaneous Torque Magnitude Array field.

The Instantaneous Force Magnitude Array field is a variable length field and it may be included
in the Cycling Power Vector characteristic. Included in this field are one or more Instantaneous
Magnitude values which are expressed in Newtons with a resolution of 1 Newton. These values
represent the raw data the sensor measures. The sampling rate at which these data are
sampled can be requested using the Request Sampling Rate procedure defined in Section
3.4.2.14).

Bluetooth SIG Proprietary Page 32 of 37


Cycling Power Service
Bluetooth Service Specification

The Instantaneous Measurement Direction bits of the Flags field describe the direction of the
Instantaneous Magnitude values the Server measures (e.g., Unknown, Tangential Component,
Radial Component, or Lateral Component).

The number of values in the array is related to the sampling rate of the sensor and the
notification interval.

For LE Transport, the following restrictions exist for a 23-octet ATT_MTU,

• The maximum number of Instantaneous Magnitude values that can be notified if Crank
Revolution Data and First Crank Measurement Angle are present is 6.
• The maximum number of Instantaneous Magnitude values that can be notified if Crank
Revolution Data is not present and First Crank Measurement Angle is present is 8.
• The maximum number of Instantaneous Magnitude values that can be notified if Crank
Revolution Data is present and First Crank Measurement Angle is not present is 7.
• The maximum number of Instantaneous Magnitude values that can be notified if Crank
Revolution Data and First Crank Measurement Angle are not present is 9.
If more Instantaneous Magnitude values are measured since the last notification than fit into one
Cycling Power Vector characteristic, then the Instantaneous Magnitude values should be
CPS_v1.1

included in the next available Cycling Power Vector in a continuation packet as described in
Section 3.5.1.3.

Since a Server supports only one measurement context (e.g., Force-based or Torque-based),
the support of this field excludes the support of the Instantaneous Torque Magnitude Array field.

3.5.1.5 Instantaneous Torque Magnitude Array Field


If the Sensor Measurement Context bit of the Cycling Power Feature characteristic is set to 1
(Torque-based), then this field shall be supported, but it is not necessarily required in every
packet (see Table 3.7). Otherwise, this field is excluded from this characteristic. The support of
this field excludes the support of the Instantaneous Torque Magnitude Array field.

The Instantaneous Torque Magnitude Array field is a variable length field and it may be included
in the Cycling Power Vector characteristic. Included in this field are one or more Instantaneous
Magnitude values which are expressed in Newton meter with a resolution of 1/32 Newton meter.
These values represent the raw data the sensor measures. The sampling rate at which these
data are sampled can be requested using the Request Sampling Rate procedure defined in
Section 3.4.2.14).

The Instantaneous Measurement Direction bits of the Flags field describe the direction of the
Instantaneous Magnitude values the Server measures (e.g., Unknown, Tangential Component,
Radial Component, or Lateral Component).

Bluetooth SIG Proprietary Page 33 of 37


Cycling Power Service
Bluetooth Service Specification

The number of values in the array is related to the sampling rate of the sensor and the
notification interval.

For LE Transport, the following restrictions exist for a 23-octet ATT_MTU,

• The maximum number of Instantaneous Magnitude values that can be notified if Crank
Revolution Data and First Crank Measurement Angle are present is 6.
• The maximum number of Instantaneous Magnitude values that can be notified if Crank
Revolution Data is not present and First Crank Measurement Angle is present is 8.
• The maximum number of Instantaneous Magnitude values that can be notified if Crank
Revolution Data is present and First Crank Measurement Angle is not present is 7.
• The maximum number of Instantaneous Magnitude values that can be notified if Crank
Revolution Data and First Crank Measurement Angle are not present is 9.
If more Instantaneous Magnitude values are measured since the last notification than fit into one
Cycling Power Vector characteristic, then the Instantaneous Magnitude values should be
included in the next available Cycling Power Vector in a continuation packet as described in
Section 3.5.1.3.

Since a Server supports only one measurement context (e.g., Force-based or Torque-based),
CPS_v1.1

the support of this field excludes the support of the Instantaneous Force Magnitude Array field.

3.6 Requirements for Time-Sensitive Data


The Cycling Power Measurement characteristic as well as the Cycling Power Vector
characteristic contain time sensitive data and are considered time-sensitive characteristics, thus
the following requirements apply:

Since this service does not provide any data with a time stamp to identify the measurement time
(and age) of the data, the value of the Cycling Power Measurement characteristic or the value of
the Cycling Power Vector characteristic shall be discarded if either the connection does not get
established or if the notification is not successfully transmitted (e.g., due to link loss).

3.7 Requirements for Servers Used for a Distributed Power System


The Instantaneous Power field of the Cycling Power Measurement characteristic of each Server
represents a part of the total power (e.g., what is measured). The Client can calculate the total
power based on each of these values. The Sensor Location characteristic value shall not be
used to indicate that a Sensor is part of a Distributed Power System. The Sensor shall indicate
that it is configured as part of a distributed system via the Cycling Power Feature Characteristic.

Bluetooth SIG Proprietary Page 34 of 37


Cycling Power Service
Bluetooth Service Specification

4 SDP Interoperability
If this service is exposed over BR/EDR then it shall have the following SDP record.

Item Definition Type Value Status


Service Class ID
M
List
Service Class #0 UUID «Cycling Power» M
Protocol Descriptor
M
List
Protocol #0 UUID L2CAP M
Parameter #0 for
PSM Uint16 PSM = ATT M
Protocol #0
Protocol #1 UUID ATT M
Parameter #0 for First handle of this service
GATT Start Handle Uint16 M
Protocol #1 in the GATT database
Parameter #1 for Last handle of this service
GATT End Handle Uint16 M
Protocol #1 in the GATT database
CPS_v1.1

BrowseGroupList PublicBrowseRoot* M

Table 4.1: SDP Record


* PublicBrowseRoot shall be present; however, other browse UUIDs may also be included in the
list.

Bluetooth SIG Proprietary Page 35 of 37


Cycling Power Service
Bluetooth Service Specification

5 Acronyms and Abbreviations


Abbreviation or Acronym Meaning
AMP Alternate MAC/PHY
BR/EDR Basic Rate / Enhanced Data Rate
GAP Generic Access Profile
GATT Generic Attribute Profile
LE Low Energy
RFU Reserved for Future Use
SDP Service Discovery Protocol
UUID Universally Unique Identifier
Table 5.1: Acronyms and Abbreviations
CPS_v1.1

Bluetooth SIG Proprietary Page 36 of 37


Cycling Power Service
Bluetooth Service Specification

6 References
[1] Bluetooth Core Specification v4.0 with CSA2, CSA3 and CSA4 or later version of the Core
Specification.

[2] Characteristic and Descriptor descriptions are accessible via the Bluetooth SIG Assigned
Numbers.

[3] Supplement to the Bluetooth Core Specification, Version 2 or later


CPS_v1.1

Bluetooth SIG Proprietary Page 37 of 37

You might also like