-
Version: v1.0
-
Version Date: 2023-03-28
-
Prepared By: Electronic Shelf Label Working Group
Version History
Version Number |
Date |
Comments |
---|---|---|
v1.0 |
2023-03-28 |
Adopted by the Bluetooth SIG Board of Directors. |
Acknowledgments
Name |
Company |
---|---|
Andreas Hechenblaickner |
SES-imagotag |
Christian Friessnegg |
SES-imagotag |
Daniel Misoph |
Silicon Laboratories |
Guo Hui |
Hanshow Technology Co., Ltd. |
Kurt Haller-Walzl |
SES-imagotag |
Károly Kovács |
Silicon Laboratories |
Laurence Richardson |
Qualcomm Technologies International, Ltd. |
Lauri Hintsala |
Silicon Laboratories |
Lorenzo Amicucci |
Nordic Semiconductor |
Philip Maurer |
SES-imagotag |
Pirun Lee |
Nordic Semiconductor |
Ravi Bamidi |
Silvair, Inc. |
Robin Heydon |
Qualcomm Technologies International, Ltd. |
Simon Slupik |
Silvair, Inc. |
Yaping Ji |
Hanshow Technology Co., Ltd. |
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 © 2020–2023. 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.
1. Introduction
1.1. Scope
The ESL Profile specifies how a central access point (AP) may use the ESL Service exposed by an ESL device, and how the central AP communicates with ESLs connectionlessly when one or more ESLs are in the Synchronized state.
1.2. Conformance
Each capability of this specification shall be supported in the specified manner. This specification may provide options for design flexibility, because, for example, some products do not implement every portion of the specification. For each implementation option that is supported, it shall be supported as specified.
1.3. Profile dependencies
The ESL Profile requires the Object Transfer Profile (OTP) [6].
1.4. Bluetooth specification release compatibility
The ESL Profile is compatible with the Bluetooth Core Specification [3], Version 5.4 or later.
1.5. Language
1.5.1. Language conventions
In the development of a specification, the Bluetooth SIG has established the following conventions for use of the terms “shall”, “shall not”, “should”, “should not”, “may”, “must”, and “can”. In this Bluetooth specification, the terms in Table 1.1 have the specific meanings given in that table, irrespective of other meanings that exist.
shall |
—used to express what is required by the specification and is to be implemented exactly as written without deviation |
shall not |
—used to express what is forbidden by the specificiation |
should |
—used to express what is recommended by the specification without forbidding anything |
should not |
—used to indicate that something is discouraged but not forbidden by the specification |
may |
—used to indicate something that is permissible within the limits of the specification |
must |
—used to indicate either:
|
can |
—used to express a statement of possibility or capability |
1.5.1.1. Implementation alternatives
When specification content indicates that there are multiple alternatives to satisfy specification requirements, if one alternative is explained or illustrated in an example it is not intended to limit other alternatives that the specification requirements permit.
1.5.1.2. Discrepancies
It is the goal of Bluetooth SIG that specifications are clear, unambiguous, and do not contain discrepancies. However, members can report any perceived discrepancy by filing an erratum and can request a test case waiver as appropriate.
1.5.2. Reserved for Future Use
Where a field in a packet, Protocol Data Unit (PDU), or other data structure is described as “Reserved for Future Use” (irrespective of whether in uppercase or lowercase), the device creating the structure shall set its value to zero unless otherwise specified. Any device receiving or interpreting the structure shall ignore that field; in particular, it shall not reject the structure because of the value of the field.
Where a field, parameter, or other variable object can take a range of values, and some values are described as “Reserved for Future Use,” a device sending the object shall not set the object to those values. A device receiving an object with such a value should reject it, and any data structure containing it, as being erroneous; however, this does not apply in a context where the object is described as being ignored or it is specified to ignore unrecognized values.
When a field value is a bit field, unassigned bits can be marked as Reserved for Future Use and shall be set to 0. Implementations that receive a message that contains a Reserved for Future Use bit that is set to 1 shall process the message as if that bit was set to 0, except where specified otherwise.
The acronym RFU is equivalent to Reserved for Future Use.
1.5.3. Prohibited
When a field value is an enumeration, unassigned values can be marked as “Prohibited.” These values shall never be used by an implementation, and any message received that includes a Prohibited value shall be ignored and shall not be processed and shall not be responded to.
Where a field, parameter, or other variable object can take a range of values, and some values are described as “Prohibited,” devices shall not set the object to any of those Prohibited values. A device receiving an object with such a value should reject it, and any data structure containing it, as being erroneous.
“Prohibited” is never abbreviated.
2. Configuration
2.1. Roles
The ESL Profile specifies two roles. A device shall support one of the following roles:
Electronic Shelf Label (ESL) – A device that can display a graphic (e.g., containing a price) for an item that is offered for sale on a shelf and that typically includes integrated sensors and light-emitting diodes (LEDs).
Access Point (AP) – A central device that can exchange data with many ESLs in a system by using Bluetooth wireless technology.
2.2. Role, service, and profile relationships
The GATT role is determined as follows:
-
The ESL shall be a GATT Server.
-
The AP shall be a GATT Client.
2.2.1. Support for the ESL Service
The ESL shall instantiate the ESL Service [5].
2.2.2. Support for the Device Information Service
If the ESL supports one or more vendor-specific opcodes as described in the ESL Service [5], then the ESL shall instantiate the Device Information Service [4].
2.2.3. Support for the OTP
The AP shall support the Object Client role of the OTP [6].
If the ESL supports the receipt of images written to the ESL by an AP, then the ESL shall support the Object Server role of the OTP [6].
If the ESL supports the Object Server role, then the ESL also instantiates the Object Transfer Service (OTS) [7], as required by the OTP [6].
2.2.4. Role, service, and profile diagram
Figure 2.1 summarizes the relationships between profile roles and associated services. The ESL Profile roles (AP and ESL) are represented by light gray boxes. Services are represented by gray boxes. The black boxes represent OTP roles.
2.3. Concurrency limitations and restrictions
No concurrency limitations or restrictions are imposed by this specification.
2.4. Topology limitations and restrictions
An AP shall use the Generic Access Profile (GAP) Central role.
An ESL shall use the GAP Peripheral role.
An AP may bond with multiple ESLs, typically thousands.
An ESL shall be bonded with a maximum of one AP at any one time.
2.5. Transport dependencies
This specification uses only the Bluetooth Low Energy (LE) transport.
3. ESL role requirements
Service / Profile |
Requirement |
Section for additional requirements |
---|---|---|
Electronic Shelf Label Service |
M |
|
Object Server |
C.1 |
|
Device Information Service |
C.2 |
- M:
-
Mandatory
- C.1:
-
Mandatory if the receipt of images that are written to the ESL by an AP is supported; otherwise Optional.
- C.2:
-
Mandatory if the ESL supports one or more vendor-specific opcodes; otherwise Optional.
3.1. Incremental ESL Service requirements
3.1.1. Bluetooth Device Address
The ESL may use either a public device address or a random static device address as described in [Vol 6], Part B of the Bluetooth Core Specification [3].
3.1.2. ESL support for Periodic Advertising with Responses
The ESL shall support the Periodic Advertising with Responses (PAwR) feature specified in the Bluetooth Core Specification [3] as a synchronized device and Peripheral device.
3.1.3. ESL behavior in the Synchronized state
The ESL state machine is described in the ESL Service [5]. The states include a Synchronized state. The incremental requirements for an ESL relating to this mode are described in this section. Refer to Section 5.3 for the corresponding requirements for an AP.
In the Synchronized state, an ESL that implements the ESL Profile shall communicate with the AP by using the PAwR feature described in Section 3.1.2. The synchronization packet format for commands and responses is described in Section 5.3.1.
The commands and responses used in the Synchronized state are the same as the commands and responses used in the Updating state. The meaning of the commands and responses, and the mapping of responses to commands, shall be the same as in the Updating state, except for the following differences that apply to the ESL as a synchronized device:
-
A synchronized device can receive multiple commands addressed to itself in the same synchronization packet (see Section 5.3.1.3).
-
A synchronized device can send multiple responses at once in the same synchronization packet (see Section 5.3.1.4).
-
A synchronized device can receive a broadcast message, which is addressed to a group of devices instead of being individually addressed (see Section 5.3.1.5).
-
The Factory Reset command described in the ESL Service [5] is not valid in the Synchronized state (see Section 5.3.1.3.1).
-
The Update Complete command described in the ESL Service [5] is not valid in the Synchronized state (see Section 5.3.1.3.1).
A sequence of commands shall be processed in the order in which the commands are received. Where multiple commands are included in an ESL Payload, commands occupying lower-numbered octets shall be deemed to have arrived earlier than commands occupying the higher-numbered octets of that payload.
An ESL shall transmit a response back to the AP when it is individually addressed, if the command received requires a response, using the ESL response data types enumerated in Section 3.9.3 of the ESL Service [5].
When an ESL sends a response in the Synchronized state, the ESL shall authenticate the data by using the ESL Response Key Material value with which it has been configured by the AP. The ESL Response Key Material value shall be used with the Encrypted Data data type, see Part A, Section 1.23 in the Supplement to the Bluetooth Core Specification [8]. When an ESL receives a command that is individually addressed to that ESL and the command contains an error or causes an error condition, the ESL shall send an Error response, using the error codes that are enumerated in Section 3.9.3.1 of the ESL Service [5].
Some commands can be scheduled for execution in the future (e.g., the LED Timed Control and Display Timed Image commands). If such a timed command has been received but the time at which it will be executed has not yet been reached, then the command is described as ”pending”, see Section 3.9.2 in the ESL Service [5]. If the ESL supports the display of one or more images, then the ESL shall also support having one Display Timed Image command pending. If the ESL supports one or more LEDs, then the ESL shall also support having one LED Timed Control command pending. If a Display Timed Image command is received when a Display Timed Image command is already pending, or an LED Timed Control command is received when an LED Timed Control command is already pending, then these events shall be handled in the same way as described in Section 3.9.2.9.1 and Section 3.9.2.11.1, respectively, of the ESL Service [5]. If an opcode is received by an ESL and the opcode is not recognized by the ESL, then the ESL shall respond by sending the Error response: Invalid Opcode. As described in the ESL Service [5], the overall length of each Tag Length Value (TLV) is equal to (Length + 2) octets. The Length field shall be used to determine the location of the next command, using an offset of (Length + 2). This mechanism provides for forwards compatibility.
If an ESL in the Synchronized state receives the Factory Reset command, then the command is not valid for the Synchronized state and the ESL shall not perform a factory reset. If an ESL in the Synchronized state receives a Factory Reset command that is individually addressed to that ESL, then the ESL shall send the Error response: Invalid State.
Refer to Section 5.3.1.4 for details of the ESL response format and how response slots are allocated to ESLs.
3.2. Incremental OTS requirements
The Object Server shall support the Object Action Control Point Write procedure described in Section 3.3.2.6 of the OTS [7]. Objects representing image storage locations shall pre-exist on the Object Server without requiring an Object Client to create them. An empty image storage location shall be represented by an object with zero contents; the object and its associated metadata shall exist even when the object has zero contents.
The following object metadata shall be populated for each object: object name, object type, object size, and object properties. Support for the Object Metadata characteristics that expose these values is required by the OTS [7].
The object type may be either a 16-bit or 128-bit Universally Unique Identifier (UUID) that identifies the type of the Current Object. UUIDs that use the 16-bit format are specified in the Bluetooth SIG Assigned Numbers [2]. Manufacturers may also assign their own UUIDs using the 128-bit format, which may be used for proprietary image formats.
The number of objects exposed shall be equal to the maximum number of images that the ESL device can store. This number can be found from the value of the ESL Image Information characteristic (see Section 4.2.1.6).
None of the objects shall support the Delete property.
For each object exposed by the Object Server representing an image storage location, the Write property shall be set as follows:
-
If the ESL requires permitting an AP to write image data to the associated image storage location, the Write property shall be set to True.
-
If the ESL requires protecting the image from being overwritten, the Write property shall be set to False.
The Object Server shall support the Truncate feature described in Section 3.3.2.6 in the OTS [7]. If the Write property of an object is set to True, then the Truncate property shall also be set to True.
3.3. Incremental Device Information Service requirements
If the ESL supports one or more vendor-specific opcodes as described in the ESL Service [5], then the ESL shall support the PnP ID characteristic (and may support additional characteristics) in the Device Information Service.
4. AP role requirements
Profile requirement |
Section |
Support in AP role |
---|---|---|
Periodic Advertising with Responses |
M |
|
GATT sub-procedure requirements |
M |
|
Service discovery |
M |
|
Characteristic discovery |
M |
|
ESL Address characteristic |
M |
|
AP Sync Key Material characteristic |
M |
|
ESL Response Key Material characteristic |
M |
|
ESL Current Absolute Time characteristic |
M |
|
ESL Display Information characteristic |
M |
|
ESL Image Information characteristic |
M |
|
ESL Sensor Information characteristic |
M |
|
ESL LED Information characteristic |
M |
|
ESL Control Point |
M |
|
PnP ID characteristic |
M |
|
State-dependent behavior |
M |
|
AP procedures |
M |
|
OTP requirements |
M |
- M:
-
Mandatory
4.1. AP support for PAwR
The AP shall support the PAwR feature specified in the Bluetooth Core Specification [3] as a Central device.
The length of the Periodic Advertising Interval, the length of the Periodic Advertising Subevent Interval, and the number of subevents are left to the implementation.
Timing information for PAwR is provided by the AP in the Periodic Advertising Sync Transfer procedure as described in [Vol 6], Part B, Section 5.1.13 of [3]. After the AP has been configured for a given installation, the timing information shall remain constant.
The number of available response slots can be determined by the AP using the parameter Num_Response_Slots of the HCI_LE_Set_Periodic_Advertising_Parameters [v2] command described in [Vol 4], Part E, Section 7.8.61 of [3]. An ESL Payload typically includes multiple commands as described in Section 5.3.1.3. The AP should select values for subeventInterval, responseSlotDelay, and responseSlotSpacing that result in sufficient response slots to service the maximum demand. The maximum possible demand for response slots occurs when each command present in the ESL Payload requires a response from a different ESL, and the number of commands contained in the ESL Payload is the highest possible.
The first Periodic Advertising Response Slot following the Periodic Advertising Response Slot Delay is the response slot number 1 described in Section 5.3.1.4.2.
Refer to Section 5.3 for additional requirements that apply to the PAwR feature.
4.2. Service discovery
The AP shall perform Primary Service Discovery using either the GATT Discover All Primary Services sub- procedure or the GATT Discover Primary Services by Service UUID sub-procedure.
The AP shall discover the ESL Service [5].
The AP shall discover the Device Information Service [4], if the Device Information Service is exposed by the ESL.
The AP may also discover other services.
4.2.1. ESL Service characteristic discovery
As required by [Vol 3], Part G, Section 3.3.1.3 of [3], a Client may ignore any characteristic definition with an unknown Characteristic UUID. The AP shall perform GATT Characteristic Discovery to discover the following characteristics, insofar as each characteristic is present in the instance of the ESL Service exposed by the ESL device:
-
ESL Address characteristic
-
AP Sync Key Material characteristic
-
ESL Response Key Material characteristic
-
ESL Current Absolute Time characteristic
-
ESL Display Information characteristic
-
ESL Image Information characteristic
-
ESL Sensor Information characteristic
-
ESL LED Information characteristic
-
ESL Control Point (ECP)
4.2.1.1. ESL Address characteristic
The AP shall configure the ESL Address by writing an ESL Address value to the ESL Address characteristic.
However, the AP shall not write the ESL_ID value of 0xFF to the ESL Address characteristic. This is because the ESL_ID value of 0xFF, known as the Broadcast Address, is reserved for use in broadcast messages as described in Section 5.3.1.5.
4.2.1.2. AP Sync Key Material characteristic
The AP shall configure the AP Sync Key Material by writing the AP Sync Key Material value of the AP to the AP Sync Key Material characteristic.
4.2.1.3. ESL Response Key Material characteristic
The AP shall configure the ESL Response Key Material by writing an ESL Response Key Material value to ESL Response Key Material characteristic.
The AP should write a different ESL Response Key Material value to each ESL in a system; this enables the AP to authenticate each ESL response that is received from an ESL in the Synchronized state.
4.2.1.4. ESL Current Absolute Time characteristic
The AP shall configure the ESL current absolute time by writing the current system time to the ESL Current Absolute Time characteristic.
The format used to represent the time is described in the ESL Service [5].
4.2.1.5. ESL Display Information characteristic
The AP shall obtain information about the displays available on the ESL by reading the value of the ESL Display Information characteristic.
The total length of the ESL Display Information characteristic may exceed the capacity of the ATT_MTU value in use on the Attribute Protocol (ATT) connection; if the total length of the ESL Display Information characteristic exceeds the capacity of the ATT_MTU value in use on the ATT connection, then the AP shall use the GATT Read Long Characteristic Value sub-procedure to read the entire value.
However, if the ESL Display Information characteristic does not exist on the Server, the AP shall establish that the ESL does not support any display.
4.2.1.6. ESL Image Information characteristic
The AP shall discover the maximum number of images that can be stored by an ESL. This number can be obtained by reading the value of the Max_Image_Index field in the ESL Image Information characteristic. Because the index is zero-based, the maximum number of images that can be stored by the ESL is Max_Image_Index + 1.
If one or more images are supported, and if the ESL supports the OTS [7] for the transfer of image data, then the AP can derive the Object IDs for individual images as described in the ESL Service [5]. For further details on the format and use of Object IDs, refer to the OTP [6] and the OTS [7].
However, if the ESL Image Information characteristic does not exist on the Server, the AP shall establish that the ESL does not support the display of an image.
4.2.1.7. ESL Sensor Information characteristic
The AP shall obtain information about the sensors supported by an ESL by reading the value of the ESL Sensor Information characteristic.
The total length of the ESL Sensor Information characteristic may exceed the capacity of the ATT_MTU value in use on the ATT connection; if the total length of the ESL Sensor Information characteristic exceeds the capacity of the ATT_MTU value in use on the ATT connection, then the AP shall use the GATT Read Long Characteristic Value sub-procedure to read the entire value.
However, if the ESL Sensor Information characteristic does not exist on the Server, the AP shall establish that the ESL does not support any sensor.
4.2.1.8. ESL LED Information characteristic
The AP shall obtain information about the capabilities and state of the LEDs supported by an ESL by reading the value of the ESL LED Information characteristic.
The AP shall parse the information to distinguish between data for single-color (monochrome) and multi-color (sRGB) LEDs by inspecting the two most significant bits of each octet, as described in the ESL Service [5].
If the ESL supports a very large number of LEDs, then the total length of the ESL LED Information characteristic may exceed the capacity of the ATT_MTU value in use on the ATT connection; if the total length of the ESL LED Information characteristic exceeds the capacity of the ATT_MTU value in use on the ATT connection, then the AP shall use the GATT Read Long Characteristic Value sub-procedure to read the entire value.
However, if the ESL LED Information characteristic does not exist on the Server, the AP shall establish that the ESL does not support an LED.
Refer to Section 6.1.3 for information on how the AP may change the state of an LED (e.g., the color and flashing pattern) by using the ECP.
4.2.1.9. ECP
The AP shall write to the ECP to send commands to an ESL while in a connection.
The AP receives a response to each command in the form of a notification of the ECP characteristic.
The commands that an AP may write to the ECP are specified in the ESL Service [5].
See the example message sequence charts (MSCs) in Section 6.1.
4.2.1.9.1. ECP procedure timeout
The ESL Control Point Timeout period is specified in the ESL Service [5].
When the AP writes to the ECP, the AP shall start a timer with the value set to the ESL Control Point Timeout period. The AP shall stop the timer when a notification of the ESL Control Point characteristic is received in response to the command. If the timer expires, then the ECP procedure shall be considered to have failed. If an ECP procedure times out, then the AP shall not start a new ECP procedure until a new link is established with the ESL.
4.2.1.9.2. ECP error handling
When the AP writes to the ECP, the AP may receive an Error response from the ESL as described in the ESL Service [5].
When the AP receives an Error response, the AP shall handle the error condition and shall continue to function normally.
4.2.1.9.3. Service Needed handling
The Basic State response is received in response to certain commands. If the Basic State response is received from an ESL and the Service Needed bit in the response value is set to True, then the AP should read the sensors supported by that ESL (if any) by using the Read Sensor Data command described in the ESL Service [5]. The sensor data might indicate to the AP what feature(s) associated with the ESL require service. For example, data from a sensor that reports the ESL battery level might indicate that the battery level is becoming low; data from a temperature sensor might indicate that the ESL temperature is out of range, or that the temperature of a refrigerator to which the ESL sensor is attached is too high. The types of sensor supported by an ESL, if any, are known from the ESL Sensor Information characteristic, as described in Section 4.2.1.7.
The AP may use implementation-dependent procedures to initiate servicing.
The Service Needed bit acts as a flag that remains set until it is reset by the AP. When the AP is ready to reset the Service Needed flag bit to False, the AP shall send the Service Reset command described in the ESL Service [5] to the ESL.
4.2.2. Device Information Service characteristic discovery
If the AP discovers the Device Information Service, then the AP shall perform either of the GATT Characteristic Discovery sub-procedures to discover the PnP ID characteristic, if the PnP ID characteristic is exposed by the Server.
In addition, the AP may discover other characteristics in the Device Information Service.
4.3. GATT sub-procedure requirements
Requirements in this section represent a minimum set of requirements for a Client. Other GATT sub- procedures may be used if supported by both Client and Server.
Table 4.2 summarizes additional GATT sub-procedure requirements beyond those required by all GATT Clients.
GATT sub-procedure |
Requirements |
---|---|
Discover All Primary Services |
C.1 |
Discover Primary Services by Service UUID |
C.1 |
Discover All Characteristics of a Service |
C.2 |
Discover Characteristics by UUID |
C.2 |
Discover All Characteristic Descriptors |
M |
Read Characteristic Descriptors |
M |
Write Characteristic Descriptors |
M |
Read Characteristic Value |
M |
Read Long Characteristic Value |
M |
Write Characteristic Value |
M |
Write Without Response |
O |
Characteristic Value Notification |
M |
- M:
-
Mandatory
- O:
-
Optional
- C.1:
-
Mandatory to support at least one of the Service Discovery sub-procedures.
- C.2:
-
Mandatory to support at least one of the Characteristic Discovery sub-procedures.
4.4. OTP requirements
The AP shall support the Object Client role of the OTP [6].
The Object Client shall support the Write Object Contents procedure described in Section 4.5.5.2 in the OTP [6]. The Object Client should also support the Go To procedure of the Object List Control Point as described in the OTP.
When using an OTP procedure to write image data to an ESL, the AP should set the Truncate bit of the Mode parameter to True so that the object is automatically resized if a larger image in the selected image storage location is to be overwritten by a smaller image, as described in Section 3.3.2.6 in the OTS [7].
5. State-dependent behavior
The ESL state machine is described in the ESL Service [5].
Section 5.1 to Section 5.5 specify additional requirements that relate to interoperating with an ESL when the ESL is in a specific state.
5.1. Unassociated state
An AP shall scan for ESLs in the Unassociated state by using the General Discovery procedure as described in GAP (see [Vol 3], Part C, Section 9.2.6 of [3]). An AP may determine which ESLs are in the Unassociated state by comparing the Bluetooth address of an ESL with a list of Bluetooth addresses of ESLs that have already been associated.
When the AP finds an ESL in the Unassociated state that the AP will configure, the AP shall initiate a connection to the ESL. After connecting to the AP, the ESL transitions into the Configuring state as described in Section 5.2.
5.2. Configuring state
An ESL can enter the Configuring state only from the Unassociated state. To transition an ESL from the Unassociated state to the Configuring state, the AP shall form a secure connection with the ESL, using LE Secure Connections and LE security mode 1 and security level 2, or higher, and shall establish a bond, as described in GAP (see [Vol 3], Part C, Section 9.4.4 of [3]). The Configuring state allows an ESL to be configured by the AP by using the ESL Service [5] that is exposed by the ESL.
The AP shall read the ESL Display Information characteristic (Section 4.2.1.5), ESL Image Information characteristic (Section 4.2.1.6), ESL Sensor Information characteristic (Section 4.2.1.7), and ESL LED Information characteristic (Section 4.2.1.8), insofar as these characteristics are exposed by the ESL.
If the Device Information Service PnP ID characteristic is exposed by the ESL, then the AP shall read the value of the PnP ID characteristic. The value of the PnP ID characteristic identifies the vendor of the device. The AP may use the value of the PnP ID characteristic to determine what vendor-specific opcodes, if any, may be supported by the ESL.
The AP shall configure the ESL by writing an ESL Address it has assigned to the ESL to the ESL Address characteristic (Section 4.2.1.1), the AP Synchronization Key Material to the AP Sync Key Material characteristic (Section 4.2.1.2), and the ESL Response Key Material to the ESL Response Key Material characteristic (Section 4.2.1.3). The AP shall write a value to the ESL Current Absolute Time characteristic (Section 4.2.1.4) representing the current system time.
See an example MSC in Section 6.1.1.
The AP may also write images to the ESL in the Configuring state, using the Object IDs that it has derived as described in Section 4.2.1.6 and the procedures specified in the OTP [6].
After configuration of the ESL has been completed, the AP shall send the Update Complete opcode using the ESL Control Point characteristic and shall commence the Periodic Advertising Synchronization Transfer (PAST) procedure described in the Bluetooth Core Specification [3] to transition the ESL to the Synchronized state. This process is illustrated in Section 6.1.5. When the ESL receives the Update Complete command, the ESL shall wait for synchronization to be established and then terminate the ACL connection and transition to the Synchronized state.
However, if link loss occurs before configuration of the ESL has been completed, the AP should not commence the PAST procedure and should attempt to reconnect to the ESL to continue the configuration process. When link loss occurs before configuration of the ESL has been completed, the ESL reverts to the Unassociated state described in Section 5.1.
5.3. Synchronized state
For ESLs in the Synchronized state, an AP shall transmit synchronization packets (see Section 5.3.1) for each group of ESLs in sequence by using the PAwR feature described in Section 4.1.
The AP shall support the authentication of ESL data using the Encrypted Advertising Data feature.
The format of the synchronization packet used in the Synchronized state is described in Section 5.3.1. If a command is sent and requires a response, then the AP shall process the response received.
Responses received in the Synchronized state shall be processed in the same way as is described for processing ESL responses from the ECP.
To provide enhanced reliability, the state information of the ESL response may be checked against the desired state of that ESL as known by the AP. If there is a difference between these two states, then the AP may schedule retransmission of an appropriate command to request that the ESL change its state to match the expected state.
See example MSCs in Section 6.2.
5.3.1. Synchronization packet
The synchronization packet for commands and responses is specified as a message contained within an Encrypted Data data type. The payload of the Encrypted Data data type shall be the ESL Payload contained in an ESL data type.
The ESL Payload shall be less than or equal to 48 octets in length.
The structure of the ESL Payload is described in Section 5.3.1.3 to Section 5.3.1.5.
5.3.1.1. ESL data type
The ESL data type contains an ESL command or response. The value shall be the same as the ESL Payload.
5.3.1.1.1. Format
Data Type |
Description |
---|---|
«ESL» |
The value shall be an ESL Payload |
5.3.1.2. ESL advertising packet
The synchronization packet is contained in an advertising packet as shown in Figure 5.1.
5.3.1.3. Specific requirements for commands
The AP may send commands to ESLs that are in the Synchronized state.
Multiple ESLs may be addressed in a single synchronization packet, and the same ESL may be addressed more than once in the same synchronization packet.
The synchronization packet format used to send commands to ESLs is shown in Figure 5.2.
The ESL Payload shall contain a Group_ID followed by one RFU field and then one or more commands. The Group_ID is a 7-bit value and is a part of the ESL Address format as described in the ESL Service [5]. A synchronization packet in which the Group_ID field has the value N shall be transmitted in a Periodic Advertising with Responses subevent with the subevent number N; therefore, the Group_ID maps to a specific Periodic Advertising with Responses subevent.
The RFU field consists of a single bit that shall be set to 0. Therefore, the Group_ID field and the RFU field together occupy 1 octet.
Each command consists of one TLV formatted element. Each TLV may have a different length. Although Figure 5.2 shows only three TLVs for illustration purposes, any number of TLVs may be included provided that the maximum ESL Payload size of 48 octets is not exceeded.
The format of a TLV is shown in Figure 5.3.
The commands themselves each contain an ESL_ID, in a parameter, providing the remainder of the address of an ESL belonging to the group specified by the Group_ID. The ESL_ID value, 0xFF, known as the Broadcast Address, shall be reserved for broadcast messages as described in Section 5.3.1.5.
5.3.1.3.1. Opcodes for commands
The TLV format, opcodes, and parameters that are used to represent commands in the Synchronized state are identical to those used with the ECP described in the ESL Service [5]. However, in the Synchronized state, multiple commands can be sent at once in the same synchronization packet.
The total length of the Parameters field that follows each opcode in a synchronization packet can be calculated from the value of the Length field; the total length of the Parameters field shall be equal to (Length + 1) octets.
In each command, the first parameter, consisting of the octet immediately following the opcode, is the ESL_ID parameter. The ESL_ID parameter value shall be set to the value of the least significant 8 bits of the ESL Address as described in the ESL Service [5], or to the Broadcast Address as described in Section 5.3.1.5. Therefore, a single synchronization packet may contain a mixture of commands addressed to different ESLs.
The Factory Reset command described in the ESL Service [5] is reserved for use in the Configuring state and the Updating state (i.e., the AP shall not send the Factory Reset command to an ESL that is in the Synchronized state).
5.3.1.4. Specific requirements for ESL responses
When an ESL receives a synchronization packet containing one or more commands individually addressed to that ESL, the ESL shall transmit the response as described in this section.
The number of response slots and the response slot timings are determined by the AP using the PAwR feature, as described in Section 4.1.
The synchronization packet used to send an ESL response shall have the format shown in Figure 5.4.
The ESL Payload shall contain one or more ESL response TLVs. The format of each TLV used for an ESL response is shown in Figure 5.5.
Each TLV may have a different length.
Each TLV represents the response to one of the commands received by the ESL.
When an ESL receives a synchronization packet containing one or more commands to which the ESL will respond, the ESL shall send a single synchronization packet for ESL response. The single synchronization packet for ESL response sent by the ESL should contain responses to the commands that were individually addressed to the ESL, consisting of ESL response TLVs arranged in the same order as the command TLVs to which the ESL is responding (i.e., the ESL response TLV that is transmitted first should be the response to the command TLV that was received first). The process by which a response slot is allocated to the ESL for this purpose is described in Section 5.3.1.4.2. If including all the requested response TLVs would cause the maximum ESL Payload size of 48 octets to be exceeded, then the ESL shall substitute the Capacity Limit Error response described in the ESL Service [5] for one or more such response TLVs, such that the maximum ESL Payload size is not exceeded in the response.
5.3.1.4.1. Opcodes for responses
The opcodes and parameters used in the TLVs for ESL response data types sent by ESLs that are in the Synchronized state shall be the same as those used in notifications of the ESL Control Point characteristic as described in the ESL Service [5] (i.e., the TLVs that are used to represent ESL response data types in the Synchronized state are identical to the TLVs used to represent ESL responses that may be sent in the ESL Service by using GATT).
5.3.1.4.2. Allocation of response slots to ESLs
A synchronization packet received from an AP may contain commands addressed to multiple ESLs, but an ESL shall send a response only to commands individually addressed to itself.
For the purposes of the allocation of response slots to ESLs, the command TLVs received in a synchronization packet shall be numbered as follows: the TLV received first in the ESL Payload from the AP shall be TLV number 1, the TLV received second in the same ESL Payload shall be TLV number 2, and the Nth TLV received in the same ESL Payload shall be TLV number N. These are referred to as TLV_1, TLV_2, etc., as illustrated in Figure 5.6.
The response slot in which a particular ESL shall transmit its response shall be determined as follows:
-
For the purposes of the following procedure, broadcast messages (see Section 5.3.1.5) shall be disregarded because broadcast messages do not elicit a response. The expression ”individually addressed” in the following steps describes a command that is not a broadcast message.
-
If the ESL receives only one command individually addressed to itself in the synchronization packet received, then the command shall be the relevant command for step 4 below.
-
If the ESL receives more than one command individually addressed to itself in the same synchronization packet, then the command that the ESL receives last shall be the relevant command for step 4 below.
-
If an ESL receives a relevant command in TLV number N, then the ESL shall transmit its response (if any) in response slot N.
-
An ESL shall not transmit in any timeslot other than the response slot that was assigned to that ESL through the process described in step 4.
-
However, an ESL may indicate that it has not had sufficient time to give a response (e.g., because the required sensor hardware was asleep) by requesting that the AP ask again in the next frame time. The ESL shall do this by sending the ESL response error code for Retry, described in the ESL Service [5], in the ESL’s allocated response slot.
For example, if an AP sends a synchronization packet containing seven commands (TLV_1 to TLV_7), in which:
-
TLV_1 and TLV_3 are both individually addressed to the same ESL (”ESL A”);
-
TLV_2 is individually addressed to ESL B;
-
TLV_4 is a broadcast message;
-
TLV_5 and TLV_6 are individually addressed to ESL C; and
-
TLV_7 contains a broadcast message,
then the allocation of the response slots to the ESLs must be as shown in Table 5.2.
Response slot number |
ESL that transmits its response |
Command(s) responded to |
---|---|---|
1 |
See Note |
None |
2 |
ESL B |
TLV_2 |
3 |
ESL A |
TLV_1, TLV_3 |
4 |
See Note |
None |
5 |
See Note |
None |
6 |
ESL C |
TLV_5, TLV_6 |
7 |
See Note |
None |
Other slots |
Not used |
None |
Note: In the example shown in Table 5.2, response slots 1 and 5 are not used because the ”relevant” commands for the ESLs concerned are allocated to later response slots as described in steps 3 and 4 above. Response slots 4 and 7 are not used because a broadcast message does not elicit any response.
5.3.1.4.3. Error handling
When an error condition occurs that prevents a command from being executed successfully, the ESL response data type ”Error” shall be sent as the response to that command, with the parameter value set to the relevant error code, as described in the ESL Service [5].
When an ESL receives a synchronization packet containing multiple commands addressed to the ESL, and if an error condition occurs when processing one of those commands, the ESL shall continue processing the other commands received in the same synchronization packet.
5.3.1.5. Specific requirements for broadcast messages
In addition to the transmission of individually addressed messages, an AP shall also support the sending of a broadcast message to an entire group of ESLs, by using the Broadcast Address in conjunction with the Group_ID as described in Section 5.3.1.3. In this case, the Group_ID field shall be set to the Group_ID for the group and the ESL_ID field (e.g., within a command) shall be set to the Broadcast Address value, 0xFF.
All ESLs associated with the relevant Group_ID that receive the broadcast message shall process it (e.g., all the ESLs relating to a given product type, such as fresh vegetables, may be sent the same command in a single transmission).
However, as described in Section 3.1.3, broadcast messages do not elicit any response from an ESL.
To enhance reliability, the AP may subsequently poll the ESLs to verify that the command has been received and executed.
5.3.2. Transitioning from the Synchronized state to the Updating state
Some use cases require the AP to send a larger amount of data to the ESL than is appropriate for the Synchronized state. Such larger data transfers are accomplished by causing the ESL to transition to the Updating state.
To transition an ESL from the Synchronized state to the Updating state, the AP shall use the Periodic Advertising Connection procedure as described in GAP (see [Vol 3], Part C, Section 9.5.5 in [3]).
When the AP connects with the ESL, the ESL transitions to the Updating state.
5.4. Updating state
The AP may request an ESL to transition to the Updating state as described in Section 5.3 or Section 5.5.
As a prerequisite of entering the Updating state, the ESL shall already be bonded with the AP, having formed the bond during a previous connection between the same peer devices (see Section 5.2).
The previously bonded AP is a trusted device, and any other device is an untrusted device. If the ESL connects to the trusted device, then the ESL shall enter the Updating state. The ESL may reject a connection request from an untrusted device. However, if the ESL does connect to a device other than the trusted device, the ESL shall reject any pairing request received from that device, and the ESL shall not enter the Updating state while connected to the untrusted device.
When in the Updating state, an ESL can be reconfigured by writing to the applicable characteristics that were described in Section 5.2, and the AP may write commands to the ECP. See the example MSCs in Section 6.1.
The AP may also write images to the ESL in the Updating state, using Object IDs that it has derived as described in Section 4.2.1.6 with the procedures specified in the OTP [6]. This may include overwriting images that have previously been stored in the ESL.
If the AP requires updating the AP Sync Key Material value, then the AP should coordinate the change in AP Sync Key Material methodically across all the ESLs that need to be updated.
After the updates have been completed, the AP shall send the Update Complete opcode using the ESL Control Point characteristic and shall start the PAST procedure described in the Bluetooth Core Specification [3] to transition the ESL to the Synchronized state. This process is illustrated in Section 6.1.5. If an ESL receives the Update Complete command and it is synchronized, the ESL shall immediately terminate the ACL connection and transition to the Synchronized state.
If an ESL receives the Update Complete command and it is not synchronized, the ESL shall wait for synchronization to be established and then terminate the ACL connection and transition to the Synchronized state.
However, if link loss occurs before all the required updates of the ESL have been completed, the AP should not start the PAST procedure and should attempt to reconnect to the ESL to complete the updates. When link loss occurs in the Updating state, the ESL transitions to the Unsynchronized state described in Section 5.5.
5.5. Unsynchronized state
The AP shall scan for ESLs in the Unsynchronized state by using the General Discovery procedure as described in GAP (see [Vol 3], Part C, Section 9.2.6 of [3]). When in the Unsynchronized state, an ESL is associated with an AP but is not in a connection and is not synchronized. In the Unsynchronized state, the ESL is in a GAP connectable mode until it is connected with the associated AP, at which point the ESL will transition from the Unsynchronized state to the Updating state. An AP may determine which ESLs are in the Unsynchronized state by comparing the Bluetooth address of an ESL with a list of Bluetooth addresses of ESLs that have been associated.
When the AP finds an ESL in the Unsynchronized state, and the ESL is associated with the AP, the AP shall initiate a connection to the ESL by using a Connection Establishment procedure described in GAP (see [Vol 3], Part C, Section 7.3 of [3]). Once connected, the ESL transitions to the Updating state, as shown in the ESL state diagram in Section 2.7.3 of the ESL Service [5].
6. Message sequences
The following procedures are described in the referenced subsections:
-
Use of commands in a connected state:
-
Configure or Reconfigure an ESL (Section 6.1.1)
-
Update a Stored Image on an ESL (Section 6.1.2)
-
Control LED(s) in Updating State (Section 6.1.3)
-
Transition to Unassociated State (Section 6.1.4)
-
Transition to Synchronized State When Synchronized (Section 6.1.5)
-
Transition to Synchronized State When Not Synchronized (Section 6.1.6)
-
-
Use of commands in the Synchronized state:
-
Control LED in Synchronized State (Section 6.2.1)
-
Control Displayed Image in Synchronized State (Section 6.2.2)
-
Read Sensor Data in Synchronized State (Section 6.2.3)
-
Check ESL is Still in Synchronized State (Section 6.2.4)
-
Move from Synchronized to Updating State (Section 6.2.5)
-
6.1. Connection-oriented commands
This section provides example message sequences used in the connection-oriented Configuring and Updating states. GATT services are used in these states.
6.1.1. Configure or Reconfigure an ESL procedure
In this procedure, an AP configures an ESL through a secure connection created using the Securing ESLs procedure. Configuration is accomplished by reading and writing characteristics in the ESL Service.
The sequence in Figure 6.1 is presented for illustration only. Messages may occur in a different order and an ESL implementation may support fewer readable characteristics than shown in Figure 6.1.
The transactions used for initial configuration, in the Configuring state, and for reconfiguration, in the Updating state, are effectively the same except that, in the Updating state, it is only necessary to access the characteristics impacted by changes.
6.1.2. Update a Stored Image on an ESL procedure
In this procedure, information is obtained from the ESL Image Information characteristic that enables image data to be written to a given stored image by using the OTP [6] and OTS [7].
6.1.3. Control LED(s) in Updating State procedure
In this procedure, an AP changes the state of the LED(s) exposed by an ESL in the Updating state by writing to the ECP.
6.1.4. Transition to Unassociated State procedure
In this procedure, the AP instructs an ESL to transition from the Updating state to the Unassociated state by using the Unassociate from AP command, which is written to the ECP characteristic.
6.1.5. Transition to Synchronized State When Synchronized procedure
In this procedure, the ESL transitions to the Synchronized state when the ESL is synchronized. Once synchronized, the ESL terminates the connection-oriented link.
6.1.6. Transition to Synchronized State When Not Synchronized procedure
In this procedure, the ESL transitions to the Synchronized state when the ESL is not synchronized. Once synchronized, the ESL terminates the connection-oriented link.
6.2. Sending and receiving commands in the Synchronized state
This section describes messages that may be sent and received in the Synchronized state, using the PAwR feature as described in Section 5.3.
6.2.1. Control LED in Synchronized State procedure
In this procedure, the AP sends a command to an ESL in the Synchronized state to control an LED.
The timed or non-timed version of the LED Timed Control and LED Control commands may be used. Only the LED Control command has been shown in Figure 6.7, for simplicity.
6.2.2. Control Displayed Image in Synchronized State procedure
In this procedure, the AP sends a command to an ESL in the Synchronized state to control the displayed image on a display.
The timed or non-timed version of the Display Timed Image and Display Image commands may be used. Only the Display Image command has been shown in Figure 6.8, for simplicity.
6.2.3. Read Sensor Data in Synchronized State procedure
In this procedure, the AP sends a command to an ESL in the Synchronized state to initiate the reading of a sensor on the ESL.
6.2.4. Check ESL is Still in Synchronized State procedure
In this procedure, an AP checks that an ESL is still synchronized with the AP. The frequency with which these messages are sent is left to the implementer.
6.2.5. Move from Synchronized to Updating State procedure
In this procedure, the AP instructs an ESL to transition from the Synchronized state to the Updating state by initiating a connection with the ESL.
7. Connection establishment procedures
There are no additional requirements specified concerning connection procedures and modes for the ESL and AP roles beyond those found in GAP (see [Vol 3], Part C of [3]).
8. Security requirements
This section describes the security requirements for the ESL and AP roles beyond those already required by the ESL service specification, see [5].
8.1. General requirements
Any connection between an AP and an ESL shall use LE Secure Connections and LE security mode 1 and security level 2, or higher, as described in GAP (see [Vol 3], Part C, Section 10.2 of [3]). Bonding is required as described in Section 5.2 and Section 5.4. The stored Long-Term Key is used when transitioning to the Updating state from the Synchronized or Unsynchronized state.
8.2. AP security requirements
In the Synchronized state, the AP shall use the Encrypted Advertising Data feature as described in Section 5.3.
The AP Sync Key Material is described in Section 4.2.1.2. The AP shall use the same AP Sync Key Material value with all ESLs in a system.
The ESL Response Key Material is described in Section 4.2.1.3. The AP shall configure each ESL with an ESL Response Key Material value. The AP should assign a different ESL Response Key Material value for each ESL in the system. This enables ESL responses sent in the Synchronized state to be authenticated by the AP.
The AP shall include a new Randomizer value in each synchronization packet that the AP transmits.
8.3. ESL security requirements
In the Synchronized state, the ESL shall use the Encrypted Advertising Data feature as described in Section 3.1.3.
An ESL message is valid if the Encrypted Advertising Data Message Integrity Check (MIC) does authenticate.
As described in the ESL Service [5], if an ESL does not receive a valid ESL message in a synchronization message for 60 minutes, then the ESL transitions to the Unsynchronized state. Once in the Unsynchronized state, the ESL can return to the Synchronized state only through the Updating state.
Therefore, an ESL can be temporarily absent for periods less than 60 minutes in duration without leaving the Synchronized state; this time might be used, for example, to update an e-ink display (e.g., when there is an insufficient energy budget available to support Bluetooth wireless communications while the limited battery power is being used to accomplish the display update).
The ESL shall include a new Randomizer value in each response packet that the ESL transmits.
9. Acronyms and abbreviations
Acronym/Abbreviation |
Definition |
---|---|
AP |
access point |
ATT |
Attribute Protocol |
ECP |
ESL Control Point |
ESL |
electronic shelf label |
GAP |
Generic Access Profile |
GATT |
Generic Attribute Profile |
ID |
identifier |
LE |
Low Energy |
LED |
light-emitting diode |
TLV |
Tag Length Value |
MIC |
Message Integrity Check |
MSC |
message sequence chart |
OTP |
Object Transfer Profile |
OTS |
Object Transfer Service |
UUID |
Universally Unique Identifier |
10. References
Bibliography
[1] Appropriate Language Mapping Tables, https://www.bluetooth.com/language-mapping/Appropriate-Language-Mapping-Table
[2] Bluetooth Assigned Numbers, https://www.bluetooth.com/specifications/assigned-numbers
[3] Bluetooth Core Specification, Version 5.4 or later
[4] Device Information Service, Version 1.1 or later
[5] Electronic Shelf Label Service, Version 1.0
[6] Object Transfer Profile Specification, Version 1.0
[7] Object Transfer Service Specification, Version 1.0
[8] Supplement to the Bluetooth Core Specification, Version 11 or later