LifeScan Shared Binary Protocol
Multiple LifeScan devices of the OneTouch family share a common packet framing protocol, clearly designed for serial communication but used over different transmission protocols as well.
While commands within the protocol are specific to the model, the framing is vastly similar if not identical.
packet = STX length link-control command_prefix message ETX checksum STX = %x02 length = OCTET link-control = OCTET message = [length - 6]OCTET ETX = %x03 checksum = 2OCTET ; 16-bit little-endian value
The packets are variable length, with the length provided by the byte following
STX constant. This length is inclusive of the whole packet framing. The
message itself is 6 bytes short of this value.
ETX constants mark start and end of the message and correspond
to the ASCII characters bearing the same names.
link-control byte is only used by some devices, and for others is
maintained to a constant
checksum is a variant of CRC-16-CCITT, seeded at
0xFFFF, and stored
link-control byte is known used only in
the OneTouch Ultra Easy protocol, which contains a
description of the field. As no other meter uses this byte, its documentation is
left to the LifeScan provided specifications.
For packet that includes non-zero length messages, the message itself can be defined as
message = command-prefix *OCTET command-prefix = OCTET
The command prefix is device-specific, and is present both in the requests sent and the responses received.
Some devices allow more than one prefix to be used, although not in the same session. If multiple prefixes are legal, the responses will echo back the command prefix of their request.
Exceptions (likely bugs) exists where this guarantee is not maintained, check device-specific documentation.
With the exception of a few device-specific control packets, all commands sent to the device receive a response in the same packet format. This extends the format a response to:
response = command-prefix status *OCTET command-prefix = OCTET ; as provided in the request status = success / error success = %x06 error = %x09 / OCTET ; only some errors are identified
Whether data follows a non-success
status is device specific. Data should not
be considered a valid response if the
status is not