This is a description of the protocol which is used by the following devices:
This is a work in progress. There are some parts which aren't clear to me yet.
These devices use a TRS (mini-jack) RS232 to either USB or Serial cable.
I use the Texas Instruments 3410 USB serial adapter from Abbott for testing.
The protocol description is done in ABNF, this standard can be found here.
You might notice there are some quirks in the protocol. So it likely isn't a mistake if two spaces are used for no reason or if a newline is used for no reason.
generic-message = command / result
The host starts with setting up the connection. After that it should send the following command:
command = "mem"
The device then sends the following data.
result = devicetype softwarerevision currentdatetime log
log = ("Log Empty" end1 | (nrresults resultlines) end2)
resultlines = firstresult *otherresults
Device type
There are ofcourse more devices then this. However, i don't know which.
Please send me more device types!
devicetype = CR LF ( "DAMH359-63524" \ ; FreeStyle Mini
"CDMK311-B0764" \ ; FreeStyle Freedom Lite
"DBMN169-C4824" ) ; FreeStyle Lite
Software revision
The software revision doesn't seem to be very consistent. The first number
has 5 spaces between the number and "-P" while the second one does not. As
you see both of the devices i own have a integer part a radix point and a
fractional part and it ends with "-P". I have no idea what this means other
that it is a software revision.
There are ofcourse more software revisions then this. However, i don't know which.
Please send me more software revisions!
softwarerevision = CR LF ( "4.0100 -P" \ ; On my FreeStyle Mini
"0.31-P" \ ; On my FreeStyle Freedom Lite (The missing spaces isn't a mistake)
"1.43 -P" ) ; On my FreeStyle Lite
Current time and date
currentdatetime = CR LF datetime
datetime = month SP day SP year SP time
month = "Jan " / "Feb " / "Mar " / "Apr " / "May " / "June" / "July" /
"Aug " / "Sep " / "Oct " / "Nov " / "Dec " ; N.B. Except June and July all months have spaces at the end.
day = 2DIGIT
year = 4DIGIT
time = hour ':' minute ':' second
hour = 2DIGIT
minute = 2DIGIT
second = 2DIGIT
Number of results
There is probably is a maximum to this. At the moment I am guessing it is 450 which is the maximum the Abbott Precision Xceed can store. The minimum is 1
nrresults = CR LF 3DIGIT; e.g. 001 or 250
e.g.: CR LF "250"Result line The first result has: CR LF LF for some reason. The others result lines don't.
firstresult = CR LF LF resultline
otherresults = CR LF resultline
resultline = sugarlevel datetime2 plasmatype "0x00"
sugarlevel = 3DIGIT ; e.g. 300 (I don't know what the maximum or minimum is)
datetime2 = month SP day sp year sp time2
time2 = hour ':' minute
plasmatype = 2DIGIT
End
end1 = "END"
end2 = "0x" 4DIGIT end1 ; The 4DIGIT part is a checksum. It is the
accumulation of all the ASCII characters (excluding the 0x000 END part).