• Revision: v1.0.1

  • Revision Date: 2022-01-18

  • Group Prepared By: Medical Devices Working Group

Revision History

Revision Number

Date
(yyyy-mm-dd)

Comments

V10

2012-04-03

Adopted by the Bluetooth SIG Board of Directors

v1.0.1

2022-01-18

Adopted by the Bluetooth SIG Board of Directors.

Version History

Versions

Changes

v1.0 to v1.0.1

Incorporated errata E16245, E17545.

Acknowledgments

Name

Company

Robert Hughes

Intel Corporation

Ray Strickland

Roche

Timothy Cook

Stonestreet One

Badrinarayanan Krishnamoorthy

Mindtree

Use of this specification is your acknowledgement that you agree to and will comply with the following notices and disclaimers. You are advised to seek appropriate legal, engineering, and other professional advice regarding the use, interpretation, and effect of this specification.

Use of Bluetooth specifications by members of Bluetooth SIG is governed by the membership and other related agreements between Bluetooth SIG and its members, including those agreements posted on Bluetooth SIG’s website located at www.bluetooth.com. Any use of this specification by a member that is not in compliance with the applicable membership and other related agreements is prohibited and, among other things, may result in (i) termination of the applicable agreements and (ii) liability for infringement of the intellectual property rights of Bluetooth SIG and its members. This specification may provide options, because, for example, some products do not implement every portion of the specification. All content within the specification, including notes, appendices, figures, tables, message sequence charts, examples, sample data, and each option identified is intended to be within the bounds of the Scope as defined in the Bluetooth Patent/Copyright License Agreement (“PCLA”). Also, the identification of options for implementing a portion of the specification is intended to provide design flexibility without establishing, for purposes of the PCLA, that any of these options is a “technically reasonable non-infringing alternative.”

Use of this specification by anyone who is not a member of Bluetooth SIG is prohibited and is an infringement of the intellectual property rights of Bluetooth SIG and its members. The furnishing of this specification does not grant any license to any intellectual property of Bluetooth SIG or its members. THIS SPECIFICATION IS PROVIDED “AS IS” AND BLUETOOTH SIG, ITS MEMBERS AND THEIR AFFILIATES MAKE NO REPRESENTATIONS OR WARRANTIES AND DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, TITLE, NON-INFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, OR THAT THE CONTENT OF THIS SPECIFICATION IS FREE OF ERRORS. For the avoidance of doubt, Bluetooth SIG has not made any search or investigation as to third parties that may claim rights in or to any specifications or any intellectual property that may be required to implement any specifications and it disclaims any obligation or duty to do so.

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, BLUETOOTH SIG, ITS MEMBERS AND THEIR AFFILIATES DISCLAIM ALL LIABILITY ARISING OUT OF OR RELATING TO USE OF THIS SPECIFICATION AND ANY INFORMATION CONTAINED IN THIS SPECIFICATION, INCLUDING 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, AND EVEN IF BLUETOOTH SIG, ITS MEMBERS OR THEIR AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF THE DAMAGES.

Products equipped with Bluetooth wireless technology ("Bluetooth Products") and their combination, operation, use, implementation, and distribution may be subject to regulatory controls under the laws and regulations of numerous countries that regulate products that use wireless non-licensed spectrum. Examples include airline regulations, telecommunications regulations, technology transfer controls, and health and safety regulations. You are solely responsible for complying with all applicable laws and regulations and for obtaining any and all required authorizations, permits, or licenses in connection with your use of this specification and development, manufacture, and distribution of Bluetooth Products. Nothing in this specification provides any information or assistance in connection with complying with applicable laws or regulations or obtaining required authorizations, permits, or licenses.

Bluetooth SIG is not required to adopt any specification or portion thereof. If this specification is not the final version adopted by Bluetooth SIG’s Board of Directors, it may not be adopted. Any specification adopted by Bluetooth SIG’s Board of Directors may be withdrawn, replaced, or modified at any time. Bluetooth SIG reserves the right to change or alter final specifications in accordance with its membership and operating agreements.

Copyright © 2011–2022. All copyrights in the Bluetooth Specifications themselves are owned by Apple Inc., Ericsson AB, Intel Corporation, Lenovo (Singapore) Pte. Ltd., Microsoft Corporation, Nokia Corporation, and Toshiba Corporation. The Bluetooth word mark and logos are owned by Bluetooth SIG, Inc. Other third-party brands and names are the property of their respective owners.

Document Terminology

The Bluetooth SIG has adopted Section 13.1 of the IEEE Standards Style Manual, which dictates 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).

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.

1. Introduction

The Glucose Service exposes glucose and other data related to a personal glucose sensor for consumer healthcare applications and is not designed for clinical use.

1.1. Conformance

If conformance to this specification is claimed, all capabilities indicated as mandatory for this specification shall be supported in the specified manner (process-mandatory). This also applies for all optional and conditional capabilities for which support is indicated.

1.2. Service Dependency

This service is not dependent upon any other services.

1.3. Bluetooth Specification Release Compatibility

This specification is compatible with any Bluetooth core specification [1] that includes the Generic Attribute Profile (GATT) and the Bluetooth Low Energy Controller portions of the core specification.

1.4. GATT Sub-Procedure Requirements

Requirements in this section represent a minimum set of requirements for a Glucose Sensor (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 Values

M

Notifications

M

Indications

M

Read Characteristic Descriptors

M

Write Characteristic Descriptors

M

Table 1.1. GATT Sub-Procedure Requirements

1.5. Transport Dependencies

This service shall operate over LE transport only. For BR/EDR (and HS) the Health Device Profile [2] is to be used.

1.6. Byte Transmission Order

All characteristic values used with this service shall be transmitted with the least significant octet first (i.e., little endian). The least significant octet is identified in the characteristic definitions in [3].

1.7. Error Codes

This service defines the following Attribute Protocol Application Error codes:

Name

Error Code

Description

Procedure Already in Progress

0x80

A Record Access Control Point request cannot be serviced because a previously triggered RACP operation is still in progress.

Client Characteristic Configuration descriptor improperly configured

0x81

The Client Characteristic Configuration descriptor is not configured according to the requirements of the service.

2. Service Declaration

The Glucose Service is recommended to be instantiated as a «Primary Service».

The service UUID shall be set to the UUID value assigned to <<Glucose Service>> as defined in [3].

3. Service Characteristics

The characteristic requirements in an instance of the Glucose Service are shown in Table 3.1. Unless otherwise specified, only one instance of each characteristic is permitted within this service.

Characteristic Name

Requirement

Mandatory Properties

Optional Properties

Security Permissions

Glucose Measurement

M

Notify

None

Glucose Measurement - Client Characteristic Configuration descriptor

M

Read, Write

None

Glucose Measurement Context

O

Notify

None

Glucose Measurement Context - Client Characteristic Configuration descriptor

C.1

Read, Write

None

Glucose Feature

M

Read

Indicate C.2

None

Record Access Control Point

M

Indicate, Write

Writeable with Authentication

Record Access Control Point - Client Characteristic Configuration descriptor

M

Read, Write

None

Table 3.1. Glucose Service characteristics

C.1:

Mandatory if the Glucose Measurement Context characteristic is supported, otherwise excluded.

C.2:

The Indicate property shall be supported for the Glucose Feature characteristic if the value of the Glucose Feature characteristic can change over the lifetime of the device, otherwise Excluded for this service. See Section 3.3.

Notes:

  1. Properties not listed as Mandatory, Conditional or Optional are Excluded.

  2. Security Permissions of “None” means that this service does not impose any requirements.

3.1. Glucose Measurement

The Glucose Measurement characteristic shall be used to send glucose measurements. Included in the characteristic value is a Flags field (containing units of glucose, the existence of context information and used to show presence of optional fields), a Sequence Number field, a Base Time field (time of the measurement) and, depending upon the contents of the Flags field, a Time Offset field, a Glucose Concentration field, Type-Sample Location field, and Sensor Status Annunciation field.

This characteristic is part of a patient record to be accessed using the Record Access Control Point. For the definition of a patient record, refer to Section 3.4.1.

3.1.1. Characteristic Behavior

When the Client Characteristic Configuration descriptor is configured for notifications the Record Access Control Point shall be used to control notifications of this characteristic.

If a new value for the Glucose Measurement characteristic has become available since the last time this Client has connected, the Client Characteristic Configuration descriptor is configured for notifications, and a connection is not currently established, the Server should become connectable to allow the Client to create a link.

The Glucose Measurement characteristic contains time-sensitive data, thus the requirements for time-sensitive data and data storage defined in Section 3.5 apply.

3.1.1.1. Flags Field

The Flags field shall be included in the Glucose Measurement characteristic.

The Flags field is an 8-bit bit field which indicates the unit used in the Glucose Concentration field (if used), what fields are present in the Glucose Measurement characteristic, and whether or not context information is included.

If a Glucose Measurement characteristic includes contextual information (i.e., a corresponding Glucose Measurement Context characteristic), the Context Information Follows Flag (bit 4 of the Flags field) shall be set to 1, otherwise the Flag shall be set to 0.

Bits defined as Reserved for Future Use (RFU) in the Flags field in [3] shall be set to 0.

3.1.1.2. Sequence Number Field

The Sequence Number field shall be included in the Glucose Measurement characteristic.

The Sequence Number is an unsigned 16-bit integer that represents the chronological order of the patient records in the Server measurement database. The initial default value shall be 0x0000. The Sequence Number assigned to each Glucose Measurement characteristic value is used to maintain chronological order of patient records. The use of Base Time and Time Offset for this purpose cannot be relied upon due to the potential for user induced date and time errors or catastrophic time base errors that may occur due to a battery failure.

It is recommended that the last Sequence Number used is stored in non-volatile memory to ensure a continuum in case of a reset or battery failure. In addition the Sequence Number shall not be reset back to the default when the database is cleared through the Delete Stored Records procedure discussed in Section 3.4.3.3.

The Sequence Number shall be incremented by 1 for each successive Glucose Measurement characteristic value. The maximum value for Sequence Number permitted is 0xFFFF. Assuming a high use of 8 times per day, the maximum value of the Sequence Number would be reached in ~22 years. Since product life expectancy of a Glucose Sensor is ~ 5 years, this value significantly exceeds that expectation. This value is not permitted to roll over, although a reset of the Sequence Number back to zero might occur due to non-volatile memory failure or other catastrophic hardware or software errors within the Sensor.

Note that some gaps in sequence numbers may exist in the internal storage of a Server in some situations. For example, this can occur if the user locally deleted one or more entries at the user interface or if a Client deleted some entries using the Delete Stored Records command via the Record Access Control Point.

Note that the value of a sequence number in the Glucose Measurement characteristic shall not be changed due to e.g. patient record deletions or other actions.

3.1.1.3. Base Time Field

The Base Time field shall be included in the Glucose Measurement characteristic value.

The Base Time field represents the value of an internal real-time clock or equivalent that keeps time relative to its initial setting in resolution of seconds. Its initial value is typically set at the time of manufacturing or upon first use by the end user. The Server’s internal Base Time is not intended to be updated by the user or via an external time service (e.g. the Current Time Service [5]) except in the case of an unrecoverable loss of Base Time in the Server caused by clock reset, corruption or other hardware or software failures.

Maintaining a Base Time is significant because it is clinically important to maintain the date/time continuum of patient records with a contiguous, uninterrupted Base Time. Refer to the next section for a description of the use of Time Offset to control the user-facing time.

The Base Time field is defined to use the same format as the Date Time characteristic defined in [3]. However, a value of 0 for the year, month or day fields shall not be used for this service.

3.1.1.4. Time Offset Field

The Time Offset field shall be included in the Glucose Measurement characteristic value whenever the value of the Time Offset changes from the last reported measurement. Otherwise, it may be included even if the value does not change from patient record to patient record. See also Section 3.4.3.4 for requirements related to the use of this field in the first transmitted patient record when using the Record Access Control Point.

The default value of this field is 0x0000. The implementation may restrict the user from entering time values via the user interface that would alter the Time Offset value outside the range of +/- 24 hours to avoid entering incorrect time values e.g. wrong day due to user entry error.

If the Time Offset field is present in the Glucose Measurement characteristic, bit 0 of the Flags field is set to 1; otherwise bit 0 of the Flags field is set to 0.

The Time Offset field is used in conjunction with the Base Time field to represent the user-facing date and time at the time of measurement.

The Time Offset field is defined as a 16-bit signed integer representing the number of minutes the user-facing time differs from the Base Time.

The user-facing time (i.e., the time of measurement with respect to the user of the device) is the sum of the Base Time and the Time Offset. The Time Offset component of the user-facing time of the device may be updated by various means such as via a simple user interface on the device or via the Current Time Service [5]. When the user-facing time is updated under normal operating conditions, only the Time Offset component shall be changed and the Base Time component shall not be changed. See Section 3.1.1.3 for additional information.

3.1.1.5. Glucose Concentration Field and Type-Sample Location Field

The Glucose Concentration field is optional, but if it is present, the Type-Sample Location field shall also be present.

The Type nibble and the Sample Location nibble comprise one octet. Therefore, when one nibble is present, both nibbles shall be present.

If the Glucose Concentration field and the Type-Sample Location field are present, bit 1 of the Flags field is set to 1; otherwise bit 1 of the Flags field is set to 0.

If a value for the Glucose Concentration field is unavailable (e.g. due to an invalid result from a computation step or missing data due to the hardware’s inability to provide a valid measurement), the special short float value NaN (see section 4) defined in ISO/IEEE 11073-20601a [4] shall be used.

If the unit of the Glucose Concentration is in base units of kg/L (typically displayed in units of mg/dL), bit 2 of the Flags field is set to 0. Otherwise, the unit is in base units of mol/L (typically displayed in units of mmol/L) and bit 2 of the Flags field is set to 1. Note that the base units defined in [3] correspond to units of kg/L and mol/L respectively. When preparing the SFLOAT value, the SFLOAT exponent of the Glucose Concentration value needs to be adjusted to correspond to the base values. For example, when a Glucose Concentration value in units of mg/dL is converted to units of kg/L, the SFLOAT exponent will need to be adjusted by subtracting 5. Similarly, when a Glucose Concentration value in units of mmol/L is converted to units of mol/L, the SFLOAT exponent will need to be adjusted by subtracting 3.

3.1.1.6. Sensor Status Annunciation Field

The Sensor Status Annunciation field may be included in the Glucose Measurement characteristic value if the device supports Sensor Status Annunciation flags.

If the Sensor Status Annunciation field is present in the Glucose Measurement characteristic value, bit 3 of the Flags field is set to 1; otherwise bit 3 of the Flags field is set to 0.

Refer to the Glucose Feature characteristic (Section 3.3) for a description of the inter-relationship between the bits in this field and the bits in the Glucose Feature characteristic.

Bits defined as Reserved for Future Use (RFU) in the Sensor Status Annunciation field in [3] shall be set to 0.

3.1.2. Characteristic Descriptors

3.1.2.1. Client Characteristic Configuration Descriptor

The Client Characteristic Configuration descriptor shall be included in the Glucose Measurement characteristic.

3.2. Glucose Measurement Context

The Glucose Measurement Context characteristic may be used to send additional contextual information relative to a Glucose Measurement characteristic. Included in the characteristic value are a Flags field (containing units of medication and used to show presence of optional fields), a Sequence Number field and, depending upon the contents of the Flags field, a Carbohydrate ID field, Carbohydrate field, Meal field, Tester-Health field, Exercise Duration field, Exercise Intensity field, Medication ID field, Medication field, and HbA1c field.

This characteristic value shall include at least one field in addition to the Flags field and Sequence Number field.

This characteristic value is part of a patient record to be accessed using the Record Access Control Point. For the definition of a record, refer to Section 3.4.1.

3.2.1. Characteristic Behavior

When the Client Characteristic Configuration descriptor is configured for notifications the Record Access Control Point shall be used to control notifications of this characteristic.

If a new value for the Glucose Measurement Context characteristic has become available since the last time this Client has connected, the Client Characteristic Configuration descriptor is configured for notifications, and a connection is not currently established, the Server should become connectable to allow the Client to create a link.

The Glucose Measurement Context characteristic value contains time-sensitive data, thus the requirements for time-sensitive data and data storage defined in Section 3.5 apply.

3.2.1.1. Flags Field

The Flags field shall be included in the Glucose Measurement Context characteristic.

Bits defined as Reserved for Future Use (RFU) in the Flags field in [3] shall be set to 0.

3.2.1.2. Sequence Number Field

The Sequence Number field shall be included in the Glucose Measurement Context characteristic.

The Sequence Number value shall be the same as the value of the Sequence Number of its corresponding Glucose Measurement characteristic. This is used to ensure the Glucose Measurement Context characteristic is matched to the appropriate Glucose Measurement characteristic and add further robustness to the service.

3.2.1.3. Extended Flags Field

The Extended Flags field is optional. The existence of the Extended Flags field is indicated by setting bit 7 of the Flags field.

Bits defined as Reserved for Future Use (RFU) in the Extended Flags field in [3] shall be set to 0.

3.2.1.4. Carbohydrate ID Field and Carbohydrate Field

The Carbohydrate ID field and the Carbohydrate field are optional, but when one is used, both shall be used.

If the Carbohydrate ID field and Carbohydrate field are present in the Glucose Measurement Context characteristic, bit 0 of the Flags field is set to 1; otherwise bit 0 of the Flags field is set to 0.

3.2.1.5. Meal Field

The Meal field is optional.

If the Meal field is present in the Glucose Measurement Context characteristic, bit 1 of the Flags field is set to 1; otherwise bit 1 of the Flags field is set to 0.

3.2.1.6. Tester-Health Field

The Tester-Health field is optional. The Tester nibble and the Health nibble comprise one octet. Therefore, when one nibble is present, both nibbles shall be present.

If the Tester-Health field is present in the Glucose Measurement Context characteristic, bit 2 of the Flags field is set to 1; otherwise bit 2 of the Flags field is set to 0.

3.2.1.7. Exercise Duration Field and Exercise Intensity Field

The Exercise Duration field and the Exercise Intensity are optional, but when one is used, both shall be used.

If the Exercise Duration field and the Exercise Intensity field are present in the Glucose Measurement Context characteristic, bit 3 of the Flags field is set to 1; otherwise bit 3 of the Flags field is set to 0.

Since Exercise Duration is a 16 bit unsigned integer, the highest value that can be represented is 65535 seconds (0xFFFF). If the maximum value of 65535 seconds (equivalent to 18 hours) is attained, the field value should remain at 0xFFFF so the Client can be made aware that the maximum value has been reached.

3.2.1.8. Medication ID Field and Medication Field

The Medication ID field and the Medication field are optional, but when one is used, both shall be used.

If the Medication ID field and Medication field are present in the Glucose Measurement Context characteristic, bit 4 of the Flags field is set to 1; otherwise bit 4 of the Flags field is set to 0.

If the unit of the Medication is in base units of kilograms (typically entered by the user in units of milligrams), bit 5 of the Flags field is set to 0. Otherwise, the unit is in base units of liters (typically entered by the user in units of milliliters) and bit 5 of the Flags field is set to 1. Note that the base units defined in [3] corresponds to the units above are kilograms and liters respectively. When preparing the SFLOAT value, the SFLOAT exponent of the Medication value needs to be adjusted to correspond to the base values. For example, when a Medication value in units of milligrams is converted to units of kilograms, the SFLOAT exponent will need to be adjusted by subtracting 6.

3.2.1.9. HbA1c Field

The HbA1c field is optional.

If the HbA1c field is present in the Glucose Measurement Context characteristic, bit 6 of the Flags field is set to 1; otherwise bit 6 of the Flags field is set to 0.

3.2.2. Characteristic Descriptors

3.2.2.1. Client Characteristic Configuration Descriptor

The Client Characteristic Configuration descriptor shall be included in the Glucose Measurement Context characteristic.

3.3. Glucose Feature

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

3.3.1. Characteristic Behavior

When read or indicated, the Glucose Feature characteristic gives a value that is used by a Client to determine the supported features of the Server.

The Glucose Feature characteristic shall be static during a connection.

When the Client Characteristic Configuration descriptor is configured for indications and the supported features of the Server have changed, the Glucose Feature characteristic shall be indicated to any bonded Collectors after reconnection.

If the Low Battery Detection During Measurement feature is supported, the Low Battery Detection During Measurement Supported Feature bit shall be set to 1, otherwise it shall be set to 0. When supported, the corresponding Flag in the Sensor Status Annunciation Field (Device battery low at time of measurement) shall be used to show whether or not a low battery condition was detected during a given measurement. When not supported, the corresponding Flag in the Sensor Status Annunciation Field shall be set to a default of 0.

If the Sensor Malfunction Detection feature is supported, the Sensor Malfunction Detection Supported Feature bit shall be set to 1, otherwise it shall be set to 0. When supported, the corresponding Flag in the Sensor Status Annunciation Field (Sensor malfunction or faulting at time of measurement) shall be used to show whether or not a Sensor malfunction or fault was detected during a given measurement. When not supported, the corresponding Flag in the Sensor Status Annunciation Field shall be set to a default of 0.

If the Sensor Sample Size feature is supported, the Sensor Sample Size Supported Feature bit shall be set to 1, otherwise it shall be set to 0. When supported, the corresponding Flag in the Sensor Status Annunciation Field (Sample size for blood or control solution insufficient at time of measurement) shall be used to show whether or not an insufficient sample size was detected during a given measurement. When not supported, the corresponding Flag in the Sensor Status Annunciation Field shall be set to a default of 0.

If the Sensor Strip Insertion Error Detection feature is supported, the Sensor Strip Insertion Error Detection Supported Feature bit shall be set to 1, otherwise it shall be set to 0. When supported, the corresponding Flag in the Sensor Status Annunciation Field (Strip insertion error) shall be used to show whether or not a strip insertion error was detected during a given measurement. When not supported, the corresponding Flag in the Sensor Status Annunciation Field shall be set to a default of 0.

If the Sensor Strip Type Error Detection feature is supported, the Sensor Strip Type Error Detection Supported Feature bit shall be set to 1, otherwise it shall be set to 0. When supported, the corresponding Flag in the Sensor Status Annunciation Field (Strip type incorrect for device) shall be used to show whether or not an incorrect strip type for the device was detected during a given measurement. When not supported, the corresponding Flag in the Sensor Status Annunciation Field shall be set to a default of 0.

If the Sensor Result High-Low Detection feature is supported, the Sensor Result High-Low Detection Supported Feature bit shall be set to 1, otherwise it shall be set to 0. When supported, the corresponding Flags in the Sensor Status Annunciation Field (Sensor result higher than the device can process, and Sensor result lower than the device can process) shall be used to show whether or not a Sensor result that is higher or lower than the device can process was detected during a given measurement. When not supported, the corresponding Flags in the Sensor Status Annunciation Field shall be set to a default of 0.

If the Sensor Temperature High-Low Detection feature is supported, the Sensor Temperature High-Low Detection Supported Feature bit shall be set to 1, otherwise it shall be set to 0. When supported, the corresponding Flags in the Sensor Status Annunciation Field (Sensor temperature too high for valid test/result at time of measurement, and Sensor temperature too low for valid test/result at time of measurement) shall be used to show whether or not a Sensor temperature that is too high or too low was detected during a given measurement. When not supported, the corresponding Flags in the Sensor Status Annunciation Field shall be set to a default of 0.

If the Sensor Read Interrupt Detection feature is supported, the Sensor Read Interrupt Detection Supported Feature bit shall be set to 1, otherwise it shall be set to 0. When supported, the corresponding Flag in the Sensor Status Annunciation Field (Sensor read interrupted because strip was pulled too soon at time of measurement) shall be used to show whether or not the measurement strip was pulled from the Sensor too soon during a given measurement. When not supported, the corresponding Flag in the Sensor Status Annunciation Field shall be set to a default of 0.

If the General Device Fault feature is supported, the General Device Fault Supported Feature bit shall be set to 1, otherwise it shall be set to 0. When supported, the corresponding Flag in the Sensor Status Annunciation Field (General device fault has occurred in the sensor) shall be used to show whether or not a Sensor general device fault was detected during a given measurement. When not supported, the corresponding Flag in the Sensor Status Annunciation Field shall be set to a default of 0.

If the Time Fault feature is supported, the Time Fault Supported Feature bit shall be set to 1, otherwise it shall be set to 0. When supported, the corresponding Flag in the Sensor Status Annunciation Field (Time fault has occurred in the sensor and time may be inaccurate) shall be used to show whether or not a Sensor time fault has occurred. When not supported, the corresponding Flag in the Sensor Status Annunciation Field shall be set to a default of 0.

If the Multiple Bond feature is supported, the Multiple Bond Supported Feature bit shall be set to 1, otherwise it shall be set to 0.

Bits defined as Reserved for Future Use (RFU) in the Glucose Feature characteristic shall be set to 0.

3.4. Record Access Control Point

For this service to operate, profiles or other applications utilizing this service will need to ensure that the Client configures the Record Access Control Point (RACP) characteristic for indications (i.e., via the Client Characteristic Configuration descriptor).

The Client must perform a write to the Record Access Control Point to execute a desired procedure at the Server.

3.4.1. Record Definition

Within the context of the Glucose Service, a record (also referred to as a patient record) consists of a Glucose Measurement characteristic value and may or may not be followed by a corresponding Glucose Measurement Context characteristic value. If the Glucose Measurement characteristic value is followed by a Glucose Measurement Context characteristic value, the Context Information Flag in the Flags field of the Glucose Measurement characteristic value shall be set to 1 and the values of the Sequence Number fields shall be the same. The device implementing the Server shall persistently store the patient record data for retrieval by Clients.

3.4.2. RACP Procedure Requirements

Table 3.2 shows the requirements for the Record Access Control Point (RACP) procedures (Op Codes, Operators and Operands) in the context of this service:

Op Code

Op Code Require-ment

Operator

Operator Require-ment

Operand

Operand Require-ment

Filter Type

(see Table 3.4

Filter Parameters

(see Table 3.3

Report Stored Records

M

All records

M

No Operand Used

N/A

Less than or equal to

O

Sequence Number

<maximum filter value>

C.1

User Facing Time

<maximum filter value>

O

Greater than or equal to

M

Sequence Number

<minimum filter value>

M

User Facing Time

<minimum filter value>

O

Within range of (inclusive)

O

Sequence Number

<minimum filter value>, <maximum filter value>

C.1

User Facing Time

<minimum filter value>, <maximum filter value>

O

First record

O

No Operand Used

N/A

Last record

O

No Operand Used

N/A

Delete Stored Records

O

All records

C.2

No Operand Used

N/A

Less than or equal to

O

Sequence Number

<maximum filter value>

C.1

User Facing Time

<maximum filter value>

O

Greater than or equal to

O

Sequence Number

<minimum filter value>

C.1

User Facing Time

<minimum filter value>

O

Within range of (inclusive)

O

Sequence Number

<minimum filter value>, <maximum filter value>

C.1

User Facing Time

<minimum filter value>, <maximum filter value>

O

First record

O

No Operand Used

N/A

Last record

O

No Operand Used

N/A

Abort Operation

M

Null (0x00)

M

No Operand Used

N/A

Report Number of Stored Records

M

All records

M

No Operand Used

N/A

Less than or equal to

O

Sequence Number

<maximum filter value>

C.1

User Facing Time

<maximum filter value>

O

Greater than or equal to

M

Sequence Number

<minimum filter value>

M

User Facing Time

<minimum filter value>

O

Within range of (inclusive)

O

Sequence Number

<minimum filter value>, <maximum filter value>

C.1

User Facing Time

<minimum filter value>, <maximum filter value>

O

First record

O

No Operand Used

N/A

Last record

O

No Operand Used

N/A

Number of Stored Records Response

M

Null (0x00)

M

UINT16 containing number of records

M

Response Code

M

Null (0x00)

M

Request Op Code, Response Code Value

M

Table 3.2. RACP Procedure Requirements

C.1:

If this Operator is supported, this Operand is mandatory for this Operator. See also Note 1.

C.2:

If this Op Code is supported, this Operator is mandatory for this Op Code. See also Note 2.

Notes:

  1. Support for a given Operand for one Op Code and Operator combination does not imply support of that Operand for other Op Code and Operator combinations.

  2. Support for a given Operator for one Op Code does not imply support of that Operator for other Op Codes.

  3. Where a filter type and filter parameters are used, the byte order for the Operand is specified in subsection 3.4.3.1.

Table 3.3 shows the relationships between RACP Operators and Operands.

Procedure Operator

Operand Description

Null

An Operand is used only in the case of the responses Number of Stored Records Response and Response Code as shown in Table 3.2.

All records

No Operand used.

Less than or equal to

Operand represents Filter Type (see Table 3.4) and maximum field value.

Greater than or equal to

Operand represents Filter Type (see Table 3.4) and minimum field value.

Within range of (inclusive)

Operand represents Filter Type (see Table 3.4) and minimum field value, maximum field value pair

First record

No Operand used.

Last record

No Operand used.

Table 3.3. RACP Procedure Operator and Operand Relationships

Note that when using the ‘within range of’ Operator, the minimum value of the range shall be a less than or equal to the maximum value of the range regardless of the Filter Type used in the Operand.

The following table shows the supported Filter Types that apply to three of the Operators listed in Table 3.3 (i.e., less than or equal to, greater than or equal to and within range of). Within the Operand, the Filter Type specifies the field of the Glucose Measurement characteristic value upon which the filtering is based. See Section 3.4.3.1 for further information.

Operand Filter Type Value

Filter Type Description

0x00

Reserved for future use

0x01

Sequence Number

0x02

User Facing Time
(Base Time + Offset Time)

0x03 – 0xFF

Reserved for future use

Table 3.4. RACP Filter Types

3.4.3. RACP Behavioral Description

The Record Access Control Point shall be used to control notifications of the Glucose Measurement and Glucose Measurement Context characteristic values and other data operations. Procedures are triggered by a Write to this characteristic value that includes an Op Code specifying the operation (see Table 3.2) and an Operator and Operand that are valid within the context of that Op Code (see Table 3.3). In a multiple-bond case, the handling of the Record Access Control Point shall be consistent across all bonds, i.e., there is a single database that is shared by all Collectors.

3.4.3.1. Filter Types

Since the value of the Operand is defined per service, when the RACP is used with the Glucose Service, a Filter Type field is defined to enable the flexibility to filter based on different criteria (i.e., Sequence Number or optionally User Facing Time).

Some Procedure Operators (i.e., less than or equal to, greater than or equal to and within range of) require a Filter Type as part of the Operand. This is used to specify the field in the Glucose Measurement characteristic value that is used to perform the filtering. When used, the Filter Type byte shall always precede the applicable filter parameter(s) within the Operand. For example, when used with the ‘within range of’ Operator, the Operand has the format <Filter Type><minimum><maximum> where Filter Type is the Least Significant Octet of the Operand. See Table 3.4 for a list of valid Filter Type values.

When using the Sequence Number Filter Type, the format of the Operand is the Sequence Number Filter Type value followed by the applicable Sequence Number value or value pair depending upon the Operator.

When using the User Facing Time Filter Type, the format of the Operand is the User Facing Time Filter Type value followed by the applicable User Facing Time (sum of the Base Time and the Time Offset) value or value pair depending upon the Operator.

3.4.3.2. Report Number of Stored Records procedure

When the Report Number of Stored Records Op Code is written to the Record Access Control Point, the Server shall calculate and respond with a record count in UINT16 format based on filter criteria, Operator and Operand values. Refer to Table 3.3 for Operand requirements when used with a specific Operator and note that in some cases, no Operand is used. The record count reported in the response is calculated based on the current state of the sensor database, and may change between connections or after records are cleared. The response is indicated using the Number of Stored Records Response Op Code. If the operation results in an error condition, this shall be indicated using the Response Code Op Code and the appropriate Response Code Value in the Operand for the error condition.

If the Server does not locate any records matching the filter criteria of the request, the Server shall indicate the Record Access Control Point with a Number of Stored Records Response Op Code and the Operand set to 0x0000.

If the operation results in an error condition, this shall be indicated using the Response Code Op Code and the appropriate Response Code Value in the Operand for the error condition.

3.4.3.3. Delete Stored Records procedure

When the Delete Stored Records Op Code is written to the Record Access Control Point, the Server may delete the specified patient records based on Operator and Operand values. Deletion of records is considered to be a permanent deletion of records from the patient database. Refer to Table 3.3 for Operand requirements when used with a specific Operator and note that in some cases, no Operand is used. Due to the sensitivity of the data, it is permitted for Sensors to only allow their data to be deleted by specific Clients.

The Server shall indicate this characteristic with a Response Code Value of Success if the records were successfully deleted from the patient record database.

If the Server does not locate any records matching the filter criteria of the request, the Server shall indicate the Record Access Control Point with a Response Code Op Code and Response Code Value in the Operand set to No Records Found.

If the operation results in an error condition, this shall be indicated using the Response Code Op Code and the appropriate Response Code Value in the Operand for the error condition.

3.4.3.4. Report Stored Records procedure

When the Report Stored Records Op Code is written to the Record Access Control Point, the Server shall notify the selected set of stored patient records based on the filter criteria specified in the Operator and Operand. Refer to Table 3.3 for Operand requirements when used with a specific Operator and note that in some cases, no Operand is used. The semantics of a record transfer is a ‘copy’ of the records and not a ‘move’ of the records.

The transfer of a patient record shall include a notification of the Glucose Measurement characteristic, and if context information exists in the patient record (based on the Context Information Flag of the Glucose Measurement characteristic value), the notification of the Glucose Measurement characteristic shall be followed by a notification of the Glucose Measurement Context characteristic.

The Time Offset field (described in Section 3.1.1.4) shall be included in the first transmitted Glucose Measurement characteristic and also in subsequent records whenever values changes to the Time Offset field occur. Otherwise, the Time Offset field is optional.

If during the record transfer a new patient record becomes available (i.e., after the Report Stored Records procedure is initiated), the Sensor may include this new record in the measurement transfer. A profile using this service is required to ensure Clients are tolerant of the possibility that one additional record is received than might have been expected.

Once all data records for a given request have been notified by the Server, the Server shall indicate the Record Access Control Point with a Response Code Op Code and Response Code Value in the Operand set to Success.

If the Server does not locate any records matching the filter criteria of the request, the Server shall indicate the Record Access Control Point with a Response Code Op Code and Response Code Value in the Operand set to No Records Found.

If the operation results in an error condition, this shall be indicated using the Response Code Op Code and the appropriate Response Code Value in the Operand for the error condition.

If the Server is required to interrupt its data transfer before completion for any reason, the Server shall indicate the Record Access Control Point with a Response Code Op Code and Response Code Value in the Operand set to Procedure not completed.

3.4.3.5. Abort Operation procedure

When the Abort Operation Op Code is written to the Record Access Control Point, the Server shall stop any RACP procedures currently in progress and shall make a best effort to stop sending any further data.

Once all RACP procedures have been stopped, the Server shall indicate the Record Access Control Point with a Response Code Op Code and Response Code Value in the Operand set to Success.

If the operation results in an error condition, this shall be indicated using the Response Code Op Code and the appropriate Response Code Value in the Operand for the error condition.

3.4.4. General Error Handling procedures

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

If the Op Code that was written to the Record Access Control Point characteristic is unsupported by the Server, the Server shall indicate the Record Access Control Point with a Response Code Op Code and Response Code Value in the Operand set to Op Code Not Supported.

If the Operator that was written to the Record Access Control Point characteristic is invalid, the Server shall indicate the Record Access Control Point with a Response Code Op Code and Response Code Value in the Operand set to Invalid Operator.

If the Operator that was written to the Record Access Control Point characteristic is not supported by the Server, the Server shall indicate the Record Access Control Point with a Response Code Op Code and Response Code Value in the Operand set to Operator Not Supported.

If the Operand that was written to the Record Access Control Point characteristic is invalid, the Server shall indicate the Record Access Control Point with a Response Code Op Code and Response Code Value in the Operand set to Invalid Operand.

If the Filter Type within an Operand that was written to the Record Access Control Point characteristic is not supported by the Server, the Server shall indicate the Record Access Control Point with a Response Code Op Code and Response Code Value in the Operand set to Operand Not Supported.

If the Server is unable to complete a procedure for any reason not stated here, the Server shall indicate the Record Access Control Point with a Response Code Op Code and Response Code Value in the Operand set to Procedure not completed.

If a request with an Op Code other than Abort Operation is written to the Record Access Control Point while the Server is performing a previously triggered RACP operation (i.e., resulting from invalid Client behavior), the Server shall return an error response with the Attribute Protocol Application error code set to Procedure Already In Progress.

If the Op Code that was written to the Record Access Control Point characteristic requests record notifications and the Client Characteristic Configuration descriptor is not configured for notifications, the Server shall return an error response with the Attribute Protocol Application error code set to Client Characteristic Configuration Descriptor Improperly Configured.

3.4.5. Procedure Timeout

In the context of the Record Access Control Point characteristic, a procedure is started when a write to the RACP characteristic is successfully completed. When a procedure is complete, the Server indicates the RACP characteristic with the Op Code set to Response Code.

A RACP procedure may consist of multiple characteristic notifications followed by an indication of the RACP characteristic. When the Server transmits an indication of the RACP characteristic, the response is considered to have timed out if the acknowledgement is not received within the ATT transaction timeout, defined as 30 seconds in Volume 2 Part F section 3.3.3 of [1]. If a timeout occurs, the Server shall stop sending any further indications and notifications related to the operation and consider the procedure to have failed.

3.4.6. Characteristic Descriptors

3.4.6.1. Client Characteristic Configuration Descriptor

The Client Characteristic Configuration descriptor shall be included in the Record Access Control Point characteristic.

3.5. Requirements for Time-Sensitive Data

The Glucose Measurement characteristic value and the Glucose Measurement Context characteristic value are time-sensitive characteristic values. The Glucose Measurement Context characteristic value does not have its own separate time stamp; rather the Glucose Measurement Context characteristic value shares it with its associated Glucose Measurement characteristic. For these characteristic values, the following requirements and recommendations apply:

  • The Server should be able to store several hundred data measurements.

  • If the maximum storage capacity in the Server is reached, the Server should overwrite the oldest records first when acquiring new records.

  • When transmitting stored data, the oldest data shall be sent first followed by the next oldest data (in FIFO order) until all stored data (as requested by the Client) has been transferred.

4. Special Values

4.1. Special Short Float Values

The following special short float values are defined in IEEE 11073-20601 [4].

Special Short Value

Value

NaN (not a number)

0x07FF

NRes (not at this resolution)

0x0800

+ INFINITY

0x07FE

– INFINITY

0x0802

Reserved for future use

0x0801

Table 4.1. Special Short Float Values

NaN is used to report an invalid result from a computation step or to indicate missing data due to the hardware’s inability to provide a valid measurement, perhaps from sensor perturbation.

NRes is used to report that the value cannot be represented with the available range and resolution, possibly resulting from an overflow or underflow situation.

5. Acronyms and Abbreviations

Acronyms and Abbreviations

Meaning

BR/EDR

Basic Rate / Enhanced Data Rate

FIFO

First-In-First-Out

GAP

Generic Access Profile

GATT

Generic Attribute Profile

HS

High Speed

LE

Low Energy

MAP

Mean Arterial Pressure

NaN

Not a Number

NRes

Not at this Resolution

RACP

Record Access Control Point

RFU

Reserved for Future Use

UUID

Universally Unique Identifier

Table 5.1. Acronyms and Abbreviations

6. References

Bibliography

[1] Bluetooth Core Specification v4.0 or later

[2] Health Device Profile v1.0

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

[4] ISO/IEEE Std 11073-20601™- 2008 Health Informatics - Personal Health Device Communication - Part 20601: Application Profile - Optimized Exchange Protocol - version 1.0 or later. This also includes ISO/IEEE 11073-20601:2010 (E).

[5] Current Time Service specification v1.0